< prev index next >

src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp

Print this page

 465   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorWithMethod),
 466                   Z_thread, Z_method);
 467 
 468   __ pop_frame();
 469   __ restore_return_pc();    // Restore Z_R14.
 470   __ reset_last_Java_frame();
 471 
 472   // Restore caller sp for c2i case.
 473   __ resize_frame_absolute(Z_R10, Z_R0, true); // Cut the stack back to where the caller started.
 474 
 475   // branch to SharedRuntime::generate_forward_exception() which handles all possible callers,
 476   // i.e. call stub, compiled method, interpreted method.
 477   __ load_absolute_address(Z_tmp_1, StubRoutines::forward_exception_entry());
 478   __ z_br(Z_tmp_1);
 479 
 480   BLOCK_COMMENT("} abstract_entry");
 481 
 482   return __ addr_at(entry_offset);
 483 }
 484 





 485 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 486   // Inputs:
 487   //  Z_ARG1 - receiver
 488   //
 489   // What we do:
 490   //  - Load the referent field address.
 491   //  - Load the value in the referent field.
 492   //  - Pass that value to the pre-barrier.
 493   //
 494   // In the case of G1 this will record the value of the
 495   // referent in an SATB buffer if marking is active.
 496   // This will cause concurrent marking to mark the referent
 497   // field as live.
 498 
 499   Register  scratch1 = Z_tmp_2;
 500   Register  scratch2 = Z_tmp_3;
 501   Register  pre_val  = Z_RET;   // return value
 502   // Z_esp is callers operand stack pointer, i.e. it points to the parameters.
 503   Register  Rargp    = Z_esp;
 504 

 465   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodErrorWithMethod),
 466                   Z_thread, Z_method);
 467 
 468   __ pop_frame();
 469   __ restore_return_pc();    // Restore Z_R14.
 470   __ reset_last_Java_frame();
 471 
 472   // Restore caller sp for c2i case.
 473   __ resize_frame_absolute(Z_R10, Z_R0, true); // Cut the stack back to where the caller started.
 474 
 475   // branch to SharedRuntime::generate_forward_exception() which handles all possible callers,
 476   // i.e. call stub, compiled method, interpreted method.
 477   __ load_absolute_address(Z_tmp_1, StubRoutines::forward_exception_entry());
 478   __ z_br(Z_tmp_1);
 479 
 480   BLOCK_COMMENT("} abstract_entry");
 481 
 482   return __ addr_at(entry_offset);
 483 }
 484 
 485 address TemplateInterpreterGenerator::generate_Continuation_doYield_entry(void) {
 486   Unimplemented();
 487   return NULL;
 488 }
 489 
 490 address TemplateInterpreterGenerator::generate_Reference_get_entry(void) {
 491   // Inputs:
 492   //  Z_ARG1 - receiver
 493   //
 494   // What we do:
 495   //  - Load the referent field address.
 496   //  - Load the value in the referent field.
 497   //  - Pass that value to the pre-barrier.
 498   //
 499   // In the case of G1 this will record the value of the
 500   // referent in an SATB buffer if marking is active.
 501   // This will cause concurrent marking to mark the referent
 502   // field as live.
 503 
 504   Register  scratch1 = Z_tmp_2;
 505   Register  scratch2 = Z_tmp_3;
 506   Register  pre_val  = Z_RET;   // return value
 507   // Z_esp is callers operand stack pointer, i.e. it points to the parameters.
 508   Register  Rargp    = Z_esp;
 509 
< prev index next >