3042
3043 // Already unknown: Nothing to do anymore.
3044 __ z_tmll(tmp2, TypeEntries::type_unknown);
3045 __ z_brc(Assembler::bcondAllOne, next);
3046 __ z_oill(tmp2, TypeEntries::type_unknown);
3047 __ z_bru(do_update);
3048 }
3049 }
3050
3051 __ bind(init_klass);
3052 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3053 __ z_ogr(tmp2, tmp1);
3054
3055 __ bind(do_update);
3056 __ z_stg(tmp2, mdo_addr);
3057
3058 __ bind(next);
3059 }
3060 }
3061
3062 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3063 assert(op->crc()->is_single_cpu(), "crc must be register");
3064 assert(op->val()->is_single_cpu(), "byte value must be register");
3065 assert(op->result_opr()->is_single_cpu(), "result must be register");
3066 Register crc = op->crc()->as_register();
3067 Register val = op->val()->as_register();
3068 Register res = op->result_opr()->as_register();
3069
3070 assert_different_registers(val, crc, res);
3071
3072 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3073 __ kernel_crc32_singleByteReg(crc, val, res, true);
3074 __ z_lgfr(res, crc);
3075 }
3076
3077 #undef __
|
3042
3043 // Already unknown: Nothing to do anymore.
3044 __ z_tmll(tmp2, TypeEntries::type_unknown);
3045 __ z_brc(Assembler::bcondAllOne, next);
3046 __ z_oill(tmp2, TypeEntries::type_unknown);
3047 __ z_bru(do_update);
3048 }
3049 }
3050
3051 __ bind(init_klass);
3052 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3053 __ z_ogr(tmp2, tmp1);
3054
3055 __ bind(do_update);
3056 __ z_stg(tmp2, mdo_addr);
3057
3058 __ bind(next);
3059 }
3060 }
3061
3062 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3063 Unimplemented();
3064 }
3065
3066 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3067 assert(op->crc()->is_single_cpu(), "crc must be register");
3068 assert(op->val()->is_single_cpu(), "byte value must be register");
3069 assert(op->result_opr()->is_single_cpu(), "result must be register");
3070 Register crc = op->crc()->as_register();
3071 Register val = op->val()->as_register();
3072 Register res = op->result_opr()->as_register();
3073
3074 assert_different_registers(val, crc, res);
3075
3076 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3077 __ kernel_crc32_singleByteReg(crc, val, res, true);
3078 __ z_lgfr(res, crc);
3079 }
3080
3081 #undef __
|