267 std(r, - Interpreter::stackElementSize, R15_esp);
268 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
269 }
270
271 void InterpreterMacroAssembler::push_f(FloatRegister f) {
272 stfs(f, 0, R15_esp);
273 addi(R15_esp, R15_esp, - Interpreter::stackElementSize );
274 }
275
276 void InterpreterMacroAssembler::push_d(FloatRegister f) {
277 stfd(f, - Interpreter::stackElementSize, R15_esp);
278 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
279 }
280
281 void InterpreterMacroAssembler::push_2ptrs(Register first, Register second) {
282 std(first, 0, R15_esp);
283 std(second, -Interpreter::stackElementSize, R15_esp);
284 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
285 }
286
287 void InterpreterMacroAssembler::push_l_pop_d(Register l, FloatRegister d) {
288 std(l, 0, R15_esp);
289 lfd(d, 0, R15_esp);
290 }
291
292 void InterpreterMacroAssembler::push_d_pop_l(FloatRegister d, Register l) {
293 stfd(d, 0, R15_esp);
294 ld(l, 0, R15_esp);
295 }
296
297 void InterpreterMacroAssembler::push(TosState state) {
298 switch (state) {
299 case atos: push_ptr(); break;
300 case btos:
301 case ztos:
302 case ctos:
303 case stos:
304 case itos: push_i(); break;
305 case ltos: push_l(); break;
306 case ftos: push_f(); break;
307 case dtos: push_d(); break;
308 case vtos: /* nothing to do */ break;
309 default : ShouldNotReachHere();
310 }
311 }
312
313 void InterpreterMacroAssembler::pop(TosState state) {
314 switch (state) {
|
267 std(r, - Interpreter::stackElementSize, R15_esp);
268 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
269 }
270
271 void InterpreterMacroAssembler::push_f(FloatRegister f) {
272 stfs(f, 0, R15_esp);
273 addi(R15_esp, R15_esp, - Interpreter::stackElementSize );
274 }
275
276 void InterpreterMacroAssembler::push_d(FloatRegister f) {
277 stfd(f, - Interpreter::stackElementSize, R15_esp);
278 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
279 }
280
281 void InterpreterMacroAssembler::push_2ptrs(Register first, Register second) {
282 std(first, 0, R15_esp);
283 std(second, -Interpreter::stackElementSize, R15_esp);
284 addi(R15_esp, R15_esp, - 2 * Interpreter::stackElementSize );
285 }
286
287 void InterpreterMacroAssembler::move_l_to_d(Register l, FloatRegister d) {
288 if (VM_Version::has_mtfprd()) {
289 mtfprd(d, l);
290 } else {
291 std(l, 0, R15_esp);
292 lfd(d, 0, R15_esp);
293 }
294 }
295
296 void InterpreterMacroAssembler::move_d_to_l(FloatRegister d, Register l) {
297 if (VM_Version::has_mtfprd()) {
298 mffprd(l, d);
299 } else {
300 stfd(d, 0, R15_esp);
301 ld(l, 0, R15_esp);
302 }
303 }
304
305 void InterpreterMacroAssembler::push(TosState state) {
306 switch (state) {
307 case atos: push_ptr(); break;
308 case btos:
309 case ztos:
310 case ctos:
311 case stos:
312 case itos: push_i(); break;
313 case ltos: push_l(); break;
314 case ftos: push_f(); break;
315 case dtos: push_d(); break;
316 case vtos: /* nothing to do */ break;
317 default : ShouldNotReachHere();
318 }
319 }
320
321 void InterpreterMacroAssembler::pop(TosState state) {
322 switch (state) {
|