On 2015/08/06 14:43:53, rossberg wrote:
I also tried digging into it, but without much success. Something must be
pointing into the wild, but I couldn't find out what.
Some cases fail with an invalid access. I'd try to breakpoint on those in
the
debugger and try to figure out what there pointing at and where it is
coming
from. Maybe that gives a hint.
The "some cases" clause raises a flag for me, because I wasn't able to find
any
cases involving [[Call]]-ing an arrow function with rest parameters which
didn't
result in an access violation. Reading all registers makes it look like rbx
is
null and being dereferenced somehow, but it could be from dereferencing the
[
rax + 0xf ] operand, wherever that is coming from. I was hoping someone more
accustomed to the various parts of the baseline x64 codegen might have an
idea
what it's likely these are.
The next thing you could try is not invoking DeclareParameter on the rest
param
at all, and just desugar using a temporary instead. In fact, it should be
possible to make it such that all traces of a rest parameter effectively
disappear after desugaring. (The only thing you probably need to remember
is
whether the parameter list was simple, for allocating the right arguments
object
later.)
You could also try to temporarily replace the desugaring with a nop. If
that
doesn't make the problem go away then maybe something is f-ed up with
variable/temporary allocation?
Could be, I'll spend some more time on that this week
Maybe there also is some weird problem with doing the desugaring after
processing the body. Could be worth a shot trying to undo that (with the
TC39
resolution it doesn't seem necessary anymore anyway).
I'll revert-ish the change from July (thus desugar before the body is
parsed),
but I won't add any early errors when the language mode directive is found.
I
don't think people are going to appreciate that change very much :( It
definitely does make the language weird, at least until people are reliably
able
to use modules.
https://codereview.chromium.org/1272673003/
--
--
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.