< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

3196                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3197 
3198         // Already unknown. Nothing to do anymore.
3199         __ andi_(R0, tmp, TypeEntries::type_unknown);
3200         __ bne(CCR0, Lnext);
3201 
3202         // Different than before. Cannot keep accurate profile.
3203         __ ori(R0, tmp, TypeEntries::type_unknown);
3204       }
3205     }
3206 
3207     __ bind(Ldo_update);
3208     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3209 
3210     __ bind(Lnext);
3211     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3212   }
3213   __ bind(Ldone);
3214 }
3215 



3216 
3217 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3218   assert(op->crc()->is_single_cpu(), "crc must be register");
3219   assert(op->val()->is_single_cpu(), "byte value must be register");
3220   assert(op->result_opr()->is_single_cpu(), "result must be register");
3221   Register crc = op->crc()->as_register();
3222   Register val = op->val()->as_register();
3223   Register res = op->result_opr()->as_register();
3224 
3225   assert_different_registers(val, crc, res);
3226 
3227   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3228   __ kernel_crc32_singleByteReg(crc, val, res, true);
3229   __ mr(res, crc);
3230 }
3231 
3232 #undef __

3196                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3197 
3198         // Already unknown. Nothing to do anymore.
3199         __ andi_(R0, tmp, TypeEntries::type_unknown);
3200         __ bne(CCR0, Lnext);
3201 
3202         // Different than before. Cannot keep accurate profile.
3203         __ ori(R0, tmp, TypeEntries::type_unknown);
3204       }
3205     }
3206 
3207     __ bind(Ldo_update);
3208     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3209 
3210     __ bind(Lnext);
3211     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3212   }
3213   __ bind(Ldone);
3214 }
3215 
3216 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3217   Unimplemented();
3218 }
3219 
3220 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3221   assert(op->crc()->is_single_cpu(), "crc must be register");
3222   assert(op->val()->is_single_cpu(), "byte value must be register");
3223   assert(op->result_opr()->is_single_cpu(), "result must be register");
3224   Register crc = op->crc()->as_register();
3225   Register val = op->val()->as_register();
3226   Register res = op->result_opr()->as_register();
3227 
3228   assert_different_registers(val, crc, res);
3229 
3230   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3231   __ kernel_crc32_singleByteReg(crc, val, res, true);
3232   __ mr(res, crc);
3233 }
3234 
3235 #undef __
< prev index next >