[Webkit-unassigned] [Bug 149965] REGRESSION: ASSERT (impl->isAtomic()) @ facebook.com
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sat Oct 10 22:41:09 PDT 2015
https://bugs.webkit.org/show_bug.cgi?id=149965
Yusuke Suzuki <utatane.tea at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|webkit-unassigned at lists.web |utatane.tea at gmail.com
|kit.org |
--- Comment #3 from Yusuke Suzuki <utatane.tea at gmail.com> ---
(In reply to comment #2)
> (In reply to comment #1)
> > I debugged this a little.
> >
> > In the crashing case, the AbstractInterpreter executes CheckIdent and *does
> > not* find a constant. Then, the DFGConstantFoldingPhase executes CheckIdent
> > and *does* find a constant. The DFGConstantFoldingPhase constant is string
> > equal to the uid expected by CheckIdent, but it is a plain string and not an
> > atomic string.
>
> It's more subtle than that.
>
> The constant folding phase code is assuming that it is running after
> m_interpreter.execute(). It's saying things like, "oh hey this has to be an
> atomic string because we already did StringIdentUse filtering". It's true
> that if you had run edge filtering first, then StringIdentUse would have
> filtered an abstract value containing a plain string to the empty abstract
> value (representing the fact that we would have always exited). And that's
> exactly what happens inside AbstractInterpreter - the executeEffects()
> method that has the CheckIdent case runs after edge filtering, so the
> AbstractInterpreter sees an empty AbstractValue because the StringIdentUse
> filtered the non-ident string to the empty value.
>
> The solution is to fix the constant folder to no longer assume that edge
> filtering already ran. If it sees a constant value, it should verify that
> the constant value is valid (i.e. would have passed edge filtering, i.e.
> would have been an atomic string).
>
> Probably just replacing:
>
> ASSERT(impl->isAtomic());
>
> with:
>
> if (!impl->isAtomic())
> break;
>
> would go a long way.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20151011/a7c429b6/attachment.html>
More information about the webkit-unassigned
mailing list