On 2015/08/27 at 01:40:49, Dan Ehrenberg wrote:
Could we leave tracking nonlinear scopes in ScopeInfo for a future patch? This
one brings the world further towards correctness as-is. And I'm not sure how to
trigger a test case--everything I try just works.


https://codereview.chromium.org/1312613003/diff/60001/src/full-codegen/full-codegen.h
File src/full-codegen/full-codegen.h (right):


https://codereview.chromium.org/1312613003/diff/60001/src/full-codegen/full-codegen.h#newcode704
src/full-codegen/full-codegen.h:704: bool NeedsHoleCheck(VariableProxy*
proxy);
On 2015/08/26 at 11:36:58, Michael Starzinger wrote:
> nit: Please move the declaration away from the simple getters, anywhere else
than here is better, how about line 553 after EmitVariableLoad?


Done


https://codereview.chromium.org/1312613003/diff/60001/src/full-codegen/full-codegen.h#newcode704
src/full-codegen/full-codegen.h:704: bool NeedsHoleCheck(VariableProxy*
proxy);
On 2015/08/26 at 11:36:58, Michael Starzinger wrote:
> nit: Please move the declaration away from the simple getters, anywhere else
than here is better, how about line 553 after EmitVariableLoad?


Done

https://codereview.chromium.org/1312613003/diff/60001/src/scopes.h
File src/scopes.h (right):

https://codereview.chromium.org/1312613003/diff/60001/src/scopes.h#newcode232
src/scopes.h:232: void SetNonlinear() { scope_nonlinear_ = true; }
On 2015/08/26 at 12:07:58, rossberg wrote:
> On 2015/08/26 11:30:30, Michael Starzinger wrote:
> > Isn't it necessary to serialize this flag into the ScopeInfo? Adding
Andreas
> > whose scoping foo is clearly superior to mine.
>
> Indeed, AFAICS this flag needs to be de/serialized in scopeinfos, otherwise
lazily compiled local functions inside switch blocks will still miss hole
checks. A test for that case would be good, too.

Well, that issue won't hit fullcodegen, as hole checks are only eliminated
within a particular block scope. Would it hurt any other compiler? I can't
figure out how to trigger it in TF.

It looks to me like Turbofan always does the hole checks on
VariableLocation::CONTEXT let variables (which should handle closure and eval
cases, right?) and Crankshaft doesn't do hole check elimination at all. I
mentioned above that fullcodegen is not a problem.

https://codereview.chromium.org/1312613003/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to