Improve the performance of accessing ThreadedBlockData.#1417
Improve the performance of accessing ThreadedBlockData.#1417copi143 wants to merge 41 commits intoGTNewHorizons:masterfrom
Conversation
|
Yes. analyzer.analyze can sometimes throw odd exceptions. On my machine, a subset of classes consistently fail to be handled correctly, so I added an analyzeSuccess variable to fall back to the original implementation on failure. |
|
Oh no. It seems there are other strange issues as well. I'll try to fix it, overall it shouldn't be worse than before for now. |
9027de6 to
3739a8d
Compare
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gtnewhorizons/angelica/client/rendering/ThreadedBlockData.java
Show resolved
Hide resolved
| final boolean changed = inner.transformClassNode(transformedName, cn); | ||
| if (changed) { | ||
| final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); | ||
| final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); |
There was a problem hiding this comment.
that's gonna need a safe class writer to not blow up
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Show resolved
Hide resolved
…leList and ImmutableMap for immutable data, and make overloadedMethods use ConcurrentHashMap to avoid concurrency issues.
|
Now analyzer.analyze will no longer run for a large number of unrelated methods. |
...ain/java/com/gtnewhorizons/angelica/loading/shared/transformers/CeleritasBlockTransform.java
Outdated
Show resolved
Hide resolved
| }; | ||
| // Needed because the config is loaded in LaunchClassLoader, but we need to access it in the parent system loader. | ||
| private static final MethodHandle angelicaConfigCeleritasEnabledGetter; | ||
| private static boolean isCeleritasEnabled; |
There was a problem hiding this comment.
you don't need most of the reorganization changes in your pr now, it already got refactored in master, so you don't need to reorder fields and to keep methods like isBlockSubclass, trackBlockSubclasses and trackBlockShadowingFields






For functions that need to access fields inside ThreadedBlockData multiple times, cache the ThreadedBlockData object at the start of the function instead of retrieving it from the ThreadLocal each time.