From 71b444288bcff33fa74bef0a182f30d1cc500f33 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Fri, 30 May 2025 22:20:51 -0400 Subject: [PATCH] Remove nbt_memory_usage This will be replaced by more targeted optimizations towards the most common allocators of duplicate keys. The current implementation forces every key to be interned which may be redundant in many cases (e.g. when constants are given to the compound tag) --- .../nbt_memory_usage/CompoundTag1Mixin.java | 20 ---------- .../nbt_memory_usage/CompoundTagMixin.java | 40 ------------------- 2 files changed, 60 deletions(-) delete mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTag1Mixin.java delete mode 100644 common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTagMixin.java diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTag1Mixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTag1Mixin.java deleted file mode 100644 index 8034f856..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTag1Mixin.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.nbt_memory_usage; - -import net.minecraft.nbt.Tag; -import org.embeddedt.modernfix.util.CanonizingStringMap; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; - -import java.util.Map; - -@Mixin(targets = "net/minecraft/nbt/CompoundTag$1") -public class CompoundTag1Mixin { - @ModifyVariable(method = "load(Ljava/io/DataInput;ILnet/minecraft/nbt/NbtAccounter;)Lnet/minecraft/nbt/CompoundTag;", at = @At(value = "INVOKE_ASSIGN", target = "Lcom/google/common/collect/Maps;newHashMap()Ljava/util/HashMap;", remap = false)) - private Map modifyMap(Map map) { - CanonizingStringMap newMap = new CanonizingStringMap<>(); - if(map != null) - newMap.putAll(map); - return newMap; - } -} \ No newline at end of file diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTagMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTagMixin.java deleted file mode 100644 index 274af319..00000000 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTagMixin.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.embeddedt.modernfix.common.mixin.perf.nbt_memory_usage; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; -import org.embeddedt.modernfix.util.CanonizingStringMap; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.Map; - -@Mixin(CompoundTag.class) -public class CompoundTagMixin { - @Shadow @Final - private Map tags; - - /** - * Ensure that the default backing map is a CanonizingStringMap. - */ - @ModifyArg(method = "()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/nbt/CompoundTag;(Ljava/util/Map;)V"), index = 0) - private static Map useCanonizingStringMap(Map incoming) { - CanonizingStringMap newMap = new CanonizingStringMap<>(); - if(incoming != null) - newMap.putAll(incoming); - return newMap; - } - - /** - * @author embeddedt - * @reason use more efficient method when copying canonizing string map - */ - @Inject(method = "copy()Lnet/minecraft/nbt/CompoundTag;", at = @At("HEAD"), cancellable = true) - public void copyEfficient(CallbackInfoReturnable cir) { - if(this.tags instanceof CanonizingStringMap) { - cir.setReturnValue(new CompoundTag(CanonizingStringMap.deepCopy((CanonizingStringMap)this.tags, Tag::copy))); - } - } -}