Mercurial > hg > graal-compiler
comparison src/cpu/ppc/vm/interpreter_ppc.cpp @ 17917:63c5920a038d
8042309: Some bugfixes for the ppc64 port.
Reviewed-by: kvn
author | goetz |
---|---|
date | Fri, 02 May 2014 14:53:06 +0200 |
parents | fd1b9f02cc91 |
children | f6bde7889409 |
comparison
equal
deleted
inserted
replaced
17916:34862ced4a87 | 17917:63c5920a038d |
---|---|
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); |