v8/test/cctest
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
..
compiler [debugger] Explicitly encode debugger statements in didPause 2021-12-02 10:41:43 +00:00
heap [heap] Find references in client heaps to shared objects in shared GC 2021-12-06 12:00:18 +00:00
interpreter Reland "[top-level-await] Remove --harmony-top-level-await" 2021-12-06 23:02:33 +00:00
libplatform [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{cctest,fuzzer,inspector} 2020-11-10 01:24:43 +00:00
libsampler Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
parsing [compiler] Introduce ReusableUnoptimizedCompileState 2021-12-08 11:14:27 +00:00
torque [csa, torque, cleanup] Rename CSA_ASSERT to CSA_DCHECK 2021-09-30 08:41:23 +00:00
wasm [inspector] Consistent frame function name in V8 Inspector and API. 2021-12-08 06:58:19 +00:00
assembler-helper-arm.cc [test, arm] Take isolate as argument for AssembleCode 2020-11-18 14:17:05 +00:00
assembler-helper-arm.h [test, arm] Take isolate as argument for AssembleCode 2020-11-18 14:17:05 +00:00
BUILD.gn [Temporal] Part 2.1 Add TemporalParser to parse ISO8601 2021-11-24 00:50:24 +00:00
cctest-utils.h [LOONG64] Add LoongArch64 backend 2021-08-16 13:05:19 +00:00
cctest.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
cctest.h [cctest][wasm] Ensure FLAG_stack_size has an effect 2021-05-03 14:24:46 +00:00
cctest.status [loong64][mips][test] Some tests do not need to be skipped 2021-11-25 07:06:58 +00:00
collector.h [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
DEPS
disasm-regex-helper.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
disasm-regex-helper.h
expression-type-collector-macros.h
gay-fixed.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
gay-fixed.h Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
gay-precision.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
gay-precision.h Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
gay-shortest.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
gay-shortest.h Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
manually-externalized-buffer.h
OWNERS Update OWNERS in test/* 2021-02-25 14:26:24 +00:00
print-extension.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
print-extension.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
profiler-extension.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
profiler-extension.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
scope-test-helper.h
setup-isolate-for-tests.cc
setup-isolate-for-tests.h
test-access-checks.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-accessor-assembler.cc [ic] Use the Map for hashing in the secondary stub cache 2021-10-15 14:54:28 +00:00
test-accessors.cc [cleanup] Fix Wshadow warnings in cctests 2021-09-27 09:18:00 +00:00
test-allocation.cc [cleanup][test] Remove redundant NOLINT annotations 2021-04-30 11:46:14 +00:00
test-api-accessors.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-api-array-buffer.cc [builtins] DataView should throws on detached buffer 2021-09-14 16:49:36 +00:00
test-api-icu.cc [Intl] Update ICU to 70-1 on v8 2021-11-12 11:35:09 +00:00
test-api-interceptors.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-api-stack-traces.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-api-typed-array.cc [rab / gsab] Add tests for the recent DataView bugs 2021-11-24 16:20:29 +00:00
test-api-wasm.cc [wasm][api] Add WasmModuleObject::Compile api function 2021-11-19 22:25:15 +00:00
test-api.cc Reland "[top-level-await] Remove --harmony-top-level-await" 2021-12-06 23:02:33 +00:00
test-api.h Reland "Fix -Wimplicit-int-float-conversions." 2021-06-29 16:36:18 +00:00
test-array-list.cc
test-assembler-arm64.cc [cleanup] Rename RelocInfo::NONE to RelocInfo::NO_INFO to fix -Wshadow 2021-11-17 19:11:40 +00:00
test-assembler-arm.cc [wasm-simd][arm] Fuse extadd_pairwise and add SIMD on arm. 2021-06-28 14:26:00 +00:00
test-assembler-ia32.cc [cleanup] Rename RelocInfo::NONE to RelocInfo::NO_INFO to fix -Wshadow 2021-11-17 19:11:40 +00:00
test-assembler-loong64.cc [LOONG64] Add LoongArch64 backend 2021-08-16 13:05:19 +00:00
test-assembler-mips64.cc [loong64][mips] Fix safepoint record of CallCFunction 2021-11-04 02:29:29 +00:00
test-assembler-mips.cc [loong64][mips] Fix safepoint record of CallCFunction 2021-11-04 02:29:29 +00:00
test-assembler-ppc.cc PPC [simd]: Add tests for some word sized vector instructions 2021-08-16 21:34:29 +00:00
test-assembler-riscv64.cc [riscv64]Implement webassembly simd swizzle/TruncSat/extadd/S128LOAD 2021-12-08 10:43:49 +00:00
test-assembler-s390.cc [cleanup] Rename RelocInfo::NONE to RelocInfo::NO_INFO to fix -Wshadow 2021-11-17 19:11:40 +00:00
test-assembler-x64.cc [x64] Implement 256-bit assembler for vmov[au]p* 2021-11-23 02:02:38 +00:00
test-atomicops.cc Add Relaxed_Memcmp 2021-12-03 18:00:48 +00:00
test-bignum-dtoa.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-bignum.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-bit-vector.cc
test-circular-queue.cc
test-code-layout.cc
test-code-pages.cc [sparkplug] Remove BaselineData, use Code directly 2021-09-06 11:52:21 +00:00
test-code-stub-assembler.cc [ext-code-space] Avoid Code <-> CodeT conversions in runtime, pt.1 2021-11-08 14:08:24 +00:00
test-compiler.cc [api] Deprecate v8::ScriptCompiler::CompileFunctionInContext 2021-10-27 07:19:51 +00:00
test-concurrent-descriptor-array.cc [heap, infra] Remove --local-heaps and --concurrent-allocation flags 2021-02-01 11:01:26 +00:00
test-concurrent-feedback-vector.cc [ic] Fix -Wshadow by making InlineCacheState an enum class 2021-11-19 18:52:15 +00:00
test-concurrent-js-array.cc Reland "[compiler] Direct heap reads for JSArrayRef" 2021-02-22 12:15:50 +00:00
test-concurrent-prototype.cc [cleanup] Remove synchronized_ from map accessors 2021-05-17 15:07:46 +00:00
test-concurrent-script-context-table.cc [cleanup] Fix Wshadow warnings in cctests 2021-09-27 09:18:00 +00:00
test-concurrent-string.cc [string] Skip concurrent tests if FLAG_single_generation is on 2021-06-09 12:30:28 +00:00
test-concurrent-transition-array.cc [objects] Make PropertyKind an enum class to fix -Wshadow 2021-11-15 19:05:14 +00:00
test-constantpool.cc PPC: [cleanup] Replace all remaining Min/Max uses with std::min/max 2020-11-25 08:49:53 +00:00
test-conversions.cc [numbers] Rename ConversionFlags:NO_FLAG to NO_CONVERSION_FLAGS 2021-11-11 22:04:22 +00:00
test-cpu-profiler.cc Reland "[profiler] Surface VM & Embedder State" 2021-12-07 19:00:07 +00:00
test-date.cc
test-debug-helper.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-debug.cc [debugger] Explicitly encode debugger statements in didPause 2021-12-02 10:41:43 +00:00
test-decls.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
test-deoptimization.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-descriptor-array.cc [objects] Make PropertyKind an enum class to fix -Wshadow 2021-11-15 19:05:14 +00:00
test-dictionary.cc
test-disasm-arm64.cc [wasm-simd] Remove PrefetchTemporal and PrefetchNonTemporal operations 2021-03-22 17:47:49 +00:00
test-disasm-arm.cc [wasm-simd][arm] Fuse extadd_pairwise and add SIMD on arm. 2021-06-28 14:26:00 +00:00
test-disasm-ia32.cc [cleanup] Rename RelocInfo::NONE to RelocInfo::NO_INFO to fix -Wshadow 2021-11-17 19:11:40 +00:00
test-disasm-loong64.cc [loong64] Adjust the disassembler instruction format 2021-09-10 09:08:49 +00:00
test-disasm-mips64.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-disasm-mips.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-disasm-ppc.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-disasm-riscv64.cc [riscv64] Add packing and unpacking instructions for WebAssembly SIMD 2021-11-12 08:00:05 +00:00
test-disasm-s390.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-disasm-x64.cc [x64] Implement 256-bit assembly for SSSE3 UNOP instructions 2021-11-12 02:03:42 +00:00
test-diy-fp.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-double.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-dtoa.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-elements-kind.cc [factory] Remove deprecated JSFunction ctors 2020-11-11 06:12:35 +00:00
test-factory.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-fast-dtoa.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-feedback-vector.cc [ic] Fix -Wshadow by making InlineCacheState an enum class 2021-11-19 18:52:15 +00:00
test-feedback-vector.h [runtime] Rename Builtins::Name to Builtin 1/2 2021-06-07 20:05:44 +00:00
test-field-type-tracking.cc [objects] Make PropertyKind an enum class to fix -Wshadow 2021-11-15 19:05:14 +00:00
test-fixed-dtoa.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-flags.cc [no-wasm][flags] Remove wasm flags 2021-03-16 07:31:25 +00:00
test-func-name-inference.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-fuzz-arm64.cc
test-global-handles.cc [cleanup] Fix Wshadow warnings in cctests 2021-09-27 09:18:00 +00:00
test-global-object.cc
test-hashcode.cc [dict-proto] Rename v8_dict_mode_prototypes flag 2021-03-29 11:53:45 +00:00
test-hashmap.cc
test-heap-profiler.cc [cleanup] Fix some -Wshadow warnings 2021-11-15 19:48:29 +00:00
test-helper-riscv64.cc Add RISC-V backend 2021-02-09 17:06:36 +00:00
test-helper-riscv64.h [riscv64] Add tests for RVV VI VF instructions 2021-10-28 13:57:31 +00:00
test-icache.cc [LOONG64] Add LoongArch64 backend 2021-08-16 13:05:19 +00:00
test-identity-map.cc [string] Remove FLAG_thin_string and enable it all the time 2021-06-09 09:52:48 +00:00
test-ignition-statistics-extension.cc Fix counting ignition dispatches 2021-06-07 18:47:24 +00:00
test-inobject-slack-tracking.cc Refactor of ScopeInfo::ContextSlotIndex 2021-05-19 18:12:40 +00:00
test-inspector.cc [inspector] Use ephemeron table for exception metadata 2021-09-16 08:45:11 +00:00
test-intl.cc [builtins] add Torque fast-path for String.prototype.localeCompare 2021-11-17 12:55:13 +00:00
test-javascript-arm64.cc
test-js-arm64-variables.cc
test-js-to-wasm.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-js-weak-refs.cc heap: Replace WeakObjects Worklist with ::heap::base::Worklist 2021-11-30 11:37:31 +00:00
test-liveedit.cc [cleanup] Fix some -Wshadow warnings 2021-11-02 17:11:48 +00:00
test-local-handles.cc [cleanup] Fix some -Wshadow warnings 2021-11-02 17:11:48 +00:00
test-lockers.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-log-stack-tracer.cc [ext-code-space] Use cage-friendly HeapObject::map() in compiler 2021-11-30 13:00:28 +00:00
test-log.cc [api] Deprecate v8::ScriptCompiler::CompileFunctionInContext 2021-10-27 07:19:51 +00:00
test-macro-assembler-arm64.cc [ext-code-space] Introduce RelocInfo::target_object(PtrComprCageBase) 2021-10-12 15:43:34 +00:00
test-macro-assembler-arm.cc [runtime] Rename Builtins::Name to Builtin 1/2 2021-06-07 20:05:44 +00:00
test-macro-assembler-loong64.cc [loong64] Optimize GenerateSwitchTable 2021-09-08 10:41:51 +00:00
test-macro-assembler-mips64.cc [mips] Fix build failed 2021-06-15 04:24:28 +00:00
test-macro-assembler-mips.cc [runtime] Rename Builtins::Name to Builtin 1/2 2021-06-07 20:05:44 +00:00
test-macro-assembler-riscv64.cc [riscv64] Delete s10 from scratch_list 2021-08-19 07:11:26 +00:00
test-macro-assembler-x64.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
test-managed.cc [ext-code-space] Introduce managed-inl.h and global-handles-inl.h 2021-09-20 10:29:29 +00:00
test-mementos.cc [heap] Make creation of NewSpace and NewLargeObjectSpace optional 2021-05-04 06:47:54 +00:00
test-modules.cc Reland "[top-level-await] Remove --harmony-top-level-await" 2021-12-06 23:02:33 +00:00
test-object.cc [runtime] Fix constructors with custom instance types 2021-11-25 10:26:50 +00:00
test-orderedhashtable.cc [objects] Make PropertyKind an enum class to fix -Wshadow 2021-11-15 19:05:14 +00:00
test-parsing.cc [compiler] Introduce ReusableUnoptimizedCompileState 2021-12-08 11:14:27 +00:00
test-persistent-handles.cc [cleanup] Fix some -Wshadow warnings 2021-11-02 17:11:48 +00:00
test-platform.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-pointer-auth-arm64.cc [arm64][cfi] Enable sim_abort_on_bad_auth by default. 2021-02-05 10:23:40 +00:00
test-profile-generator.cc Reland "[profiler] Surface VM & Embedder State" 2021-12-07 19:00:07 +00:00
test-property-details.cc [dict-proto] Allow storing certain PropertyDetails in single byte 2021-02-04 13:45:13 +00:00
test-ptr-compr-cage.cc [ext-code-space] Make the code space external for real 2021-10-20 16:29:51 +00:00
test-random-number-generator.cc
test-regexp.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
test-representation.cc
test-roots.cc
test-sampler-api.cc Add test for builtin stack frames in profile sample 2021-11-24 09:33:30 +00:00
test-serialize.cc [class] implement reparsing of class instance member initializers 2021-12-08 14:41:56 +00:00
test-shared-strings.cc [string] Make String::MakeThin threadsafe for shared strings 2021-12-06 20:27:06 +00:00
test-simple-riscv64.cc [cleanup][test] Remove redundant NOLINT annotations 2021-04-30 11:46:14 +00:00
test-smi-lexicographic-compare.cc
test-stack-unwinding-win64.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-strings.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
test-strtod.cc Reland "[base] Move most of src/numbers into base" 2021-06-24 15:00:27 +00:00
test-swiss-name-dictionary-csa.cc [csa, torque, cleanup] Rename CSA_ASSERT to CSA_DCHECK 2021-09-30 08:41:23 +00:00
test-swiss-name-dictionary-infra.cc Reland [dict-proto] C++ implementation of SwissNameDictionary, pt. 10 2021-03-24 17:12:21 +00:00
test-swiss-name-dictionary-infra.h Reland [dict-proto] C++ implementation of SwissNameDictionary, pt. 10 2021-03-24 17:12:21 +00:00
test-swiss-name-dictionary-shared-tests.h [cctest] Fix -Wshadow warnings 2021-11-11 17:20:12 +00:00
test-swiss-name-dictionary.cc Reland "[dict-proto] SIMD support for SwissNameDictionary in Torque" 2021-03-31 13:01:34 +00:00
test-symbols.cc [runtime] Rename Name::Hash() to Name::EnsureHash() 2020-11-16 10:48:15 +00:00
test-sync-primitives-arm64.cc
test-sync-primitives-arm.cc [test, arm] Take isolate as argument for AssembleCode 2020-11-18 14:17:05 +00:00
test-temporal-parser.cc [Temporal] Sync Parser to pull/1950 2021-12-04 01:44:18 +00:00
test-thread-termination.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-threads.cc
test-trace-event.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-traced-value.cc
test-transitions.cc [objects] Make PropertyKind an enum class to fix -Wshadow 2021-11-15 19:05:14 +00:00
test-transitions.h [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-typedarrays.cc [api] Remove deprecated [Shared]ArrayBuffer API 2021-03-12 16:24:42 +00:00
test-types.cc [turbofan] Extend Type system BitsetType to 64 bit. 2021-11-18 10:02:56 +00:00
test-unscopables-hidden-prototype.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
test-unwinder-code-pages.cc [cleanup] Move builtins related APIs from Heap class 2021-10-27 11:17:01 +00:00
test-usecounters.cc
test-utils-arm64.cc
test-utils-arm64.h
test-utils.cc [api] V8::Initialize cleanup 2021-11-30 14:30:38 +00:00
test-v8windbg.cc
test-verifiers.cc [cleanup] Remove atomic kRelaxed accessors in favour for non-atomic ones 2021-03-08 10:57:19 +00:00
test-version.cc [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
test-weakmaps.cc heap: Rename compaction flags 2021-11-10 09:01:59 +00:00
test-weaksets.cc heap: Rename compaction flags 2021-11-10 09:01:59 +00:00
test-web-snapshots.cc [web snapshots] Fix error reporting 2021-11-18 10:25:38 +00:00
testcfg.py
trace-extension.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
trace-extension.h Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
unicode-helpers.cc
unicode-helpers.h