hotspot/src/cpu/ppc/vm/interpreter_ppc.cpp
changeset 24349 d8f40e5b392d
parent 23221 b70675ece1ce
child 25715 d5a8dbdc5150
equal deleted inserted replaced
24348:b51cd513d2e0 24349:d8f40e5b392d
   137   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method);
   137   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_signature), R16_thread, R19_method);
   138 
   138 
   139   // Signature is in R3_RET. Signature is callee saved.
   139   // Signature is in R3_RET. Signature is callee saved.
   140   __ mr(signature, R3_RET);
   140   __ mr(signature, R3_RET);
   141 
   141 
   142   // Reload method, it may have moved.
       
   143 #ifdef CC_INTERP
       
   144   __ ld(R19_method, state_(_method));
       
   145 #else
       
   146   __ ld(R19_method, 0, target_sp);
       
   147   __ ld(R19_method, _ijava_state_neg(method), R19_method);
       
   148 #endif
       
   149 
       
   150   // Get the result handler.
   142   // Get the result handler.
   151   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_result_handler), R16_thread, R19_method);
   143   __ call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::get_result_handler), R16_thread, R19_method);
   152 
       
   153   // Reload method, it may have moved.
       
   154 #ifdef CC_INTERP
       
   155   __ ld(R19_method, state_(_method));
       
   156 #else
       
   157   __ ld(R19_method, 0, target_sp);
       
   158   __ ld(R19_method, _ijava_state_neg(method), R19_method);
       
   159 #endif
       
   160 
   144 
   161   {
   145   {
   162     Label L;
   146     Label L;
   163     // test if static
   147     // test if static
   164     // _access_flags._flags must be at offset 0.
   148     // _access_flags._flags must be at offset 0.
   165     // TODO PPC port: requires change in shared code.
   149     // TODO PPC port: requires change in shared code.
   166     //assert(in_bytes(AccessFlags::flags_offset()) == 0,
   150     //assert(in_bytes(AccessFlags::flags_offset()) == 0,
   167     //       "MethodOopDesc._access_flags == MethodOopDesc._access_flags._flags");
   151     //       "MethodDesc._access_flags == MethodDesc._access_flags._flags");
   168     // _access_flags must be a 32 bit value.
   152     // _access_flags must be a 32 bit value.
   169     assert(sizeof(AccessFlags) == 4, "wrong size");
   153     assert(sizeof(AccessFlags) == 4, "wrong size");
   170     __ lwa(R11_scratch1/*access_flags*/, method_(access_flags));
   154     __ lwa(R11_scratch1/*access_flags*/, method_(access_flags));
   171     // testbit with condition register.
   155     // testbit with condition register.
   172     __ testbitdi(CCR0, R0, R11_scratch1/*access_flags*/, JVM_ACC_STATIC_BIT);
   156     __ testbitdi(CCR0, R0, R11_scratch1/*access_flags*/, JVM_ACC_STATIC_BIT);