comparison src/share/vm/c1/c1_LIRAssembler.cpp @ 12160:f98f5d48f511

7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked Summary: Do patching rather bailing out for unlinked call with appendix Reviewed-by: twisti, kvn
author roland
date Wed, 21 Aug 2013 13:34:45 +0200
parents 7eca5de9e0b6
children cefad50507d8 de6a9e811145
comparison
equal deleted inserted replaced
12159:b17d8f6d9ed7 12160:f98f5d48f511
91 case Bytecodes::_ldc_w: 91 case Bytecodes::_ldc_w:
92 break; 92 break;
93 default: 93 default:
94 ShouldNotReachHere(); 94 ShouldNotReachHere();
95 } 95 }
96 } else if (patch->id() == PatchingStub::load_appendix_id) {
97 Bytecodes::Code bc_raw = info->scope()->method()->raw_code_at_bci(info->stack()->bci());
98 assert(Bytecodes::has_optional_appendix(bc_raw), "unexpected appendix resolution");
96 } else { 99 } else {
97 ShouldNotReachHere(); 100 ShouldNotReachHere();
98 } 101 }
99 #endif 102 #endif
100 } 103 }
101 104
105 PatchingStub::PatchID LIR_Assembler::patching_id(CodeEmitInfo* info) {
106 IRScope* scope = info->scope();
107 Bytecodes::Code bc_raw = scope->method()->raw_code_at_bci(info->stack()->bci());
108 if (Bytecodes::has_optional_appendix(bc_raw)) {
109 return PatchingStub::load_appendix_id;
110 }
111 return PatchingStub::load_mirror_id;
112 }
102 113
103 //--------------------------------------------------------------- 114 //---------------------------------------------------------------
104 115
105 116
106 LIR_Assembler::LIR_Assembler(Compilation* c): 117 LIR_Assembler::LIR_Assembler(Compilation* c):