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/12 17:24:46 UTC
svn commit: r636402 - in
/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200:
ClassBands.java Segment.java bytecode/Attribute.java
bytecode/SourceFileAttribute.java
Author: sjanuary
Date: Wed Mar 12 09:24:44 2008
New Revision: 636402
URL: http://svn.apache.org/viewvc?rev=636402&view=rev
Log:
Apply patch for HARMONY-5594 ([classlib][pack200] Deprecated classes don't have Deprecated attribute)
Modified:
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/Attribute.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/SourceFileAttribute.java
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java?rev=636402&r1=636401&r2=636402&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/ClassBands.java Wed Mar 12 09:24:44 2008
@@ -1189,6 +1189,10 @@
return numBackwardsCalls;
}
+ public ArrayList[] getClassAttributes() {
+ return classAttributes;
+ }
+
public int[] getClassFieldCount() {
return classFieldCount;
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java?rev=636402&r1=636401&r2=636402&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java Wed Mar 12 09:24:44 2008
@@ -144,6 +144,28 @@
} else {
classFile.attributes = new Attribute[] {};
}
+
+ // If we see any class attributes, add them to the class's attributes that will
+ // be written out. Keep SourceFileAttributes out since we just
+ // did them above. (One of the computations for SourceFileAttribute
+ // may be redundant.)
+ ArrayList classAttributes = classBands.getClassAttributes()[classNum];
+ ArrayList classAttributesWithoutSourceFileAttribute = new ArrayList();
+ for(int index=0; index < classAttributes.size(); index++) {
+ Attribute attrib = (Attribute)classAttributes.get(index);
+ if(!attrib.isSourceFileAttribute()) {
+ classAttributesWithoutSourceFileAttribute.add(attrib);
+ }
+ }
+ Attribute[] originalAttributes = classFile.attributes;
+ classFile.attributes = new Attribute[originalAttributes.length + classAttributesWithoutSourceFileAttribute.size()];
+ System.arraycopy(originalAttributes, 0, classFile.attributes, 0, originalAttributes.length);
+ for(int index=0; index < classAttributesWithoutSourceFileAttribute.size(); index++) {
+ Attribute attrib = ((Attribute)classAttributesWithoutSourceFileAttribute.get(index));
+ cp.add(attrib);
+ classFile.attributes[originalAttributes.length + index] = attrib;
+ }
+
// this/superclass
ClassFileEntry cfThis = cp.add(cpBands.cpClassValue(fullName));
ClassFileEntry cfSuper = cp.add(cpBands.cpClassValue(classBands.getClassSuper()[classNum]));
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/Attribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/Attribute.java?rev=636402&r1=636401&r2=636402&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/Attribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/Attribute.java Wed Mar 12 09:24:44 2008
@@ -83,6 +83,17 @@
return false;
}
+ /**
+ * Answer true if the receiver is a source file attribute
+ * (which gets special handling when the class is built);
+ * otherwise answer false.
+ *
+ * @return boolean source file attribute
+ */
+ public boolean isSourceFileAttribute() {
+ return false;
+ }
+
public int hashCode() {
final int PRIME = 31;
int result = 1;
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/SourceFileAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/SourceFileAttribute.java?rev=636402&r1=636401&r2=636402&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/SourceFileAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/bytecode/SourceFileAttribute.java Wed Mar 12 09:24:44 2008
@@ -48,6 +48,13 @@
return true;
}
+ /* (non-Javadoc)
+ * @see org.apache.harmony.pack200.bytecode.Attribute#isSourceFileAttribute()
+ */
+ public boolean isSourceFileAttribute() {
+ return true;
+ }
+
protected int getLength() {
return 2;
}