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