v8/test/unittests
Jake Hughes 5f6aa2e5bf [heap] Add object start bitmap for conservative stack scanning
With conservative stack scanning enabled, a snapshot of the call stack
upon entry to GC will be used to determine part of the root-set. When
the collector walks the stack, it looks at each value and determines
whether it could be a potential on-heap object pointer. However, unlike
with Handles, these on-stack pointers aren't guaranteed to point to the
start of the object: the compiler may decide hide these pointers, and
create interior pointers in C++ frames which the GC doesn't know about.

The solution to this is to include an object start bitmap in the header
of each page. Each bit in the bitmap represents a word in the page
payload which is set when an object is allocated. This means that when
the collector finds an arbitrary potential pointer into the page, it can
walk backwards through the bitmap until it finds the relevant object's
base pointer. To prevent the bitmap becoming stale after compaction, it
is rebuilt during object sweeping.

This is experimental, and currently only works with inline allocation
disabled, and single generational collection.

Bug: v8:10614
Change-Id: I28ebd9562f58f335f8b3c2d1189cdf39feaa1f52
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2375195
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69615}
2020-08-31 07:10:36 +00:00
..
api Reland "[builtins] Clean up the use of class_name / ES5 [[Class]]" 2020-04-24 11:46:43 +00:00
asmjs [Respect] Prefer inclusive terms 2020-06-22 18:11:23 +00:00
assembler [nci] Replace CompilationTarget with a new Code::Kind value 2020-08-05 12:27:22 +00:00
base [base] Don't allow excluded regions to be freed 2020-07-31 11:22:38 +00:00
codegen [nci] Replace CompilationTarget with a new Code::Kind value 2020-08-05 12:27:22 +00:00
compiler [turbofan] Reduce consecutive machine multiplication with constants 2020-08-18 17:44:13 +00:00
compiler-dispatcher [nci] Replace CompilationTarget with a new Code::Kind value 2020-08-05 12:27:22 +00:00
date Reland "[d8] Remove maximum workers limitation" 2019-07-30 07:56:17 +00:00
diagnostics Move unittest files 2019-05-27 08:52:23 +00:00
execution [sandbox] Access microtask queue in NativeContext via bottlenecks 2020-05-05 09:11:14 +00:00
heap [heap] Add object start bitmap for conservative stack scanning 2020-08-31 07:10:36 +00:00
interpreter [super property speed] Add a byte code for super property access 2020-08-28 11:02:26 +00:00
libplatform [Jobs API]: Implement missing Jobs pieces in the various v8 implementations. 2020-08-25 13:38:03 +00:00
logging Reland^2 "[heap] Move start of incremental marking in allocation" 2020-07-14 12:07:34 +00:00
numbers [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
objects [runtime] Move string table off-heap 2020-08-06 12:27:18 +00:00
parser Move remaining files in src/ 2019-05-24 18:24:36 +00:00
profiler [cpu-profiler] Add support for refcounting to StringsStorage 2020-03-30 19:08:06 +00:00
regress Reland "[runtime] Improve handling of enumeration index on global dictionary" 2020-03-02 15:41:15 +00:00
strings Fix some issues caught by _LIBCPP_DEBUG=0 2019-11-21 12:17:03 +00:00
tasks [zone] Cleanup zone allocations in src/compiler and tests, pt.1 2020-07-10 12:09:05 +00:00
torque [torque] use implicit parameters for template parameter inference 2020-07-31 15:11:09 +00:00
utils [wasm] Add templatized methods for static bounds checks 2020-06-24 03:41:28 +00:00
wasm [ukm][wasm] Add event WasmModuleDecoded 2020-08-17 12:44:33 +00:00
zone [zone] Final cleanup of zone allocations 2020-07-16 17:47:46 +00:00
BUILD.gn [heap] Add object start bitmap for conservative stack scanning 2020-08-31 07:10:36 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
run-all-unittests.cc [test] Configure GTest for thread-safe death tests. 2020-01-20 20:03:54 +00:00
test-helpers.cc [compile] Add an UnoptimizedCompileState class 2020-04-23 07:08:28 +00:00
test-helpers.h [compile] Add an UnoptimizedCompileState class 2020-04-23 07:08:28 +00:00
test-utils.cc [test] Create one Isolate per unit test (not test suite) 2020-04-14 11:36:25 +00:00
test-utils.h [zone-compr] Add kCompressGraphZone constant 2020-07-24 08:50:11 +00:00
testcfg.py [unittests] initialize the loop variable 2020-06-05 12:24:10 +00:00
unittests.status [unittest] Skip GCStackTest on win64 release builds 2020-06-30 12:28:15 +00:00