342
343
344 // Known good alignment in _LP64 but unknown otherwise
345 void InterpreterMacroAssembler::load_unaligned_long(Register r1, int offset, Register rd) {
346 assert_not_delayed();
347 #ifdef _LP64
348 ldx(r1, offset, rd);
349 #else
350 ld(r1, offset, rd);
351 ld(r1, offset + Interpreter::stackElementSize, rd->successor());
352 #endif
353 }
354
355 // Known good alignment in _LP64 but unknown otherwise
356 void InterpreterMacroAssembler::store_unaligned_long(Register l, Register r1, int offset) {
357 assert_not_delayed();
358
359 #ifdef _LP64
360 stx(l, r1, offset);
361 // store something more useful here
362 debug_only(stx(G0, r1, offset+Interpreter::stackElementSize);)
363 #else
364 st(l, r1, offset);
365 st(l->successor(), r1, offset + Interpreter::stackElementSize);
366 #endif
367 }
368
369 void InterpreterMacroAssembler::pop_i(Register r) {
370 assert_not_delayed();
371 ld(Lesp, Interpreter::expr_offset_in_bytes(0), r);
372 inc(Lesp, Interpreter::stackElementSize);
373 debug_only(verify_esp(Lesp));
374 }
375
376 void InterpreterMacroAssembler::pop_ptr(Register r, Register scratch) {
377 assert_not_delayed();
378 ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), r);
379 inc(Lesp, Interpreter::stackElementSize);
380 debug_only(verify_esp(Lesp));
381 }
382
|
342
343
344 // Known good alignment in _LP64 but unknown otherwise
345 void InterpreterMacroAssembler::load_unaligned_long(Register r1, int offset, Register rd) {
346 assert_not_delayed();
347 #ifdef _LP64
348 ldx(r1, offset, rd);
349 #else
350 ld(r1, offset, rd);
351 ld(r1, offset + Interpreter::stackElementSize, rd->successor());
352 #endif
353 }
354
355 // Known good alignment in _LP64 but unknown otherwise
356 void InterpreterMacroAssembler::store_unaligned_long(Register l, Register r1, int offset) {
357 assert_not_delayed();
358
359 #ifdef _LP64
360 stx(l, r1, offset);
361 // store something more useful here
362 stx(G0, r1, offset+Interpreter::stackElementSize);
363 #else
364 st(l, r1, offset);
365 st(l->successor(), r1, offset + Interpreter::stackElementSize);
366 #endif
367 }
368
369 void InterpreterMacroAssembler::pop_i(Register r) {
370 assert_not_delayed();
371 ld(Lesp, Interpreter::expr_offset_in_bytes(0), r);
372 inc(Lesp, Interpreter::stackElementSize);
373 debug_only(verify_esp(Lesp));
374 }
375
376 void InterpreterMacroAssembler::pop_ptr(Register r, Register scratch) {
377 assert_not_delayed();
378 ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), r);
379 inc(Lesp, Interpreter::stackElementSize);
380 debug_only(verify_esp(Lesp));
381 }
382
|