< prev index next >

src/hotspot/cpu/sparc/sparc.ad

Print this page




 962   // may bite us again at some other point and a cleaner/generic
 963   // solution using relocations would be needed.
 964   MacroAssembler _masm(&cbuf);
 965   __ set_inst_mark();
 966 
 967   // We flush the current window just so that there is a valid stack copy
 968   // the fact that the current window becomes active again instantly is
 969   // not a problem there is nothing live in it.
 970 
 971 #ifdef ASSERT
 972   int startpos = __ offset();
 973 #endif /* ASSERT */
 974 
 975   __ call((address)entry_point, rspec);
 976 
 977   if (preserve_g2)   __ delayed()->mov(G2, L7);
 978   else __ delayed()->nop();
 979 
 980   if (preserve_g2)   __ mov(L7, G2);
 981 
 982   if (preserve_g2 && UseLoadBarrier) {
 983     AddressLiteral bad_base((intptr_t)&ZAddressBadMask);
 984     __ load_ptr_contents(bad_base, G6);
 985   }
 986 
 987 #ifdef ASSERT
 988   if (preserve_g2 && (VerifyCompiledCode || VerifyOops)) {
 989     // Trash argument dump slots.
 990     __ set(0xb0b8ac0db0b8ac0d, G1);
 991     __ mov(G1, G5);
 992     __ stx(G1, SP, STACK_BIAS + 0x80);
 993     __ stx(G1, SP, STACK_BIAS + 0x88);
 994     __ stx(G1, SP, STACK_BIAS + 0x90);
 995     __ stx(G1, SP, STACK_BIAS + 0x98);
 996     __ stx(G1, SP, STACK_BIAS + 0xA0);
 997     __ stx(G1, SP, STACK_BIAS + 0xA8);
 998   }
 999 #endif /*ASSERT*/
1000 }
1001 
1002 //=============================================================================




 962   // may bite us again at some other point and a cleaner/generic
 963   // solution using relocations would be needed.
 964   MacroAssembler _masm(&cbuf);
 965   __ set_inst_mark();
 966 
 967   // We flush the current window just so that there is a valid stack copy
 968   // the fact that the current window becomes active again instantly is
 969   // not a problem there is nothing live in it.
 970 
 971 #ifdef ASSERT
 972   int startpos = __ offset();
 973 #endif /* ASSERT */
 974 
 975   __ call((address)entry_point, rspec);
 976 
 977   if (preserve_g2)   __ delayed()->mov(G2, L7);
 978   else __ delayed()->nop();
 979 
 980   if (preserve_g2)   __ mov(L7, G2);
 981 
 982   if (preserve_g2 && UseZGC) {
 983     AddressLiteral bad_base((intptr_t)&ZAddressBadMask);
 984     __ load_ptr_contents(bad_base, G6);
 985   }
 986 
 987 #ifdef ASSERT
 988   if (preserve_g2 && (VerifyCompiledCode || VerifyOops)) {
 989     // Trash argument dump slots.
 990     __ set(0xb0b8ac0db0b8ac0d, G1);
 991     __ mov(G1, G5);
 992     __ stx(G1, SP, STACK_BIAS + 0x80);
 993     __ stx(G1, SP, STACK_BIAS + 0x88);
 994     __ stx(G1, SP, STACK_BIAS + 0x90);
 995     __ stx(G1, SP, STACK_BIAS + 0x98);
 996     __ stx(G1, SP, STACK_BIAS + 0xA0);
 997     __ stx(G1, SP, STACK_BIAS + 0xA8);
 998   }
 999 #endif /*ASSERT*/
1000 }
1001 
1002 //=============================================================================


< prev index next >