[webkit-reviews] review denied: [Bug 229543] [JSC] ASSERT failed in stress/for-in-tests.js (32bit) : [Attachment 438037] v5
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Sep 13 10:38:59 PDT 2021
Yusuke Suzuki <ysuzuki at apple.com> has denied review:
Bug 229543: [JSC] ASSERT failed in stress/for-in-tests.js (32bit)
https://bugs.webkit.org/show_bug.cgi?id=229543
Attachment 438037: v5
https://bugs.webkit.org/attachment.cgi?id=438037&action=review
--- Comment #14 from Yusuke Suzuki <ysuzuki at apple.com> ---
Comment on attachment 438037
--> https://bugs.webkit.org/attachment.cgi?id=438037
v5
View in context: https://bugs.webkit.org/attachment.cgi?id=438037&action=review
Ah, I found a bug.
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4486
> + SpeculateCellOperand baseOperand(this, m_graph.varArgChild(node, 0),
ManualOperandSpeculation);
If you want to use SpeculateCellOperand, then you need to use CellUse /
KnownCellUse for base edge. But we do not have that edge, and no speculate().
You need to attach CellUse / KnownCellUse in fixup phase in 32bit. (And you
also need to check the other EnumeratorGetByVal use to ensure that edge UseKind
is handled.
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4488
> + JSValueOperand property(this, m_graph.varArgChild(node, 1),
ManualOperandSpeculation);
This ManualOperandSpeculation is wrong: if you use ManualOperandSpeculation,
then you need to call `speculate(...)`.
> Source/JavaScriptCore/runtime/CommonSlowPaths.h:131
> + // If propertyName is not a cell then we are in index+named
mode, so do what RecoverNameAndGetVal does.
> + JSString* string = enumerator->propertyNameAtIndex(index);
> + auto propertyName = string->toIdentifier(globalObject);
> + RETURN_IF_EXCEPTION(scope, { });
> + RELEASE_AND_RETURN(scope, baseValue.get(globalObject,
propertyName));
Why do we need this new code? Can you add a test which stress this code path?
More information about the webkit-reviews
mailing list