| Issue 43: | Dead variable treatment problems | |
| Back to list |
- Looses facts for objects which are still target of an implication This problem means that implications of dead objects sometimes become useless when they are removed too early. - Needs an instruction to collect Dead variables are collected before each instruction; this leads to missed collection opportunities before join points and method returns. Test cases in GCTest file.
Sep 25, 2008
Project Member
#1
kevin.bi...@gmail.com
Sep 26, 2008
r70 fixes these problems, although possibly with more overhead than necessary. In particular, need not consider variables kept alive by implications when looking for implications to apply.
Sep 26, 2008
Turns out it's possible that a variable is dead on one edge out of a node, but not another, but we're currently (conservatively) not taking that into account, leading to problems at later merge points. This can be improved by garbage-collecting on the incoming lattice elements during joins, or by getting edge-sensitive liveness information. The problem with the former is that liveness information is not currently available during joins. The problem with the latter is that we can only approximate the ideal by getting labeled results, which in the case of liveness would only include true, false, and normal labels (because we're looking at the incoming information to nodes, and Crystal only tracks those three labels for incoming results).
Sep 29, 2008
r83 uses branch-sensitive liveness information, which will hopefully be good enough to address comment 3 (test case in r84). Extended Crystal (revision 93) to provide branch-sensitive results for TAC instructions.
Status:
Fixed
Sep 29, 2008
Noticed that DynamicStateLogic.join drops all implications if the incoming implication lists for a location are not the same; could just drop the ones missing in one of the incoming lists. Also could think about trying to apply the implications which are about to be dropped. Will file separate issue for this.
Sep 29, 2008
Filed issue 45 about join issues mentioned in last comment |