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