Index: src/main/java/org/apache/harmony/unpack200/ClassBands.java =================================================================== --- . (revision 662729) +++ . (working copy) @@ -848,11 +848,11 @@ CPUTF8 element = localVariableTableTypeRS[x][y]; // TODO: come up with a better test for native vs nonnative // signatures? - if (element.underlyingString().length() > 2) { - element.setDomain(ClassConstantPool.DOMAIN_SIGNATUREASCIIZ); - } else { +// if (element.underlyingString().length() > 2) { +// element.setDomain(ClassConstantPool.DOMAIN_SIGNATUREASCIIZ); +// } else { element.setDomain(ClassConstantPool.DOMAIN_NORMALASCIIZ); - } +// } } } Index: src/main/java/org/apache/harmony/unpack200/CpBands.java =================================================================== --- . (revision 662729) +++ . (working copy) @@ -357,11 +357,11 @@ } cpSignature[i] = signature.toString(); } - for (int i = 0; i < cpSignatureInts.length; i++) { - if(cpSignatureInts[i] == -1) { - cpSignatureInts[i] = search(cpUTF8, cpSignature[i]); - } - } +// for (int i = 0; i < cpSignatureInts.length; i++) { +// if(cpSignatureInts[i] == -1) { +// cpSignatureInts[i] = search(cpUTF8, cpSignature[i]); +// } +// } } /** @@ -517,6 +520,8 @@ if (cputf8 == null) { cputf8 = new CPUTF8(string, domain, index); stringsToCPUTF8[domain].put(string, cputf8); + } else if(cputf8.getGlobalIndex() > index) { + cputf8.setGlobalIndex(index); } return cputf8; } @@ -666,13 +674,13 @@ int domain = ClassConstantPool.DOMAIN_NAMEANDTYPE; CPUTF8 name = cpUTF8Value(nameIndex, ClassConstantPool.DOMAIN_NORMALASCIIZ); - if (nativeDescriptor) { - // Native signatures are stored in DOMAIN_NORMALASCIIZ, not - // DOMAIN_SIGNATUREASCIIZ for some reason. +// if (nativeDescriptor) { +// // Native signatures are stored in DOMAIN_NORMALASCIIZ, not +// // DOMAIN_SIGNATUREASCIIZ for some reason. descriptorDomain = ClassConstantPool.DOMAIN_NORMALASCIIZ; - } else { - descriptorDomain = ClassConstantPool.DOMAIN_SIGNATUREASCIIZ; - } +// } else { +// descriptorDomain = ClassConstantPool.DOMAIN_SIGNATUREASCIIZ; +// } CPUTF8 descriptorU = cpSignatureValue(descriptorIndex, descriptorDomain); cpNameAndType = new CPNameAndType(name, descriptorU, domain, index + descrOffset); descriptorsToCPNameAndTypes.put(descriptor, cpNameAndType); @@ -699,7 +707,7 @@ } public CPUTF8 cpSignatureValue(int index) { - return cpSignatureValue(index, ClassConstantPool.DOMAIN_SIGNATUREASCIIZ); + return cpSignatureValue(index, ClassConstantPool.DOMAIN_NORMALASCIIZ); } public CPUTF8 cpSignatureValue(int index, int domain) { @@ -750,13 +761,13 @@ int domain = ClassConstantPool.DOMAIN_NAMEANDTYPE; CPUTF8 name = cpUTF8Value(nameString, ClassConstantPool.DOMAIN_NORMALASCIIZ, true); - if (nativeDescriptor) { - // Native signatures are stored in DOMAIN_NORMALASCIIZ, not - // DOMAIN_SIGNATUREASCIIZ for some reason. +// if (nativeDescriptor) { +// // Native signatures are stored in DOMAIN_NORMALASCIIZ, not +// // DOMAIN_SIGNATUREASCIIZ for some reason. descriptorDomain = ClassConstantPool.DOMAIN_NORMALASCIIZ; - } else { - descriptorDomain = ClassConstantPool.DOMAIN_SIGNATUREASCIIZ; - } +// } else { +// descriptorDomain = ClassConstantPool.DOMAIN_SIGNATUREASCIIZ; +// } CPUTF8 descriptorU = cpUTF8Value(descriptorString, descriptorDomain, true); cpNameAndType = new CPNameAndType(name, descriptorU, domain, index + descrOffset); descriptorsToCPNameAndTypes.put(descriptor, cpNameAndType); Index: src/main/java/org/apache/harmony/unpack200/Segment.java =================================================================== --- . (revision 673315) +++ . (working copy) @@ -200,7 +200,7 @@ CPUTF8 name = cpBands.cpUTF8Value(nameIndex, ClassConstantPool.DOMAIN_NORMALASCIIZ); CPUTF8 descriptor = cpBands.cpSignatureValue(typeIndex, - ClassConstantPool.DOMAIN_SIGNATUREASCIIZ); + ClassConstantPool.DOMAIN_NORMALASCIIZ); cfFields[i] = cp.add(new CPField(name, descriptor, classBands .getFieldFlags()[classNum][i], classBands .getFieldAttributes()[classNum][i])); @@ -217,7 +217,7 @@ CPUTF8 name = cpBands.cpUTF8Value(nameIndex, ClassConstantPool.DOMAIN_NORMALASCIIZ); CPUTF8 descriptor = cpBands.cpSignatureValue(typeIndex, - ClassConstantPool.DOMAIN_SIGNATUREASCIIZ); + ClassConstantPool.DOMAIN_NORMALASCIIZ); cfMethods[i] = cp.add(new CPMethod(name, descriptor, classBands .getMethodFlags()[classNum][i], classBands .getMethodAttributes()[classNum][i])); Index: src/main/java/org/apache/harmony/unpack200/bytecode/CPUTF8.java =================================================================== --- . (revision 671920) +++ . (working copy) @@ -18,7 +18,6 @@ import java.io.DataOutputStream; import java.io.IOException; -import java.io.UnsupportedEncodingException; /** * UTF8 constant pool entry, used for storing long Strings. @@ -78,4 +77,8 @@ public String underlyingString() { return utf8; } + + public void setGlobalIndex(int index) { + globalIndex = index; + } } \ No newline at end of file Index: src/main/java/org/apache/harmony/unpack200/bytecode/ConstantPoolEntry.java =================================================================== --- . (revision 652453) +++ . (working copy) @@ -57,7 +57,7 @@ protected int domain = ClassConstantPool.DOMAIN_UNDEFINED; - protected final int globalIndex; + protected int globalIndex; ConstantPoolEntry(byte tag, int globalIndex) { this.tag = tag;