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