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.