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