From 9e525f7aeb72b0e8536cbd572372f9d10c6e1a86 Mon Sep 17 00:00:00 2001 From: covers1624 Date: Sun, 7 Jun 2020 16:53:49 +0930 Subject: [PATCH] Revert change to FieldExprent#getExprentUse Revert part of a change introduced upstream. https://github.com/MinecraftForge/FernFlower/commit/81faff674cce55100d4d04cad22c2d8fcb71b05c#diff-e057d0d70e5b15f5e12ec86ac46c85eeR57 This upstream change causes local variables to not be inlined in many cases, and makes decomp very messy for the reason of 'thread safety'. --- .../decompiler/modules/decompiler/exps/FieldExprent.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java index 642a86b..450a923 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java @@ -54,7 +54,13 @@ public class FieldExprent extends Exprent { @Override public int getExprentUse() { - return 0; // multiple references to a field considered dangerous in a multithreaded environment, thus no Exprent.MULTIPLE_USES set here + //Revert the following line it produces messy code as follows: + //- this.field_225230_a[l + i1 * this.field_225231_b] &= 16777215; + //+ int[] aint = this.field_225230_a; + //+ int j1 = l + i1 * this.field_225231_b; + //+ aint[j1] &= 16777215; + //return 0; // multiple references to a field considered dangerous in a multithreaded environment, thus no Exprent.MULTIPLE_USES set here + return instance == null ? Exprent.MULTIPLE_USES : instance.getExprentUse() & Exprent.MULTIPLE_USES; } @Override