WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
108580
DFG::CFGSimplificationPhase::keepOperandAlive() conflates liveness and availability
https://bugs.webkit.org/show_bug.cgi?id=108580
Summary
DFG::CFGSimplificationPhase::keepOperandAlive() conflates liveness and availa...
Filip Pizlo
Reported
2013-01-31 22:01:37 PST
This is a harmless bug in that it only results in us keeping a bit too many things for OSR. But it's worth fixing so that the code is consistent. keepOperandAlive() is called when block A has a branch to blocks B and C, but the A->B edge is proven to never be taken and we want to optimize the code to have A unconditionally jump to C. In that case, for the purposes of OSR, we need to preserve the knowledge that the state that B expected to be live incoming from A ought still to be live up to the point of where the A->B,C branch used to be. The way we keep things alive is by using the variablesAtTail of A (i.e., we use the knowledge of in what manner A made state available to B and C). The way we choose which state should be kept alive ought to be chosen by the variablesAtHead of B (i.e. the things B says it needs from its predecessors, including A), except that keepOperandAlive() was previously just using variablesAtTail of A for this purpose.
Attachments
the patch
(5.48 KB, patch)
2013-01-31 22:04 PST
,
Filip Pizlo
oliver
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2013-01-31 22:04:35 PST
Created
attachment 185943
[details]
the patch
Filip Pizlo
Comment 2
2013-01-31 23:43:28 PST
Landed in
http://trac.webkit.org/changeset/141544
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug