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
|