v8/test/unittests
mtrofin 5d954d6506 [turbofan] Deferred blocks splintering.
This change encompasses what is necessary to enable stack checks in loops without suffering large regressions.

Primarily, it consists of a new mechanism for dealing with deferred blocks by "splintering", rather than splitting, inside deferred blocks.

My initial change was splitting along deferred block boundaries, but the regression introduced by stackchecks wasn't resolved conclusively. After investigation, it appears that just splitting ranges along cold block boundaries leads to a greater opportunity for moves on the hot path, hence the suboptimal outcome.

The alternative "splinters" ranges rather than splitting them. While splitting creates 2 ranges and links them (parent-child), in contrast, splintering creates a new independent range with no parent-child relation to the original. The original range appears as if it has a liveness hole in the place of the splintered one. All thus obtained ranges are then register allocated with no change to the register allocator.

The splinters (cold blocks) do not conflict with the hot path ranges, by construction. The hot path ones have less pressure to split, because we remove a source of conflicts. After allocation, we merge the splinters back to their original ranges and continue the pipeline. We leverage the previous changes made for deferred blocks (determining where to spill, for example).

Review URL: https://codereview.chromium.org/1305393003

Cr-Commit-Position: refs/heads/master@{#30357}
2015-08-25 14:47:38 +00:00
..
base [turbofan] Use appropriate type for NodeId. 2015-06-12 12:03:19 +00:00
compiler [turbofan] Deferred blocks splintering. 2015-08-25 14:47:38 +00:00
heap When allocation rate is low and we are close to the new space limit, we should perform a scavenge during idle time. 2015-08-06 12:10:42 +00:00
interpreter [Interpreter] Add implementations of arithmetic binary op bytecodes. 2015-08-25 11:31:20 +00:00
libplatform Fix memory-leak in default platform implementation of delayed tasks. 2015-07-02 14:37:32 +00:00
char-predicates-unittest.cc Conform to the unittest naming convention. 2014-10-10 08:06:21 +00:00
counters-unittest.cc Fix more -Werror=sign-compare bugs with GCC 4.9.2 2015-05-11 11:07:15 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
run-all-unittests.cc Rework startup-data-util. 2015-08-14 12:11:46 +00:00
test-utils.cc Debugger: move implementation to a separate folder. 2015-07-31 11:08:15 +00:00
test-utils.h Pass ArrayBuffer::Allocator via Isolate::CreateParams 2015-04-29 09:54:43 +00:00
unittests.gyp Allowing optional build of a WASM prototype behind a gyp define. 2015-08-18 15:04:11 +00:00
unittests.status Fix platform unittests. 2014-11-25 07:22:00 +00:00