diff options
author | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 18:16:16 +0400 |
---|---|---|
committer | Roman Shevchenko <roman.shevchenko@jetbrains.com> | 2014-09-04 18:41:39 +0400 |
commit | 686b5abef9c269a726897c6992d0ea2abea79b04 (patch) | |
tree | d2a03c184d65f5dfa782d13826dbbba41c3a216b /src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java | |
parent | 1cea85e49ae7659e7124383b619730ba6053bb46 (diff) | |
download | fernflower-686b5abef9c269a726897c6992d0ea2abea79b04.tar fernflower-686b5abef9c269a726897c6992d0ea2abea79b04.tar.gz fernflower-686b5abef9c269a726897c6992d0ea2abea79b04.tar.lz fernflower-686b5abef9c269a726897c6992d0ea2abea79b04.tar.xz fernflower-686b5abef9c269a726897c6992d0ea2abea79b04.zip |
java-decompiler: optimization (empty lists allocation avoided)
Diffstat (limited to 'src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java')
-rw-r--r-- | src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java b/src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java index 53c02ec..5eda047 100644 --- a/src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java +++ b/src/org/jetbrains/java/decompiler/struct/attr/StructExceptionsAttribute.java @@ -17,21 +17,28 @@ package org.jetbrains.java.decompiler.struct.attr; import org.jetbrains.java.decompiler.struct.consts.ConstantPool; +import java.io.DataInputStream; +import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class StructExceptionsAttribute extends StructGeneralAttribute { - private List<Integer> throwsExceptions = new ArrayList<Integer>(); - - public void initContent(ConstantPool pool) { - - name = ATTRIBUTE_EXCEPTIONS; - - int length = 2 + (((info[0] & 0xFF) << 8) | (info[1] & 0xFF)) * 2; - for (int i = 2; i < length; i += 2) { - int index = ((info[i] & 0xFF) << 8) | (info[i + 1] & 0xFF); - throwsExceptions.add(index); + private List<Integer> throwsExceptions; + + @Override + public void initContent(ConstantPool pool) throws IOException { + DataInputStream data = stream(); + int len = data.readUnsignedShort(); + if (len > 0) { + throwsExceptions = new ArrayList<Integer>(len); + for (int i = 0; i < len; i++) { + throwsExceptions.add(data.readUnsignedShort()); + } + } + else { + throwsExceptions = Collections.emptyList(); } } @@ -42,8 +49,4 @@ public class StructExceptionsAttribute extends StructGeneralAttribute { public List<Integer> getThrowsExceptions() { return throwsExceptions; } - - public void setThrowsExceptions(List<Integer> throwsExceptions) { - this.throwsExceptions = throwsExceptions; - } } |