Mercurial > hg > truffle
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.