comparison src/cpu/x86/vm/templateInterpreter_x86_64.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
190 Label L_got_cache, L_giant_index; 190 Label L_got_cache, L_giant_index;
191 if (EnableInvokeDynamic) { 191 if (EnableInvokeDynamic) {
192 __ cmpb(Address(r13, 0), Bytecodes::_invokedynamic); 192 __ cmpb(Address(r13, 0), Bytecodes::_invokedynamic);
193 __ jcc(Assembler::equal, L_giant_index); 193 __ jcc(Assembler::equal, L_giant_index);
194 } 194 }
195 __ get_cache_and_index_at_bcp(rbx, rcx, 1, false); 195 __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u2));
196 __ bind(L_got_cache); 196 __ bind(L_got_cache);
197 __ movl(rbx, Address(rbx, rcx, 197 __ movl(rbx, Address(rbx, rcx,
198 Address::times_ptr, 198 Address::times_ptr,
199 in_bytes(constantPoolCacheOopDesc::base_offset()) + 199 in_bytes(constantPoolCacheOopDesc::base_offset()) +
200 3 * wordSize)); 200 3 * wordSize));
203 __ dispatch_next(state, step); 203 __ dispatch_next(state, step);
204 204
205 // out of the main line of code... 205 // out of the main line of code...
206 if (EnableInvokeDynamic) { 206 if (EnableInvokeDynamic) {
207 __ bind(L_giant_index); 207 __ bind(L_giant_index);
208 __ get_cache_and_index_at_bcp(rbx, rcx, 1, true); 208 __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u4));
209 __ jmp(L_got_cache); 209 __ jmp(L_got_cache);
210 } 210 }
211 211
212 return entry; 212 return entry;
213 } 213 }