comparison src/share/vm/graal/graalCodeInstaller.cpp @ 8136:c66aa27ef4da

Reenable patching of optimized and static calls but without out-of-line stubs.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 06 Mar 2013 21:58:58 +0100
parents 0799a7efbe7b
children b8f261ba79c6
comparison
equal deleted inserted replaced
8130:25ec01061adf 8136:c66aa27ef4da
695 assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface"); 695 assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface");
696 696
697 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); 697 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
698 call->set_destination(SharedRuntime::get_resolve_virtual_call_stub()); 698 call->set_destination(SharedRuntime::get_resolve_virtual_call_stub());
699 _instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc), Assembler::call32_operand); 699 _instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc), Assembler::call32_operand);
700 break;
701 }
702 case MARK_INVOKESTATIC: {
703 assert(method == NULL || method->is_static(), "cannot call non-static method with invokestatic");
704
705 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
706 call->set_destination(SharedRuntime::get_resolve_static_call_stub());
707 _instructions->relocate(call->instruction_address(), relocInfo::static_call_type, Assembler::call32_operand);
708 break;
709 }
710 case MARK_INVOKESPECIAL: {
711 assert(method == NULL || !method->is_static(), "cannot call static method with invokespecial");
712 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset);
713 call->set_destination(SharedRuntime::get_resolve_opt_virtual_call_stub());
714 _instructions->relocate(call->instruction_address(), relocInfo::opt_virtual_call_type, Assembler::call32_operand);
700 break; 715 break;
701 } 716 }
702 default: 717 default:
703 fatal("invalid _next_call_type value"); 718 fatal("invalid _next_call_type value");
704 break; 719 break;
805 NativeMovConstReg* n_copy = nativeMovConstReg_at(instruction); 820 NativeMovConstReg* n_copy = nativeMovConstReg_at(instruction);
806 assert(n_copy->data() == 0, "inline cache Klass* initial value should be 0L"); 821 assert(n_copy->data() == 0, "inline cache Klass* initial value should be 0L");
807 n_copy->set_data((intptr_t)Universe::non_oop_word()); 822 n_copy->set_data((intptr_t)Universe::non_oop_word());
808 } 823 }
809 case MARK_INLINE_INVOKE: 824 case MARK_INLINE_INVOKE:
825 case MARK_INVOKESTATIC:
826 case MARK_INVOKESPECIAL:
810 _next_call_type = (MarkId) id; 827 _next_call_type = (MarkId) id;
811 _invoke_mark_pc = instruction; 828 _invoke_mark_pc = instruction;
812 break; 829 break;
813 case MARK_POLL_NEAR: { 830 case MARK_POLL_NEAR: {
814 NativeInstruction* ni = nativeInstruction_at(instruction); 831 NativeInstruction* ni = nativeInstruction_at(instruction);