comparison src/cpu/x86/vm/methodHandles_x86.cpp @ 7482:989155e2d07a

Merge with hs25-b15.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 16 Jan 2013 01:34:24 +0100
parents fd74228fd5ca
children cc32ccaaf47f
comparison
equal deleted inserted replaced
7381:6761a8f854a4 7482:989155e2d07a
167 // the following assumes that a Method* is normally compressed in the vmtarget field: 167 // the following assumes that a Method* is normally compressed in the vmtarget field:
168 __ movptr(method_temp, Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes()))); 168 __ movptr(method_temp, Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())));
169 169
170 if (VerifyMethodHandles && !for_compiler_entry) { 170 if (VerifyMethodHandles && !for_compiler_entry) {
171 // make sure recv is already on stack 171 // make sure recv is already on stack
172 __ movptr(temp2, Address(method_temp, Method::const_offset()));
172 __ load_sized_value(temp2, 173 __ load_sized_value(temp2,
173 Address(method_temp, Method::size_of_parameters_offset()), 174 Address(temp2, ConstMethod::size_of_parameters_offset()),
174 sizeof(u2), /*is_signed*/ false); 175 sizeof(u2), /*is_signed*/ false);
175 // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), ""); 176 // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
176 Label L; 177 Label L;
177 __ cmpptr(recv, __ argument_address(temp2, -1)); 178 __ cmpptr(recv, __ argument_address(temp2, -1));
178 __ jcc(Assembler::equal, L); 179 __ jcc(Assembler::equal, L);
232 // First task: Find out how big the argument list is. 233 // First task: Find out how big the argument list is.
233 Address rdx_first_arg_addr; 234 Address rdx_first_arg_addr;
234 int ref_kind = signature_polymorphic_intrinsic_ref_kind(iid); 235 int ref_kind = signature_polymorphic_intrinsic_ref_kind(iid);
235 assert(ref_kind != 0 || iid == vmIntrinsics::_invokeBasic, "must be _invokeBasic or a linkTo intrinsic"); 236 assert(ref_kind != 0 || iid == vmIntrinsics::_invokeBasic, "must be _invokeBasic or a linkTo intrinsic");
236 if (ref_kind == 0 || MethodHandles::ref_kind_has_receiver(ref_kind)) { 237 if (ref_kind == 0 || MethodHandles::ref_kind_has_receiver(ref_kind)) {
238 __ movptr(rdx_argp, Address(rbx_method, Method::const_offset()));
237 __ load_sized_value(rdx_argp, 239 __ load_sized_value(rdx_argp,
238 Address(rbx_method, Method::size_of_parameters_offset()), 240 Address(rdx_argp, ConstMethod::size_of_parameters_offset()),
239 sizeof(u2), /*is_signed*/ false); 241 sizeof(u2), /*is_signed*/ false);
240 // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), ""); 242 // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
241 rdx_first_arg_addr = __ argument_address(rdx_argp, -1); 243 rdx_first_arg_addr = __ argument_address(rdx_argp, -1);
242 } else { 244 } else {
243 DEBUG_ONLY(rdx_argp = noreg); 245 DEBUG_ONLY(rdx_argp = noreg);