v8/test
Alexey Kozyatinskiy 7a2c371383 [debug] introduced runtime side effect check
This CL demonstrates minimum valuable addition to existing debug evaluate
without side effects mechanism.
With this CL user can evaluate expressions like:
[a,b] // create any kind of temporary array literals
[a,b].reduce((x,y) => x + y, 0); // use reduce method
[1,2,3].fill(2); // change temporary arrays

The core idea: any change of the object created during evaluation without
side effects is side effect free. As soon as we try to store this temporary
object to object existed before evaluation we will terminate execution.

Implementation:
- track all objects allocated during evaluation and mark them as temporary,
- patch all bytecodes which change objects.

A little more details (including performance analysis): [1].

[1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#

Bug: v8:7588
Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
Reviewed-on: https://chromium-review.googlesource.com/972615
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52370}
2018-04-04 21:59:10 +00:00
..
benchmarks Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
cctest [debug] introduced runtime side effect check 2018-04-04 21:59:10 +00:00
common Revert "[wasm] Merge the WasmContext into WasmInstanceObject" 2018-04-04 17:08:02 +00:00
debugger [debug] introduced runtime side effect check 2018-04-04 21:59:10 +00:00
fuzzer [Compiler] Split up Unoptimized/Optimized CompilationInfo and CompilationJobs 2018-04-04 21:09:01 +00:00
inspector [debug] introduced runtime side effect check 2018-04-04 21:59:10 +00:00
intl Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
js-perf-test Reland "Reland "[test] Add JSTest benchmark for object literal spread"" 2018-04-04 16:41:10 +00:00
memory [snapshot] add tracking for builtin snapshot size. 2017-08-31 07:29:31 +00:00
message Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
mjsunit Revert "[wasm] Merge the WasmContext into WasmInstanceObject" 2018-04-04 17:08:02 +00:00
mkgrokdump Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
mozilla Revert "Implement a new spec for timezone offset calculation" 2018-04-03 22:07:32 +00:00
preparser Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
test262 Reland "Ship BigInts" 2018-03-30 02:01:42 +00:00
unittests [Compiler] Split up Unoptimized/Optimized CompilationInfo and CompilationJobs 2018-04-04 21:09:01 +00:00
wasm-spec-tests [wasm] Update spec tests 2018-03-29 16:47:32 +00:00
webkit Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00
BUILD.gn Reland "[build] Remove legacy isolate configurations" 2018-03-28 12:36:55 +00:00