< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

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



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

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