Mercurial > hg > truffle
comparison src/cpu/x86/vm/methodHandles_x86.cpp @ 7458:4daebd4cc1dd
Merge
author | minqi |
---|---|
date | Mon, 24 Dec 2012 11:46:38 -0800 |
parents | fd74228fd5ca |
children | cc32ccaaf47f |
comparison
equal
deleted
inserted
replaced
7457:35431a769282 | 7458:4daebd4cc1dd |
---|---|
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); |