< prev index next >

src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp

Print this page

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

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