comparison src/cpu/x86/vm/sharedRuntime_x86_64.cpp @ 4993:897b7d18bebc

added RiCompiledMethod.execute and the required VM infrastructure
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 28 Feb 2012 18:00:35 +0100
parents 0d2a2797a61f
children 6766253384bf
comparison
equal deleted inserted replaced
4992:f86ddbd42a7b 4993:897b7d18bebc
641 __ movptr(saved_sp, r11); 641 __ movptr(saved_sp, r11);
642 642
643 // Will jump to the compiled code just as if compiled code was doing it. 643 // Will jump to the compiled code just as if compiled code was doing it.
644 // Pre-load the register-jump target early, to schedule it better. 644 // Pre-load the register-jump target early, to schedule it better.
645 __ movptr(r11, Address(rbx, in_bytes(methodOopDesc::from_compiled_offset()))); 645 __ movptr(r11, Address(rbx, in_bytes(methodOopDesc::from_compiled_offset())));
646
647 #ifdef GRAAL
648 // check if this call should be routed towards a specific entry point
649 __ cmpptr(Address(r15_thread, in_bytes(JavaThread::graal_alternate_call_target_offset())), 0);
650 Label no_alternative_target;
651 __ jcc(Assembler::equal, no_alternative_target);
652 __ movptr(r11, Address(r15_thread, in_bytes(JavaThread::graal_alternate_call_target_offset())));
653 __ movptr(Address(r15_thread, in_bytes(JavaThread::graal_alternate_call_target_offset())), 0);
654 __ bind(no_alternative_target);
655 #endif
646 656
647 // Now generate the shuffle code. Pick up all register args and move the 657 // Now generate the shuffle code. Pick up all register args and move the
648 // rest through the floating point stack top. 658 // rest through the floating point stack top.
649 for (int i = 0; i < total_args_passed; i++) { 659 for (int i = 0; i < total_args_passed; i++) {
650 if (sig_bt[i] == T_VOID) { 660 if (sig_bt[i] == T_VOID) {