6c585ef0e8
When storing an indexed property in a typed array, it's necessary to convert the value to a Number (or to a Bigint) before performing the bounds check, per https://tc39.github.io/ecma262/#sec-integerindexedelementset. This CL adds appropriate type conversions in Object::SetPropertyInternal (which technically is reached after the bounds check has already occurred, but this isn't observable yet --- In the future, once OOB accesses on TypedArrays actually throw, this will need to be refactored again), and in StoreFastElementStub, and ElementsTransitionAndStoreStub (via CSA::EmitElementStore). The change was not necessary in TurboFan, as JSNativeContextSpecialization already performs the value conversion before the boundscheck. The result is some fixed test262 tests, and some new test coverage for this behaviour in mjsunit. BUG=v8:7896, v8:5327 R=neis@chromium.org, jkummerow@chromium.org, gsathya@chromium.org Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Ibe6bec24c72ef6a4fd3e77d5bcafa03737f4c5e3 Reviewed-on: https://chromium-review.googlesource.com/1117372 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#54096} |
||
---|---|---|
.. | ||
local-tests/test | ||
BUILD.gn | ||
detachArrayBuffer.js | ||
harness-adapt.js | ||
harness-agent.js | ||
prune-local-tests.sh | ||
README | ||
test262.status | ||
testcfg.py | ||
upstream-local-tests.sh |
This directory contains code for binding the test262 test suite into the v8 test harness. The tests are checked out as a dependency from https://chromium.googlesource.com/external/github.com/tc39/test262 at a revision specified in the DEPS file as 'data' in this directory. They are fetched with 'gclient sync'. To update to a newer version, please change the DEPS file. Using a newer version, e.g. 'deadbeef' may be possible but the tests are only known to pass (and indeed run) with the DEPS revision. Example: cd data git fetch git checkout deadbeef If you do update to a newer revision you may have to change the test harness adapter code since it uses internal functionality from the harness that comes bundled with the tests. You will most likely also have to update the test expectation file.