diff options
author | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 14:30:28 +0400 |
---|---|---|
committer | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 14:33:34 +0400 |
commit | 1cea85e49ae7659e7124383b619730ba6053bb46 (patch) | |
tree | 9893c2ed765e9f1dfa887b7123dd034569e12549 /src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java | |
parent | f4f9e8be28142ebb4b85026eef6505055a31b68a (diff) | |
download | fernflower-1cea85e49ae7659e7124383b619730ba6053bb46.tar fernflower-1cea85e49ae7659e7124383b619730ba6053bb46.tar.gz fernflower-1cea85e49ae7659e7124383b619730ba6053bb46.tar.lz fernflower-1cea85e49ae7659e7124383b619730ba6053bb46.tar.xz fernflower-1cea85e49ae7659e7124383b619730ba6053bb46.zip |
java-decompiler: optimization (less string buffer allocations on generating text)
Diffstat (limited to 'src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java')
-rw-r--r-- | src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java index 395df1b..416b831 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/NewExprent.java @@ -28,9 +28,6 @@ import org.jetbrains.java.decompiler.struct.gen.VarType; import org.jetbrains.java.decompiler.util.InterpreterUtil; import org.jetbrains.java.decompiler.util.ListStack; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.StringWriter; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -260,29 +257,16 @@ public class NewExprent extends Exprent { buf.setLength(0); } - StringWriter strwriter = new StringWriter(); - BufferedWriter bufstrwriter = new BufferedWriter(strwriter); - - ClassWriter clwriter = new ClassWriter(); - try { - if (lambda) { - clwriter.classLambdaToJava(child, bufstrwriter, (constructor == null ? null : constructor.getInstance()), indent); - } - else { - clwriter.classToJava(child, bufstrwriter, indent); + if (lambda) { + if (!DecompilerContext.getOption(IFernflowerPreferences.LAMBDA_TO_ANONYMOUS_CLASS)) { + buf.setLength(0); // remove the usual 'new <class>()', it will be replaced with lambda style '() ->' } - bufstrwriter.flush(); - } - catch (IOException ex) { - throw new RuntimeException(ex); + Exprent methodObject = constructor == null ? null : constructor.getInstance(); + new ClassWriter().classLambdaToJava(child, buf, methodObject, indent); } - - if (lambda && !DecompilerContext.getOption(IFernflowerPreferences.LAMBDA_TO_ANONYMOUS_CLASS)) { - buf.setLength(0); // remove the usual 'new <class>()', it will - // be replaced with lambda style '() ->' + else { + new ClassWriter().classToJava(child, buf, indent); } - - buf.append(strwriter.toString()); } else if (directArrayInit) { VarType leftType = newtype.copy(); @@ -293,10 +277,7 @@ public class NewExprent extends Exprent { if (i > 0) { buf.append(", "); } - StringBuilder buff = new StringBuilder(); - ExprProcessor.getCastedExprent(lstArrayElements.get(i), leftType, buff, indent, false); - - buf.append(buff); + ExprProcessor.getCastedExprent(lstArrayElements.get(i), leftType, buf, indent, false); } buf.append("}"); } |