src/cpu/sparc/vm/methodHandles_sparc.cpp

changeset 2903
fabcf26ee72f
parent 2874
8d944991dbf9
child 2950
cba7b5c2d53f
     1.1 --- a/src/cpu/sparc/vm/methodHandles_sparc.cpp	Thu May 12 10:33:17 2011 -0700
     1.2 +++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Thu May 12 14:04:48 2011 -0700
     1.3 @@ -142,18 +142,8 @@
     1.4    Register O2_form    = O2_scratch;
     1.5    Register O3_adapter = O3_scratch;
     1.6    __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes,               O1_scratch)), O2_form);
     1.7 -  // load_heap_oop(Address(O2_form,  __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
     1.8 -  // deal with old JDK versions:
     1.9 -  __ add(          Address(O2_form,  __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
    1.10 -  __ cmp(O3_adapter, O2_form);
    1.11 -  Label sorry_no_invoke_generic;
    1.12 -  __ brx(Assembler::lessUnsigned, false, Assembler::pn, sorry_no_invoke_generic);
    1.13 -  __ delayed()->nop();
    1.14 -
    1.15 -  __ load_heap_oop(Address(O3_adapter, 0), O3_adapter);
    1.16 -  __ tst(O3_adapter);
    1.17 -  __ brx(Assembler::zero, false, Assembler::pn, sorry_no_invoke_generic);
    1.18 -  __ delayed()->nop();
    1.19 +  __ load_heap_oop(Address(O2_form,  __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
    1.20 +  __ verify_oop(O3_adapter);
    1.21    __ st_ptr(O3_adapter, Address(O4_argbase, 1 * Interpreter::stackElementSize));
    1.22    // As a trusted first argument, pass the type being called, so the adapter knows
    1.23    // the actual types of the arguments and return values.
    1.24 @@ -164,12 +154,6 @@
    1.25    trace_method_handle(_masm, "invokeGeneric");
    1.26    __ jump_to_method_handle_entry(G3_method_handle, O1_scratch);
    1.27  
    1.28 -  __ bind(sorry_no_invoke_generic); // no invokeGeneric implementation available!
    1.29 -  __ mov(O0_mtype, G5_method_type);  // required by throw_WrongMethodType
    1.30 -  // mov(G3_method_handle, G3_method_handle);  // already in this register
    1.31 -  __ jump_to(AddressLiteral(Interpreter::throw_WrongMethodType_entry()), O1_scratch);
    1.32 -  __ delayed()->nop();
    1.33 -
    1.34    return entry_point;
    1.35  }
    1.36  

mercurial