Mercurial > hg > graal-compiler
diff src/cpu/x86/vm/templateTable_x86_64.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 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp Fri Sep 28 14:36:20 2012 -0700 +++ b/src/cpu/x86/vm/templateTable_x86_64.cpp Mon Oct 01 14:50:10 2012 -0700 @@ -2184,7 +2184,7 @@ const int index_offset = in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset()); - size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2)); + size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2)); resolve_cache_and_index(byte_no, cache, index, index_size); __ movptr(method, Address(cache, index, Address::times_ptr, method_offset)); @@ -2926,6 +2926,7 @@ // since the parameter_size includes it. __ push(rbx); __ mov(rbx, index); + assert(ConstantPoolCacheEntry::_indy_resolved_references_appendix_offset == 0, "appendix expected at index+0"); __ load_resolved_reference_at_index(index, rbx); __ pop(rbx); __ push(index); // push appendix (MethodType, CallSite, etc.) @@ -3144,8 +3145,8 @@ void TemplateTable::invokehandle(int byte_no) { transition(vtos, vtos); assert(byte_no == f1_byte, "use this argument"); - const Register rbx_method = rbx; // f2 - const Register rax_mtype = rax; // f1 + const Register rbx_method = rbx; + const Register rax_mtype = rax; const Register rcx_recv = rcx; const Register rdx_flags = rdx; @@ -3155,13 +3156,14 @@ return; } - prepare_invoke(byte_no, - rbx_method, rax_mtype, // get f2 Method*, f1 MethodType - rcx_recv); + prepare_invoke(byte_no, rbx_method, rax_mtype, rcx_recv); __ verify_method_ptr(rbx_method); __ verify_oop(rcx_recv); __ null_check(rcx_recv); + // rax: MethodType object (from cpool->resolved_references[f1], if necessary) + // rbx: MH.invokeExact_MT method (from f2) + // Note: rax_mtype is already pushed (if necessary) by prepare_invoke // FIXME: profile the LambdaForm also @@ -3191,7 +3193,7 @@ prepare_invoke(byte_no, rbx_method, rax_callsite); - // rax: CallSite object (from cpool->resolved_references[]) + // rax: CallSite object (from cpool->resolved_references[f1]) // rbx: MH.linkToCallSite method (from f2) // Note: rax_callsite is already pushed by prepare_invoke