Mercurial > hg > truffle
comparison src/cpu/sparc/vm/interpreter_sparc.cpp @ 4137:04b9a2566eec
Merge with hsx23/hotspot.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 17 Dec 2011 21:40:27 +0100 |
parents | 3d42f82cd811 |
children | 6759698e3140 |
comparison
equal
deleted
inserted
replaced
3737:9dc19b7d89a3 | 4137:04b9a2566eec |
---|---|
189 __ ld_ptr(ldarg.address_in_frame(), ldarg.as_register()); | 189 __ ld_ptr(ldarg.address_in_frame(), ldarg.as_register()); |
190 else { | 190 else { |
191 // Optimization, see if there are any more args and get out prior to checking | 191 // Optimization, see if there are any more args and get out prior to checking |
192 // all 16 float registers. My guess is that this is rare. | 192 // all 16 float registers. My guess is that this is rare. |
193 // If is_register is false, then we are done the first six integer args. | 193 // If is_register is false, then we are done the first six integer args. |
194 __ tst(G4_scratch); | 194 __ br_null_short(G4_scratch, Assembler::pt, done); |
195 __ brx(Assembler::zero, false, Assembler::pt, done); | |
196 __ delayed()->nop(); | |
197 | |
198 } | 195 } |
199 __ ba(false, NextArg); | 196 __ ba(NextArg); |
200 __ delayed()->srl( G4_scratch, 2, G4_scratch ); | 197 __ delayed()->srl( G4_scratch, 2, G4_scratch ); |
201 | 198 |
202 __ bind(LoadFloatArg); | 199 __ bind(LoadFloatArg); |
203 __ ldf( FloatRegisterImpl::S, a, ldarg.as_float_register(), 4); | 200 __ ldf( FloatRegisterImpl::S, a, ldarg.as_float_register(), 4); |
204 __ ba(false, NextArg); | 201 __ ba(NextArg); |
205 __ delayed()->srl( G4_scratch, 2, G4_scratch ); | 202 __ delayed()->srl( G4_scratch, 2, G4_scratch ); |
206 | 203 |
207 __ bind(LoadDoubleArg); | 204 __ bind(LoadDoubleArg); |
208 __ ldf( FloatRegisterImpl::D, a, ldarg.as_double_register() ); | 205 __ ldf( FloatRegisterImpl::D, a, ldarg.as_double_register() ); |
209 __ ba(false, NextArg); | 206 __ ba(NextArg); |
210 __ delayed()->srl( G4_scratch, 2, G4_scratch ); | 207 __ delayed()->srl( G4_scratch, 2, G4_scratch ); |
211 | 208 |
212 __ bind(NextArg); | 209 __ bind(NextArg); |
213 | 210 |
214 } | 211 } |
232 // if the compilation did not complete (either went background or bailed out). | 229 // if the compilation did not complete (either went background or bailed out). |
233 __ set((int)false, O2); | 230 __ set((int)false, O2); |
234 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), O2, O2, true); | 231 __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), O2, O2, true); |
235 // returns verified_entry_point or NULL | 232 // returns verified_entry_point or NULL |
236 // we ignore it in any case | 233 // we ignore it in any case |
237 __ ba(false, Lcontinue); | 234 __ ba_short(Lcontinue); |
238 __ delayed()->nop(); | |
239 | 235 |
240 } | 236 } |
241 | 237 |
242 | 238 |
243 // End of helpers | 239 // End of helpers |