-
-
Notifications
You must be signed in to change notification settings - Fork 925
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
Can't reference the proc itself in a proc #3173
Labels
Milestone
Comments
dirk
added a commit
to dirk/jruby
that referenced
this issue
Jul 25, 2015
For jruby#3173 and to check against future regression. Was broken in 9.0.0.0 but seems to be fixed in 9.0.1.0.
Seems fixed with 8f80816 |
This is not yet quite fixed. |
subbuss
added a commit
that referenced
this issue
Jul 28, 2015
DCE used to do additional tests to decide if an instruction can be deleted based on the scope's state. This is a no-no. DCE should not do any additional tests about deletability based on scope state (which was in reality liveness tests) -- it should simply use whatever info is produced by LVA. Those tests should have been part of LVA instead. This really didn't affect correctness of DCE, but it would be providing incorrect information about vars still live when the scope was exited. Specifically, AddLocalVarLoadStoreInstructions pass uses that LVA information to determine whether to add lvar stores on exit. Without accurate LVA information, this can inadvertently prevent lvar updates from being seen outside the scope. This is part 1 of the fix for #3173.
subbuss
added a commit
that referenced
this issue
Jul 28, 2015
The following fixes were made: 1. Same kind of fix as in d59eeec but applied to this pass. The actual addition of binding stores shouldn't do additional analysis not already present in the dataflow analysis. It should simply use information from that analysis and add stores, where required. 2. A specific outcome of 1. above is: the addition should not look at scope type while adding stores on exit. If the analysis says: "add a store", add a store. No need to do it for closures only. 3. There was a subtle bug in the code. For exit BBs, we were intersecting lvars that were dirtied with lvars that were live at that point. However, we were looking for 'varsLiveOnExit' which was erroneous. LVA is a backwards propagation problem and we should be looking at 'varsLiveOnEntry' (since the exit of the scope corresponds to the dataflow entry for LVA). Between these fixes and the fix in 8c48c3bc, #3173 should be solved.
Now fixed. |
@subbuss: Thanks for including detailed commit messages on those two commits; feel like I learned a lot from reading those and the diff. 😄 |
@dirk I tend to write verbose commit messages :-) glad they were helpful. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In a proc defined in a method, you can't reference the proc itself of local variable.
The text was updated successfully, but these errors were encountered: