Mercurial > hg > truffle
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 } |