1.1 --- a/src/cpu/x86/vm/templateTable_x86_32.cpp Fri Sep 28 14:36:20 2012 -0700 1.2 +++ b/src/cpu/x86/vm/templateTable_x86_32.cpp Mon Oct 01 14:50:10 2012 -0700 1.3 @@ -2139,7 +2139,7 @@ 1.4 const int index_offset = in_bytes(ConstantPoolCache::base_offset() + 1.5 ConstantPoolCacheEntry::f2_offset()); 1.6 1.7 - size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2)); 1.8 + size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2)); 1.9 resolve_cache_and_index(byte_no, cache, index, index_size); 1.10 __ movptr(method, Address(cache, index, Address::times_ptr, method_offset)); 1.11 1.12 @@ -2876,6 +2876,7 @@ 1.13 // since the parameter_size includes it. 1.14 __ push(rbx); 1.15 __ mov(rbx, index); 1.16 + assert(ConstantPoolCacheEntry::_indy_resolved_references_appendix_offset == 0, "appendix expected at index+0"); 1.17 __ load_resolved_reference_at_index(index, rbx); 1.18 __ pop(rbx); 1.19 __ push(index); // push appendix (MethodType, CallSite, etc.) 1.20 @@ -3093,8 +3094,8 @@ 1.21 void TemplateTable::invokehandle(int byte_no) { 1.22 transition(vtos, vtos); 1.23 assert(byte_no == f1_byte, "use this argument"); 1.24 - const Register rbx_method = rbx; // (from f2) 1.25 - const Register rax_mtype = rax; // (from f1) 1.26 + const Register rbx_method = rbx; 1.27 + const Register rax_mtype = rax; 1.28 const Register rcx_recv = rcx; 1.29 const Register rdx_flags = rdx; 1.30 1.31 @@ -3104,13 +3105,14 @@ 1.32 return; 1.33 } 1.34 1.35 - prepare_invoke(byte_no, 1.36 - rbx_method, rax_mtype, // get f2 Method*, f1 MethodType 1.37 - rcx_recv); 1.38 + prepare_invoke(byte_no, rbx_method, rax_mtype, rcx_recv); 1.39 __ verify_method_ptr(rbx_method); 1.40 __ verify_oop(rcx_recv); 1.41 __ null_check(rcx_recv); 1.42 1.43 + // rax: MethodType object (from cpool->resolved_references[f1], if necessary) 1.44 + // rbx: MH.invokeExact_MT method (from f2) 1.45 + 1.46 // Note: rax_mtype is already pushed (if necessary) by prepare_invoke 1.47 1.48 // FIXME: profile the LambdaForm also 1.49 @@ -3140,7 +3142,7 @@ 1.50 1.51 prepare_invoke(byte_no, rbx_method, rax_callsite); 1.52 1.53 - // rax: CallSite object (from cpool->resolved_references[]) 1.54 + // rax: CallSite object (from cpool->resolved_references[f1]) 1.55 // rbx: MH.linkToCallSite method (from f2) 1.56 1.57 // Note: rax_callsite is already pushed by prepare_invoke