-
Notifications
You must be signed in to change notification settings - Fork 722
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Check the InnerClass attribute of the enclosing class #13199
Check the InnerClass attribute of the enclosing class #13199
Conversation
f734795
to
9a9c2fe
Compare
Adding new fields to ROMClass is the only way to make this work? Can you pls describe what other solutions were tried that didn't add new fields, and why they didn't work. If we do go with this, it's going to break shared cache compatibility so the shared cache generation number needs to be updated as part of this change. |
The fundamental reason for these options is that it is difficult to correctly identify these remaining inner class entries in building ROMClass in any case (e.g. after the class transformation) So the only safe way to avoid changing the existing code to handle these tricky situations is adding the remaining entries separately to a new field in ROMClass, in which case it won't affect any existing implementation even though there is any update related to the inner class entries in the future.
I just updated the number at |
47b46a0
to
534655b
Compare
If the cache generation is updated, it needs to be documented in release notes. |
@ChengJin01 with this change, are we still removing parts of the InnerClass attribute when writing the romClass? My reading of the code is we've just spread them into a different format - innerClasses & enclosedInnerClasses. Is that correct? An easy check on this would be if the |
Hi @DanHeidinga,
Yes. There is no big difference in dealing with
Correct. We avoid changing the existing implementation on declared classes by splitting
Strictly speaking, all the remaining entries (except the entries that the current class itself is the inner class which are already excluded in the existing code) of the |
I am going on vacation for a week, so I will not get to this (especially as the approach is still under active discussion). |
Hi @DanHeidinga and @pshipton, any other concern on this PR? |
534655b
to
05bf39b
Compare
jenkins test sanity win jdk8 |
@DanHeidinga @gacholio @tajila any concerns before this is merged? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minor formatting complaints.
The change is to check to see whether an valid entry for the specified class exists in the InnerClass attribute of its enclosing class given the InnerClass attribute of both the inner class and its enclosing class must remain consistent with each other. Fixes: eclipse-openj9#12992 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
05bf39b
to
12257af
Compare
jenkins test sanity win jdk8 |
I see the cache generation is incremented by this PR. Just a reminder that this should be documented in the release notes. (Doc change last time on this was eclipse-openj9/openj9-docs#347) |
See: #eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
See: eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
See: eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
See: eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
See: eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
See: eclipse-openj9/openj9/pull/13199 Signed-off-by: Cheng Jin <jincheng@ca.ibm.com>
The change is to check to see whether an valid entry for
the specified class exists in the InnerClass attribute
of its enclosing class given the InnerClass attribute
of both the inner class and its enclosing class must
remain consistent with each other.
Fixes: #12992
Signed-off-by: Cheng Jin jincheng@ca.ibm.com