The module implementation uses the wrong values for ACC_TRANSITIVE and ACC_STATIC_PHASE

Remi Forax forax at
Wed Feb 1 11:58:01 UTC 2017

If the spec is updated, i really want to get ride of ACC_STATIC_PHASE and uses ACC_STATIC instead.
Renaming public to transitive was the right move but I think we go a little over the top with static.

In the module-info, the Java syntax already uses static, i do not see a lot of value to use a different flag.

As a example, we did not introduce a new flag for static methods in an interface even if they do not have the same behavior as static methods in a class.


On February 1, 2017 9:22:28 AM GMT+01:00, Alan Bateman <Alan.Bateman at> wrote:
>On 30/01/2017 22:15, Remi Forax wrote:
>> Hi all,
>> chasing a bug on ASM, i've found that the module implementation in
>the JDK uses the wrong values for ACC_TRANSITIVE and ACC_STATIC_PHASE,
>> in the spec [1],
>>    0x0020 (ACC_TRANSITIVE)
>>    0x0040 (ACC_STATIC_PHASE)
>> but in the implementation [2],
>>    public static final int ACC_TRANSITIVE    = 0x0010;
>>    public static final int ACC_STATIC_PHASE  = 0x0020;
>Sigh, we do have a mismatch, I think a consequence of the churn last 
>year on the design proposals. Note that javac and the run time are in 
>sync so this doesn't impact anyone except when they start using the 
>updated ASM to read/write module-info.class. I would like to get the 
>spec updates that we are accumulating in jake into JDK 9 before JDK 9 
>his ZBB and and right time to sort out the requires_flags too.

Sent from my Android device with K-9 Mail. Please excuse my brevity.

More information about the jigsaw-dev mailing list