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