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