harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Cornwall (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5611) [classlib][pack200] IcTuple parsing broken: IcTuple.C can equal IcTuple.C2?
Date Fri, 14 Mar 2008 20:36:24 GMT
[classlib][pack200] IcTuple parsing broken: IcTuple.C can equal IcTuple.C2?

                 Key: HARMONY-5611
                 URL: https://issues.apache.org/jira/browse/HARMONY-5611
             Project: Harmony
          Issue Type: Bug
          Components: Classlib
         Environment: Pack200 head
            Reporter: Andrew Cornwall

I've run into a case where IcTuple.C is equal to IcTuple.C2. In my case, I have an IcTuple.C
of "com/ibm/micro/eventlog/LogDestination$1" and IcTuple.C2 of "com/ibm/micro/eventlog/LogDestination$1".
This causes a failure later on, because the algorithm used to determine what class the inner
class belongs to fails.

I've sent a (confidential) test case to Sian. This problem can be exposed by modifying the
end of IcBands.unpack() as follows:

        // Construct IC tuples
        icAll = new IcTuple[icThisClass.length];
        int index = 0;
        for (int i = 0; i < icThisClass.length; i++) {
            icAll[i] = new IcTuple();
            icAll[i].C = icThisClass[i];
            // TODO: remove debug code
            if(icAll[i].C.matches(".*LogDestination.*")) {
                System.out.println("self halt");
            icAll[i].F = icFlags[i];
            if((icFlags[i] & 1<<16) != 0) {
                if(icOuterClass[index].equals(icAll[i].C)) {
                    throw new Error("Inner class equals outer class");
                icAll[i].C2 = icOuterClass[index];
                icAll[i].N = icName[index];

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message