src/cpu/x86/vm/interp_masm_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot-dvm Sdiff src/cpu/x86/vm

src/cpu/x86/vm/interp_masm_x86_32.cpp

Print this page
rev 522 : [mq]: meth.patch


 569   push(arg_1);
 570   MacroAssembler::call_VM_leaf_base(entry_point, 1);
 571 }
 572 
 573 
 574 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2) {
 575   push(arg_2);
 576   push(arg_1);
 577   MacroAssembler::call_VM_leaf_base(entry_point, 2);
 578 }
 579 
 580 
 581 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2, Register arg_3) {
 582   push(arg_3);
 583   push(arg_2);
 584   push(arg_1);
 585   MacroAssembler::call_VM_leaf_base(entry_point, 3);
 586 }
 587 
 588 
 589 // Jump to from_interpreted entry of a call unless single stepping is possible
 590 // in this thread in which case we must call the i2i entry
 591 void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
 592   // set sender sp
 593   lea(rsi, Address(rsp, wordSize));
 594   // record last_sp
 595   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), rsi);







 596 
 597   if (JvmtiExport::can_post_interpreter_events()) {
 598     Label run_compiled_code;
 599     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
 600     // compiled code in threads for which the event is enabled.  Check here for
 601     // interp_only_mode if these events CAN be enabled.
 602     get_thread(temp);
 603     // interp_only is an int, on little endian it is sufficient to test the byte only
 604     // Is a cmpl faster (ce
 605     cmpb(Address(temp, JavaThread::interp_only_mode_offset()), 0);
 606     jcc(Assembler::zero, run_compiled_code);
 607     jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
 608     bind(run_compiled_code);
 609   }
 610 
 611   jmp(Address(method, methodOopDesc::from_interpreted_offset()));
 612 
 613 }
 614 
 615 




 569   push(arg_1);
 570   MacroAssembler::call_VM_leaf_base(entry_point, 1);
 571 }
 572 
 573 
 574 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2) {
 575   push(arg_2);
 576   push(arg_1);
 577   MacroAssembler::call_VM_leaf_base(entry_point, 2);
 578 }
 579 
 580 
 581 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2, Register arg_3) {
 582   push(arg_3);
 583   push(arg_2);
 584   push(arg_1);
 585   MacroAssembler::call_VM_leaf_base(entry_point, 3);
 586 }
 587 
 588 
 589 void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {


 590   // set sender sp
 591   lea(rsi, Address(rsp, wordSize));
 592   // record last_sp
 593   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), rsi);
 594 }
 595 
 596 
 597 // Jump to from_interpreted entry of a call unless single stepping is possible
 598 // in this thread in which case we must call the i2i entry
 599 void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
 600   prepare_to_jump_from_interpreted();
 601 
 602   if (JvmtiExport::can_post_interpreter_events()) {
 603     Label run_compiled_code;
 604     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
 605     // compiled code in threads for which the event is enabled.  Check here for
 606     // interp_only_mode if these events CAN be enabled.
 607     get_thread(temp);
 608     // interp_only is an int, on little endian it is sufficient to test the byte only
 609     // Is a cmpl faster (ce
 610     cmpb(Address(temp, JavaThread::interp_only_mode_offset()), 0);
 611     jcc(Assembler::zero, run_compiled_code);
 612     jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
 613     bind(run_compiled_code);
 614   }
 615 
 616   jmp(Address(method, methodOopDesc::from_interpreted_offset()));
 617 
 618 }
 619 
 620 


src/cpu/x86/vm/interp_masm_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File