Currently DFG OSR exit computes a value recovery, and generates recovery code, for every variable within the DFG code block's Graph::m_localVars, which ends up being the high watermark of the stack for all inlinees. This means that for example in this code: function foo(a, b) { return a + b; } function bar(a, b, c) { var x = foo(a, b); return x + c.f; } If we OSR exit at c.f, then the exit will include code to restore local variables within foo(), which is clearly redundant since foo() is out of scope at that point. Patch forthcoming.
Created attachment 134007 [details] the patch
Attachment 134007 [details] was posted by a committer and has review+, assigning to Filip Pizlo for commit.
Landed in http://trac.webkit.org/changeset/112320