< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

3111                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3112 
3113         // Already unknown. Nothing to do anymore.
3114         __ andi_(R0, tmp, TypeEntries::type_unknown);
3115         __ bne(CR0, Lnext);
3116 
3117         // Different than before. Cannot keep accurate profile.
3118         __ ori(R0, tmp, TypeEntries::type_unknown);
3119       }
3120     }
3121 
3122     __ bind(Ldo_update);
3123     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3124 
3125     __ bind(Lnext);
3126     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3127   }
3128   __ bind(Ldone);
3129 }
3130 



3131 
3132 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3133   assert(op->crc()->is_single_cpu(), "crc must be register");
3134   assert(op->val()->is_single_cpu(), "byte value must be register");
3135   assert(op->result_opr()->is_single_cpu(), "result must be register");
3136   Register crc = op->crc()->as_register();
3137   Register val = op->val()->as_register();
3138   Register res = op->result_opr()->as_register();
3139 
3140   assert_different_registers(val, crc, res);
3141 
3142   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3143   __ kernel_crc32_singleByteReg(crc, val, res, true);
3144   __ mr(res, crc);
3145 }
3146 
3147 #undef __

3111                ciTypeEntries::valid_ciklass(current_klass) != exact_klass, "inconsistent");
3112 
3113         // Already unknown. Nothing to do anymore.
3114         __ andi_(R0, tmp, TypeEntries::type_unknown);
3115         __ bne(CR0, Lnext);
3116 
3117         // Different than before. Cannot keep accurate profile.
3118         __ ori(R0, tmp, TypeEntries::type_unknown);
3119       }
3120     }
3121 
3122     __ bind(Ldo_update);
3123     __ std(R0, index_or_disp(mdo_addr), mdo_addr->base()->as_pointer_register());
3124 
3125     __ bind(Lnext);
3126     if (klass_reg_used) { __ load_const_optimized(R29_TOC, MacroAssembler::global_toc(), R0); } // reinit
3127   }
3128   __ bind(Ldone);
3129 }
3130 
3131 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3132   Unimplemented();
3133 }
3134 
3135 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3136   assert(op->crc()->is_single_cpu(), "crc must be register");
3137   assert(op->val()->is_single_cpu(), "byte value must be register");
3138   assert(op->result_opr()->is_single_cpu(), "result must be register");
3139   Register crc = op->crc()->as_register();
3140   Register val = op->val()->as_register();
3141   Register res = op->result_opr()->as_register();
3142 
3143   assert_different_registers(val, crc, res);
3144 
3145   __ load_const_optimized(res, StubRoutines::crc_table_addr(), R0);
3146   __ kernel_crc32_singleByteReg(crc, val, res, true);
3147   __ mr(res, crc);
3148 }
3149 
3150 #undef __
< prev index next >