Bug 160755 - DFG's flushForTerminal() needs to add PhantomLocals for bytecode live locals.
Summary: DFG's flushForTerminal() needs to add PhantomLocals for bytecode live locals.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Mark Lam
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2016-08-10 15:12 PDT by Mark Lam
Modified: 2016-08-10 16:22 PDT (History)
7 users (show)

See Also:


Attachments
proposed patch. (6.09 KB, patch)
2016-08-10 15:22 PDT, Mark Lam
fpizlo: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Lam 2016-08-10 15:12:02 PDT
If the DFG sees that an inlined function will result in an OSR exit every time, it will treat all downstream blocks as dead.  However, it still needs to keep locals that are alive in the bytecode alive for the compiled function so that those locals are properly written to the stack by the OSR exit ramp.  The existing code neglected to do this.  Will fix.
Comment 1 Mark Lam 2016-08-10 15:12:57 PDT
<rdar://problem/27488507>
Comment 2 Mark Lam 2016-08-10 15:22:09 PDT
Created attachment 285770 [details]
proposed patch.
Comment 3 Filip Pizlo 2016-08-10 15:24:10 PDT
Comment on attachment 285770 [details]
proposed patch.

Nice.
Comment 4 Mark Lam 2016-08-10 16:22:09 PDT
Thanks for the review.  Landed in r204360: <http://trac.webkit.org/r204360>.