Go to file
danno cca5e74a58 [turbofan]: Add a context relaxation Reducer
In many cases, the context that TurboFan's ASTGraphBuilder or subsequent
reduction operations attaches to nodes does not need to be that exact
context, but rather only needs to be one with the same native context,
because it is used internally only to fetch the native context, e.g. for
creating and throwing exceptions.

This reducer recognizes common cases where the context that is specified
for a node can be relaxed to a canonical, less specific one. This
relaxed context can either be the enclosing function's context or a specific
Module or Script context that is explicitly created within the function.

This optimization is especially important for TurboFan-generated code stubs
which use context specialization and inlining to generate optimal code.
Without context relaxation, many extraneous moves are generated to pass
exactly the right context to internal functions like ToNumber and
AllocateHeapNumber, which only need the native context. By turning context
relaxation on, these moves disappear because all these common internal
context uses are unified to the context passed into the stub function, which
is typically already in the correct context register and remains there for
short stubs. It also eliminates the explicit use of a specialized context
constant in the code stub in these cases, which could cause memory leaks.

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

Cr-Commit-Position: refs/heads/master@{#29763}
2015-07-20 17:16:14 +00:00
benchmarks Revert "Refactoring: Make gtest testsuite the default." 2014-09-02 09:17:26 +00:00
build Add -Wshorten-64-to-32 flag to mac builds. 2015-07-14 16:05:29 +00:00
include Delete APIs deprecated since last release 2015-07-17 09:27:00 +00:00
infra V8 project metadata 2015-07-13 14:40:44 +00:00
samples Let the second pass phantom callbacks run in a separate task on the foreground thread. 2015-07-15 12:26:11 +00:00
src [turbofan]: Add a context relaxation Reducer 2015-07-20 17:16:14 +00:00
test [turbofan]: Add a context relaxation Reducer 2015-07-20 17:16:14 +00:00
testing Converted V8 CQ config to proto-format 2015-05-28 15:02:53 +00:00
third_party/binutils Ignore unsupport host architectures for binutils download. 2015-02-10 07:51:42 +00:00
tools [turbofan]: Add a context relaxation Reducer 2015-07-20 17:16:14 +00:00
.clang-format Change clang-format config to allow for two empty lines between functions 2013-12-03 10:39:21 +00:00
.gitignore Adding ecmascript simd tests. 2015-05-19 10:14:36 +00:00
.ycm_extra_conf.py [ycm] The YouCompleteMe configuration is not VIM specific. 2015-02-12 07:21:13 +00:00
AUTHORS Make NumberFormat use the ICU currency data, fix bug in NumberFormat 2015-07-17 15:08:08 +00:00
BUILD.gn [turbofan]: Add a context relaxation Reducer 2015-07-20 17:16:14 +00:00
ChangeLog Update change log to match roll branch. 2015-05-18 15:03:50 +00:00
codereview.settings Removed TRYSERVER_ROOT since this is not used anymore 2015-01-28 11:04:32 +00:00
DEPS Update V8 DEPS. 2015-07-19 03:26:40 +00:00
LICENSE Updates to the license information of third party components. 2015-06-16 12:37:50 +00:00
LICENSE.strongtalk Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
LICENSE.v8 Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
LICENSE.valgrind Add LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to the v8 2011-02-03 07:10:06 +00:00
Makefile Add goma=on option to Makefile build. 2015-07-09 09:50:59 +00:00
Makefile.android Reland [android] Migrate more configs to gyp. 2015-06-26 12:04:09 +00:00
Makefile.nacl Use the pnacl-clang toolchain for (P)NaCL builds 2014-10-06 08:10:50 +00:00
OWNERS Update OWNERS file. 2015-07-16 11:37:51 +00:00
PRESUBMIT.py Improve presubmit check for BUG line 2015-07-17 12:21:47 +00:00
README.md Fix line breaks in md documentation. 2015-03-25 14:54:54 +00:00
WATCHLISTS Removing hablich from auto CC of x87 2015-06-30 11:29:57 +00:00

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/*