v8/test
Tobias Tebbi a19c3ffb8f Reland: [csa] verify skipped write-barriers in MemoryOptimizer
With very few exceptions, this verifies all skipped write-barriers in
CSA and Torque, showing that the MemoryOptimizer together with some
type information on the stored value are enough to avoid unsafe skipped
write-barriers.

Changes to CSA:
SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
MemoryOptimizer by default.
Type information about the stored values (TNode<Smi>) is exploited to
safely skip write barriers for stored Smi values.
In some cases, the code is re-structured to make it easier to consume
for the MemoryOptimizer (manual branch and load elimination).

Changes to the MemoryOptimizer:
Improve the MemoryOptimizer to remove write barriers:
- When the store happens to a CSA-generated InnerAllocate, by ignoring
  Bitcasts and additions.
- When the stored value is the HeapConstant of an immortal immovable root.
- When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
- Fast C-calls are treated as non-allocating.
- Runtime calls can be white-listed as non-allocating.

Remaining missing cases:
- C++-style iterator loops with inner pointers.
- Inner allocates that are reloaded from a field where they were just stored
  (for example an elements backing store). Load elimination would fix that.
- Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
  We could handle that in Torque.
- Double-aligned allocations, which are not lowered in the MemoryOptimizer
  but in CSA.

Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
can be handled by overload resolution (in Torque and C++).

Reland Change: Support pointer compression operands.

R=jarin@chromium.org
TBR=mvstanton@chromium.org

Bug: v8:7793
Change-Id: I84e1831eb6bf9be14f36db3f8b485ee4fab6b22e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612904
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61522}
2019-05-15 11:46:30 +00:00
..
benchmarks [test] Skip flaky test on predictable mode 2019-05-07 13:57:18 +00:00
cctest Reland: [csa] verify skipped write-barriers in MemoryOptimizer 2019-05-15 11:46:30 +00:00
common [wasm] Allow ref.func to initialize globals 2019-05-14 13:05:21 +00:00
debugger Reland "[Test] Update tests to work with lazy feedback allocation." 2019-05-08 12:51:13 +00:00
fuzzer Discard CHECK failure messages for official builds to save binary size 2019-05-10 19:33:04 +00:00
inspector [wasm] Display wasm globals in the inspector 2019-05-10 18:35:44 +00:00
intl [Intl] Remove harmony-locale flag 2019-05-11 06:02:42 +00:00
js-perf-test [js-perf-test] Add additional benchmarks for boolean constructor 2019-05-15 09:07:15 +00:00
memory [perf] Refactor the Memory benchmark to use d8 2019-05-06 15:10:57 +00:00
message [wasm] Fix source positions for rethrown exceptions. 2019-05-09 10:44:58 +00:00
mjsunit [lite] Don't skip tests that need feedback vector in lite mode 2019-05-15 09:10:00 +00:00
mkgrokdump Reland "[heap] Skip ro-space from heap iterators, add CombinedHeapIterator." 2019-05-02 17:35:18 +00:00
mozilla Reland "[test] Remove longer timeout on bots" 2019-05-02 13:04:29 +00:00
preparser [test] Don't test jitless without embedded-builtins 2019-02-26 14:33:01 +00:00
test262 [bigint] Fix toJSON function lookup 2019-05-14 11:53:07 +00:00
torque [torque] Introduce @abstract annotation for Torque classes 2019-05-14 16:58:53 +00:00
unittests [torque] check runtime function signatures properly 2019-05-14 13:35:32 +00:00
wasm-js [testrunner] handle timeout param in file 2019-02-27 17:49:17 +00:00
wasm-spec-tests Clean up infra owners 2019-05-15 11:18:43 +00:00
webkit [test] Stress wasm code gc in "stress_background_compile" 2019-05-02 09:56:05 +00:00
BUILD.gn [tools] Implement confidence-based number of runs 2019-05-09 09:42:28 +00:00
OWNERS Clean up infra owners 2019-05-15 11:18:43 +00:00