src/cpu/sparc/vm/methodHandles_sparc.cpp

changeset 2978
d83ac25d0304
parent 2954
f8c9417e3571
child 3005
341a57af9b0a
     1.1 --- a/src/cpu/sparc/vm/methodHandles_sparc.cpp	Wed Jun 15 10:20:03 2011 -0700
     1.2 +++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Thu Jun 16 13:46:55 2011 -0700
     1.3 @@ -307,11 +307,12 @@
     1.4    __ stop("damaged ricochet frame: L4 < FP");
     1.5  
     1.6    __ BIND(L_ok_2);
     1.7 -  __ sub(L4_saved_args_base, UNREASONABLE_STACK_MOVE * Interpreter::stackElementSize, O7_temp);
     1.8 -  __ cmp(O7_temp, FP_temp);
     1.9 -  __ br(Assembler::lessEqualUnsigned, false, Assembler::pt, L_ok_3);
    1.10 -  __ delayed()->nop();
    1.11 -  __ stop("damaged ricochet frame: (L4 - UNREASONABLE_STACK_MOVE) > FP");
    1.12 +  // Disable until we decide on it's fate
    1.13 +  // __ sub(L4_saved_args_base, UNREASONABLE_STACK_MOVE * Interpreter::stackElementSize, O7_temp);
    1.14 +  // __ cmp(O7_temp, FP_temp);
    1.15 +  // __ br(Assembler::lessEqualUnsigned, false, Assembler::pt, L_ok_3);
    1.16 +  // __ delayed()->nop();
    1.17 +  // __ stop("damaged ricochet frame: (L4 - UNREASONABLE_STACK_MOVE) > FP");
    1.18  
    1.19    __ BIND(L_ok_3);
    1.20    extract_conversion_dest_type(_masm, L5_conversion, O7_temp);
    1.21 @@ -547,8 +548,9 @@
    1.22    __ brx(Assembler::notEqual, false, Assembler::pt, invoke_generic_slow_path);
    1.23    __ delayed()->nop();
    1.24    __ mov(O0_mtype, G5_method_type);  // required by throw_WrongMethodType
    1.25 -  // mov(G3_method_handle, G3_method_handle);  // already in this register
    1.26 -  __ jump_to(AddressLiteral(Interpreter::throw_WrongMethodType_entry()), O1_scratch);
    1.27 +  __ mov(G3_method_handle, G3_method_handle);  // already in this register
    1.28 +  // O0 will be filled in with JavaThread in stub
    1.29 +  __ jump_to(AddressLiteral(StubRoutines::throw_WrongMethodTypeException_entry()), O3_scratch);
    1.30    __ delayed()->nop();
    1.31  
    1.32    // here's where control starts out:
    1.33 @@ -1145,23 +1147,13 @@
    1.34        // FIXME: fill in _raise_exception_method with a suitable java.lang.invoke method
    1.35        __ set(AddressLiteral((address) &_raise_exception_method), G5_method);
    1.36        __ ld_ptr(Address(G5_method, 0), G5_method);
    1.37 -      __ tst(G5_method);
    1.38 -      __ brx(Assembler::zero, false, Assembler::pn, L_no_method);
    1.39 -      __ delayed()->nop();
    1.40  
    1.41        const int jobject_oop_offset = 0;
    1.42        __ ld_ptr(Address(G5_method, jobject_oop_offset), G5_method);
    1.43 -      __ tst(G5_method);
    1.44 -      __ brx(Assembler::zero, false, Assembler::pn, L_no_method);
    1.45 -      __ delayed()->nop();
    1.46  
    1.47        __ verify_oop(G5_method);
    1.48        __ jump_indirect_to(G5_method_fce, O3_scratch);  // jump to compiled entry
    1.49        __ delayed()->nop();
    1.50 -
    1.51 -      // Do something that is at least causes a valid throw from the interpreter.
    1.52 -      __ bind(L_no_method);
    1.53 -      __ unimplemented("call throw_WrongMethodType_entry");
    1.54      }
    1.55      break;
    1.56  

mercurial