You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sj...@apache.org on 2008/03/11 17:07:11 UTC
svn commit: r635991 - in
/harmony/enhanced/classlib/trunk/modules/pack200/src:
main/java/org/apache/harmony/pack200/
main/java/org/apache/harmony/pack200/bytecode/
test/java/org/apache/harmony/pack200/tests/
Author: sjanuary
Date: Tue Mar 11 09:07:09 2008
New Revision: 635991
URL: http://svn.apache.org/viewvc?rev=635991&view=rev
Log:
Pack200 - minor code improvements and bug fixes
Modified:
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcTuple.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ByteCode.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ClassConstantPool.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ConstantPoolEntry.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ExceptionsAttribute.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/InnerClassesAttribute.java
harmony/enhanced/classlib/trunk/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ClassVersionTest.java
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Archive.java Tue Mar 11 09:07:09 2008
@@ -45,7 +45,7 @@
private InputStream inputStream;
- private JarOutputStream outputStream;
+ private final JarOutputStream outputStream;
private boolean removePackFile;
@@ -157,7 +157,10 @@
}
if (removePackFile) {
File file = new File(inputFileName);
- file.delete();
+ boolean deleted = file.delete();
+ if(!deleted) {
+ throw new Pack200Exception("Failed to delete the input file.");
+ }
}
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java Tue Mar 11 09:07:09 2008
@@ -32,27 +32,27 @@
/**
* The maximum number of bytes in each coding word
*/
- private int b;
+ private final int b;
/**
* Whether delta encoding is used (0=false,1=true)
*/
- private int d;
+ private final int d;
/**
* The radix of the encoding
*/
- private int h;
+ private final int h;
/**
* The co-parameter of h; h-256
*/
- private int l;
+ private final int l;
/**
* Represents signed numbers or not (0=unsigned,1/2=signed)
*/
- private int s;
+ private final int s;
private long cardinality;
@@ -157,29 +157,29 @@
n++;
} while (n < b & isHigh(x));
-// TODO: Decide whether to use this algorithm instead (neater, possibly quicker but less easy to understand)
-// if (isSigned()) {
-// int u = ((1 << s) - 1);
-// if ((z & u) == u) {
-// z = z >>> s ^ -1L;
-// } else {
-// z = z - (z >>> s);
-// }
-// }
- if(isSigned()) {
- long u = z;
- long twoPowS = (long)Math.pow(2, s);
- double twoPowSMinusOne = twoPowS-1;
- if(u % twoPowS < twoPowSMinusOne) {
- if(cardinality < Math.pow(2, 32)) {
- z = (long) (u - (Math.floor(u/ twoPowS)));
- } else {
- z = cast32((long) (u - (Math.floor(u/ twoPowS))));
- }
+ if (isSigned()) {
+ int u = ((1 << s) - 1);
+ if ((z & u) == u) {
+ z = z >>> s ^ -1L;
} else {
- z = (long) (-Math.floor(u/ twoPowS) - 1);
+ z = z - (z >>> s);
}
}
+// This algorithm does the same thing, but is probably slower. Leaving in for now for readability
+// if(isSigned()) {
+// long u = z;
+// long twoPowS = (long)Math.pow(2, s);
+// double twoPowSMinusOne = twoPowS-1;
+// if(u % twoPowS < twoPowSMinusOne) {
+// if(cardinality < Math.pow(2, 32)) {
+// z = (long) (u - (Math.floor(u/ twoPowS)));
+// } else {
+// z = cast32((long) (u - (Math.floor(u/ twoPowS))));
+// }
+// } else {
+// z = (long) (-Math.floor(u/ twoPowS) - 1);
+// }
+// }
if (isDelta())
z += last;
return z;
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcTuple.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcTuple.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcTuple.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcTuple.java Tue Mar 11 09:07:09 2008
@@ -20,7 +20,7 @@
public class IcTuple {
- public static int NESTED_CLASS_FLAG = 0x00010000;
+ public static final int NESTED_CLASS_FLAG = 0x00010000;
public String C; // this class
public int F; // flags
public String C2; // outer class
@@ -102,7 +102,7 @@
if(predicted()) {
return C;
} else {
- // TODO: this may not be right. What if I
+ // TODO: this may not be right. What if I
// get a class like Foo#Bar$Baz$Bug?
return C2 + "$" + N;
}
@@ -140,7 +140,7 @@
// If we get to this point, nameComponents.length must be >=2
int lastPosition = nameComponents.length - 1;
cachedSimpleClassName = nameComponents[lastPosition];
- cachedOuterClassString = new String();
+ cachedOuterClassString = "";
for(int index=0; index < lastPosition; index++) {
cachedOuterClassString += nameComponents[index];
if(isAllDigits(nameComponents[index])) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/NewAttributeBands.java Tue Mar 11 09:07:09 2008
@@ -43,9 +43,7 @@
*/
public class NewAttributeBands extends BandSet {
- private AttributeLayout attributeLayout;
-
- private List attributes;
+ private final AttributeLayout attributeLayout;
private int backwardsCallCount;
@@ -68,15 +66,6 @@
}
/**
- * Returns the list of attributes read in by this band set. This method
- * should only be called after unpack() or it will return null.
- * @return List of Attributes
- */
- public List getAttributes() {
- return attributes;
- }
-
- /**
* Parse the bands relating to this AttributeLayout and return the correct
* class file attributes as a List of {@link Attribute}
* @throws Pack200Exception
@@ -364,7 +353,7 @@
private class Integral extends LayoutElement {
- private String tag;
+ private final String tag;
private long[] band;
public Integral(String tag) {
@@ -428,9 +417,9 @@
*/
private class Replication extends LayoutElement {
- private Integral countElement;
+ private final Integral countElement;
- private List layoutElements = new ArrayList();
+ private final List layoutElements = new ArrayList();
public Replication(String tag, String contents) throws IOException {
this.countElement = new Integral(tag);
@@ -479,9 +468,9 @@
*/
private class Union extends LayoutElement {
- private Integral unionTag;
- private List unionCases;
- private List defaultCaseBody;
+ private final Integral unionTag;
+ private final List unionCases;
+ private final List defaultCaseBody;
private int[] caseCounts;
private int defaultCount;
@@ -572,7 +561,7 @@
private class Call extends LayoutElement {
- private int callableIndex;
+ private final int callableIndex;
private Callable callable;
public Call(int callableIndex) {
@@ -608,11 +597,11 @@
*/
private class Reference extends LayoutElement {
- private String tag;
+ private final String tag;
private Object band;
- private int length;
+ private final int length;
public Reference(String tag) {
this.tag = tag;
@@ -677,9 +666,9 @@
}
- private class Callable implements AttributeLayoutElement {
+ private static class Callable implements AttributeLayoutElement {
- private List body;
+ private final List body;
private boolean isBackwardsCallable;
@@ -748,7 +737,7 @@
private List body;
- private List tags;
+ private final List tags;
public UnionCase(List tags) {
this.tags = tags;
@@ -875,7 +864,10 @@
}
stream.reset();
char[] digits = new char[length];
- stream.read(digits);
+ int read = stream.read(digits);
+ if (read != digits.length) {
+ throw new IOException("Error reading from the input stream");
+ }
return Integer.parseInt((negative ? "-" : "") + new String(digits));
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ByteCode.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ByteCode.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ByteCode.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ByteCode.java Tue Mar 11 09:07:09 2008
@@ -64,7 +64,7 @@
final ByteCode other = (ByteCode) obj;
if (getByteCodeForm() != other.getByteCodeForm())
return false;
- if (!rewrite.equals(other.rewrite))
+ if (rewrite != other.rewrite)
return false;
return true;
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ClassConstantPool.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ClassConstantPool.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ClassConstantPool.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ClassConstantPool.java Tue Mar 11 09:07:09 2008
@@ -26,27 +26,27 @@
public class ClassConstantPool {
// These are the domains in sorted order.
- public static int DOMAIN_UNDEFINED = 0;
- public static int DOMAIN_INTEGER = 1;
- public static int DOMAIN_FLOAT = 2;
- public static int DOMAIN_STRING = 3;
- public static int DOMAIN_NORMALASCIIZ = 4;
- public static int DOMAIN_LONG = 5;
- public static int DOMAIN_DOUBLE = 6;
- public static int DOMAIN_CLASSREF = 7;
- public static int DOMAIN_SIGNATUREASCIIZ = 8;
- public static int DOMAIN_NAMEANDTYPE = 9;
- public static int DOMAIN_FIELD = 10;
- public static int DOMAIN_METHOD = 11;
- public static int DOMAIN_ATTRIBUTEASCIIZ = 12;
- public static int NUM_DOMAINS = DOMAIN_ATTRIBUTEASCIIZ + 1;
+ public static final int DOMAIN_UNDEFINED = 0;
+ public static final int DOMAIN_INTEGER = 1;
+ public static final int DOMAIN_FLOAT = 2;
+ public static final int DOMAIN_STRING = 3;
+ public static final int DOMAIN_NORMALASCIIZ = 4;
+ public static final int DOMAIN_LONG = 5;
+ public static final int DOMAIN_DOUBLE = 6;
+ public static final int DOMAIN_CLASSREF = 7;
+ public static final int DOMAIN_SIGNATUREASCIIZ = 8;
+ public static final int DOMAIN_NAMEANDTYPE = 9;
+ public static final int DOMAIN_FIELD = 10;
+ public static final int DOMAIN_METHOD = 11;
+ public static final int DOMAIN_ATTRIBUTEASCIIZ = 12;
+ public static final int NUM_DOMAINS = DOMAIN_ATTRIBUTEASCIIZ + 1;
// protected SortedSet sortedEntries = new TreeSet(new PoolComparator());
protected ClassPoolSet classPoolSet = new ClassPoolSet();
public String toString() {
return entries.toString();
}
- private List others = new ArrayList();
+ private final List others = new ArrayList();
private List entries = new ArrayList();
@@ -106,7 +106,7 @@
classPoolSet = new ClassPoolSet();
Iterator it = entries.iterator();
while(it.hasNext()) {
- classPoolSet.add((ClassFileEntry)it.next());
+ classPoolSet.add(it.next());
}
entries = new ArrayList();
Iterator sortedIterator = classPoolSet.iterator();
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ConstantPoolEntry.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ConstantPoolEntry.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ConstantPoolEntry.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ConstantPoolEntry.java Tue Mar 11 09:07:09 2008
@@ -57,7 +57,7 @@
byte tag;
protected int domain = ClassConstantPool.DOMAIN_UNDEFINED;
- public static int creationOrderCount = 100;
+ private static int creationOrderCount = 100;
public String comparisonString() {
return toString();
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ExceptionsAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ExceptionsAttribute.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ExceptionsAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/ExceptionsAttribute.java Tue Mar 11 09:07:09 2008
@@ -39,7 +39,7 @@
private transient int[] exceptionIndexes;
- private CPClass[] exceptions;
+ private final CPClass[] exceptions;
public ExceptionsAttribute(CPClass[] exceptions) {
super(attributeName);
@@ -89,7 +89,7 @@
}
public String toString() {
- return "Exceptions:" + exceptions;
+ return "Exceptions: " + exceptions;
}
protected void writeBody(DataOutputStream dos) throws IOException {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/InnerClassesAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/InnerClassesAttribute.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/InnerClassesAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/InnerClassesAttribute.java Tue Mar 11 09:07:09 2008
@@ -31,7 +31,7 @@
"InnerClasses", ClassConstantPool.DOMAIN_ATTRIBUTEASCIIZ); //$NON-NLS-1$
- class InnerClassesEntry {
+ private static class InnerClassesEntry {
CPClass inner_class_info;
CPClass outer_class_info;
CPUTF8 inner_class_name;
@@ -93,8 +93,8 @@
}
- private List innerClasses = new ArrayList();
- private List nestedClassFileEntries = new ArrayList();
+ private final List innerClasses = new ArrayList();
+ private final List nestedClassFileEntries = new ArrayList();
public InnerClassesAttribute(String name) {
super(attributeName);
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ClassVersionTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ClassVersionTest.java?rev=635991&r1=635990&r2=635991&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ClassVersionTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/test/java/org/apache/harmony/pack200/tests/ClassVersionTest.java Tue Mar 11 09:07:09 2008
@@ -47,6 +47,7 @@
din.readShort(); // MINOR -- don't care
assertTrue("Class file has been compiled with Java 1.5 compatibility"
+ " instead of 1.4 or lower", din.readShort() < JAVA_15);
+ din.close();
}
public void testCorrectVersionOfAdapter() throws IOException {
@@ -61,6 +62,7 @@
din.readShort(); // MINOR -- don't care
assertTrue("Class file needs 1.5 compatibility",
din.readShort() >= JAVA_15);
+ din.close();
}
}
}