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