< prev index next >

src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp

Print this page

2368                      op->object_size(),
2369                      op->klass()->as_register(),
2370                      *op->stub()->entry());
2371   __ bind(*op->stub()->continuation());
2372   __ verify_oop(op->obj()->as_register(), FILE_AND_LINE);
2373 }
2374 
2375 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
2376   Register len = op->len()->as_register();
2377   __ move_reg_if_needed(len, T_LONG, len, T_INT); // sign extend
2378 
2379   if (UseSlowPath ||
2380       (!UseFastNewObjectArray && (is_reference_type(op->type()))) ||
2381       (!UseFastNewTypeArray   && (!is_reference_type(op->type())))) {
2382     __ z_brul(*op->stub()->entry());
2383   } else {
2384     __ allocate_array(op->obj()->as_register(),
2385                       op->len()->as_register(),
2386                       op->tmp1()->as_register(),
2387                       op->tmp2()->as_register(),
2388                       arrayOopDesc::header_size(op->type()),
2389                       type2aelembytes(op->type()),
2390                       op->klass()->as_register(),
2391                       *op->stub()->entry());
2392   }
2393   __ bind(*op->stub()->continuation());
2394 }
2395 
2396 void LIR_Assembler::type_profile_helper(Register mdo, ciMethodData *md, ciProfileData *data,
2397                                         Register recv, Register tmp1, Label* update_done) {
2398   uint i;
2399   for (i = 0; i < VirtualCallData::row_limit(); i++) {
2400     Label next_test;
2401     // See if the receiver is receiver[n].
2402     Address receiver_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)));
2403     __ z_cg(recv, receiver_addr);
2404     __ z_brne(next_test);
2405     Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i)));
2406     __ add2mem_64(data_addr, DataLayout::counter_increment, tmp1);
2407     __ branch_optimized(Assembler::bcondAlways, *update_done);
2408     __ bind(next_test);

2368                      op->object_size(),
2369                      op->klass()->as_register(),
2370                      *op->stub()->entry());
2371   __ bind(*op->stub()->continuation());
2372   __ verify_oop(op->obj()->as_register(), FILE_AND_LINE);
2373 }
2374 
2375 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
2376   Register len = op->len()->as_register();
2377   __ move_reg_if_needed(len, T_LONG, len, T_INT); // sign extend
2378 
2379   if (UseSlowPath ||
2380       (!UseFastNewObjectArray && (is_reference_type(op->type()))) ||
2381       (!UseFastNewTypeArray   && (!is_reference_type(op->type())))) {
2382     __ z_brul(*op->stub()->entry());
2383   } else {
2384     __ allocate_array(op->obj()->as_register(),
2385                       op->len()->as_register(),
2386                       op->tmp1()->as_register(),
2387                       op->tmp2()->as_register(),
2388                       arrayOopDesc::base_offset_in_bytes(op->type()),
2389                       type2aelembytes(op->type()),
2390                       op->klass()->as_register(),
2391                       *op->stub()->entry());
2392   }
2393   __ bind(*op->stub()->continuation());
2394 }
2395 
2396 void LIR_Assembler::type_profile_helper(Register mdo, ciMethodData *md, ciProfileData *data,
2397                                         Register recv, Register tmp1, Label* update_done) {
2398   uint i;
2399   for (i = 0; i < VirtualCallData::row_limit(); i++) {
2400     Label next_test;
2401     // See if the receiver is receiver[n].
2402     Address receiver_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)));
2403     __ z_cg(recv, receiver_addr);
2404     __ z_brne(next_test);
2405     Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i)));
2406     __ add2mem_64(data_addr, DataLayout::counter_increment, tmp1);
2407     __ branch_optimized(Assembler::bcondAlways, *update_done);
2408     __ bind(next_test);
< prev index next >