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.