hotspot/src/cpu/sparc/vm/interpreter_sparc.cpp
changeset 10252 0981ce1c3eef
parent 9636 363ca5579aff
child 12739 09f26b73ae66
equal deleted inserted replaced
10251:71b8938a2821 10252:0981ce1c3eef
   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