comparison src/cpu/x86/vm/templateInterpreter_x86_32.cpp @ 1565:ab102d5d923e

6939207: refactor constant pool index processing Summary: Factored cleanup of instruction decode which prepares for enhanced ldc semantics. Reviewed-by: twisti
author jrose
date Sun, 23 May 2010 01:38:26 -0700
parents 2338d41fbd81
children e9ff18c4ace7
comparison
equal deleted inserted replaced
1564:61b2245abf36 1565:ab102d5d923e
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 }