Fix illegal inlining of instructions accessing protected members#4529
Merged
retronym merged 1 commit intoscala:2.11.xfrom Jun 18, 2015
Merged
Fix illegal inlining of instructions accessing protected members#4529retronym merged 1 commit intoscala:2.11.xfrom
retronym merged 1 commit intoscala:2.11.xfrom
Conversation
Member
Author
|
review by @retronym |
94d88d8 to
381f424
Compare
Member
Author
|
This should put the https://scala-webapps.epfl.ch/jenkins/view/All/job/scala-nightly-genbcode-2.11.x test back to green, except for |
Member
|
Yes, please force that one for now. |
There were two issues in the new inliner that would cause a VerifyError and an IllegalAccessError. First, an access to a public member of package protected class C can only be inlined if the destination class can access C. This is tested by t7582b. Second, an access to a protected member requires the receiver object to be a subtype of the class where the instruction is located. So when inlining such an access, we need to know the type of the receiver object - which we don't have. Therefore we don't inline in this case for now. This can be fixed once we have a type propagation analyis. https://github.com/scala-opt/scala/issues/13. This case is tested by t2106. Force kmpSliceSearch test to delambdafy:inline See discussion on scala#4505. The issue will go away when moving to indy-lambda.
fcb26a5 to
7db3a58
Compare
Member
Author
|
OK, done, should pass the tests now. |
Member
Author
|
I'd like to get this into 2.11.7, so ping @retronym |
Member
|
LGTM |
retronym
added a commit
that referenced
this pull request
Jun 18, 2015
Fix illegal inlining of instructions accessing protected members
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There were two issues in the new inliner that would cause a
VerifyError and an IllegalAccessError.
First, an access to a public member of package protected class C can
only be inlined if the destination class can access C. This is tested
by t7582b.
Second, an access to a protected member requires the receiver object
to be a subtype of the class where the instruction is located. So
when inlining such an access, we need to know the type of the receiver
object - which we don't have. Therefore we don't inline in this case
for now. This can be fixed once we have a type propagation analyis.
https://github.com/scala-opt/scala/issues/13.
This case is tested by t2106.