mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 02:54:35 +02:00
8161085: PreserveFPRegistersTest fails with 'AssertionError: Final value has changed'
C1's G1 barriers should save/restore vector registers before calling into the runtime. Reviewed-by: kvn, vlivanov
This commit is contained in:
parent
8474269d18
commit
36c39d5c25
1 changed files with 4 additions and 14 deletions
|
@ -881,20 +881,15 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||||
__ delayed()->st_ptr(tmp, G2_thread, satb_q_index_byte_offset);
|
__ delayed()->st_ptr(tmp, G2_thread, satb_q_index_byte_offset);
|
||||||
|
|
||||||
__ bind(refill);
|
__ bind(refill);
|
||||||
__ save_frame(0);
|
|
||||||
|
|
||||||
__ mov(pre_val, L0);
|
save_live_registers(sasm);
|
||||||
__ mov(tmp, L1);
|
|
||||||
__ mov(tmp2, L2);
|
|
||||||
|
|
||||||
__ call_VM_leaf(L7_thread_cache,
|
__ call_VM_leaf(L7_thread_cache,
|
||||||
CAST_FROM_FN_PTR(address,
|
CAST_FROM_FN_PTR(address,
|
||||||
SATBMarkQueueSet::handle_zero_index_for_thread),
|
SATBMarkQueueSet::handle_zero_index_for_thread),
|
||||||
G2_thread);
|
G2_thread);
|
||||||
|
|
||||||
__ mov(L0, pre_val);
|
restore_live_registers(sasm);
|
||||||
__ mov(L1, tmp);
|
|
||||||
__ mov(L2, tmp2);
|
|
||||||
|
|
||||||
__ br(Assembler::always, /*annul*/false, Assembler::pt, restart);
|
__ br(Assembler::always, /*annul*/false, Assembler::pt, restart);
|
||||||
__ delayed()->restore();
|
__ delayed()->restore();
|
||||||
|
@ -986,20 +981,15 @@ OopMapSet* Runtime1::generate_code_for(StubID id, StubAssembler* sasm) {
|
||||||
__ delayed()->st_ptr(tmp3, G2_thread, dirty_card_q_index_byte_offset);
|
__ delayed()->st_ptr(tmp3, G2_thread, dirty_card_q_index_byte_offset);
|
||||||
|
|
||||||
__ bind(refill);
|
__ bind(refill);
|
||||||
__ save_frame(0);
|
|
||||||
|
|
||||||
__ mov(tmp2, L0);
|
save_live_registers(sasm);
|
||||||
__ mov(tmp3, L1);
|
|
||||||
__ mov(tmp4, L2);
|
|
||||||
|
|
||||||
__ call_VM_leaf(L7_thread_cache,
|
__ call_VM_leaf(L7_thread_cache,
|
||||||
CAST_FROM_FN_PTR(address,
|
CAST_FROM_FN_PTR(address,
|
||||||
DirtyCardQueueSet::handle_zero_index_for_thread),
|
DirtyCardQueueSet::handle_zero_index_for_thread),
|
||||||
G2_thread);
|
G2_thread);
|
||||||
|
|
||||||
__ mov(L0, tmp2);
|
restore_live_registers(sasm);
|
||||||
__ mov(L1, tmp3);
|
|
||||||
__ mov(L2, tmp4);
|
|
||||||
|
|
||||||
__ br(Assembler::always, /*annul*/false, Assembler::pt, restart);
|
__ br(Assembler::always, /*annul*/false, Assembler::pt, restart);
|
||||||
__ delayed()->restore();
|
__ delayed()->restore();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue