212 Label L_got_cache, L_giant_index; |
212 Label L_got_cache, L_giant_index; |
213 if (EnableInvokeDynamic) { |
213 if (EnableInvokeDynamic) { |
214 __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic); |
214 __ cmpb(Address(rsi, 0), Bytecodes::_invokedynamic); |
215 __ jcc(Assembler::equal, L_giant_index); |
215 __ jcc(Assembler::equal, L_giant_index); |
216 } |
216 } |
217 __ get_cache_and_index_at_bcp(rbx, rcx, 1, false); |
217 __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u2)); |
218 __ bind(L_got_cache); |
218 __ bind(L_got_cache); |
219 __ movl(rbx, Address(rbx, rcx, |
219 __ movl(rbx, Address(rbx, rcx, |
220 Address::times_ptr, constantPoolCacheOopDesc::base_offset() + |
220 Address::times_ptr, constantPoolCacheOopDesc::base_offset() + |
221 ConstantPoolCacheEntry::flags_offset())); |
221 ConstantPoolCacheEntry::flags_offset())); |
222 __ andptr(rbx, 0xFF); |
222 __ andptr(rbx, 0xFF); |
224 __ dispatch_next(state, step); |
224 __ dispatch_next(state, step); |
225 |
225 |
226 // out of the main line of code... |
226 // out of the main line of code... |
227 if (EnableInvokeDynamic) { |
227 if (EnableInvokeDynamic) { |
228 __ bind(L_giant_index); |
228 __ bind(L_giant_index); |
229 __ get_cache_and_index_at_bcp(rbx, rcx, 1, true); |
229 __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u4)); |
230 __ jmp(L_got_cache); |
230 __ jmp(L_got_cache); |
231 } |
231 } |
232 |
232 |
233 return entry; |
233 return entry; |
234 } |
234 } |