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); |