< prev index next >

src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp

Print this page

 957                      op->tmp2()->as_register(),
 958                      op->tmp3()->as_register(),
 959                      op->header_size(),
 960                      op->object_size(),
 961                      op->klass()->as_register(),
 962                      *op->stub()->entry());
 963   __ bind(*op->stub()->continuation());
 964 }
 965 
 966 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
 967   if (UseSlowPath ||
 968       (!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) ||
 969       (!UseFastNewTypeArray   && (op->type() != T_OBJECT && op->type() != T_ARRAY))) {
 970     __ b(*op->stub()->entry());
 971   } else {
 972     __ allocate_array(op->obj()->as_register(),
 973                       op->len()->as_register(),
 974                       op->tmp1()->as_register(),
 975                       op->tmp2()->as_register(),
 976                       op->tmp3()->as_register(),
 977                       arrayOopDesc::header_size(op->type()),
 978                       type2aelembytes(op->type()),
 979                       op->klass()->as_register(),
 980                       *op->stub()->entry());
 981   }
 982   __ bind(*op->stub()->continuation());
 983 }
 984 
 985 void LIR_Assembler::type_profile_helper(Register mdo, int mdo_offset_bias,
 986                                         ciMethodData *md, ciProfileData *data,
 987                                         Register recv, Register tmp1, Label* update_done) {
 988   assert_different_registers(mdo, recv, tmp1);
 989   uint i;
 990   for (i = 0; i < VirtualCallData::row_limit(); i++) {
 991     Label next_test;
 992     // See if the receiver is receiver[n].
 993     Address receiver_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)) -
 994                           mdo_offset_bias);
 995     __ ldr(tmp1, receiver_addr);
 996     __ verify_klass_ptr(tmp1);
 997     __ cmp(recv, tmp1);

 957                      op->tmp2()->as_register(),
 958                      op->tmp3()->as_register(),
 959                      op->header_size(),
 960                      op->object_size(),
 961                      op->klass()->as_register(),
 962                      *op->stub()->entry());
 963   __ bind(*op->stub()->continuation());
 964 }
 965 
 966 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
 967   if (UseSlowPath ||
 968       (!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) ||
 969       (!UseFastNewTypeArray   && (op->type() != T_OBJECT && op->type() != T_ARRAY))) {
 970     __ b(*op->stub()->entry());
 971   } else {
 972     __ allocate_array(op->obj()->as_register(),
 973                       op->len()->as_register(),
 974                       op->tmp1()->as_register(),
 975                       op->tmp2()->as_register(),
 976                       op->tmp3()->as_register(),
 977                       arrayOopDesc::base_offset_in_bytes(op->type()),
 978                       type2aelembytes(op->type()),
 979                       op->klass()->as_register(),
 980                       *op->stub()->entry());
 981   }
 982   __ bind(*op->stub()->continuation());
 983 }
 984 
 985 void LIR_Assembler::type_profile_helper(Register mdo, int mdo_offset_bias,
 986                                         ciMethodData *md, ciProfileData *data,
 987                                         Register recv, Register tmp1, Label* update_done) {
 988   assert_different_registers(mdo, recv, tmp1);
 989   uint i;
 990   for (i = 0; i < VirtualCallData::row_limit(); i++) {
 991     Label next_test;
 992     // See if the receiver is receiver[n].
 993     Address receiver_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)) -
 994                           mdo_offset_bias);
 995     __ ldr(tmp1, receiver_addr);
 996     __ verify_klass_ptr(tmp1);
 997     __ cmp(recv, tmp1);
< prev index next >