WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
94412
The current state of the call frame should be taken into account in the DFG for both predictions and proofs
https://bugs.webkit.org/show_bug.cgi?id=94412
Summary
The current state of the call frame should be taken into account in the DFG f...
Filip Pizlo
Reported
2012-08-17 22:22:01 PDT
As the CFA gets smarter, we're seeing situations where it "correctly" proves that the OSR entrypoint through which we're trying to enter cannot possibly execute. This occurs when you have code which, in its prologue, modifies some constant object and flips it to have a new structure: o = constant; o.f = thing; // create new field loop { // osr entrpoint things } o's structure at compile-time will be the structure after having created the new field. Likely, that structure will be terminal, and so watchpointable. Hence we will prove that o's future structure set contains only that structure. But that means that 'o.f = thing' cannot possibly succeed every again, which is absolutely true - it can't. Any future execution of that statement, so long as that statement is creating a new field and nothing more, will OSR exit immediately. But then we go and prove our own demise, as it were: we prove that the OSR entrypoint is unreachable, since the code that preceded it cannot execute. It's useful to leverage knowledge of what the future structure set of an object can be in the future. We use this to do good optimizations, like structure watchpointing. That necessarily implies leveraging the fact that an object's structure cannot time-travel into the past. But in cases where the entrypoint into the function occurs at a point that is proven unreachable by this strategy, we should, instead of disabling entry, force the analysis to be just conservative enough to allow that entry to happen.
Attachments
work in progress
(31.41 KB, patch)
2012-08-17 22:40 PDT
,
Filip Pizlo
no flags
Details
Formatted Diff
Diff
the patch
(34.74 KB, patch)
2012-08-18 12:19 PDT
,
Filip Pizlo
ggaren
: review+
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Filip Pizlo
Comment 1
2012-08-17 22:40:30 PDT
Created
attachment 159262
[details]
work in progress
Filip Pizlo
Comment 2
2012-08-18 12:19:15 PDT
Created
attachment 159263
[details]
the patch
Geoffrey Garen
Comment 3
2012-08-19 14:50:26 PDT
Comment on
attachment 159263
[details]
the patch R is me
Geoffrey Garen
Comment 4
2012-08-19 14:51:33 PDT
Comment on
attachment 159263
[details]
the patch R is me
Filip Pizlo
Comment 5
2012-08-19 15:03:05 PDT
Landed in
http://trac.webkit.org/changeset/125982
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