tree 272bcee4fe082a14884a5521f92d2f52bcce333e
parent 60b52c56bec9e156b55b558f6d8a7ef7c6ef4810
parent 818539d183af7878c7ab35781cd71b4334b2c180
author Seth Brenith (O'BRIEN) <sethb@microsoft.com> 1524581363 -0700
committer Seth Brenith (O'BRIEN) <sethb@microsoft.com> 1524581363 -0700

[MERGE #5032 @sethbrenith] Share type handler for strict-mode arguments object

Merge pull request #5032 from sethbrenith:user/sethb/strict-args

The Preact test in Speedometer is spending around 3% of its script time in LoadHeapArguments, which is currently slower for strict mode than sloppy mode because we don't share types. This change updates CreateHeapArguments to use a single shared type for all strict-mode `arguments` objects, which improves the following microbenchmark by about 34%. Overall Preact improvement is much more modest; I'd guess 0.3% based on trace data comparison.

```javascript
function arg() {
    "use strict";
    return Array.prototype.slice.call(arguments)[0];
}
const start = Date.now();
for (let i = 0; i < 1e6; ++i) {
    arg(i);
}
print(Date.now() - start);
```
