< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

Print this page
rev 50637 : [mq]: JDK-8205336.patch
rev 50638 : [mq]: JDK-8205336-01.patch


4062     assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
4063     assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop");
4064   }
4065 #endif
4066   int oop_index = oop_recorder()->find_index(obj);
4067   return Address((address)obj, oop_Relocation::spec(oop_index));
4068 }
4069 
4070 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
4071 void MacroAssembler::tlab_allocate(Register obj,
4072                                    Register var_size_in_bytes,
4073                                    int con_size_in_bytes,
4074                                    Register t1,
4075                                    Register t2,
4076                                    Label& slow_case) {
4077   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
4078   bs->tlab_allocate(this, obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
4079 }
4080 
4081 // Defines obj, preserves var_size_in_bytes
4082 void MacroAssembler::eden_allocate(Register thread, Register obj,
4083                                    Register var_size_in_bytes,
4084                                    int con_size_in_bytes,
4085                                    Register t1,
4086                                    Label& slow_case) {
4087   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
4088   bs->eden_allocate(this, thread, obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
4089 }
4090 
4091 // Zero words; len is in bytes
4092 // Destroys all registers except addr
4093 // len must be a nonzero multiple of wordSize
4094 void MacroAssembler::zero_memory(Register addr, Register len, Register t1) {
4095   assert_different_registers(addr, len, t1, rscratch1, rscratch2);
4096 
4097 #ifdef ASSERT
4098   { Label L;
4099     tst(len, BytesPerWord - 1);
4100     br(Assembler::EQ, L);
4101     stop("len is not a multiple of BytesPerWord");
4102     bind(L);
4103   }
4104 #endif
4105 
4106 #ifndef PRODUCT
4107   block_comment("zero memory");
4108 #endif




4062     assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
4063     assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop");
4064   }
4065 #endif
4066   int oop_index = oop_recorder()->find_index(obj);
4067   return Address((address)obj, oop_Relocation::spec(oop_index));
4068 }
4069 
4070 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes.
4071 void MacroAssembler::tlab_allocate(Register obj,
4072                                    Register var_size_in_bytes,
4073                                    int con_size_in_bytes,
4074                                    Register t1,
4075                                    Register t2,
4076                                    Label& slow_case) {
4077   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
4078   bs->tlab_allocate(this, obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
4079 }
4080 
4081 // Defines obj, preserves var_size_in_bytes
4082 void MacroAssembler::eden_allocate(Register obj,
4083                                    Register var_size_in_bytes,
4084                                    int con_size_in_bytes,
4085                                    Register t1,
4086                                    Label& slow_case) {
4087   BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
4088   bs->eden_allocate(this, obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
4089 }
4090 
4091 // Zero words; len is in bytes
4092 // Destroys all registers except addr
4093 // len must be a nonzero multiple of wordSize
4094 void MacroAssembler::zero_memory(Register addr, Register len, Register t1) {
4095   assert_different_registers(addr, len, t1, rscratch1, rscratch2);
4096 
4097 #ifdef ASSERT
4098   { Label L;
4099     tst(len, BytesPerWord - 1);
4100     br(Assembler::EQ, L);
4101     stop("len is not a multiple of BytesPerWord");
4102     bind(L);
4103   }
4104 #endif
4105 
4106 #ifndef PRODUCT
4107   block_comment("zero memory");
4108 #endif


< prev index next >