comparison src/cpu/x86/vm/interp_masm_x86_64.cpp @ 3336:2e038ad0c1d0

7009361: JSR 292 Invalid value on stack on solaris-sparc with -Xcomp Reviewed-by: kvn, twisti
author never
date Mon, 02 May 2011 18:53:37 -0700
parents 38fea01eb669
children 341a57af9b0a
comparison
equal deleted inserted replaced
3335:49d67a090fe2 3336:2e038ad0c1d0
379 void InterpreterMacroAssembler::store_ptr(int n, Register val) { 379 void InterpreterMacroAssembler::store_ptr(int n, Register val) {
380 movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val); 380 movptr(Address(rsp, Interpreter::expr_offset_in_bytes(n)), val);
381 } 381 }
382 382
383 383
384 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point) {
385 MacroAssembler::call_VM_leaf_base(entry_point, 0);
386 }
387
388
389 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point,
390 Register arg_1) {
391 if (c_rarg0 != arg_1) {
392 mov(c_rarg0, arg_1);
393 }
394 MacroAssembler::call_VM_leaf_base(entry_point, 1);
395 }
396
397
398 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point,
399 Register arg_1,
400 Register arg_2) {
401 assert(c_rarg0 != arg_2, "smashed argument");
402 assert(c_rarg1 != arg_1, "smashed argument");
403 if (c_rarg0 != arg_1) {
404 mov(c_rarg0, arg_1);
405 }
406 if (c_rarg1 != arg_2) {
407 mov(c_rarg1, arg_2);
408 }
409 MacroAssembler::call_VM_leaf_base(entry_point, 2);
410 }
411
412 void InterpreterMacroAssembler::super_call_VM_leaf(address entry_point,
413 Register arg_1,
414 Register arg_2,
415 Register arg_3) {
416 assert(c_rarg0 != arg_2, "smashed argument");
417 assert(c_rarg0 != arg_3, "smashed argument");
418 assert(c_rarg1 != arg_1, "smashed argument");
419 assert(c_rarg1 != arg_3, "smashed argument");
420 assert(c_rarg2 != arg_1, "smashed argument");
421 assert(c_rarg2 != arg_2, "smashed argument");
422 if (c_rarg0 != arg_1) {
423 mov(c_rarg0, arg_1);
424 }
425 if (c_rarg1 != arg_2) {
426 mov(c_rarg1, arg_2);
427 }
428 if (c_rarg2 != arg_3) {
429 mov(c_rarg2, arg_3);
430 }
431 MacroAssembler::call_VM_leaf_base(entry_point, 3);
432 }
433
434 void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() { 384 void InterpreterMacroAssembler::prepare_to_jump_from_interpreted() {
435 // set sender sp 385 // set sender sp
436 lea(r13, Address(rsp, wordSize)); 386 lea(r13, Address(rsp, wordSize));
437 // record last_sp 387 // record last_sp
438 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), r13); 388 movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), r13);