< prev index next >
src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
Print this page
rev 48562 : [mq]: heap23
*** 4074,4084 ****
if (var_size_in_bytes == noreg) {
lea(end, Address(obj, con_size_in_bytes));
} else {
lea(end, Address(obj, var_size_in_bytes));
}
! ldr(rscratch1, Address(rthread, JavaThread::tlab_end_offset()));
cmp(end, rscratch1);
br(Assembler::HI, slow_case);
// update the tlab top pointer
str(end, Address(rthread, JavaThread::tlab_top_offset()));
--- 4074,4084 ----
if (var_size_in_bytes == noreg) {
lea(end, Address(obj, con_size_in_bytes));
} else {
lea(end, Address(obj, var_size_in_bytes));
}
! ldr(rscratch1, Address(rthread, JavaThread::tlab_current_end_offset()));
cmp(end, rscratch1);
br(Assembler::HI, slow_case);
// update the tlab top pointer
str(end, Address(rthread, JavaThread::tlab_top_offset()));
*** 4104,4114 ****
// No allocation in the shared eden.
b(slow_case);
}
ldr(top, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
! ldr(t1, Address(rthread, in_bytes(JavaThread::tlab_end_offset())));
// calculate amount of free space
sub(t1, t1, top);
lsr(t1, t1, LogHeapWordSize);
--- 4104,4114 ----
// No allocation in the shared eden.
b(slow_case);
}
ldr(top, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
! ldr(t1, Address(rthread, in_bytes(JavaThread::tlab_current_end_offset())));
// calculate amount of free space
sub(t1, t1, top);
lsr(t1, t1, LogHeapWordSize);
*** 4198,4208 ****
#endif
str(top, Address(rthread, in_bytes(JavaThread::tlab_start_offset())));
str(top, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
add(top, top, t1);
sub(top, top, (int32_t)ThreadLocalAllocBuffer::alignment_reserve_in_bytes());
! str(top, Address(rthread, in_bytes(JavaThread::tlab_end_offset())));
if (ZeroTLAB) {
// This is a fast TLAB refill, therefore the GC is not notified of it.
// So compiled code must fill the new TLAB with zeroes.
ldr(top, Address(rthread, in_bytes(JavaThread::tlab_start_offset())));
--- 4198,4208 ----
#endif
str(top, Address(rthread, in_bytes(JavaThread::tlab_start_offset())));
str(top, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
add(top, top, t1);
sub(top, top, (int32_t)ThreadLocalAllocBuffer::alignment_reserve_in_bytes());
! str(top, Address(rthread, in_bytes(JavaThread::tlab_current_end_offset())));
if (ZeroTLAB) {
// This is a fast TLAB refill, therefore the GC is not notified of it.
// So compiled code must fill the new TLAB with zeroes.
ldr(top, Address(rthread, in_bytes(JavaThread::tlab_start_offset())));
*** 4345,4355 ****
br(Assembler::HS, next);
STOP("assert(top >= start)");
should_not_reach_here();
bind(next);
! ldr(rscratch2, Address(rthread, in_bytes(JavaThread::tlab_end_offset())));
ldr(rscratch1, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
cmp(rscratch2, rscratch1);
br(Assembler::HS, ok);
STOP("assert(top <= end)");
should_not_reach_here();
--- 4345,4355 ----
br(Assembler::HS, next);
STOP("assert(top >= start)");
should_not_reach_here();
bind(next);
! ldr(rscratch2, Address(rthread, in_bytes(JavaThread::tlab_current_end_offset())));
ldr(rscratch1, Address(rthread, in_bytes(JavaThread::tlab_top_offset())));
cmp(rscratch2, rscratch1);
br(Assembler::HS, ok);
STOP("assert(top <= end)");
should_not_reach_here();
< prev index next >