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/07/15 13:01:04 UTC
svn commit: r676866 -
/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/
Author: sjanuary
Date: Tue Jul 15 04:01:03 2008
New Revision: 676866
URL: http://svn.apache.org/viewvc?rev=676866&view=rev
Log:
Apply patch for HARMONY-5907 ([classlib][pack200]CPUTF8.hashCode() is slow)
Modified:
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java Tue Jul 15 04:01:03 2008
@@ -104,13 +104,17 @@
return getByteCodeForm().getOperandType();
}
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ cachedHashCode = objectHashCode();
+ }
+
public int hashCode() {
- final int prime = 41;
- int result = 1;
- result = prime * result + getName().hashCode() + getByteCodeForm().hashCode();
- // Don't forget to take the operands = rewrite into account
- result += (prime * rewrite.hashCode());
- return result;
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
}
/*
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java Tue Jul 15 04:01:03 2008
@@ -61,8 +61,18 @@
return new ClassFileEntry[] { utf8, };
}
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
+ cachedHashCode = utf8.hashCode();
+ }
+
public int hashCode() {
- return utf8.hashCode();
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
}
protected void resolve(ClassConstantPool pool) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java Tue Jul 15 04:01:03 2008
@@ -54,14 +54,24 @@
return "FieldRef: " + className + "#" + nameAndType;
}
- public int hashCode() {
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
final int PRIME = 31;
int result = 1;
result = PRIME * result
+ ((className == null) ? 0 : className.hashCode());
result = PRIME * result
+ ((nameAndType == null) ? 0 : nameAndType.hashCode());
- return result;
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
}
public boolean equals(Object obj) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java Tue Jul 15 04:01:03 2008
@@ -32,4 +32,23 @@
public int invokeInterfaceCount() {
return nameAndType.invokeInterfaceCount();
}
+
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + className.hashCode();
+ result = PRIME * result + nameAndType.hashCode();
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
+ }
+
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java Tue Jul 15 04:01:03 2008
@@ -31,4 +31,22 @@
return "Method: " + name + "(" + descriptor + ")";
}
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + name.hashCode();
+ result = PRIME * result + descriptor.hashCode();
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
+ }
+
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java Tue Jul 15 04:01:03 2008
@@ -29,4 +29,23 @@
return new ClassFileEntry[] { className, nameAndType };
}
+
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + className.hashCode();
+ result = PRIME * result + nameAndType.hashCode();
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
+ }
+
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java Tue Jul 15 04:01:03 2008
@@ -76,12 +76,22 @@
return "NameAndType: " + name + "(" + descriptor + ")";
}
- public int hashCode() {
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
final int PRIME = 31;
int result = 1;
result = PRIME * result + descriptor.hashCode();
result = PRIME * result + name.hashCode();
- return result;
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
}
public boolean equals(Object obj) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java Tue Jul 15 04:01:03 2008
@@ -53,4 +53,21 @@
protected ClassFileEntry[] getNestedClassFileEntries() {
return new ClassFileEntry[] { name };
}
+
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + name.hashCode();
+ cachedHashCode = result;
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
+ }
}
\ No newline at end of file
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java Tue Jul 15 04:01:03 2008
@@ -57,9 +57,19 @@
return utf8.equals(other.utf8);
}
- public int hashCode() {
+ private boolean hashcodeComputed = false;
+ private int cachedHashCode;
+
+ private void generateHashCode() {
+ hashcodeComputed = true;
final int PRIME = 31;
- return PRIME + utf8.hashCode();
+ cachedHashCode = PRIME + utf8.hashCode();
+ }
+
+ public int hashCode() {
+ if (!hashcodeComputed)
+ generateHashCode();
+ return cachedHashCode;
}
public String toString() {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java?rev=676866&r1=676865&r2=676866&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java Tue Jul 15 04:01:03 2008
@@ -50,6 +50,10 @@
return resolved;
}
+ protected int objectHashCode() {
+ return super.hashCode();
+ }
+
public abstract String toString();
public final void write(DataOutputStream dos) throws IOException {
Re: svn commit: r676866 - /harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/
Posted by Nathan Beyer <nd...@apache.org>.
I've noticed a bunch of patches lately, like this one, that have inline
fields assignments that duplicate the default value.
private boolean hashcodeComputed = false;
Besides being redundant and unnecessary, it's inconsistent when coupled with
other field declarations that don't assign anything inline.
private boolean hashcodeComputed = false;
private int cachedHashCode;
Save some typing, save some bits and save the unnecessary steps in my
debugger -- don't assign default values to fields.
Thanks.
-Nathan
On Tue, Jul 15, 2008 at 6:01 AM, <sj...@apache.org> wrote:
> Author: sjanuary
> Date: Tue Jul 15 04:01:03 2008
> New Revision: 676866
>
> URL: http://svn.apache.org/viewvc?rev=676866&view=rev
> Log:
> Apply patch for HARMONY-5907 ([classlib][pack200]CPUTF8.hashCode() is slow)
>
> Modified:
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
>
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ByteCode.java
> Tue Jul 15 04:01:03 2008
> @@ -104,13 +104,17 @@
> return getByteCodeForm().getOperandType();
> }
>
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + cachedHashCode = objectHashCode();
> + }
> +
> public int hashCode() {
> - final int prime = 41;
> - int result = 1;
> - result = prime * result + getName().hashCode() +
> getByteCodeForm().hashCode();
> - // Don't forget to take the operands = rewrite into account
> - result += (prime * rewrite.hashCode());
> - return result;
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> }
>
> /*
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPClass.java
> Tue Jul 15 04:01:03 2008
> @@ -61,8 +61,18 @@
> return new ClassFileEntry[] { utf8, };
> }
>
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> + cachedHashCode = utf8.hashCode();
> + }
> +
> public int hashCode() {
> - return utf8.hashCode();
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> }
>
> protected void resolve(ClassConstantPool pool) {
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPFieldRef.java
> Tue Jul 15 04:01:03 2008
> @@ -54,14 +54,24 @@
> return "FieldRef: " + className + "#" + nameAndType;
> }
>
> - public int hashCode() {
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> final int PRIME = 31;
> int result = 1;
> result = PRIME * result
> + ((className == null) ? 0 : className.hashCode());
> result = PRIME * result
> + ((nameAndType == null) ? 0 : nameAndType.hashCode());
> - return result;
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> }
>
> public boolean equals(Object obj) {
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPInterfaceMethodRef.java
> Tue Jul 15 04:01:03 2008
> @@ -32,4 +32,23 @@
> public int invokeInterfaceCount() {
> return nameAndType.invokeInterfaceCount();
> }
> +
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> + final int PRIME = 31;
> + int result = 1;
> + result = PRIME * result + className.hashCode();
> + result = PRIME * result + nameAndType.hashCode();
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> + }
> +
> }
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethod.java
> Tue Jul 15 04:01:03 2008
> @@ -31,4 +31,22 @@
> return "Method: " + name + "(" + descriptor + ")";
> }
>
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> + final int PRIME = 31;
> + int result = 1;
> + result = PRIME * result + name.hashCode();
> + result = PRIME * result + descriptor.hashCode();
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> + }
> +
> }
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMethodRef.java
> Tue Jul 15 04:01:03 2008
> @@ -29,4 +29,23 @@
> return new ClassFileEntry[] { className, nameAndType };
> }
>
> +
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> + final int PRIME = 31;
> + int result = 1;
> + result = PRIME * result + className.hashCode();
> + result = PRIME * result + nameAndType.hashCode();
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> + }
> +
> }
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPNameAndType.java
> Tue Jul 15 04:01:03 2008
> @@ -76,12 +76,22 @@
> return "NameAndType: " + name + "(" + descriptor + ")";
> }
>
> - public int hashCode() {
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> final int PRIME = 31;
> int result = 1;
> result = PRIME * result + descriptor.hashCode();
> result = PRIME * result + name.hashCode();
> - return result;
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> }
>
> public boolean equals(Object obj) {
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPString.java
> Tue Jul 15 04:01:03 2008
> @@ -53,4 +53,21 @@
> protected ClassFileEntry[] getNestedClassFileEntries() {
> return new ClassFileEntry[] { name };
> }
> +
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> + final int PRIME = 31;
> + int result = 1;
> + result = PRIME * result + name.hashCode();
> + cachedHashCode = result;
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> + }
> }
> \ No newline at end of file
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java
> Tue Jul 15 04:01:03 2008
> @@ -57,9 +57,19 @@
> return utf8.equals(other.utf8);
> }
>
> - public int hashCode() {
> + private boolean hashcodeComputed = false;
> + private int cachedHashCode;
> +
> + private void generateHashCode() {
> + hashcodeComputed = true;
> final int PRIME = 31;
> - return PRIME + utf8.hashCode();
> + cachedHashCode = PRIME + utf8.hashCode();
> + }
> +
> + public int hashCode() {
> + if (!hashcodeComputed)
> + generateHashCode();
> + return cachedHashCode;
> }
>
> public String toString() {
>
> Modified:
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
> URL:
> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java?rev=676866&r1=676865&r2=676866&view=diff
>
> ==============================================================================
> ---
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
> (original)
> +++
> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassFileEntry.java
> Tue Jul 15 04:01:03 2008
> @@ -50,6 +50,10 @@
> return resolved;
> }
>
> + protected int objectHashCode() {
> + return super.hashCode();
> + }
> +
> public abstract String toString();
>
> public final void write(DataOutputStream dos) throws IOException {
>
>
>