From bef17b44fce71dfce6345f19695949eb4432e25d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 6 Oct 2014 17:26:24 +0200 Subject: java-decompiler: minor optimization (no more empty array creation) --- .../decompiler/struct/attr/StructLineNumberTableAttribute.java | 5 +++-- src/org/jetbrains/java/decompiler/util/FastSparseSetFactory.java | 1 + src/org/jetbrains/java/decompiler/util/InterpreterUtil.java | 2 ++ src/org/jetbrains/java/decompiler/util/SFormsFastMapDirect.java | 8 ++++---- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/struct/attr/StructLineNumberTableAttribute.java b/src/org/jetbrains/java/decompiler/struct/attr/StructLineNumberTableAttribute.java index 695d659..f35d3d9 100644 --- a/src/org/jetbrains/java/decompiler/struct/attr/StructLineNumberTableAttribute.java +++ b/src/org/jetbrains/java/decompiler/struct/attr/StructLineNumberTableAttribute.java @@ -17,6 +17,7 @@ package org.jetbrains.java.decompiler.struct.attr; import org.jetbrains.java.decompiler.struct.consts.ConstantPool; import org.jetbrains.java.decompiler.util.DataInputFullStream; +import org.jetbrains.java.decompiler.util.InterpreterUtil; import java.io.IOException; @@ -29,7 +30,7 @@ import java.io.IOException; * Created by Egor on 05.10.2014. */ public class StructLineNumberTableAttribute extends StructGeneralAttribute { - private int[] myLineInfo = new int[0]; + private int[] myLineInfo = InterpreterUtil.EMPTY_INT_ARRAY; @Override public void initContent(ConstantPool pool) throws IOException { @@ -44,7 +45,7 @@ public class StructLineNumberTableAttribute extends StructGeneralAttribute { } } else if (myLineInfo.length > 0) { - myLineInfo = new int[0]; + myLineInfo = InterpreterUtil.EMPTY_INT_ARRAY; } } diff --git a/src/org/jetbrains/java/decompiler/util/FastSparseSetFactory.java b/src/org/jetbrains/java/decompiler/util/FastSparseSetFactory.java index bf01035..64e98a0 100644 --- a/src/org/jetbrains/java/decompiler/util/FastSparseSetFactory.java +++ b/src/org/jetbrains/java/decompiler/util/FastSparseSetFactory.java @@ -88,6 +88,7 @@ public class FastSparseSetFactory { public static class FastSparseSet implements Iterable { + public static final FastSparseSet[] EMPTY_ARRAY = new FastSparseSet[0]; private FastSparseSetFactory factory; diff --git a/src/org/jetbrains/java/decompiler/util/InterpreterUtil.java b/src/org/jetbrains/java/decompiler/util/InterpreterUtil.java index 09e7bad..eaada90 100644 --- a/src/org/jetbrains/java/decompiler/util/InterpreterUtil.java +++ b/src/org/jetbrains/java/decompiler/util/InterpreterUtil.java @@ -29,6 +29,8 @@ import java.util.zip.ZipFile; public class InterpreterUtil { public static final boolean IS_WINDOWS = System.getProperty("os.name", "").startsWith("Windows"); + public static final int[] EMPTY_INT_ARRAY = new int[0]; + private static final int CHANNEL_WINDOW_SIZE = IS_WINDOWS ? 64 * 1024 * 1024 - (32 * 1024) : 64 * 1024 * 1024; // magic number for Windows private static final int BUFFER_SIZE = 16 * 1024; diff --git a/src/org/jetbrains/java/decompiler/util/SFormsFastMapDirect.java b/src/org/jetbrains/java/decompiler/util/SFormsFastMapDirect.java index 996607a..b70dede 100644 --- a/src/org/jetbrains/java/decompiler/util/SFormsFastMapDirect.java +++ b/src/org/jetbrains/java/decompiler/util/SFormsFastMapDirect.java @@ -38,9 +38,9 @@ public class SFormsFastMapDirect { private SFormsFastMapDirect(boolean initialize) { if (initialize) { for (int i = 2; i >= 0; i--) { - @SuppressWarnings("unchecked") FastSparseSet[] empty = new FastSparseSet[0]; + @SuppressWarnings("unchecked") FastSparseSet[] empty = FastSparseSet.EMPTY_ARRAY; elements[i] = empty; - next[i] = new int[0]; + next[i] = InterpreterUtil.EMPTY_INT_ARRAY; } } } @@ -99,8 +99,8 @@ public class SFormsFastMapDirect { while (pointer != 0); } else { - mapelements[i] = new FastSparseSet[0]; - mapnext[i] = new int[0]; + mapelements[i] = FastSparseSet.EMPTY_ARRAY; + mapnext[i] = InterpreterUtil.EMPTY_INT_ARRAY; } } -- cgit v1.2.3