23a8837fcc
Reason for revert: Weird endless loop in TopLevelLiveRange::Merge() due to always splitting first and not making progress. See comments, unfortunately no useable repro. Original issue's description: > [turbofan] Splinter into one range. > > Before this CL, we created one live range per successive set of > deferred blocks. For scenarios with many such blocks, this creates > an upfront pressure for the register allocator to deal with many ranges. > Linear sorts ranges, which is a super-linear operation. > > The change places all deferred intervals into one range, meaning that, > at most, there will be twice as many live ranges as the original set. In > pathological cases (benchmarks/Compile/slow_nbody1.js), this change > halves the compilation time. We see some improvements elsewhere, > notably SQLite at ~4-5%. > > We may be able to avoid the subsequent merge. Its cost is the > additional ranges it may need to create. The sole reason for the merge > phase is to provide an unchanged view of the world to the subsequent > phases. With the at-most-one splinter model, we may be able to teach > the other phases about splintering - should we find perf hindrances > due to merging. > > Committed: https://crrev.com/efdcd20267870276c5824f1ccf4e171ac378f7ae > Cr-Commit-Position: refs/heads/master@{#31224} TBR=jarin@chromium.org,mtrofin@google.com,mtrofin@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1403163003 Cr-Commit-Position: refs/heads/master@{#31300} |
||
---|---|---|
benchmarks | ||
build | ||
docs | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party/binutils | ||
tools | ||
.clang-format | ||
.gitignore | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
codereview.settings | ||
DEPS | ||
LICENSE | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
Makefile | ||
Makefile.android | ||
Makefile.nacl | ||
OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
snapshot_toolchain.gni | ||
WATCHLISTS |
V8 JavaScript Engine
V8 is Google's open source JavaScript engine.
V8 implements ECMAScript as specified in ECMA-262.
V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
V8 can run standalone, or can be embedded into any C++ application.
V8 Project page: https://code.google.com/p/v8/
Getting the Code
Checkout depot tools, and run
fetch v8
This will checkout V8 into the directory v8
and fetch all of its dependencies.
To stay up to date, run
git pull origin
gclient sync
For fetching all branches, add the following into your remote
configuration in .git/config
:
fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
fetch = +refs/tags/*:refs/tags/*
Contributing
Please follow the instructions mentioned on the V8 wiki.