v8/test/inspector
Joyee Cheung 91f08378bc [class] implement reparsing of class instance member initializers
Previously, since the source code for the synthetic class instance
member initializer function was recorded as the span from the first
initializer to the last initializer, there was no way to reparse the
class and recompile the initializer function. It was working for
most use cases because the code for the initializer function was
generated eagarly and it was usually alive as long as the class was
alive, so the initializer wouldn't normally be lazily parsed. This
didn't work, however, when the class was snapshotted with
v8::SnapshotCreator::FunctionCodeHandling::kClear,
becuase then we needed to recompile the initializer when the class
was instantiated. This patch implements the reparsing so that
these classes can work with FunctionCodeHandling::kClear.

This patch refactors ParserBase::ParseClassLiteral() so that we can
reuse it for both parsing the class body normally and reparsing it
to collect initializers. When reparsing the synthetic initializer
function, we rewind the scanner to the beginning of the class, and
parse the class body to collect the initializers. During the
reparsing, field initializers are parsed with the full parser while
methods of the class are pre-parsed.

A few notable changes:

- Extended the source range of the initializer function to cover the
  entire class so that we can rewind the scanner to parse the class
  body to collect initializers (previously, it starts from the first
  field initializer and ends at the last initializer). This resulted
  some expectation changes in the debugger tests, though the
  initializers remain debuggable.
- A temporary ClassScope is created during reparsing. After the class
  is reparsed, we use the information from the ScopeInfo to update
  the allocated indices of the variables in the ClassScope.

Bug: v8:10704
Change-Id: Ifb6431a1447d8844f2a548283d59158742fe9027
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2988830
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#78299}
2021-12-08 14:41:56 +00:00
..
console Reland 2 ScriptContext CLs 2020-01-22 15:40:06 +00:00
cpu-profiler [compiler][test] Remove --block-concurrent-recompilation 2021-08-16 10:15:53 +00:00
debugger [class] implement reparsing of class instance member initializers 2021-12-08 14:41:56 +00:00
heap-profiler heap-snapshot: Add detachedness field 2020-09-09 14:42:41 +00:00
regress [inspector] Account for dynamic nature of the fn.name property. 2021-11-29 13:28:54 +00:00
runtime Revert "[inspector] Use side-effect free debug evaluate for inherited accessors." 2021-11-04 14:01:50 +00:00
sessions [inspector] Add executionContextId to Runtime.inspectRequested. 2021-07-23 08:41:03 +00:00
type-profiler [tests] Filter out non-existent methods in inspector tests 2020-01-17 12:21:29 +00:00
BUILD.gn Include test/inspector/regress to swarming 2021-07-29 08:00:47 +00:00
DEPS [inspector][fuzzer] Extract functionality for reuse 2020-10-28 08:37:25 +00:00
DIR_METADATA Add DIR_METADATA files to v8. 2020-10-20 22:12:28 +00:00
frontend-channel.h Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
inspector-test.cc [sandbox] Disallow ArrayBuffers outside the VM Cage 2021-08-25 09:52:38 +00:00
inspector.status [riscv64] Re-enable test/inspector/debugger/wasm-gc-breakpoints.js 2021-11-23 07:17:28 +00:00
isolate-data.cc Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
isolate-data.h Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
json-parse-expected.txt
json-parse.js
OWNERS Add DIR_METADATA files to v8. 2020-10-20 22:12:28 +00:00
print-method-not-found-expected.txt [tests] Filter out non-existent methods in inspector tests 2020-01-17 12:21:29 +00:00
print-method-not-found.js [tests] Filter out non-existent methods in inspector tests 2020-01-17 12:21:29 +00:00
protocol-test.js [inspector] Remove unused formatAccessorsAsProperties(). 2021-08-10 06:48:59 +00:00
task-runner.cc Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
task-runner.h Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
tasks.cc Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
tasks.h Fix name collision of v8::internal::IsolateData 2021-08-25 08:45:53 +00:00
testcfg.py [test] Load missing file to Android devices for inspector test suite 2020-07-21 14:11:11 +00:00
utils.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
utils.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
wasm-inspector-test.js [wasm][debug] Provide WebAssembly Table entries to DevTools 2021-05-20 09:59:09 +00:00