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