[Webkit-unassigned] [Bug 186724] New: [DFG] DFG fixup checkArray typically considers only one Structure
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sat Jun 16 11:26:34 PDT 2018
https://bugs.webkit.org/show_bug.cgi?id=186724
Bug ID: 186724
Summary: [DFG] DFG fixup checkArray typically considers only
one Structure
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: JavaScriptCore
Assignee: webkit-unassigned at lists.webkit.org
Reporter: utatane.tea at gmail.com
The simple example is below.
function test()
{
var array = [0, 1, 2, 3];
for (var i = 0; i < 4; ++i) {
array[0] = array[0] + 1;
}
return array;
}
noInline(test);
for (var i = 0; i < 1e6; ++i)
test();
Our ArrayProfile takes only one array. So typically, `array[0]` op_put_by_val says "Yeah, the array seems ArrayWithInt32".
But actually, this should see both `CopyOnWriteArrayWithInt32` and `ArrayWithInt32`.
The above example first emit CheckStructure for ArrayWithInt32. Then it fails repeatedly, and the op_put_by_val emits
PutByVal(Check:Untyped:@26, Check:Untyped:@29, Check:Untyped:Kill:@47, MustGen|VarArgs, Generic+OriginalNonArray+OutOfBounds+AsIs+Write, R:World, W:Heap, Exits, ClobbersExit, bc#37, ExitValid)
It is bad. Ideally, we should emit ArrayifyToStructure for ArrayWithInt32 first.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180616/6a5d1073/attachment.html>
More information about the webkit-unassigned
mailing list