v8/test
Jaroslav Sevcik e71b802279 [deoptimizer] Staged materialization of objects.
The existing object materialization in the deoptimizer has the following problems:

- Objects do not necessarily verify during materialization (because during the
  depth first walk we might have inconsistent objects).

- Stack can overflow (because we just materialize using recursive calls).

- We generalize object fields.


This CL re-implements the materialization algorithm to solve this problem. The
new implementation creates the objects in two steps:

1. We allocate space for all the objects. In general, we allocate ByteArrays
   of the right size. For leaf objects that cannot participate in cycles,
   we build and initialize the materialized objects completely.

   For JS objects, we insert markers into the byte array at the positions
   where unboxed doubles are expected.

2. We initialize all the objects with the proper field values and change the
   map from the ByteArray map to the correct map. This requires some sync
   with the concurrent marker (Heap::NotifyObjectLayoutChange).

   When initializing the JS object fields, we make sure that we respect
   the unboxed double marker.

Bug: chromium:770106, v8:3836
Change-Id: I1ec466a9d19db9538df4ba915516d4c3ca825632
Reviewed-on: https://chromium-review.googlesource.com/777559
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49821}
2017-12-04 09:23:03 +00:00
..
benchmarks [test] Extract expected outcomes. Simpler FAIL_* handling. 2017-11-24 09:23:03 +00:00
cctest Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
common Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
debugger [debug] Fix debug-evaluate for de-materialized function. 2017-11-29 14:53:18 +00:00
fuzzer Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
inspector DevTools: also use default label for console.count 2017-12-01 20:17:20 +00:00
intl Remove env field from testcase. 2017-11-16 15:26:06 +00:00
js-perf-test [tools] Double timeout for JSTests 2017-11-30 12:12:09 +00:00
memory [snapshot] add tracking for builtin snapshot size. 2017-08-31 07:29:31 +00:00
message [wasm] Flush the instruction cache on the WasmCodeManager 2017-12-01 16:53:37 +00:00
mjsunit [deoptimizer] Staged materialization of objects. 2017-12-04 09:23:03 +00:00
mkgrokdump Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
mozilla [test] Common statusfile flag format for mozilla and test262. 2017-11-20 14:20:24 +00:00
preparser Remove shell info from testcase. 2017-11-16 15:42:26 +00:00
promises-aplus Remove env field from testcase. 2017-11-16 15:26:06 +00:00
test262 Remove always-on --harmony-template-escapes flag 2017-11-28 18:36:41 +00:00
unittests [cleanup][wasm] Use ArrayVector in streaming-decoder-unittests.cc 2017-12-04 09:01:04 +00:00
wasm-spec-tests [wasm] Update spec tests 2017-12-04 09:09:54 +00:00
webkit [class] Throw early errors for fields with constructor and prototype name 2017-11-28 15:00:18 +00:00
bot_default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
bot_default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
BUILD.gn [wasm] Remove the wasm-asmjs fuzzer 2017-06-21 10:59:35 +00:00
default.gyp [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
optimize_for_size.gyp
optimize_for_size.isolate
perf.gyp
perf.isolate Revert "Reland "[test] Creating command before execution phase."" 2017-12-01 20:44:50 +00:00