3004
3005 // Already unknown: Nothing to do anymore.
3006 __ z_tmll(tmp2, TypeEntries::type_unknown);
3007 __ z_brc(Assembler::bcondAllOne, next);
3008 __ z_oill(tmp2, TypeEntries::type_unknown);
3009 __ z_bru(do_update);
3010 }
3011 }
3012
3013 __ bind(init_klass);
3014 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3015 __ z_ogr(tmp2, tmp1);
3016
3017 __ bind(do_update);
3018 __ z_stg(tmp2, mdo_addr);
3019
3020 __ bind(next);
3021 }
3022 }
3023
3024 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3025 assert(op->crc()->is_single_cpu(), "crc must be register");
3026 assert(op->val()->is_single_cpu(), "byte value must be register");
3027 assert(op->result_opr()->is_single_cpu(), "result must be register");
3028 Register crc = op->crc()->as_register();
3029 Register val = op->val()->as_register();
3030 Register res = op->result_opr()->as_register();
3031
3032 assert_different_registers(val, crc, res);
3033
3034 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3035 __ kernel_crc32_singleByteReg(crc, val, res, true);
3036 __ z_lgfr(res, crc);
3037 }
3038
3039 #undef __
|
3004
3005 // Already unknown: Nothing to do anymore.
3006 __ z_tmll(tmp2, TypeEntries::type_unknown);
3007 __ z_brc(Assembler::bcondAllOne, next);
3008 __ z_oill(tmp2, TypeEntries::type_unknown);
3009 __ z_bru(do_update);
3010 }
3011 }
3012
3013 __ bind(init_klass);
3014 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3015 __ z_ogr(tmp2, tmp1);
3016
3017 __ bind(do_update);
3018 __ z_stg(tmp2, mdo_addr);
3019
3020 __ bind(next);
3021 }
3022 }
3023
3024 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3025 Unimplemented();
3026 }
3027
3028 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3029 assert(op->crc()->is_single_cpu(), "crc must be register");
3030 assert(op->val()->is_single_cpu(), "byte value must be register");
3031 assert(op->result_opr()->is_single_cpu(), "result must be register");
3032 Register crc = op->crc()->as_register();
3033 Register val = op->val()->as_register();
3034 Register res = op->result_opr()->as_register();
3035
3036 assert_different_registers(val, crc, res);
3037
3038 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3039 __ kernel_crc32_singleByteReg(crc, val, res, true);
3040 __ z_lgfr(res, crc);
3041 }
3042
3043 // Valhalla support
3044
3045 void LIR_Assembler::check_orig_pc() {
3046 Unimplemented();
3047 }
3048
3049 int LIR_Assembler::store_inline_type_fields_to_buf(ciInlineKlass* vk) {
3050 Unimplemented();
3051 return 0;
3052 }
3053
3054 void LIR_Assembler::emit_opFlattenedArrayCheck(LIR_OpFlattenedArrayCheck* op) {
3055 Unimplemented();
3056 }
3057
3058 void LIR_Assembler::emit_opNullFreeArrayCheck(LIR_OpNullFreeArrayCheck* op) {
3059 Unimplemented();
3060 }
3061
3062 void LIR_Assembler::emit_opSubstitutabilityCheck(LIR_OpSubstitutabilityCheck* op) {
3063 Unimplemented();
3064 }
3065 #undef __
|