diff src/share/vm/runtime/vframeArray.cpp @ 4678:a03f3fd16b22

Fix reexecute boolean in HotSpot debug information. Introduce "duringCall" flag in FrameState that indicates that the bci of the frame state denotes an invoke that should *not* be reexecuted.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 23 Feb 2012 21:43:59 +0100
parents 3dbcd1013cc8
children 07bcee8b70a4
line wrap: on
line diff
--- a/src/share/vm/runtime/vframeArray.cpp	Thu Feb 23 12:06:39 2012 +0100
+++ b/src/share/vm/runtime/vframeArray.cpp	Thu Feb 23 21:43:59 2012 +0100
@@ -130,6 +130,7 @@
   bool rethrow_exception = vf->scope()->rethrow_exception();
   if (rethrow_exception) {
     // (tw) Make sure there are only null pointers on the stack, because the stack values do not correspond to the GC map at the bytecode at which the exception is rethrown.
+    // TODO: Fix this! Locals map might be wrong too.
     _expressions = new StackValueCollection(vf->method()->max_stack());
     assert(Thread::current()->has_pending_exception(), "just checking");
     for (int i=0; i<vf->method()->max_stack(); ++i) {
@@ -261,6 +262,7 @@
       case Deoptimization::Unpack_uncommon_trap:
       case Deoptimization::Unpack_reexecute:
         // redo last byte code
+        assert(should_reexecute(), "");
         pc  = Interpreter::deopt_entry(vtos, 0);
         use_next_mdp = false;
         break;