Mercurial > hg > truffle
comparison src/share/vm/graal/graalCodeInstaller.cpp @ 5823:f238fe91dc7f
partial (non XIR) support for inlining virtual dispatch at call sites - still needs fixing
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 12 Jul 2012 17:16:34 +0200 |
parents | 2585af1e26ac |
children | 58a607307306 |
comparison
equal
deleted
inserted
replaced
5822:ec65d0d0c873 | 5823:f238fe91dc7f |
---|---|
693 | 693 |
694 assert(debug_info != NULL, "debug info expected"); | 694 assert(debug_info != NULL, "debug info expected"); |
695 | 695 |
696 TRACE_graal_3("method call"); | 696 TRACE_graal_3("method call"); |
697 switch (_next_call_type) { | 697 switch (_next_call_type) { |
698 case MARK_INLINE_INVOKEVIRTUAL: { | |
699 break; | |
700 } | |
698 case MARK_INVOKEVIRTUAL: | 701 case MARK_INVOKEVIRTUAL: |
699 if (is_call_reg) { | |
700 break; | |
701 } | |
702 case MARK_INVOKEINTERFACE: { | 702 case MARK_INVOKEINTERFACE: { |
703 assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface"); | 703 assert(method == NULL || !method->is_static(), "cannot call static method with invokeinterface"); |
704 | 704 |
705 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); | 705 NativeCall* call = nativeCall_at(_instructions->start() + pc_offset); |
706 call->set_destination(SharedRuntime::get_resolve_virtual_call_stub()); | 706 call->set_destination(SharedRuntime::get_resolve_virtual_call_stub()); |
841 assert(n_copy->data() == 0, "inline cache klassOop initial value should be NULL"); | 841 assert(n_copy->data() == 0, "inline cache klassOop initial value should be NULL"); |
842 n_copy->set_data((intptr_t)Universe::non_oop_word()); | 842 n_copy->set_data((intptr_t)Universe::non_oop_word()); |
843 // Add relocation record for the klassOop embedded in the inline cache | 843 // Add relocation record for the klassOop embedded in the inline cache |
844 _instructions->relocate(instruction, oop_Relocation::spec_for_immediate(), Assembler::imm_operand); | 844 _instructions->relocate(instruction, oop_Relocation::spec_for_immediate(), Assembler::imm_operand); |
845 } | 845 } |
846 case MARK_INLINE_INVOKEVIRTUAL: | |
846 case MARK_INVOKE_INVALID: | 847 case MARK_INVOKE_INVALID: |
847 case MARK_INVOKESPECIAL: | 848 case MARK_INVOKESPECIAL: |
848 case MARK_INVOKESTATIC: | 849 case MARK_INVOKESTATIC: |
849 _next_call_type = (MarkId) id; | 850 _next_call_type = (MarkId) id; |
850 _invoke_mark_pc = instruction; | 851 _invoke_mark_pc = instruction; |