-
Enhancement
-
Resolution: Fixed
-
P4
-
8-shenandoah, 11, 16-pool, 17
-
b22
-
aarch64
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8269378 | 11.0.13 | Aleksey Shipilev | P4 | Resolved | Fixed | b01 |
In ShenandoahBarrierSetAssembler::generate_c1_pre_barrier_runtime_stub(), we can use shorter instruction sequence for checking if marking in progress:
// Is marking still active?
Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(tmp, gc_state);
- __ mov(rscratch2, ShenandoahHeap::MARKING);
- __ tst(tmp, rscratch2);
- __ br(Assembler::EQ, done);
+ __ tbz(tmp, ShenandoahHeap::MARKING_BITPOS, done);
// Can we store original value in the thread's buffer?
__ ldr(tmp, queue_index);
__ cbz(tmp, runtime);
// Is marking still active?
Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
__ ldrb(tmp, gc_state);
- __ mov(rscratch2, ShenandoahHeap::MARKING);
- __ tst(tmp, rscratch2);
- __ br(Assembler::EQ, done);
+ __ tbz(tmp, ShenandoahHeap::MARKING_BITPOS, done);
// Can we store original value in the thread's buffer?
__ ldr(tmp, queue_index);
__ cbz(tmp, runtime);
- backported by
-
JDK-8269378 Shenandoah: Use shorter instruction sequence for checking if marking in progress
- Resolved