Mercurial > hg > truffle
comparison 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 |
comparison
equal
deleted
inserted
replaced
4677:74c0b866fe8d | 4678:a03f3fd16b22 |
---|---|
364 return Interpreter::rethrow_exception_entry(); | 364 return Interpreter::rethrow_exception_entry(); |
365 } | 365 } |
366 #endif /* COMPILER1 */ | 366 #endif /* COMPILER1 */ |
367 return Interpreter::deopt_entry(vtos, 0); | 367 return Interpreter::deopt_entry(vtos, 0); |
368 } | 368 } |
369 | |
370 #ifdef GRAAL | |
371 | |
372 | |
373 // If deoptimization happens, the interpreter should reexecute these bytecodes. | |
374 // This function mainly helps the compilers to set up the reexecute bit. | |
375 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) { | |
376 switch (code) { | |
377 case Bytecodes::_invokedynamic: | |
378 case Bytecodes::_invokevirtual: | |
379 case Bytecodes::_invokeinterface: | |
380 case Bytecodes::_invokespecial: | |
381 case Bytecodes::_invokestatic: | |
382 return false; | |
383 default: | |
384 return true; | |
385 } | |
386 return true; | |
387 } | |
388 #else | |
369 | 389 |
370 // If deoptimization happens, the interpreter should reexecute these bytecodes. | 390 // If deoptimization happens, the interpreter should reexecute these bytecodes. |
371 // This function mainly helps the compilers to set up the reexecute bit. | 391 // This function mainly helps the compilers to set up the reexecute bit. |
372 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) { | 392 bool AbstractInterpreter::bytecode_should_reexecute(Bytecodes::Code code) { |
373 switch (code) { | 393 switch (code) { |
413 | 433 |
414 default: | 434 default: |
415 return false; | 435 return false; |
416 } | 436 } |
417 } | 437 } |
438 #endif | |
418 | 439 |
419 void AbstractInterpreterGenerator::bang_stack_shadow_pages(bool native_call) { | 440 void AbstractInterpreterGenerator::bang_stack_shadow_pages(bool native_call) { |
420 // Quick & dirty stack overflow checking: bang the stack & handle trap. | 441 // Quick & dirty stack overflow checking: bang the stack & handle trap. |
421 // Note that we do the banging after the frame is setup, since the exception | 442 // Note that we do the banging after the frame is setup, since the exception |
422 // handling code expects to find a valid interpreter frame on the stack. | 443 // handling code expects to find a valid interpreter frame on the stack. |