Mercurial > hg > truffle
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); |