diff src/share/vm/interpreter/interpreter.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 e1162778c1c8
children 957c266d8bc5
line wrap: on
line diff
--- a/src/share/vm/interpreter/interpreter.cpp	Thu Feb 23 12:06:39 2012 +0100
+++ b/src/share/vm/interpreter/interpreter.cpp	Thu Feb 23 21:43:59 2012 +0100
@@ -367,6 +367,26 @@
   return Interpreter::deopt_entry(vtos, 0);
 }
 
+#ifdef GRAAL
+
+
+// If deoptimization happens, the interpreter should reexecute these bytecodes.
+// This function mainly helps the compilers to set up the reexecute bit.
+bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) {
+    switch (code) {
+  case Bytecodes::_invokedynamic:
+  case Bytecodes::_invokevirtual:
+  case Bytecodes::_invokeinterface:
+  case Bytecodes::_invokespecial:
+  case Bytecodes::_invokestatic:
+    return false;
+  default: 
+    return true;
+    }
+  return true;
+}
+#else 
+
 // If deoptimization happens, the interpreter should reexecute these bytecodes.
 // This function mainly helps the compilers to set up the reexecute bit.
 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) {
@@ -415,6 +435,7 @@
       return false;
   }
 }
+#endif
 
 void AbstractInterpreterGenerator::bang_stack_shadow_pages(bool native_call) {
   // Quick & dirty stack overflow checking: bang the stack & handle trap.