v8/test/cctest
ishell@chromium.org 1067c6accc [ext-code-space] Add InterpreterEntryTrampolineForProfiling builtin
... - a code range size agnostic version of InterpreterEntryTrampoline
builtin. The new builtin is fully compatible with the default version
and used as a template for creating interpreter entry trampoline
Code objects when --interpreted-frames-native-stack is enabled.

This CL introduces a new assembler option "position_independent_code"
which affects the way builtin calls are generated.
This mode is enabled only for InterpreterEntryTrampolineForProfiling.

Motivation:

* InterpreterEntryTrampoline uses RelocInfo::CODE_TARGET for calling
  other builtins which requires the code range to be small enough to
  allow PC-relative jumps/calls between Code objects. This is the
  reason why --interpreted-frames-native-stack was not supported on
  arm and might not work on arm64 because the code range is bigger
  than the max PC-relative distance for call/jump instructions.
  The new builtin calls other builtins via builtins entry table which
  makes the code fully relocatable and usable for any code range size.

* RelocInfo::CODE_TARGET requires a target code to be materialized
  as a Code object which contradicts the Code-less builtins goal.

* The --interpreted-frames-native-stack is rarely used in the wild but
  we have to pay the price of deserializing InterpreterEntryTrampoline
  builtin as a Code object which consumes address space in the code
  range and thus limits the number of V8 isolates that can be created
  because of code range exhaustion. Now the pointer compression cage
  becomes the limiting factor instead of the code range.

* We can remove complicated logic of Factory::CopyCode() and respective
  support on GC side.

Bug: v8:11880, v8:8713, v8:12592
Change-Id: Ib72e28c03496c43db42f6fe46622def12e102f31
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3811287
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82263}
2022-08-08 12:50:42 +00:00
..
compiler Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
heap [ext-code-space] Add InterpreterEntryTrampolineForProfiling builtin 2022-08-08 12:50:42 +00:00
parsing [test] Move cctest/parsing to unittests/parser 2022-05-17 13:07:30 +00:00
torque [csa, torque, cleanup] Rename CSA_ASSERT to CSA_DCHECK 2021-09-30 08:41:23 +00:00
wasm [wasm] Disable lazy compilation in tests 2022-08-08 11:10:41 +00:00
assembler-helper-arm.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
assembler-helper-arm.h [test, arm] Take isolate as argument for AssembleCode 2020-11-18 14:17:05 +00:00
BUILD.gn Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
cctest-utils.h Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
cctest.cc [API] Prepare deprecation of second OnCriticalMemoryPressure 2022-07-25 12:59:56 +00:00
cctest.h [API] Prepare deprecation of second OnCriticalMemoryPressure 2022-07-25 12:59:56 +00:00
cctest.status Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
collector.h [base] Move utils/vector.h to base/vector.h 2021-06-18 13:33:13 +00:00
DEPS Reland "[tracing] Roll perfetto @ 28b633cd" 2019-09-06 13:42:02 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
manually-externalized-buffer.h [api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors 2019-10-29 22:01:54 +00:00
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 Replace STATIC_ASSERT with static_assert 2022-05-13 13:46:27 +00:00
setup-isolate-for-tests.cc [interpreter] Always put bytecode handlers in builtins table 2018-09-20 09:58:15 +00:00
setup-isolate-for-tests.h Move initialization code into src/init 2019-05-16 12:36:15 +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 [ext-code-space] Remove more Code <-> CodeT roundtrips 2022-07-21 10:16:13 +00:00
test-allocation.cc [API] Prepare deprecation of second OnCriticalMemoryPressure 2022-07-25 12:59:56 +00:00
test-api-array-buffer.cc [api] Add more efficient API for accesssing ArrayBuffer raw data 2022-07-15 09:03:11 +00:00
test-api-interceptors.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-api-stack-traces.cc [cleanup] Make the CaptureStackTrace test threaded 2022-05-31 09:52:38 +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.cc [API] Remove "." at end of API check messages 2022-08-08 11:13:22 +00:00
test-api.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-assembler-arm64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-assembler-arm.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-assembler-ia32.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-assembler-loong64.cc [loong64] Fix the wrong encoding and usage of maskeqz/masknez instructions 2021-12-24 10:46:06 +00:00
test-assembler-mips64.cc Place bit_cast<>() in the v8::base:: namespace. 2022-05-05 17:56:39 +00:00
test-assembler-mips.cc Place bit_cast<>() in the v8::base:: namespace. 2022-05-05 17:56:39 +00:00
test-assembler-ppc.cc [codegen] Change RegList into a class 2022-03-14 12:59:48 +00:00
test-assembler-riscv32.cc Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
test-assembler-riscv64.cc [riscv64] Fix popcount 2022-07-21 06:00:42 +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 [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-code-stub-assembler.cc [test] Remove some unused includes 2022-07-18 12:59:03 +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-cpu-profiler.cc [ext-code-space] Allow AbstractCode to be CodeDataContainer 2022-07-19 14:37:56 +00:00
test-debug-helper.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-debug.cc [ext-code-space] Remove more Code <-> CodeT roundtrips 2022-07-21 10:16:13 +00:00
test-descriptor-array.cc Replace STATIC_ASSERT with static_assert 2022-05-13 13:46:27 +00:00
test-disasm-mips.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-disasm-regex-helper.cc Unify naming convention for tests and filter them in TestLoader for cctest 2022-04-20 14:19:55 +00:00
test-disasm-regex-helper.h Unify naming convention for tests and filter them in TestLoader for cctest 2022-04-20 14:19:55 +00:00
test-feedback-vector.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-feedback-vector.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-field-type-tracking.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-func-name-inference.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-fuzz-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-global-handles.cc [API] Allow copying of structs with deprecated fields 2022-07-26 11:47:25 +00:00
test-heap-profiler.cc [API] Allow copying of structs with deprecated fields 2022-07-26 11:47:25 +00:00
test-helper-riscv32.cc Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
test-helper-riscv32.h Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
test-helper-riscv64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-helper-riscv64.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-icache.cc Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
test-ignition-statistics-extension.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-inobject-slack-tracking.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-inspector.cc [inspector] Rename console.scheduleTask to console.createTask 2022-07-27 06:09:27 +00:00
test-javascript-arm64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-js-arm64-variables.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-js-to-wasm.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-js-weak-refs.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-liveedit.cc [liveedit] Enable Myers algorithm 2022-08-08 08:30:11 +00:00
test-local-handles.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-lockers.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-log-stack-tracer.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-arm64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-arm.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-loong64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-mips64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-mips.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-riscv32.cc Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +00:00
test-macro-assembler-riscv64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-macro-assembler-x64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-mementos.cc [heap] Make creation of NewSpace and NewLargeObjectSpace optional 2021-05-04 06:47:54 +00:00
test-orderedhashtable.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-parsing.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-profile-generator.cc [ext-code-space] Add cage_base parameter to AbstractCode methods 2022-07-18 17:17:17 +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] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-sampler-api.cc Add test for builtin stack frames in profile sample 2021-11-24 09:33:30 +00:00
test-serialize.cc [ext-code-space] Add InterpreterEntryTrampolineForProfiling builtin 2022-08-08 12:50:42 +00:00
test-shared-strings.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-simple-riscv32.cc Reland "[riscv32] Add RISCV32 backend" 2022-08-04 12:47:44 +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] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-stack-unwinding-win64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-strings.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-swiss-name-dictionary-csa.cc Replace STATIC_ASSERT with static_assert 2022-05-13 13:46:27 +00:00
test-swiss-name-dictionary-infra.cc [runtime] Clean up runtime function Arguments accesses 2022-03-09 13:03:15 +00:00
test-swiss-name-dictionary-infra.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-swiss-name-dictionary-shared-tests.h Replace STATIC_ASSERT with static_assert 2022-05-13 13:46:27 +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-sync-primitives-arm64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-sync-primitives-arm.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-temporal-parser.cc [Temporal] Parser sync to PR1952 and PR2187 2022-07-18 21:12:02 +00:00
test-trace-event.cc [test] Make cctest run one test, with maybe custom platform 2022-04-05 09:39:18 +00:00
test-transitions.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-transitions.h Reland "[runtime] Refactor TransitionsAccessor" 2022-02-14 12:05:06 +00:00
test-typedarrays.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-unscopables-hidden-prototype.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-unwinder-code-pages.cc [ext-code-space] Remove more Code <-> CodeT roundtrips 2022-07-21 10:16:13 +00:00
test-usecounters.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-utils-arm64.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-utils-arm64.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-utils.cc [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
test-v8windbg.cc [tools] Add v8windbg, a WinDbg extension for V8 2020-02-18 19:16:18 +00:00
test-verifiers.cc [cleanup] Remove atomic kRelaxed accessors in favour for non-atomic ones 2021-03-08 10:57:19 +00:00
test-weakmaps.cc [heap] Separate GC phases flag. 2022-04-06 07:23:39 +00:00
test-web-snapshots.cc [web snapshot] Add support for derived constructors 2022-05-18 07:42:21 +00:00
testcfg.py [test] Refactor testrunner (4) 2022-07-18 09:52:24 +00:00
trace-extension.cc Reland "[include] Split out v8.h" 2021-08-24 13:08:55 +00:00
trace-extension.h [test] Remove some unused includes 2022-07-18 12:59:03 +00:00
unicode-helpers.cc Move string-related files to src/strings 2019-05-21 07:17:48 +00:00
unicode-helpers.h Move string-related files to src/strings 2019-05-21 07:17:48 +00:00