v8/test/cctest
Leszek Swirski a6f465d4d5 [compiler] Remove disallow scopes
TurboFan creates DisallowHeapAccess scopes, to prevent heap access in
the concurrent parts of the compiler. Then, for parts of the compiler
that do want to access the heap, it either creates Allow* scopes (which
should be avoided since they "punch a hole" in the Disallow* scopes), or
relies on a weakening of Handle::IsDereferenceAllowed which allows
handles owned by a LocalHeap to be dereferenced even if there is a
DisallowHeapDereference scope.

This patch:

  a) Strengthens the implicit requirements around handle dereferencing
     to require a running heap on this thread (either main-thread heap
     or an un-parked, un-safepointed LocalHeap).
  b) Removes the overly strict Disallow scopes in TurboFan, relying
     instead on implicit requirements for allocation/handle
     dereferencing in off-thread code.
  c) Cleans up the "should_disallow_heap_access" predicate to be more
     explicit about what should be disallowed (e.g. property accesses
     can't be computed concurrently)

Change-Id: Icb56b7764913ac17e2db197a70bb189af88a6978
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2554617
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71600}
2020-12-03 16:42:24 +00:00
..
compiler [mips][turbofan] Fix CheckedFloat64ToInt64 on mips64 2020-12-01 08:59:41 +00:00
heap Reland "[heap] Remove SWEEPING phase in incremental marking" 2020-12-03 12:15:53 +00:00
interpreter [api] Use shorter 8::Local::As<*> casts in more places 2020-11-28 11:04:26 +00:00
libplatform [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{cctest,fuzzer,inspector} 2020-11-10 01:24:43 +00:00
libsampler [api] Use shorter 8::Local::As<*> casts in more places 2020-11-28 11:04:26 +00:00
parsing [cleanup] Replace all remaining Min/Max uses with std::min/max 2020-11-24 17:32:01 +00:00
torque [torque] references and slices to off-heap data 2020-11-19 16:20:56 +00:00
wasm [wasm debug] Cache name tables for the wasm debug proxy. 2020-12-03 08:24:53 +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 [TurboFan] Transition SharedFunctionInfo to kNeverSerialized (3) 2020-11-30 15:33:15 +00:00
cctest-utils.h PPC: Update inline asm constraint in cctest-utils 2020-10-15 16:12:03 +00:00
cctest.cc [config] Add V8_NODISCARD for Scope classes 2020-11-26 11:08:45 +00:00
cctest.h [config] Add V8_NODISCARD for Scope classes 2020-11-26 11:08:45 +00:00
cctest.status [compiler] Remove disallow scopes 2020-12-03 16:42:24 +00:00
collector.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
DEPS Reland "[tracing] Roll perfetto @ 28b633cd" 2019-09-06 13:42:02 +00:00
disasm-regex-helper.cc [turbofan] Improve load poisoning tests. 2019-07-02 17:55:04 +00:00
disasm-regex-helper.h [turbofan] Improve load poisoning tests. 2019-07-02 17:55:04 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-fixed.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
gay-precision.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-precision.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
gay-shortest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-shortest.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
manually-externalized-buffer.h [api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors 2019-10-29 22:01:54 +00:00
OWNERS Add myself as an owner for debug-helper and v8windbg 2020-09-21 15:19:27 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
profiler-extension.cc Reland "[Compile] Ensure we don't access the native context during bytecode finalization." 2018-10-26 22:33:56 +00:00
profiler-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
scope-test-helper.h [parser] Various Scope and Context speedups 2019-01-28 13:06:03 +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-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-accessors.cc [api] Use shorter 8::Local::As<*> casts in more places 2020-11-28 11:04:26 +00:00
test-allocation.cc [zone-compr] Initial support for zone pointer compression 2020-07-24 08:27:21 +00:00
test-api-accessors.cc [Respect] Rename lists 2020-06-22 15:15:31 +00:00
test-api-array-buffer.cc [api] Use shorter 8::Local::As<*> casts in more places 2020-11-28 11:04:26 +00:00
test-api-icu.cc Update to ICU68-1 2020-11-04 19:14:59 +00:00
test-api-interceptors.cc [api] Use shorter 8::Local::As<*> casts in more places 2020-11-28 11:04:26 +00:00
test-api-stack-traces.cc [api] Simplify ScriptOrigin 2020-11-24 19:51:42 +00:00
test-api-typed-array.cc [api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors 2019-10-29 22:01:54 +00:00
test-api-wasm.cc [wasm-simd] Add use counter for SIMD opcodes 2020-05-08 19:14:00 +00:00
test-api.cc [modules] Allow Module::GetModuleRequests() to be called on a SyntheticModule 2020-12-03 16:24:34 +00:00
test-api.h [test-api] Extract arraybufs and typed arrays 2019-06-17 15:27:01 +00:00
test-array-list.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-assembler-arm64.cc [wasm-simd][arm64] Prototype prefetch arm64 2020-11-24 02:44:09 +00:00
test-assembler-arm.cc Reland "[wasm-simd][arm] Prototype i64x2.bitmask" 2020-11-30 01:53:18 +00:00
test-assembler-ia32.cc [cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-02 10:29:49 +00:00
test-assembler-mips64.cc [mips][cleanup] Replace all remaining Min/Max uses with std::min/max 2020-11-26 08:01:15 +00:00
test-assembler-mips.cc [mips][cleanup] Replace all remaining Min/Max uses with std::min/max 2020-11-26 08:01:15 +00:00
test-assembler-ppc.cc Reland "Reland "[deoptimizer] Change deopt entries into builtins"" 2020-10-21 06:01:38 +00:00
test-assembler-s390.cc Reland "Reland "[deoptimizer] Change deopt entries into builtins"" 2020-10-21 06:01:38 +00:00
test-assembler-x64.cc Reland "Reland "[deoptimizer] Change deopt entries into builtins"" 2020-10-21 06:01:38 +00:00
test-atomicops.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-backing-store.cc Reland x6 [arraybuffer] Rearchitect backing store ownership 2019-09-09 13:07:42 +00:00
test-bignum-dtoa.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-bignum.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-bit-vector.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-circular-queue.cc Reland "[d8] Remove maximum workers limitation" 2019-07-30 07:56:17 +00:00
test-code-layout.cc [code] Make metadata offsets relative to metadata section 2020-10-27 10:49:13 +00:00
test-code-pages.cc [heap] Make maximum regular code object size a runtime value. 2020-10-16 13:32:13 +00:00
test-code-stub-assembler.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-compiler.cc [api] Simplify ScriptOrigin 2020-11-24 19:51:42 +00:00
test-concurrent-descriptor-array.cc Reland "[heap] Introduce LocalIsolate for main thread" 2020-11-19 10:44:43 +00:00
test-concurrent-feedback-vector.cc [test] Use EnsureFlagLocalHeapsEnabled() for enabling FLAG_local_heaps 2020-12-01 13:46:31 +00:00
test-concurrent-prototype.cc Reland "[heap] Introduce LocalIsolate for main thread" 2020-11-19 10:44:43 +00:00
test-concurrent-script-context-table.cc Reland "[heap] Introduce LocalIsolate for main thread" 2020-11-19 10:44:43 +00:00
test-concurrent-string.cc [objects] Remove MakeExternal case for uncached internal strings 2020-12-02 18:15:20 +00:00
test-concurrent-transition-array.cc Reland "[heap] Introduce LocalIsolate for main thread" 2020-11-19 10:44:43 +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 [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-cpu-profiler.cc [turbofan] Disable FastApiCPUProfiler in nci_as_midtier 2020-11-19 13:45:24 +00:00
test-date.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-debug-helper.cc [runtime] Deconfuse Name::Hash() from Name::hash_field() 2020-11-11 12:21:07 +00:00
test-debug.cc [api] Simplify ScriptOrigin 2020-11-24 19:51:42 +00:00
test-decls.cc [api] Create v8::String::NewFromLiteral that returns Local<String> 2020-03-09 12:02:07 +00:00
test-deoptimization.cc [js-function] Remove deprecated predicates 2020-08-11 11:53:00 +00:00
test-descriptor-array.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-dictionary.cc Disable --stress-concurrent-allocation for tests that change free lists 2020-09-03 11:15:39 +00:00
test-disasm-arm64.cc [wasm-simd][arm64] Prototype prefetch arm64 2020-11-24 02:44:09 +00:00
test-disasm-arm.cc Revert "Reland "[wasm-simd][arm] Prototype i8x16.popcnt"" 2020-12-03 05:19:25 +00:00
test-disasm-ia32.cc Reland "[wasm-simd][ia32] Prototype store lane" 2020-12-02 00:55:08 +00:00
test-disasm-mips64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-mips.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-ppc.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-s390.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-x64.cc [wasm-simd][x64] Prototype sign select 2020-10-28 03:32:57 +00:00
test-diy-fp.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-double.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-dtoa.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-elements-kind.cc [factory] Remove deprecated JSFunction ctors 2020-11-11 06:12:35 +00:00
test-factory.cc [heap] Make maximum regular code object size a runtime value. 2020-10-16 13:32:13 +00:00
test-fast-dtoa.cc [cleanup] Remove V8_2PART_UINT64_C macro 2020-07-20 11:52:17 +00:00
test-feedback-vector.cc [feedback] Minor name and type changes 2020-11-03 11:50:29 +00:00
test-feedback-vector.h [compiler] Make is_compiled_scope take an explicit Isolate 2020-07-06 15:49:55 +00:00
test-field-type-tracking.cc [test] Cleanup field type tracking cctests 2020-11-13 17:02:23 +00:00
test-fixed-dtoa.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-flags.cc [wasm] Remove the --wasm-interpret-all flag 2020-04-28 08:14:52 +00:00
test-func-name-inference.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-fuzz-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-global-handles.cc global-handles: Fix ASAN fake stack handling 2020-10-30 13:56:36 +00:00
test-global-object.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-hashcode.cc [dict-proto] Add support for ordered property dicts, pt.3 2020-11-19 11:54:24 +00:00
test-hashmap.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-heap-profiler.cc Reland "[turboprop] Add a slot for optimization marker in feedback vector" 2020-10-28 11:09:14 +00:00
test-icache.cc [wasm][mac] Support w^x codespaces for Apple Silicon 2020-09-09 20:57:52 +00:00
test-identity-map.cc Reland^4 "[serializer] Allocate during deserialization" 2020-10-07 08:15:50 +00:00
test-inobject-slack-tracking.cc Use consistent capitalization rules for instance types 2019-10-09 17:44:42 +00:00
test-inspector.cc Implement protocol::Binary to/from base64 conversion 2020-04-30 08:46:05 +00:00
test-intl.cc [lookup] Refactor LookupIterator "property or element" creation 2020-01-09 18:39:11 +00:00
test-javascript-arm64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-js-arm64-variables.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-js-weak-refs.cc Revert "[heap] Convert WeakObjects to heap::base::Worklist" 2020-10-06 14:21:55 +00:00
test-liveedit.cc Add quotes around unexpected token SyntaxError 2019-06-11 06:11:58 +00:00
test-local-handles.cc [compiler] Remove disallow scopes 2020-12-03 16:42:24 +00:00
test-lockers.cc Reland "[heap] Introduce LocalIsolate for main thread" 2020-11-19 10:44:43 +00:00
test-log-stack-tracer.cc [cleanup] Remove unused TickSample class from the public API 2019-08-22 07:27:35 +00:00
test-log.cc [config] Add V8_NODISCARD for Scope classes 2020-11-26 11:08:45 +00:00
test-macro-assembler-arm64.cc [cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-02 10:29:49 +00:00
test-macro-assembler-arm.cc [cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-02 10:29:49 +00:00
test-macro-assembler-mips64.cc [mips][cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-03 04:06:42 +00:00
test-macro-assembler-mips.cc [mips][cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-03 04:06:42 +00:00
test-macro-assembler-x64.cc [cleanup][TurboProp] Unify DynamicMapChecks names. 2020-12-02 10:29:49 +00:00
test-managed.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-mementos.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-modules.cc [modules] Add ResolveModuleCallback that takes import assertions 2020-11-30 19:54:52 +00:00
test-object.cc [cleanup] Clean up SYNCHRONIZED_ACCESSORS macro naming and its uses 2020-10-05 11:01:22 +00:00
test-orderedhashtable.cc [dict-proto] make small ordered hash tables use InternalIndex, too 2020-10-29 13:00:53 +00:00
test-parsing.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-persistent-handles.cc [compiler] Remove disallow scopes 2020-12-03 16:42:24 +00:00
test-platform.cc [test] Fix StackAlignment test 2020-10-14 10:48:27 +00:00
test-pointer-auth-arm64.cc [arm64] Fixed authentication bug in liftoff PrepareTailCall 2020-10-19 09:24:58 +00:00
test-poison-disasm-arm64.cc [arm64] Intentionally corrupt the upper half of decompressed SMIs 2019-11-19 12:14:12 +00:00
test-poison-disasm-arm.cc [cctest][turboprop] Disable DisasmPoisonMonomorphicLoadFloat64 for arm 2020-07-30 10:41:36 +00:00
test-profile-generator.cc [cpu-profiler] Return CpuStartProfilingStatus when starting profiling 2020-10-27 19:10:45 +00:00
test-random-number-generator.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-regexp.cc [object] Remove FlatStringReader's vector constructor 2020-10-28 16:15:33 +00:00
test-representation.cc Move relevant files to src/objects 2019-05-20 08:57:47 +00:00
test-roots.cc [heap] Use BasicMemoryChunk::FromHeapObject more 2020-06-17 14:05:48 +00:00
test-sampler-api.cc [api][cleanup] Use Template::Set with const char* name 2020-09-09 15:39:36 +00:00
test-serialize.cc [objects] Remove MakeExternal case for uncached internal strings 2020-12-02 18:15:20 +00:00
test-smi-lexicographic-compare.cc [cleanup] Eliminate non-const reference parameters 2019-09-10 09:31:07 +00:00
test-stack-unwinding-win64.cc Make Windows stack walking test use runtime-compiled code 2020-10-19 21:50:52 +00:00
test-strings.cc [objects] Remove MakeExternal case for uncached internal strings 2020-12-02 18:15:20 +00:00
test-strtod.cc Move remaining files in src/ 2019-05-24 18:24:36 +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 Reland "Reland "[deoptimizer] Change deopt entries into builtins"" 2020-10-21 06:01:38 +00:00
test-sync-primitives-arm.cc [test, arm] Take isolate as argument for AssembleCode 2020-11-18 14:17:05 +00:00
test-thread-termination.cc [regexp] Use experimental engine if backtrack limit exceeded 2020-10-14 11:18:37 +00:00
test-threads.cc Replace base::make_unique by std::make_unique 2019-09-10 11:21:51 +00:00
test-trace-event.cc [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{cctest,fuzzer,inspector} 2020-11-10 01:24:43 +00:00
test-traced-value.cc [tracing] Improve tracing signals for compilation/optimization. 2019-03-25 14:49:08 +00:00
test-transitions.cc [ptr-compr] Isolatify Map::MigrateToMap() and friends 2019-07-03 08:08:05 +00:00
test-transitions.h [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-typedarrays.cc [api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors 2019-10-29 22:01:54 +00:00
test-types.cc [turbofan] Normalize types for Oddball constants 2020-03-12 14:28:52 +00:00
test-unboxed-doubles.cc [cleanup] Replace all remaining Min/Max uses with std::min/max 2020-11-24 17:32:01 +00:00
test-unscopables-hidden-prototype.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-unwinder-code-pages.cc [unwinder] Restore callee saved registers after unwinding in arm32 2020-10-20 12:32:09 +00:00
test-usecounters.cc [atomics] Remove the deprecated Atomics.wake 2020-08-10 23:02:17 +00:00
test-utils-arm64.cc [arm64][cleanup] Remove CPURegister::Is and CPURegister::is 2019-11-14 12:58:09 +00:00
test-utils-arm64.h Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-utils.cc [cleanup] Split out bit-field.h and bounds.h from utils/utils.h 2019-11-15 13:00:08 +00:00
test-v8windbg.cc [tools] Add v8windbg, a WinDbg extension for V8 2020-02-18 19:16:18 +00:00
test-verifiers.cc [asserts] Make assert scopes LocalHeap friendly 2020-11-20 17:39:14 +00:00
test-version.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-weakmaps.cc [factory] Remove deprecated JSFunction ctors 2020-11-11 06:12:35 +00:00
test-weaksets.cc [factory] Remove deprecated JSFunction ctors 2020-11-11 06:12:35 +00:00
testcfg.py Reland "Preparing v8 to use with python3 /test" 2019-03-20 09:56:06 +00:00
trace-extension.cc [api] Create v8::String::NewFromLiteral that returns Local<String> 2020-03-09 12:02:07 +00:00
trace-extension.h [cleanup] Remove unused TickSample class from the public API 2019-08-22 07:27:35 +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