v8/test/inspector
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
..
console [inspector] rewritten test/inspector/let-const-with-api.js 2017-08-01 15:36:02 +00:00
cpu-profiler [coverage] Include operators in Conditional ranges 2017-11-20 12:09:30 +00:00
debugger [debug] introduced runtime side effect check 2018-04-04 21:59:10 +00:00
heap-profiler [heap-profiler] Annotate global handles retained by console and debugger. 2018-02-19 12:21:52 +00:00
runtime Revert "[inspector] queryObjects returns result" 2018-03-28 01:49:48 +00:00
sessions [inspector] split DebuggerAgent::breakpointsCookie 2017-10-06 22:01:16 +00:00
type-profiler [type-profile] Use vector list from isolate 2017-10-17 14:10:52 +00:00
BUILD.gn [build] Add data deps for executable tests 2018-03-26 13:37:03 +00:00
DEPS [inspector] introduce limit for amount of stored async stacks 2016-12-18 17:04:40 +00:00
inspector-test.cc Set RuntimeAgent evaluate to use DebugEvaluate::Global 2018-02-16 19:56:20 +00:00
inspector.status [test] Rebaseline inspector test. 2017-08-11 08:28:30 +00:00
isolate-data.cc Reland [inspector] introduced stackTraceId and externalAsyncTask API 2017-11-22 20:56:10 +00:00
isolate-data.h Reland [inspector] introduced stackTraceId and externalAsyncTask API 2017-11-22 20:56:10 +00:00
json-parse-expected.txt [inspector] Refactor protocol-test.js 2017-05-19 00:35:45 +00:00
json-parse.js [inspector] Refactor protocol-test.js 2017-05-19 00:35:45 +00:00
OWNERS Add COMPONENT tags to OWNERS files where appropriate 2017-05-22 10:15:28 +00:00
protocol-test.js [inspector] queryObjects() should take objectGroup 2018-03-14 20:12:56 +00:00
task-runner.cc [cleanup] Fix (D)CHECK macros in src/{debug,inspector} 2017-09-25 12:20:59 +00:00
task-runner.h [inspector] Cleanup inspector test 2017-05-22 20:46:42 +00:00
testcfg.py [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00