Mercurial > hg > graal-jvmci-8
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); |