comparison src/cpu/sparc/vm/interp_masm_sparc.cpp @ 14704:b51e29501f30

Merged with jdk9/dev/hotspot changeset 9486a41de3b7
author twisti
date Tue, 18 Mar 2014 20:19:10 -0700
parents d8041d695d19 d3f14809b051
children 92aa6797d639
comparison
equal deleted inserted replaced
14647:8f483e200405 14704:b51e29501f30
2545 2545
2546 2546
2547 void InterpreterMacroAssembler::verify_FPU(int stack_depth, TosState state) { 2547 void InterpreterMacroAssembler::verify_FPU(int stack_depth, TosState state) {
2548 if (state == ftos || state == dtos) MacroAssembler::verify_FPU(stack_depth); 2548 if (state == ftos || state == dtos) MacroAssembler::verify_FPU(stack_depth);
2549 } 2549 }
2550
2551
2552 // Jump if ((*counter_addr += increment) & mask) satisfies the condition.
2553 void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr,
2554 int increment, int mask,
2555 Register scratch1, Register scratch2,
2556 Condition cond, Label *where) {
2557 ld(counter_addr, scratch1);
2558 add(scratch1, increment, scratch1);
2559 if (is_simm13(mask)) {
2560 andcc(scratch1, mask, G0);
2561 } else {
2562 set(mask, scratch2);
2563 andcc(scratch1, scratch2, G0);
2564 }
2565 br(cond, false, Assembler::pn, *where);
2566 delayed()->st(scratch1, counter_addr);
2567 }
2550 #endif /* CC_INTERP */ 2568 #endif /* CC_INTERP */
2551 2569
2552 // Inline assembly for: 2570 // Inline assembly for:
2553 // 2571 //
2554 // if (thread is in interp_only_mode) { 2572 // if (thread is in interp_only_mode) {
2694 } else { 2712 } else {
2695 pop(state); 2713 pop(state);
2696 } 2714 }
2697 #endif // CC_INTERP 2715 #endif // CC_INTERP
2698 } 2716 }
2699
2700 // Jump if ((*counter_addr += increment) & mask) satisfies the condition.
2701 void InterpreterMacroAssembler::increment_mask_and_jump(Address counter_addr,
2702 int increment, int mask,
2703 Register scratch1, Register scratch2,
2704 Condition cond, Label *where) {
2705 ld(counter_addr, scratch1);
2706 add(scratch1, increment, scratch1);
2707 if (is_simm13(mask)) {
2708 andcc(scratch1, mask, G0);
2709 } else {
2710 set(mask, scratch2);
2711 andcc(scratch1, scratch2, G0);
2712 }
2713 br(cond, false, Assembler::pn, *where);
2714 delayed()->st(scratch1, counter_addr);
2715 }