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

src/cpu/x86/vm/interp_masm_x86_32.cpp

Print this page




 366     case stos:                                               // fall through
 367     case itos: push_i(rax);                                    break;
 368     case ltos: push_l(rax, rdx);                               break;
 369     case ftos: push_f();                                       break;
 370     case dtos: push_d(rax);                                    break;
 371     case vtos: /* nothing to do */                             break;
 372     default  : ShouldNotReachHere();
 373   }
 374 }
 375 
 376 
 377 // Helpers for swap and dup
 378 void InterpreterMacroAssembler::load_ptr(int n, Register val) {
 379   movptr(val, Address(rsp, Interpreter::expr_offset_in_bytes(n)));
 380 }
 381 
 382 void InterpreterMacroAssembler::store_ptr(int n, Register val) {
 383   movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val);
 384 }
 385 
 386 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point) {
 387   MacroAssembler::call_VM_leaf_base(entry_point, 0);
 388 }
 389 
 390 
 391 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1) {
 392   push(arg_1);
 393   MacroAssembler::call_VM_leaf_base(entry_point, 1);
 394 }
 395 
 396 
 397 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2) {
 398   push(arg_2);
 399   push(arg_1);
 400   MacroAssembler::call_VM_leaf_base(entry_point, 2);
 401 }
 402 
 403 
 404 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point, Register arg_1, Register arg_2, Register arg_3) {
 405   push(arg_3);
 406   push(arg_2);
 407   push(arg_1);
 408   MacroAssembler::call_VM_leaf_base(entry_point, 3);
 409 }
 410 
 411 
 412 void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {
 413   // set sender sp
 414   lea(rsi, Address(rsp, wordSize));
 415   // record last_sp
 416   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), rsi);
 417 }
 418 
 419 
 420 // Jump to from_interpreted entry of a call unless single stepping is possible
 421 // in this thread in which case we must call the i2i entry
 422 void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
 423   prepare_to_jump_from_interpreted();
 424 
 425   if (JvmtiExport::can_post_interpreter_events()) {
 426     Label run_compiled_code;
 427     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
 428     // compiled code in threads for which the event is enabled.  Check here for
 429     // interp_only_mode if these events CAN be enabled.
 430     get_thread(temp);
 431     // interp_only is an int, on little endian it is sufficient to test the byte only




 366     case stos:                                               // fall through
 367     case itos: push_i(rax);                                    break;
 368     case ltos: push_l(rax, rdx);                               break;
 369     case ftos: push_f();                                       break;
 370     case dtos: push_d(rax);                                    break;
 371     case vtos: /* nothing to do */                             break;
 372     default  : ShouldNotReachHere();
 373   }
 374 }
 375 
 376 
 377 // Helpers for swap and dup
 378 void InterpreterMacroAssembler::load_ptr(int n, Register val) {
 379   movptr(val, Address(rsp, Interpreter::expr_offset_in_bytes(n)));
 380 }
 381 
 382 void InterpreterMacroAssembler::store_ptr(int n, Register val) {
 383   movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val);
 384 }
 385 


























 386 void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {
 387   // set sender sp
 388   lea(rsi, Address(rsp, wordSize));
 389   // record last_sp
 390   movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), rsi);
 391 }
 392 
 393 
 394 // Jump to from_interpreted entry of a call unless single stepping is possible
 395 // in this thread in which case we must call the i2i entry
 396 void InterpreterMacroAssembler::jump_from_interpreted(Register method, Register temp) {
 397   prepare_to_jump_from_interpreted();
 398 
 399   if (JvmtiExport::can_post_interpreter_events()) {
 400     Label run_compiled_code;
 401     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
 402     // compiled code in threads for which the event is enabled.  Check here for
 403     // interp_only_mode if these events CAN be enabled.
 404     get_thread(temp);
 405     // interp_only is an int, on little endian it is sufficient to test the byte only


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