Mercurial > hg > truffle
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): |