comparison src/cpu/x86/vm/assembler_x86.cpp @ 1422:3483ec571caf

* using reflected objects instead of oops * removed scratch from allocatable registers * instanceof xir snippet * arraylength xir snippet * exceptionobject xir snippet * VMEntries and VMExits as interfaces * calls to VMEntries and VMExits are routet through logging proxies
author Lukas Stadler <lukas.stadler@oracle.com>
date Mon, 02 Aug 2010 15:44:38 -0700
parents 0a43776437b6
children 2d26b0046e0d
comparison
equal deleted inserted replaced
1421:6223633ce7dd 1422:3483ec571caf
5506 pusha(); // get regs on stack 5506 pusha(); // get regs on stack
5507 lea(c_rarg0, ExternalAddress((address) msg)); 5507 lea(c_rarg0, ExternalAddress((address) msg));
5508 lea(c_rarg1, InternalAddress(rip)); 5508 lea(c_rarg1, InternalAddress(rip));
5509 movq(c_rarg2, rsp); // pass pointer to regs array 5509 movq(c_rarg2, rsp); // pass pointer to regs array
5510 andq(rsp, -16); // align stack as required by ABI 5510 andq(rsp, -16); // align stack as required by ABI
5511 mov64(rax, 0);
5511 call(RuntimeAddress(CAST_FROM_FN_PTR(address, MacroAssembler::debug64))); 5512 call(RuntimeAddress(CAST_FROM_FN_PTR(address, MacroAssembler::debug64)));
5512 hlt(); 5513 hlt();
5513 } 5514 }
5514 5515
5515 void MacroAssembler::warn(const char* msg) { 5516 void MacroAssembler::warn(const char* msg) {
5517 movq(r12, rsp); 5518 movq(r12, rsp);
5518 andq(rsp, -16); // align stack as required by push_CPU_state and call 5519 andq(rsp, -16); // align stack as required by push_CPU_state and call
5519 5520
5520 push_CPU_state(); // keeps alignment at 16 bytes 5521 push_CPU_state(); // keeps alignment at 16 bytes
5521 lea(c_rarg0, ExternalAddress((address) msg)); 5522 lea(c_rarg0, ExternalAddress((address) msg));
5523 mov64(rax, 0);
5522 call_VM_leaf(CAST_FROM_FN_PTR(address, warning), c_rarg0); 5524 call_VM_leaf(CAST_FROM_FN_PTR(address, warning), c_rarg0);
5523 pop_CPU_state(); 5525 pop_CPU_state();
5524 5526
5525 movq(rsp, r12); 5527 movq(rsp, r12);
5526 pop(r12); 5528 pop(r12);