comparison src/cpu/sparc/vm/templateTable_sparc.cpp @ 6822:f6b0eb4e44cf

7200949: JSR 292: rubybench/bench/time/bench_base64.rb fails with jruby.jar not on boot class path Reviewed-by: jrose, kvn
author twisti
date Mon, 01 Oct 2012 14:50:10 -0700
parents 75f33eecc1b3
children 6e5a59a8e4a7
comparison
equal deleted inserted replaced
6811:1b582b1bf7cb 6822:f6b0eb4e44cf
2934 __ br(Assembler::zero, false, Assembler::pt, L_no_push); 2934 __ br(Assembler::zero, false, Assembler::pt, L_no_push);
2935 __ delayed()->nop(); 2935 __ delayed()->nop();
2936 // Push the appendix as a trailing parameter. 2936 // Push the appendix as a trailing parameter.
2937 // This must be done before we get the receiver, 2937 // This must be done before we get the receiver,
2938 // since the parameter_size includes it. 2938 // since the parameter_size includes it.
2939 assert(ConstantPoolCacheEntry::_indy_resolved_references_appendix_offset == 0, "appendix expected at index+0");
2939 __ load_resolved_reference_at_index(temp, index); 2940 __ load_resolved_reference_at_index(temp, index);
2940 __ verify_oop(temp); 2941 __ verify_oop(temp);
2941 __ push_ptr(temp); // push appendix (MethodType, CallSite, etc.) 2942 __ push_ptr(temp); // push appendix (MethodType, CallSite, etc.)
2942 __ bind(L_no_push); 2943 __ bind(L_no_push);
2943 } 2944 }
3233 __ should_not_reach_here(); 3234 __ should_not_reach_here();
3234 return; 3235 return;
3235 } 3236 }
3236 3237
3237 const Register Rret = Lscratch; 3238 const Register Rret = Lscratch;
3238 const Register G4_mtype = G4_scratch; // f1 3239 const Register G4_mtype = G4_scratch;
3239 const Register O0_recv = O0; 3240 const Register O0_recv = O0;
3240 const Register Rscratch = G3_scratch; 3241 const Register Rscratch = G3_scratch;
3241 3242
3242 prepare_invoke(byte_no, G5_method, Rret, G4_mtype, O0_recv); 3243 prepare_invoke(byte_no, G5_method, Rret, G4_mtype, O0_recv);
3243 __ null_check(O0_recv); 3244 __ null_check(O0_recv);
3244 3245
3245 // G4: MethodType object (from cpool->resolved_references[]) 3246 // G4: MethodType object (from cpool->resolved_references[f1], if necessary)
3246 // G5: MH.linkToCallSite method (from f2) 3247 // G5: MH.invokeExact_MT method (from f2)
3247 3248
3248 // Note: G4_mtype is already pushed (if necessary) by prepare_invoke 3249 // Note: G4_mtype is already pushed (if necessary) by prepare_invoke
3249 3250
3250 // do the call 3251 // do the call
3251 __ verify_oop(G4_mtype); 3252 __ verify_oop(G4_mtype);
3273 const Register G4_callsite = G4_scratch; 3274 const Register G4_callsite = G4_scratch;
3274 const Register Rscratch = G3_scratch; 3275 const Register Rscratch = G3_scratch;
3275 3276
3276 prepare_invoke(byte_no, G5_method, Rret, G4_callsite); 3277 prepare_invoke(byte_no, G5_method, Rret, G4_callsite);
3277 3278
3278 // G4: CallSite object (from cpool->resolved_references[]) 3279 // G4: CallSite object (from cpool->resolved_references[f1])
3279 // G5: MH.linkToCallSite method (from f1) 3280 // G5: MH.linkToCallSite method (from f2)
3280 3281
3281 // Note: G4_callsite is already pushed by prepare_invoke 3282 // Note: G4_callsite is already pushed by prepare_invoke
3282 3283
3283 // %%% should make a type profile for any invokedynamic that takes a ref argument 3284 // %%% should make a type profile for any invokedynamic that takes a ref argument
3284 // profile this call 3285 // profile this call