hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
changeset 46505 fd4bc78630b1
parent 46329 53ccc37bda19
child 46560 388aa8d67c80
equal deleted inserted replaced
46504:38048d4d20e7 46505:fd4bc78630b1
   179   __ verify_oop(recv);
   179   __ verify_oop(recv);
   180   __ load_heap_oop(Address(recv,        NONZERO(java_lang_invoke_MethodHandle::form_offset_in_bytes())),   method_temp);
   180   __ load_heap_oop(Address(recv,        NONZERO(java_lang_invoke_MethodHandle::form_offset_in_bytes())),   method_temp);
   181   __ verify_oop(method_temp);
   181   __ verify_oop(method_temp);
   182   __ load_heap_oop(Address(method_temp, NONZERO(java_lang_invoke_LambdaForm::vmentry_offset_in_bytes())),  method_temp);
   182   __ load_heap_oop(Address(method_temp, NONZERO(java_lang_invoke_LambdaForm::vmentry_offset_in_bytes())),  method_temp);
   183   __ verify_oop(method_temp);
   183   __ verify_oop(method_temp);
   184   // the following assumes that a Method* is normally compressed in the vmtarget field:
   184   __ load_heap_oop(Address(method_temp, NONZERO(java_lang_invoke_MemberName::method_offset_in_bytes())), method_temp);
   185   __ ld_ptr(       Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())), method_temp);
   185   __ verify_oop(method_temp);
       
   186   __ ld_ptr(       Address(method_temp, NONZERO(java_lang_invoke_ResolvedMethodName::vmtarget_offset_in_bytes())),   method_temp);
   186 
   187 
   187   if (VerifyMethodHandles && !for_compiler_entry) {
   188   if (VerifyMethodHandles && !for_compiler_entry) {
   188     // make sure recv is already on stack
   189     // make sure recv is already on stack
   189     __ ld_ptr(method_temp, in_bytes(Method::const_offset()), temp2);
   190     __ ld_ptr(method_temp, in_bytes(Method::const_offset()), temp2);
   190     __ load_sized_value(Address(temp2, ConstMethod::size_of_parameters_offset()),
   191     __ load_sized_value(Address(temp2, ConstMethod::size_of_parameters_offset()),
   330                    "MemberName required for invokeVirtual etc.");
   331                    "MemberName required for invokeVirtual etc.");
   331     }
   332     }
   332 
   333 
   333     Address member_clazz(    member_reg, NONZERO(java_lang_invoke_MemberName::clazz_offset_in_bytes()));
   334     Address member_clazz(    member_reg, NONZERO(java_lang_invoke_MemberName::clazz_offset_in_bytes()));
   334     Address member_vmindex(  member_reg, NONZERO(java_lang_invoke_MemberName::vmindex_offset_in_bytes()));
   335     Address member_vmindex(  member_reg, NONZERO(java_lang_invoke_MemberName::vmindex_offset_in_bytes()));
   335     Address member_vmtarget( member_reg, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes()));
   336     Address member_vmtarget( member_reg, NONZERO(java_lang_invoke_MemberName::method_offset_in_bytes()));
       
   337     Address vmtarget_method( G5_method, NONZERO(java_lang_invoke_ResolvedMethodName::vmtarget_offset_in_bytes()));
   336 
   338 
   337     Register temp1_recv_klass = temp1;
   339     Register temp1_recv_klass = temp1;
   338     if (iid != vmIntrinsics::_linkToStatic) {
   340     if (iid != vmIntrinsics::_linkToStatic) {
   339       __ verify_oop(receiver_reg);
   341       __ verify_oop(receiver_reg);
   340       if (iid == vmIntrinsics::_linkToSpecial) {
   342       if (iid == vmIntrinsics::_linkToSpecial) {
   382     switch (iid) {
   384     switch (iid) {
   383     case vmIntrinsics::_linkToSpecial:
   385     case vmIntrinsics::_linkToSpecial:
   384       if (VerifyMethodHandles) {
   386       if (VerifyMethodHandles) {
   385         verify_ref_kind(_masm, JVM_REF_invokeSpecial, member_reg, temp2);
   387         verify_ref_kind(_masm, JVM_REF_invokeSpecial, member_reg, temp2);
   386       }
   388       }
   387       __ ld_ptr(member_vmtarget, G5_method);
   389       __ load_heap_oop(member_vmtarget, G5_method);
       
   390       __ ld_ptr(vmtarget_method, G5_method);
   388       break;
   391       break;
   389 
   392 
   390     case vmIntrinsics::_linkToStatic:
   393     case vmIntrinsics::_linkToStatic:
   391       if (VerifyMethodHandles) {
   394       if (VerifyMethodHandles) {
   392         verify_ref_kind(_masm, JVM_REF_invokeStatic, member_reg, temp2);
   395         verify_ref_kind(_masm, JVM_REF_invokeStatic, member_reg, temp2);
   393       }
   396       }
   394       __ ld_ptr(member_vmtarget, G5_method);
   397       __ load_heap_oop(member_vmtarget, G5_method);
       
   398       __ ld_ptr(vmtarget_method, G5_method);
   395       break;
   399       break;
   396 
   400 
   397     case vmIntrinsics::_linkToVirtual:
   401     case vmIntrinsics::_linkToVirtual:
   398     {
   402     {
   399       // same as TemplateTable::invokevirtual,
   403       // same as TemplateTable::invokevirtual,