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