< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

3173                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3174 
3175         // Already unknown. Nothing to do anymore.
3176         __ andi_(R0, tmp, TypeEntries::type_unknown);
3177         __ bne(CCR0, Lnext);
3178 
3179         // Different than before. Cannot keep accurate profile.
3180         __ ori(R0, tmp, TypeEntries::type_unknown);
3181       }
3182     }
3183 
3184     __ bind(Ldo_update);
3185     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3186 
3187     __ bind(Lnext);
3188     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3189   }
3190   __ bind(Ldone);
3191 }
3192 



3193 
3194 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3195   assert(op->crc()->is_single_cpu(), "crc must be register");
3196   assert(op->val()->is_single_cpu(), "byte value must be register");
3197   assert(op->result_opr()->is_single_cpu(), "result must be register");
3198   Register crc = op->crc()->as_register();
3199   Register val = op->val()->as_register();
3200   Register res = op->result_opr()->as_register();
3201 
3202   assert_different_registers(val, crc, res);
3203 
3204   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3205   __ kernel_crc32_singleByteReg(crc, val, res, true);
3206   __ mr(res, crc);
3207 }
3208 
3209 #undef __

3173                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3174 
3175         // Already unknown. Nothing to do anymore.
3176         __ andi_(R0, tmp, TypeEntries::type_unknown);
3177         __ bne(CCR0, Lnext);
3178 
3179         // Different than before. Cannot keep accurate profile.
3180         __ ori(R0, tmp, TypeEntries::type_unknown);
3181       }
3182     }
3183 
3184     __ bind(Ldo_update);
3185     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3186 
3187     __ bind(Lnext);
3188     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3189   }
3190   __ bind(Ldone);
3191 }
3192 
3193 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3194   Unimplemented();
3195 }
3196 
3197 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3198   assert(op->crc()->is_single_cpu(), "crc must be register");
3199   assert(op->val()->is_single_cpu(), "byte value must be register");
3200   assert(op->result_opr()->is_single_cpu(), "result must be register");
3201   Register crc = op->crc()->as_register();
3202   Register val = op->val()->as_register();
3203   Register res = op->result_opr()->as_register();
3204 
3205   assert_different_registers(val, crc, res);
3206 
3207   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3208   __ kernel_crc32_singleByteReg(crc, val, res, true);
3209   __ mr(res, crc);
3210 }
3211 
3212 #undef __
< prev index next >