Bug 164531
Summary: | Spread(ArrayUse:@child) should participate in CSE | ||
---|---|---|---|
Product: | WebKit | Reporter: | Saam Barati <saam> |
Component: | JavaScriptCore | Assignee: | Saam Barati <saam> |
Status: | NEW | ||
Severity: | Normal | CC: | benjamin, ddkilzer, fpizlo, ggaren, gskachkov, jfbastien, keith_miller, mark.lam, msaboff, oliver, ticaiolima, ysuzuki |
Priority: | P2 | ||
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Bug Depends on: | 164258 | ||
Bug Blocks: |
Saam Barati
After I land https://bugs.webkit.org/show_bug.cgi?id=164258, we will emit Spread(ArrayUse:@child) only when we know that the iterator protocol is proven to be non-observable.
This means we can CSE two Spread(ArrayUse:@child) together when we've proven that nobody changes @child in between the two Spreads.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Saam Barati
It's important to also note that Spread will allocate a JSFixedArray, but JSFixedArray is a VM internal cell, it's not observable to user code. Therefore, it's ok to simply drop the second allocation and use the first one.
David Kilzer (:ddkilzer)
Since the comment mentioning this bug was removed in r227229, can this be changed to RESOLVED/WONTFIX?
Saam Barati
(In reply to David Kilzer (:ddkilzer) from comment #2)
> Since the comment mentioning this bug was removed in r227229, can this be
> changed to RESOLVED/WONTFIX?
I think it's worth keeping this. We could theoretically do this if we speculated in some particular way. Or if we proved the input to Spread doesn't have a symbol iterator.