3055
3056 // Already unknown: Nothing to do anymore.
3057 __ z_tmll(tmp2, TypeEntries::type_unknown);
3058 __ z_brc(Assembler::bcondAllOne, next);
3059 __ z_oill(tmp2, TypeEntries::type_unknown);
3060 __ z_bru(do_update);
3061 }
3062 }
3063
3064 __ bind(init_klass);
3065 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3066 __ z_ogr(tmp2, tmp1);
3067
3068 __ bind(do_update);
3069 __ z_stg(tmp2, mdo_addr);
3070
3071 __ bind(next);
3072 }
3073 }
3074
3075 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3076 assert(op->crc()->is_single_cpu(), "crc must be register");
3077 assert(op->val()->is_single_cpu(), "byte value must be register");
3078 assert(op->result_opr()->is_single_cpu(), "result must be register");
3079 Register crc = op->crc()->as_register();
3080 Register val = op->val()->as_register();
3081 Register res = op->result_opr()->as_register();
3082
3083 assert_different_registers(val, crc, res);
3084
3085 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3086 __ kernel_crc32_singleByteReg(crc, val, res, true);
3087 __ z_lgfr(res, crc);
3088 }
3089
3090 #undef __
|
3055
3056 // Already unknown: Nothing to do anymore.
3057 __ z_tmll(tmp2, TypeEntries::type_unknown);
3058 __ z_brc(Assembler::bcondAllOne, next);
3059 __ z_oill(tmp2, TypeEntries::type_unknown);
3060 __ z_bru(do_update);
3061 }
3062 }
3063
3064 __ bind(init_klass);
3065 // Combine klass and null_seen bit (only used if (tmp & type_mask)==0).
3066 __ z_ogr(tmp2, tmp1);
3067
3068 __ bind(do_update);
3069 __ z_stg(tmp2, mdo_addr);
3070
3071 __ bind(next);
3072 }
3073 }
3074
3075 void LIR_Assembler::emit_profile_inline_type(LIR_OpProfileInlineType* op) {
3076 Unimplemented();
3077 }
3078
3079 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
3080 assert(op->crc()->is_single_cpu(), "crc must be register");
3081 assert(op->val()->is_single_cpu(), "byte value must be register");
3082 assert(op->result_opr()->is_single_cpu(), "result must be register");
3083 Register crc = op->crc()->as_register();
3084 Register val = op->val()->as_register();
3085 Register res = op->result_opr()->as_register();
3086
3087 assert_different_registers(val, crc, res);
3088
3089 __ load_const_optimized(res, StubRoutines::crc_table_addr());
3090 __ kernel_crc32_singleByteReg(crc, val, res, true);
3091 __ z_lgfr(res, crc);
3092 }
3093
3094 // Valhalla support
3095
3096 void LIR_Assembler::check_orig_pc() {
3097 Unimplemented();
3098 }
3099
3100 int LIR_Assembler::store_inline_type_fields_to_buf(ciInlineKlass* vk) {
3101 Unimplemented();
3102 return 0;
3103 }
3104
3105 void LIR_Assembler::emit_opFlattenedArrayCheck(LIR_OpFlattenedArrayCheck* op) {
3106 Unimplemented();
3107 }
3108
3109 void LIR_Assembler::emit_opNullFreeArrayCheck(LIR_OpNullFreeArrayCheck* op) {
3110 Unimplemented();
3111 }
3112
3113 void LIR_Assembler::emit_opSubstitutabilityCheck(LIR_OpSubstitutabilityCheck* op) {
3114 Unimplemented();
3115 }
3116 #undef __
|