src/cpu/ppc/vm/runtime_ppc.cpp

changeset 6511
31e80afe3fed
parent 6495
67fa91961822
child 6876
710a3c8b516e
     1.1 --- a/src/cpu/ppc/vm/runtime_ppc.cpp	Thu Feb 20 11:05:12 2014 +0100
     1.2 +++ b/src/cpu/ppc/vm/runtime_ppc.cpp	Thu Mar 06 10:55:28 2014 -0800
     1.3 @@ -87,7 +87,7 @@
     1.4  
     1.5    address start = __ pc();
     1.6  
     1.7 -  int frame_size_in_bytes = frame::abi_112_size;
     1.8 +  int frame_size_in_bytes = frame::abi_reg_args_size;
     1.9    OopMap* map = new OopMap(frame_size_in_bytes / sizeof(jint), 0);
    1.10  
    1.11    // Exception pc is 'return address' for stack walker.
    1.12 @@ -99,7 +99,7 @@
    1.13  
    1.14    // Save callee-saved registers.
    1.15    // Push a C frame for the exception blob. It is needed for the C call later on.
    1.16 -  __ push_frame_abi112(0, R11_scratch1);
    1.17 +  __ push_frame_reg_args(0, R11_scratch1);
    1.18  
    1.19    // This call does all the hard work. It checks if an exception handler
    1.20    // exists in the method.
    1.21 @@ -109,8 +109,12 @@
    1.22    __ set_last_Java_frame(/*sp=*/R1_SP, noreg);
    1.23  
    1.24    __ mr(R3_ARG1, R16_thread);
    1.25 +#if defined(ABI_ELFv2)
    1.26 +  __ call_c((address) OptoRuntime::handle_exception_C, relocInfo::none);
    1.27 +#else
    1.28    __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, OptoRuntime::handle_exception_C),
    1.29              relocInfo::none);
    1.30 +#endif
    1.31    address calls_return_pc = __ last_calls_return_pc();
    1.32  # ifdef ASSERT
    1.33    __ cmpdi(CCR0, R3_RET, 0);
    1.34 @@ -162,7 +166,11 @@
    1.35    __ bind(mh_callsite);
    1.36    __ mr(R31, R3_RET); // Save branch address.
    1.37    __ mr(R3_ARG1, R16_thread);
    1.38 +#if defined(ABI_ELFv2)
    1.39 +  __ call_c((address) adjust_SP_for_methodhandle_callsite, relocInfo::none);
    1.40 +#else
    1.41    __ call_c(CAST_FROM_FN_PTR(FunctionDescriptor*, adjust_SP_for_methodhandle_callsite), relocInfo::none);
    1.42 +#endif
    1.43    // Returns unextended_sp in R3_RET.
    1.44  
    1.45    __ mtctr(R31); // Move address of exception handler to SR_CTR.

mercurial