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