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;