v8/test/test262
Sathya Gunasekaran 743ce7726d [WeakRefs] Make cleanup callback run as a task
Previously, this was run as a microtask and this CL changes it to run
as a separate task as mandated by the current WeakRef spec.

This CL also introduces a FinalizationGroup type to the V8 API
representing the JSFinalizationGroup. This has a `Cleanup`
function that runs the cleanup callback associated with it.

SetHostCleanupFinalizationGroupCallback is added to set
the embedder defined HostCleanupFinalizationGroupCallback.

ClearKeptObject is exposed on the v8::Isolate to reset the strongly
held set of objects.

The general workflow is the following:

(a) When the GC notices that a given finalization group has dirty
    cells, it calls HostCleanupFinalizationGroupCallback with the given
    finalization group.

(b) As part of HostCleanupFinalizationGroupCallback, the embedder
    enqueues a task that at some point later calls
    FinalizationGroup::Cleanup.

(c) At some point in the future, FinalizationGroup::Cleanup is called,
    which runs the cleanup callback of the finalization group.

This patch also includes d8 changes to use these new APIs. Currently,
d8 cycles through the enqueued finalization groups after a synchronous
turn (and it's microtask checkpoint) and runs the cleanup callbacks.

Change-Id: I06eb4da2c103b2792a9c62bc4b98fd4e5c4892fc
Bug: v8:8179
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1655655
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62984}
2019-07-30 12:19:39 +00:00
..
local-tests/test [test] remove duplicated test262 tests 2019-02-05 06:41:17 +00:00
BUILD.gn [tools] Add FAIL_PHASE_ONLY status file modifier for test262 tests 2018-11-22 12:43:05 +00:00
detachArrayBuffer.js [typedarrays] Use Detach instead of Neuter 2018-12-11 11:57:30 +00:00
harness-adapt-donotevaluate.js [tools] Add FAIL_PHASE_ONLY status file modifier for test262 tests 2018-11-22 12:43:05 +00:00
harness-adapt.js [test262] Expose gc() to test262 harness 2019-07-23 14:09:05 +00:00
harness-agent.js [d8] Update new Worker API to match the Web API 2018-09-20 00:10:28 +00:00
OWNERS Add OWNERS files for src and test 2019-05-30 04:51:21 +00:00
prune-local-tests.sh test262 roll 2017-02-10 19:05:55 +00:00
README Make test262 README file revision independent. 2015-11-04 10:52:44 +00:00
test262.status [WeakRefs] Make cleanup callback run as a task 2019-07-30 12:19:39 +00:00
testcfg.py [test262] Expose gc() to test262 harness 2019-07-23 14:09:05 +00:00
upstream-local-tests.sh test262 roll 2017-03-13 14:33:07 +00:00

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.