< prev index next >

src/hotspot/cpu/s390/macroAssembler_s390.cpp

Print this page
rev 50535 : [mq]: rename_IN_ROOT


4034       z_ltgr(Z_R0, Rop1);
4035       z_bre(done);
4036     }
4037 
4038     add2reg_with_index(Z_R0, pow2_offset, Z_R1, Rop1);
4039     z_srlg(Z_R0, Z_R0, shift);
4040 
4041     bind(done);
4042     z_cl(Z_R0, disp, Rindex, Rbase);
4043 #ifdef ASSERT
4044     if (used_R0) preset_reg(Z_R0, 0xb05bUL, 2);
4045     if (used_R1) preset_reg(Z_R1, 0xb06bUL, 2);
4046 #endif
4047   }
4048   BLOCK_COMMENT("} compare heap oop");
4049 }
4050 
4051 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators,
4052                                      const Address& addr, Register val,
4053                                      Register tmp1, Register tmp2, Register tmp3) {
4054   assert((decorators & ~(AS_RAW | IN_HEAP | IN_HEAP_ARRAY | IN_ROOT | OOP_NOT_NULL |
4055                          ON_UNKNOWN_OOP_REF)) == 0, "unsupported decorator");
4056   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
4057   decorators = AccessInternal::decorator_fixup(decorators);
4058   bool as_raw = (decorators & AS_RAW) != 0;
4059   if (as_raw) {
4060     bs->BarrierSetAssembler::store_at(this, decorators, type,
4061                                       addr, val,
4062                                       tmp1, tmp2, tmp3);
4063   } else {
4064     bs->store_at(this, decorators, type,
4065                  addr, val,
4066                  tmp1, tmp2, tmp3);
4067   }
4068 }
4069 
4070 void MacroAssembler::access_load_at(BasicType type, DecoratorSet decorators,
4071                                     const Address& addr, Register dst,
4072                                     Register tmp1, Register tmp2, Label *is_null) {
4073   assert((decorators & ~(AS_RAW | IN_HEAP | IN_HEAP_ARRAY | IN_ROOT | OOP_NOT_NULL |
4074                          ON_PHANTOM_OOP_REF | ON_WEAK_OOP_REF)) == 0, "unsupported decorator");
4075   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
4076   decorators = AccessInternal::decorator_fixup(decorators);
4077   bool as_raw = (decorators & AS_RAW) != 0;
4078   if (as_raw) {
4079     bs->BarrierSetAssembler::load_at(this, decorators, type,
4080                                      addr, dst,
4081                                      tmp1, tmp2, is_null);
4082   } else {
4083     bs->load_at(this, decorators, type,
4084                 addr, dst,
4085                 tmp1, tmp2, is_null);
4086   }
4087 }
4088 
4089 void MacroAssembler::load_heap_oop(Register dest, const Address &a,
4090                                    Register tmp1, Register tmp2,
4091                                    DecoratorSet decorators, Label *is_null) {
4092   access_load_at(T_OBJECT, IN_HEAP | decorators, a, dest, tmp1, tmp2, is_null);
4093 }




4034       z_ltgr(Z_R0, Rop1);
4035       z_bre(done);
4036     }
4037 
4038     add2reg_with_index(Z_R0, pow2_offset, Z_R1, Rop1);
4039     z_srlg(Z_R0, Z_R0, shift);
4040 
4041     bind(done);
4042     z_cl(Z_R0, disp, Rindex, Rbase);
4043 #ifdef ASSERT
4044     if (used_R0) preset_reg(Z_R0, 0xb05bUL, 2);
4045     if (used_R1) preset_reg(Z_R1, 0xb06bUL, 2);
4046 #endif
4047   }
4048   BLOCK_COMMENT("} compare heap oop");
4049 }
4050 
4051 void MacroAssembler::access_store_at(BasicType type, DecoratorSet decorators,
4052                                      const Address& addr, Register val,
4053                                      Register tmp1, Register tmp2, Register tmp3) {
4054   assert((decorators & ~(AS_RAW | IN_HEAP | IN_HEAP_ARRAY | IN_NATIVE | OOP_NOT_NULL |
4055                          ON_UNKNOWN_OOP_REF)) == 0, "unsupported decorator");
4056   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
4057   decorators = AccessInternal::decorator_fixup(decorators);
4058   bool as_raw = (decorators & AS_RAW) != 0;
4059   if (as_raw) {
4060     bs->BarrierSetAssembler::store_at(this, decorators, type,
4061                                       addr, val,
4062                                       tmp1, tmp2, tmp3);
4063   } else {
4064     bs->store_at(this, decorators, type,
4065                  addr, val,
4066                  tmp1, tmp2, tmp3);
4067   }
4068 }
4069 
4070 void MacroAssembler::access_load_at(BasicType type, DecoratorSet decorators,
4071                                     const Address& addr, Register dst,
4072                                     Register tmp1, Register tmp2, Label *is_null) {
4073   assert((decorators & ~(AS_RAW | IN_HEAP | IN_HEAP_ARRAY | IN_NATIVE | OOP_NOT_NULL |
4074                          ON_PHANTOM_OOP_REF | ON_WEAK_OOP_REF)) == 0, "unsupported decorator");
4075   BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
4076   decorators = AccessInternal::decorator_fixup(decorators);
4077   bool as_raw = (decorators & AS_RAW) != 0;
4078   if (as_raw) {
4079     bs->BarrierSetAssembler::load_at(this, decorators, type,
4080                                      addr, dst,
4081                                      tmp1, tmp2, is_null);
4082   } else {
4083     bs->load_at(this, decorators, type,
4084                 addr, dst,
4085                 tmp1, tmp2, is_null);
4086   }
4087 }
4088 
4089 void MacroAssembler::load_heap_oop(Register dest, const Address &a,
4090                                    Register tmp1, Register tmp2,
4091                                    DecoratorSet decorators, Label *is_null) {
4092   access_load_at(T_OBJECT, IN_HEAP | decorators, a, dest, tmp1, tmp2, is_null);
4093 }


< prev index next >