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/21 12:33:33 UTC
svn commit: r678386 - in
/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200:
./ bytecode/
Author: sjanuary
Date: Mon Jul 21 03:33:32 2008
New Revision: 678386
URL: http://svn.apache.org/viewvc?rev=678386&view=rev
Log:
Apply patch for HARMONY-5920 ([classlib][pack200][performance] ArrayList usage optimization)
Modified:
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMember.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/InnerClassesAttribute.java
harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/BcBands.java Mon Jul 21 03:33:32 2008
@@ -20,7 +20,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.harmony.pack200.Codec;
@@ -430,9 +429,8 @@
ArrayList methodAttributesList = methodAttributes[c][m];
// Make sure we add the code attribute in the right place
int indexForCodeAttr = 0;
- for (Iterator iterator = methodAttributesList.iterator(); iterator
- .hasNext();) {
- Attribute attribute = (Attribute) iterator.next();
+ for (int index = 0; index < methodAttributesList.size(); index++) {
+ Attribute attribute = (Attribute) methodAttributesList.get(index);
if((attribute instanceof NewAttribute && ((NewAttribute)attribute).getLayoutIndex() < 15)) {
indexForCodeAttr ++;
} else {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/ClassBands.java Mon Jul 21 03:33:32 2008
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.harmony.pack200.Codec;
@@ -983,15 +982,17 @@
}
MetadataBandGroup[] mb = parseMetadata(in, RxA, RxACount,
backwardsCalls, "field");
- Iterator rvaAttributesIterator = mb[0].getAttributes().iterator();
- Iterator riaAttributesIterator = mb[1].getAttributes().iterator();
+ List rvaAttributes = mb[0].getAttributes();
+ List riaAttributes = mb[1].getAttributes();
+ int rvaAttributesIndex = 0;
+ int riaAttributesIndex = 0;
for (int i = 0; i < fieldFlags.length; i++) {
for (int j = 0; j < fieldFlags[i].length; j++) {
if (rvaLayout.matches(fieldFlags[i][j])) {
- fieldAttributes[i][j].add(rvaAttributesIterator.next());
+ fieldAttributes[i][j].add(rvaAttributes.get(rvaAttributesIndex++));
}
if (riaLayout.matches(fieldFlags[i][j])) {
- fieldAttributes[i][j].add(riaAttributesIterator.next());
+ fieldAttributes[i][j].add(riaAttributes.get(riaAttributesIndex++));
}
}
}
@@ -1143,16 +1144,18 @@
}
MetadataBandGroup[] mbgs = parseMetadata(in, RxA, rxaCounts,
backwardsCalls, "method");
- Iterator[] attributeIterators = new Iterator[RxA.length];
+ List[] attributeLists = new List[RxA.length];
+ int[] attributeListIndexes = new int[RxA.length];
for (int i = 0; i < mbgs.length; i++) {
- attributeIterators[i] = mbgs[i].getAttributes().iterator();
+ attributeLists[i] = mbgs[i].getAttributes();
+ attributeListIndexes[i] = 0;
}
for (int i = 0; i < methodFlags.length; i++) {
for (int j = 0; j < methodFlags[i].length; j++) {
for (int k = 0; k < rxaLayouts.length; k++) {
if (rxaLayouts[k].matches(methodFlags[i][j])) {
methodAttributes[i][j]
- .add(attributeIterators[k].next());
+ .add(attributeLists[k].get(attributeListIndexes[k]++));
}
}
}
@@ -1198,14 +1201,16 @@
}
MetadataBandGroup[] mbgs = parseMetadata(in, RxA, RxACount,
backwardsCalls, "class");
- Iterator rvaAttributesIterator = mbgs[0].getAttributes().iterator();
- Iterator riaAttributesIterator = mbgs[1].getAttributes().iterator();
+ List rvaAttributes = mbgs[0].getAttributes();
+ List riaAttributes = mbgs[1].getAttributes();
+ int rvaAttributesIndex = 0;
+ int riaAttributesIndex = 0;
for (int i = 0; i < classFlags.length; i++) {
if (rvaLayout.matches(classFlags[i])) {
- classAttributes[i].add(rvaAttributesIterator.next());
+ classAttributes[i].add(rvaAttributes.get(rvaAttributesIndex++));
}
if (riaLayout.matches(classFlags[i])) {
- classAttributes[i].add(riaAttributesIterator.next());
+ classAttributes[i].add(riaAttributes.get(riaAttributesIndex++));
}
}
return numBackwardsCalls;
@@ -1308,9 +1313,9 @@
* @return ArrayList
*/
public ArrayList getOrderedCodeAttributes() {
- ArrayList orderedAttributeList = new ArrayList();
+ ArrayList orderedAttributeList = new ArrayList(codeAttributes.length);
for (int classIndex = 0; classIndex < codeAttributes.length; classIndex++) {
- ArrayList currentAttributes = new ArrayList();
+ ArrayList currentAttributes = new ArrayList(codeAttributes[classIndex].size());
for (int attributeIndex = 0; attributeIndex < codeAttributes[classIndex]
.size(); attributeIndex++) {
Attribute attribute = (Attribute) codeAttributes[classIndex]
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcBands.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/IcBands.java Mon Jul 21 03:33:32 2008
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.harmony.pack200.Codec;
@@ -137,9 +136,8 @@
while (changed) {
changed = false;
for (int allTupleIndex = 0; allTupleIndex < allTuplesSize; allTupleIndex++) {
- Iterator it = classPoolClasses.iterator();
- while (it.hasNext()) {
- CPClass classInPool = (CPClass) it.next();
+ for(int cpcIndex = 0; cpcIndex < classPoolClasses.size(); cpcIndex++) {
+ CPClass classInPool = (CPClass) classPoolClasses.get(cpcIndex);
String poolClassName = classInPool.name;
if (poolClassName.equals(allTuples[allTupleIndex]
.thisClassString())) {
@@ -175,9 +173,8 @@
}
}
if (tuplesToAdd.size() > 0) {
- Iterator it = tuplesToAdd.iterator();
- while (it.hasNext()) {
- IcTuple tuple = (IcTuple) it.next();
+ for(int index = 0; index < tuplesToAdd.size(); index++) {
+ IcTuple tuple = (IcTuple) tuplesToAdd.get(index);
if (!relevantTuples.contains(tuple)) {
changedFixup = true;
relevantTuples.add(tuple);
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/MetadataBandGroup.java Mon Jul 21 03:33:32 2008
@@ -75,59 +75,58 @@
public int[] nestpair_N;
public CPUTF8[] nestname_RU;
- private Iterator caseI_Iterator;
+ private int caseI_KI_Index;
- private Iterator caseD_Iterator;
+ private int caseD_KD_Index;
- private Iterator caseF_Iterator;
+ private int caseF_KF_Index;
- private Iterator caseJ_Iterator;
+ private int caseJ_KJ_Index;
- private Iterator casec_Iterator;
+ private int casec_RS_Index;
- private Iterator caseet_Iterator;
+ private int caseet_RS_Index;
- private Iterator caseec_Iterator;
+ private int caseec_RU_Index;
- private Iterator cases_Iterator;
+ private int cases_RU_Index;
- private Iterator casearray_Iterator;
+ private int casearray_N_Index;
- private Iterator T_iterator;
+ private int T_index;
- private Iterator nesttype_RS_Iterator;
+ private int nesttype_RS_Index;
- private Iterator nestpair_N_Iterator;
+ private int nestpair_N_Index;
private Iterator nestname_RU_Iterator;
- private Iterator anno_N_Iterator;
+ private int anno_N_Index;
private Iterator type_RS_Iterator;
- private Iterator pair_N_Iterator;
+ private int pair_N_Index;
public List getAttributes() {
+ // TODO: Optimize iterators!
if (attributes == null) {
attributes = new ArrayList();
if (name_RU != null) {
Iterator name_RU_Iterator = Arrays.asList(name_RU).iterator();
if (!type.equals("AD")) {
- T_iterator = Arrays.asList(boxArray(T)).iterator();
+ T_index = 0;
}
- caseI_Iterator = Arrays.asList(caseI_KI).iterator();
- caseD_Iterator = Arrays.asList(caseD_KD).iterator();
- caseF_Iterator = Arrays.asList(caseF_KF).iterator();
- caseJ_Iterator = Arrays.asList(caseJ_KJ).iterator();
- casec_Iterator = Arrays.asList(casec_RS).iterator();
- caseet_Iterator = Arrays.asList(caseet_RS).iterator();
- caseec_Iterator = Arrays.asList(caseec_RU).iterator();
- cases_Iterator = Arrays.asList(cases_RU).iterator();
- casearray_Iterator = Arrays.asList(boxArray(casearray_N))
- .iterator();
- nesttype_RS_Iterator = Arrays.asList(nesttype_RS).iterator();
- nestpair_N_Iterator = Arrays.asList(boxArray(nestpair_N))
- .iterator();
+ caseI_KI_Index = 0;
+ caseD_KD_Index = 0;
+ caseF_KF_Index = 0;
+ caseJ_KJ_Index = 0;
+ casec_RS_Index = 0;
+ caseet_RS_Index = 0;
+ caseec_RU_Index = 0;
+ cases_RU_Index = 0;
+ casearray_N_Index = 0;
+ nesttype_RS_Index = 0;
+ nestpair_N_Index = 0;
nestname_RU_Iterator = Arrays.asList(nestname_RU).iterator();
if (type.equals("RVA") || type.equals("RIA")) {
for (int i = 0; i < anno_N.length; i++) {
@@ -135,10 +134,9 @@
pair_N[i], name_RU_Iterator));
}
} else if (type.equals("RVPA") || type.equals("RIPA")) {
- anno_N_Iterator = Arrays.asList(boxArray(anno_N))
- .iterator();
+ anno_N_Index = 0;
type_RS_Iterator = Arrays.asList(type_RS).iterator();
- pair_N_Iterator = Arrays.asList(pair_N).iterator();
+ pair_N_Index = 0;
for (int i = 0; i < param_NB.length; i++) {
attributes.add(getParameterAttribute(param_NB[i],
name_RU_Iterator));
@@ -169,8 +167,8 @@
Iterator namesIterator) {
ParameterAnnotation[] parameter_annotations = new ParameterAnnotation[numParameters];
for (int i = 0; i < numParameters; i++) {
- int numAnnotations = ((Integer) anno_N_Iterator.next()).intValue();
- int[] pairCounts = (int[]) pair_N_Iterator.next();
+ int numAnnotations = anno_N[anno_N_Index++];
+ int[] pairCounts = pair_N[pair_N_Index++];
Annotation[] annotations = new Annotation[numAnnotations];
for (int j = 0; j < annotations.length; j++) {
annotations[j] = getAnnotation(
@@ -190,7 +188,7 @@
ElementValue[] elementValues = new ElementValue[pairCount];
for (int j = 0; j < elementNames.length; j++) {
elementNames[j] = (CPUTF8) namesIterator.next();
- int t = ((Integer) T_iterator.next()).intValue();
+ int t = T[T_index++];
elementValues[j] = new ElementValue(t, getNextValue(t));
}
return new Annotation(pairCount, type, elementNames, elementValues);
@@ -203,46 +201,38 @@
case 'I':
case 'S':
case 'Z':
- return caseI_Iterator.next();
+ return caseI_KI[caseI_KI_Index++];
case 'D':
- return caseD_Iterator.next();
+ return caseD_KD[caseD_KD_Index++];
case 'F':
- return caseF_Iterator.next();
+ return caseF_KF[caseF_KF_Index++];
case 'J':
- return caseJ_Iterator.next();
+ return caseJ_KJ[caseJ_KJ_Index++];
case 'c':
- return casec_Iterator.next();
+ return casec_RS[casec_RS_Index++];
case 'e':
// TODO: check this - it may not work if the first string already
// has a colon in it
- String enumString = caseet_Iterator.next() + ":"
- + caseec_Iterator.next();
+ String enumString = caseet_RS[caseet_RS_Index++] + ":"
+ + caseec_RU[caseec_RU_Index++];
return cpBands.cpNameAndTypeValue(enumString);
case 's':
- return cases_Iterator.next();
+ return cases_RU[cases_RU_Index++];
case '[':
- int arraySize = ((Integer) casearray_Iterator.next()).intValue();
+ int arraySize = casearray_N[casearray_N_Index++];
ElementValue[] nestedArray = new ElementValue[arraySize];
for (int i = 0; i < arraySize; i++) {
- int nextT = ((Integer) T_iterator.next()).intValue();
+ int nextT = T[T_index++];
nestedArray[i] = new ElementValue(nextT, getNextValue(nextT));
}
return nestedArray;
case '@':
- CPUTF8 type = (CPUTF8) nesttype_RS_Iterator.next();
- int numPairs = ((Integer) nestpair_N_Iterator.next()).intValue();
+ CPUTF8 type = (CPUTF8) nesttype_RS[nesttype_RS_Index++];
+ int numPairs = nestpair_N[nestpair_N_Index++];
return getAnnotation(type, numPairs, nestname_RU_Iterator);
}
return null;
}
- private Integer[] boxArray(int[] unboxed) {
- Integer[] boxed = new Integer[unboxed.length];
- for (int i = 0; i < boxed.length; i++) {
- boxed[i] = new Integer(unboxed[i]);
- }
- return boxed;
- }
-
}
\ No newline at end of file
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/NewAttributeBands.java Mon Jul 21 03:33:32 2008
@@ -20,7 +20,6 @@
import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.harmony.pack200.BHSDCodec;
@@ -76,13 +75,12 @@
*/
public List parseAttributes(InputStream in, int occurrenceCount)
throws IOException, Pack200Exception {
- for (Iterator iter = attributeLayoutElements.iterator(); iter.hasNext();) {
- AttributeLayoutElement element = (AttributeLayoutElement) iter
- .next();
+ for(int i = 0; i < attributeLayoutElements.size(); i++) {
+ AttributeLayoutElement element = (AttributeLayoutElement) attributeLayoutElements.get(i);
element.readBands(in, occurrenceCount);
}
- List attributes = new ArrayList();
+ List attributes = new ArrayList(occurrenceCount);
for (int i = 0; i < occurrenceCount; i++) {
attributes.add(getOneAttribute(i, attributeLayoutElements));
}
@@ -101,9 +99,8 @@
NewAttribute attribute = new NewAttribute(segment.getCpBands()
.cpUTF8Value(attributeLayout.getName()),
attributeLayout.getIndex());
- for (Iterator iter = elements.iterator(); iter.hasNext();) {
- AttributeLayoutElement element = (AttributeLayoutElement) iter
- .next();
+ for(int i = 0; i < elements.size(); i++) {
+ AttributeLayoutElement element = (AttributeLayoutElement) elements.get(i);
element.addToAttribute(index, attribute);
}
return attribute;
@@ -141,8 +138,8 @@
if (element instanceof Callable) {
Callable callable = (Callable) element;
List body = callable.body; // Look for calls in the body
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement layoutElement = (LayoutElement) iter.next();
+ for(int iIndex = 0; iIndex < body.size(); iIndex++) {
+ LayoutElement layoutElement = (LayoutElement) body.get(iIndex);
if (layoutElement instanceof Call) {
// Set the callable for each call
Call call = (Call) layoutElement;
@@ -453,8 +450,8 @@
for (int i = 0; i < count; i++) {
arrayCount += countElement.getValue(i);
}
- for (Iterator iter = layoutElements.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < layoutElements.size(); i++) {
+ LayoutElement element = (LayoutElement) layoutElements.get(i);
element.readBands(in, arrayCount);
}
}
@@ -470,8 +467,8 @@
}
long numElements = countElement.getValue(index);
for (int i = offset; i < offset + numElements; i++) {
- for (Iterator iter = layoutElements.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for (int it = 0; it < layoutElements.size(); it++) {
+ LayoutElement element = (LayoutElement) layoutElements.get(it);
element.addToAttribute(i, attribute);
}
}
@@ -514,8 +511,8 @@
// Count number of default cases then read the default bands
for (int i = 0; i < values.length; i++) {
boolean found = false;
- for (Iterator iter = unionCases.iterator(); iter.hasNext();) {
- UnionCase unionCase = (UnionCase) iter.next();
+ for(int it = 0; it < unionCases.size(); it++) {
+ UnionCase unionCase = (UnionCase) unionCases.get(it);
if (unionCase.hasTag(values[i])) {
found = true;
}
@@ -525,8 +522,8 @@
}
}
if (defaultCaseBody != null) {
- for (Iterator iter = defaultCaseBody.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < defaultCaseBody.size(); i++) {
+ LayoutElement element = (LayoutElement) defaultCaseBody.get(i);
element.readBands(in, defaultCount);
}
}
@@ -538,8 +535,8 @@
long[] tagBand = unionTag.band;
long tag = unionTag.getValue(n);
boolean defaultCase = true;
- for (Iterator iter = unionCases.iterator(); iter.hasNext();) {
- UnionCase element = (UnionCase) iter.next();
+ for(int i = 0; i < unionCases.size(); i++) {
+ UnionCase element = (UnionCase) unionCases.get(i);
if (element.hasTag(tag)) {
defaultCase = false;
for (int j = 0; j < n; j++) {
@@ -555,8 +552,8 @@
int defaultOffset = 0;
for (int j = 0; j < n; j++) {
boolean found = false;
- for (Iterator iter = unionCases.iterator(); iter.hasNext();) {
- UnionCase element = (UnionCase) iter.next();
+ for(int i = 0; i < unionCases.size(); i++) {
+ UnionCase element = (UnionCase) unionCases.get(i);
if (element.hasTag(tagBand[j])) {
found = true;
}
@@ -566,9 +563,8 @@
}
}
if (defaultCaseBody != null) {
- for (Iterator iter = defaultCaseBody.iterator(); iter
- .hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < defaultCaseBody.size(); i++) {
+ LayoutElement element = (LayoutElement) defaultCaseBody.get(i);
element.addToAttribute(defaultOffset, attribute);
}
}
@@ -718,8 +714,8 @@
* @param attribute
*/
public void addNextToAttribute(NewAttribute attribute) {
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < body.size(); i++) {
+ LayoutElement element = (LayoutElement) body.get(i);
element.addToAttribute(index, attribute);
}
index++;
@@ -737,16 +733,16 @@
public void readBands(InputStream in, int count) throws IOException,
Pack200Exception {
count += this.count;
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < body.size(); i++) {
+ LayoutElement element = (LayoutElement) body.get(i);
element.readBands(in, count);
}
}
public void addToAttribute(int n, NewAttribute attribute) {
// Ignore n because bands also contain element parts from calls
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < body.size(); i++) {
+ LayoutElement element = (LayoutElement) body.get(i);
element.addToAttribute(index, attribute);
}
index++;
@@ -789,8 +785,8 @@
public void readBands(InputStream in, int count) throws IOException,
Pack200Exception {
if (body != null) {
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < body.size(); i++) {
+ LayoutElement element = (LayoutElement) body.get(i);
element.readBands(in, count);
}
}
@@ -798,8 +794,8 @@
public void addToAttribute(int index, NewAttribute attribute) {
if (body != null) {
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- LayoutElement element = (LayoutElement) iter.next();
+ for(int i = 0; i < body.size(); i++) {
+ LayoutElement element = (LayoutElement) body.get(i);
element.addToAttribute(index, attribute);
}
}
@@ -943,9 +939,8 @@
public void setBackwardsCalls(int[] backwardsCalls) throws IOException {
int index = 0;
parseLayout();
- for (Iterator iter = attributeLayoutElements.iterator(); iter.hasNext();) {
- AttributeLayoutElement element = (AttributeLayoutElement) iter
- .next();
+ for(int i = 0; i < attributeLayoutElements.size(); i++) {
+ AttributeLayoutElement element = (AttributeLayoutElement) attributeLayoutElements.get(i);
if (element instanceof Callable
&& ((Callable) element).isBackwardsCallable()) {
((Callable) element).addCount(backwardsCalls[index]);
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/Segment.java Mon Jul 21 03:33:32 2008
@@ -24,7 +24,6 @@
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
@@ -157,7 +156,7 @@
// that will
// be written out. Keep SourceFileAttributes out since we just
// did them above.
- ArrayList classAttributesWithoutSourceFileAttribute = new ArrayList();
+ ArrayList classAttributesWithoutSourceFileAttribute = new ArrayList(classAttributes.size());
for (int index = 0; index < classAttributes.size(); index++) {
Attribute attrib = (Attribute) classAttributes.get(index);
if (!attrib.isSourceFileAttribute()) {
@@ -313,10 +312,10 @@
* have to determine if this is the case.
*/
private IcTuple[] computeIcStored(IcTuple[] ic_local, IcTuple[] ic_relevant) {
- List result = new ArrayList();
- List resultCopy = new ArrayList();
- List localList = new ArrayList();
- List relevantList = new ArrayList();
+ List result = new ArrayList(ic_relevant.length);
+ List resultCopy = new ArrayList(ic_relevant.length);
+ List localList = new ArrayList(ic_relevant.length);
+ List relevantList = new ArrayList(ic_relevant.length);
if (ic_local != null) {
// If ic_local is null, this code doesn't get
// executed - which means the list ends up being
@@ -335,14 +334,10 @@
// Since we're removing while iterating, iterate over
// a copy.
- Iterator it = resultCopy.iterator();
-
- while (it.hasNext()) {
- IcTuple tuple = (IcTuple) it.next();
+ for(int i = 0; i < resultCopy.size(); i++) {
+ IcTuple tuple = (IcTuple) resultCopy.get(i);
if (localList.contains(tuple) && relevantList.contains(tuple)) {
- while (result.remove(tuple)) {
- }
- ;
+ while (result.remove(tuple));
}
}
IcTuple[] resultArray = new IcTuple[result.size()];
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMember.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMember.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMember.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CPMember.java Mon Jul 21 03:33:32 2008
@@ -19,7 +19,6 @@
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
/**
@@ -70,8 +69,8 @@
super.resolve(pool);
nameIndex = pool.indexOf(name);
descriptorIndex = pool.indexOf(descriptor);
- for (Iterator it = attributes.iterator(); it.hasNext();) {
- Attribute attribute = (Attribute) it.next();
+ for(int it = 0; it < attributes.size(); it++) {
+ Attribute attribute = (Attribute) attributes.get(it);
attribute.resolve(pool);
}
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/ClassConstantPool.java Mon Jul 21 03:33:32 2008
@@ -20,7 +20,6 @@
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
@@ -66,8 +65,8 @@
boolean added = true;
// initial assignment
- ArrayList parents = new ArrayList();
- ArrayList children = new ArrayList();
+ ArrayList parents = new ArrayList(512);
+ ArrayList children = new ArrayList(512);
// adding old entries
parents.addAll(entries);
@@ -84,9 +83,8 @@
// get the parents' children and add them to buffer
// concurrently add parents to target storage
- Iterator i = parents.iterator();
- while(i.hasNext()) {
- ClassFileEntry entry = (ClassFileEntry)i.next();
+ for(int indexParents = 0; indexParents < parents.size(); indexParents++) {
+ ClassFileEntry entry = (ClassFileEntry) parents.get(indexParents);
// traverse children
ClassFileEntry[] entryChildren = entry.getNestedClassFileEntries();
@@ -150,18 +148,16 @@
resolved = true;
- Iterator it = entries.iterator();
- while (it.hasNext()) {
- ClassFileEntry entry = (ClassFileEntry) it.next();
+ for(int it = 0; it < entries.size(); it++) {
+ ClassFileEntry entry = (ClassFileEntry) entries.get(it);
entry.resolve(this);
}
- it = others.iterator();
- while (it.hasNext()) {
- ClassFileEntry entry = (ClassFileEntry) it.next();
+
+ for(int it = 0; it < others.size(); it++) {
+ ClassFileEntry entry = (ClassFileEntry) others.get(it);
entry.resolve(this);
}
-
}
private void initialSort() {
@@ -184,8 +180,10 @@
}
});
- for (Iterator iterator = entries.iterator(); iterator.hasNext();) {
- ConstantPoolEntry entry = (ConstantPoolEntry) iterator.next();
+
+
+ for(int index = 0; index < entries.size(); index++) {
+ ConstantPoolEntry entry = (ConstantPoolEntry) entries.get(index);
if(entry.getGlobalIndex() == -1) {
if (entry instanceof CPUTF8) {
cpUtf8sNotInCpAll.add(entry);
@@ -214,10 +212,9 @@
* NOTE: when this list is answered, the classes may not yet be resolved.
*/
public List allClasses() {
- List classesList = new ArrayList();
- Iterator it = entries.iterator();
- while (it.hasNext()) {
- ConstantPoolEntry entry = (ConstantPoolEntry) it.next();
+ List classesList = new ArrayList(entries.size());
+ for(int i = 0; i < entries.size(); i++) {
+ ConstantPoolEntry entry = (ConstantPoolEntry) entries.get(i);
if (entry instanceof CPClass) {
classesList.add(entry);
}
@@ -231,11 +228,12 @@
// references to objects which need to be at the
// start of the class pool
- Iterator it = entries.iterator();
- ArrayList startOfPool = new ArrayList();
- ArrayList finalSort = new ArrayList();
- while (it.hasNext()) {
- ClassFileEntry nextEntry = (ClassFileEntry) it.next();
+
+ ArrayList startOfPool = new ArrayList(entries.size());
+ ArrayList finalSort = new ArrayList(entries.size());
+
+ for(int i = 0; i < entries.size(); i++) {
+ ClassFileEntry nextEntry = (ClassFileEntry) entries.get(i);
if (mustStartClassPool.contains(nextEntry)) {
startOfPool.add(nextEntry);
} else {
@@ -249,9 +247,9 @@
int index = 0;
entries.clear();
- Iterator itStart = startOfPool.iterator();
- while (itStart.hasNext()) {
- ClassFileEntry entry = (ClassFileEntry) itStart.next();
+
+ for(int itIndex = 0; itIndex < startOfPool.size(); itIndex++) {
+ ClassFileEntry entry = (ClassFileEntry) startOfPool.get(itIndex);
indexCache.put(entry, new Integer(index));
if (entry instanceof CPLong || entry instanceof CPDouble) {
@@ -264,9 +262,8 @@
}
}
- it = finalSort.iterator();
- while (it.hasNext()) {
- ClassFileEntry entry = (ClassFileEntry) it.next();
+ for(int itFinal = 0; itFinal < finalSort.size(); itFinal++) {
+ ClassFileEntry entry = (ClassFileEntry) finalSort.get(itFinal);
indexCache.put(entry, new Integer(index));
if (entry instanceof CPLong || entry instanceof CPDouble) {
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/CodeAttribute.java Mon Jul 21 03:33:32 2008
@@ -19,7 +19,6 @@
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.apache.harmony.unpack200.Segment;
@@ -89,9 +88,8 @@
protected int getLength() {
int attributesSize = 0;
- Iterator it = attributes.iterator();
- while (it.hasNext()) {
- Attribute attribute = (Attribute) it.next();
+ for(int it = 0; it < attributes.size(); it++) {
+ Attribute attribute = (Attribute) attributes.get(it);
attributesSize += attribute.getLengthIncludingHeader();
}
return 2 + 2 + 4 + codeLength + 2 + exceptionTable.size()
@@ -99,13 +97,13 @@
}
protected ClassFileEntry[] getNestedClassFileEntries() {
- ArrayList nestedEntries = new ArrayList();
+ ArrayList nestedEntries = new ArrayList(attributes.size() + byteCodes.size() + 10);
nestedEntries.add(getAttributeName());
nestedEntries.addAll(byteCodes);
nestedEntries.addAll(attributes);
// Don't forget to add the ExceptionTable catch_types
- for (Iterator iter = exceptionTable.iterator(); iter.hasNext();) {
- ExceptionTableEntry entry = (ExceptionTableEntry) iter.next();
+ for(int iter = 0; iter < exceptionTable.size(); iter++) {
+ ExceptionTableEntry entry = (ExceptionTableEntry) exceptionTable.get(iter);
CPClass catchType = entry.getCatchType();
// If the catch type is null, this is a finally
// block. If it's not null, we need to add the
@@ -122,18 +120,18 @@
protected void resolve(ClassConstantPool pool) {
super.resolve(pool);
- Iterator it = attributes.iterator();
- while (it.hasNext()) {
- Attribute attribute = (Attribute) it.next();
+ for(int it = 0; it < attributes.size(); it++) {
+ Attribute attribute = (Attribute) attributes.get(it);
attribute.resolve(pool);
}
- it = byteCodes.iterator();
- while (it.hasNext()) {
- ByteCode byteCode = (ByteCode) it.next();
+
+ for(int it = 0; it < byteCodes.size(); it++) {
+ ByteCode byteCode = (ByteCode) byteCodes.get(it);
byteCode.resolve(pool);
}
- for (Iterator iter = exceptionTable.iterator(); iter.hasNext();) {
- ExceptionTableEntry entry = (ExceptionTableEntry) iter.next();
+
+ for(int it = 0; it < exceptionTable.size(); it++) {
+ ExceptionTableEntry entry = (ExceptionTableEntry) exceptionTable.get(it);
entry.resolve(pool);
}
}
@@ -145,23 +143,22 @@
protected void writeBody(DataOutputStream dos) throws IOException {
dos.writeShort(maxStack);
dos.writeShort(maxLocals);
+
dos.writeInt(codeLength);
- Iterator it = byteCodes.iterator();
- while (it.hasNext()) {
- ByteCode byteCode = (ByteCode) it.next();
+ for(int it = 0; it < byteCodes.size(); it++) {
+ ByteCode byteCode = (ByteCode) byteCodes.get(it);
byteCode.write(dos);
}
+
dos.writeShort(exceptionTable.size());
- Iterator exceptionTableEntries = exceptionTable.iterator();
- while (exceptionTableEntries.hasNext()) {
- ExceptionTableEntry entry = (ExceptionTableEntry) exceptionTableEntries
- .next();
+ for(int it = 0; it < exceptionTable.size(); it++) {
+ ExceptionTableEntry entry = (ExceptionTableEntry) exceptionTable.get(it);
entry.write(dos);
}
+
dos.writeShort(attributes.size());
- it = attributes.iterator();
- while (it.hasNext()) {
- Attribute attribute = (Attribute) it.next();
+ for(int it = 0; it < attributes.size(); it++) {
+ Attribute attribute = (Attribute) attributes.get(it);
attribute.write(dos);
}
}
@@ -190,8 +187,8 @@
}
public void renumber(List byteCodeOffsets) {
- for (Iterator iter = exceptionTable.iterator(); iter.hasNext();) {
- ExceptionTableEntry entry = (ExceptionTableEntry) iter.next();
+ for(int iter = 0; iter < exceptionTable.size(); iter++) {
+ ExceptionTableEntry entry = (ExceptionTableEntry) exceptionTable.get(iter);
entry.renumber(byteCodeOffsets);
}
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/InnerClassesAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/InnerClassesAttribute.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/InnerClassesAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/InnerClassesAttribute.java Mon Jul 21 03:33:32 2008
@@ -19,7 +19,6 @@
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
/**
@@ -138,9 +137,8 @@
protected void resolve(ClassConstantPool pool) {
super.resolve(pool);
- Iterator it = innerClasses.iterator();
- while (it.hasNext()) {
- InnerClassesEntry entry = (InnerClassesEntry) it.next();
+ for(int it = 0; it < innerClasses.size(); it++) {
+ InnerClassesEntry entry = (InnerClassesEntry) innerClasses.get(it);
entry.resolve(pool);
}
}
@@ -156,9 +154,9 @@
protected void writeBody(DataOutputStream dos) throws IOException {
dos.writeShort(innerClasses.size());
- Iterator it = innerClasses.iterator();
- while (it.hasNext()) {
- InnerClassesEntry entry = (InnerClassesEntry) it.next();
+
+ for(int it = 0; it < innerClasses.size(); it++) {
+ InnerClassesEntry entry = (InnerClassesEntry) innerClasses.get(it);
entry.write(dos);
}
}
Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java?rev=678386&r1=678385&r2=678386&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/unpack200/bytecode/NewAttribute.java Mon Jul 21 03:33:32 2008
@@ -48,8 +48,8 @@
*/
protected int getLength() {
int length = 0;
- for (Iterator iter = lengths.iterator(); iter.hasNext();) {
- length += ((Integer) iter.next()).intValue();
+ for(int iter = 0; iter < lengths.size(); iter++) {
+ length += ((Integer)lengths.get(iter)).intValue();
}
return length;
}
@@ -150,8 +150,8 @@
protected void resolve(ClassConstantPool pool) {
super.resolve(pool);
- for (Iterator iter = body.iterator(); iter.hasNext();) {
- Object element = iter.next();
+ for(int iter = 0; iter < body.size(); iter++) {
+ Object element = body.get(iter);
if (element instanceof ClassFileEntry) {
((ClassFileEntry) element).resolve(pool);
}