< prev index next >

src/hotspot/cpu/ppc/templateInterpreterGenerator_ppc.cpp

Print this page

 459   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorWithMethod),
 460                   R16_thread, R19_method);
 461 
 462   // Pop the C frame and restore LR.
 463   __ pop_frame();
 464   __ restore_LR_CR(R0);
 465 
 466   // Reset JavaFrameAnchor from call_VM_leaf above.
 467   __ reset_last_Java_frame();
 468 
 469   // We don't know our caller, so jump to the general forward exception stub,
 470   // which will also pop our full frame off. Satisfy the interface of
 471   // SharedRuntime::generate_forward_exception()
 472   __ load_const_optimized(R11_scratch1, StubRoutines::forward_exception_entry(), R0);
 473   __ mtctr(R11_scratch1);
 474   __ bctr();
 475 
 476   return entry;
 477 }
 478 





 479 // Interpreter intrinsic for WeakReference.get().
 480 // 1. Don't push a full blown frame and go on dispatching, but fetch the value
 481 //    into R8 and return quickly
 482 // 2. If G1 is active we *must* execute this intrinsic for corrrectness:
 483 //    It contains a GC barrier which puts the reference into the satb buffer
 484 //    to indicate that someone holds a strong reference to the object the
 485 //    weak ref points to!
 486 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 487   // Code: _aload_0, _getfield, _areturn
 488   // parameter size = 1
 489   //
 490   // The code that gets generated by this routine is split into 2 parts:
 491   //    1. the "intrinsified" code for G1 (or any SATB based GC),
 492   //    2. the slow path - which is an expansion of the regular method entry.
 493   //
 494   // Notes:
 495   // * In the G1 code we do not check whether we need to block for
 496   //   a safepoint. If G1 is enabled then we must execute the specialized
 497   //   code for Reference.get (except when the Reference object is null)
 498   //   so that we can log the value in the referent field with an SATB

 459   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorWithMethod),
 460                   R16_thread, R19_method);
 461 
 462   // Pop the C frame and restore LR.
 463   __ pop_frame();
 464   __ restore_LR_CR(R0);
 465 
 466   // Reset JavaFrameAnchor from call_VM_leaf above.
 467   __ reset_last_Java_frame();
 468 
 469   // We don't know our caller, so jump to the general forward exception stub,
 470   // which will also pop our full frame off. Satisfy the interface of
 471   // SharedRuntime::generate_forward_exception()
 472   __ load_const_optimized(R11_scratch1, StubRoutines::forward_exception_entry(), R0);
 473   __ mtctr(R11_scratch1);
 474   __ bctr();
 475 
 476   return entry;
 477 }
 478 
 479 address TemplateInterpreterGenerator::generate_Continuation_doYield_entry(void) {
 480   Unimplemented();
 481   return NULL;
 482 }
 483 
 484 // Interpreter intrinsic for WeakReference.get().
 485 // 1. Don't push a full blown frame and go on dispatching, but fetch the value
 486 //    into R8 and return quickly
 487 // 2. If G1 is active we *must* execute this intrinsic for corrrectness:
 488 //    It contains a GC barrier which puts the reference into the satb buffer
 489 //    to indicate that someone holds a strong reference to the object the
 490 //    weak ref points to!
 491 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 492   // Code: _aload_0, _getfield, _areturn
 493   // parameter size = 1
 494   //
 495   // The code that gets generated by this routine is split into 2 parts:
 496   //    1. the "intrinsified" code for G1 (or any SATB based GC),
 497   //    2. the slow path - which is an expansion of the regular method entry.
 498   //
 499   // Notes:
 500   // * In the G1 code we do not check whether we need to block for
 501   //   a safepoint. If G1 is enabled then we must execute the specialized
 502   //   code for Reference.get (except when the Reference object is null)
 503   //   so that we can log the value in the referent field with an SATB
< prev index next >