< prev index next >

src/hotspot/cpu/arm/macroAssembler_arm.cpp

Print this page
rev 49665 : 8201326: Renaming ThreadLocalAllocationBuffer end to current_end
Summary: Rename the TLAB end field to a better name
Contributed-by: jcbeyler@google.com
rev 49666 : [mq]: renaming2


1293   // Update heap_top if allocation succeeded
1294   cmp(obj_end, heap_end);
1295   b(slow_case, hi);
1296 
1297 #ifdef AARCH64
1298   stxr(heap_end/*scratched*/, obj_end, top_addr);
1299   cbnz_w(heap_end, retry);
1300 #else
1301   atomic_cas_bool(obj, obj_end, top_addr, 0, heap_end/*scratched*/);
1302   b(retry, ne);
1303 #endif // AARCH64
1304 }
1305 
1306 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
1307 void MacroAssembler::tlab_allocate(Register obj, Register obj_end, Register tmp1,
1308                                  RegisterOrConstant size_expression, Label& slow_case) {
1309   const Register tlab_end = tmp1;
1310   assert_different_registers(obj, obj_end, tlab_end);
1311 
1312   ldr(obj, Address(Rthread, JavaThread::tlab_top_offset()));
1313   ldr(tlab_end, Address(Rthread, JavaThread::tlab_end_offset()));
1314   add_rc(obj_end, obj, size_expression);
1315   cmp(obj_end, tlab_end);
1316   b(slow_case, hi);
1317   str(obj_end, Address(Rthread, JavaThread::tlab_top_offset()));
1318 }
1319 
1320 // Fills memory regions [start..end] with zeroes. Clobbers `start` and `tmp` registers.
1321 void MacroAssembler::zero_memory(Register start, Register end, Register tmp) {
1322   Label loop;
1323   const Register ptr = start;
1324 
1325 #ifdef AARCH64
1326   // TODO-AARCH64 - compare performance of 2x word zeroing with simple 1x
1327   const Register size = tmp;
1328   Label remaining, done;
1329 
1330   sub(size, end, start);
1331 
1332 #ifdef ASSERT
1333   { Label L;




1293   // Update heap_top if allocation succeeded
1294   cmp(obj_end, heap_end);
1295   b(slow_case, hi);
1296 
1297 #ifdef AARCH64
1298   stxr(heap_end/*scratched*/, obj_end, top_addr);
1299   cbnz_w(heap_end, retry);
1300 #else
1301   atomic_cas_bool(obj, obj_end, top_addr, 0, heap_end/*scratched*/);
1302   b(retry, ne);
1303 #endif // AARCH64
1304 }
1305 
1306 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
1307 void MacroAssembler::tlab_allocate(Register obj, Register obj_end, Register tmp1,
1308                                  RegisterOrConstant size_expression, Label& slow_case) {
1309   const Register tlab_end = tmp1;
1310   assert_different_registers(obj, obj_end, tlab_end);
1311 
1312   ldr(obj, Address(Rthread, JavaThread::tlab_top_offset()));
1313   ldr(tlab_end, Address(Rthread, JavaThread::tlab_fast_path_end_offset()));
1314   add_rc(obj_end, obj, size_expression);
1315   cmp(obj_end, tlab_end);
1316   b(slow_case, hi);
1317   str(obj_end, Address(Rthread, JavaThread::tlab_top_offset()));
1318 }
1319 
1320 // Fills memory regions [start..end] with zeroes. Clobbers `start` and `tmp` registers.
1321 void MacroAssembler::zero_memory(Register start, Register end, Register tmp) {
1322   Label loop;
1323   const Register ptr = start;
1324 
1325 #ifdef AARCH64
1326   // TODO-AARCH64 - compare performance of 2x word zeroing with simple 1x
1327   const Register size = tmp;
1328   Label remaining, done;
1329 
1330   sub(size, end, start);
1331 
1332 #ifdef ASSERT
1333   { Label L;


< prev index next >