harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sian January (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-5611) [classlib][pack200] IcTuple parsing broken: IcTuple.C can equal IcTuple.C2?
Date Tue, 18 Mar 2008 09:53:24 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-5611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12579785#action_12579785
] 

Sian January commented on HARMONY-5611:
---------------------------------------

If I put a breakpoint on line 94 of IcBands (getIcTuples) and inspect icAll it looks like
this for the first entry:

- C is com/ibm/micro/eventlog/LogDestination$1
- C2 is com/ibm/micro/eventlog/LogDestination
- N is null (which is allowed - presumably this means it's anonymous)
- F is 65544

The calculation for F hasn't changed, but these values look ok to me anyway...  Are they being
changed somehow later on?

> [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
>            Assignee: Sian January
>             Fix For: 5.0M6
>
>
> 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];
>                 index++;
>             }
>         }
>     }

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


Mime
View raw message