< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

3208                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3209 
3210         // Already unknown. Nothing to do anymore.
3211         __ andi_(R0, tmp, TypeEntries::type_unknown);
3212         __ bne(CCR0, Lnext);
3213 
3214         // Different than before. Cannot keep accurate profile.
3215         __ ori(R0, tmp, TypeEntries::type_unknown);
3216       }
3217     }
3218 
3219     __ bind(Ldo_update);
3220     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3221 
3222     __ bind(Lnext);
3223     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3224   }
3225   __ bind(Ldone);
3226 }
3227 



3228 
3229 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3230   assert(op->crc()->is_single_cpu(), "crc must be register");
3231   assert(op->val()->is_single_cpu(), "byte value must be register");
3232   assert(op->result_opr()->is_single_cpu(), "result must be register");
3233   Register crc = op->crc()->as_register();
3234   Register val = op->val()->as_register();
3235   Register res = op->result_opr()->as_register();
3236 
3237   assert_different_registers(val, crc, res);
3238 
3239   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3240   __ kernel_crc32_singleByteReg(crc, val, res, true);
3241   __ mr(res, crc);
3242 }
3243 
3244 #undef __

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