< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page

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



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

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