Go to file
Adam Klein ededfcd212 Skip hole initialization of lexical variables when possible
This patch expands scope analysis to skip hole initialization
when it can be determined statically that no hole checks will
be generated at runtime.

Two conditions must be met to safely eliminate hole initialization:
  - There must not exist a VariableProxy referencing this Variable
    whose HoleCheckMode is kRequired
  - The Variable must be stack allocated; any other allocation implies
    that it may be accessed from not-yet-analyzed scopes (other modules,
    inner functions, or eval code) and that code may require
    hole checks.

The new logic required removing debug code in full-codegen which is
now incorrect in some cases.

Also fixed Variable's bitfield helpers to take no more space than needed.

Bug: chromium:651637
Change-Id: Ie5ac326af4e05b7a5c3c37cd4d0afba6a51a504d
Reviewed-on: https://chromium-review.googlesource.com/494006
Commit-Queue: Adam Klein <adamk@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45170}
2017-05-08 19:28:30 +00:00
benchmarks
build_overrides Remove build_overrides/v8.gni. 2017-01-26 20:18:58 +00:00
docs
gni [build] Remove remaining disable-inspector options in GN 2017-04-05 17:59:07 +00:00
gypfiles [build] Disable strict-overflow check on gcc 2017-05-04 13:36:39 +00:00
include [Api] Add an idle time garbage collection callback flag to GCCallbackFlags. 2017-05-08 18:09:39 +00:00
infra [build] Add MB and CQ configs for new gcc debug bots 2017-05-04 15:03:13 +00:00
samples Reland of land "Turn libbase into a component" (patchset #1 id:1 of https://codereview.chromium.org/2396933002/ ) 2016-10-07 07:56:52 +00:00
src Skip hole initialization of lexical variables when possible 2017-05-08 19:28:30 +00:00
test Skip hole initialization of lexical variables when possible 2017-05-08 19:28:30 +00:00
testing Use GTEST_LANG_CXX11 in V8 2016-07-25 13:06:42 +00:00
third_party Roll third_party/inspector_protocol to efefa86c3183d307f0a0e53bf568fe57c5b58849 2017-04-28 01:43:03 +00:00
tools Whitespace change to capture perf changes 2017-05-08 08:50:53 +00:00
.clang-format [clang-format] Don't derive pointer alignment 2017-01-17 09:28:19 +00:00
.gitignore [wasm] Move the wasm fuzzer corpus to a different directory 2017-04-28 23:29:41 +00:00
.gn [build] Add v8gen support for PPC/s390 architecture 2017-03-13 15:05:51 +00:00
.ycm_extra_conf.py Use C++11 / gnu++11, not 0x 2016-03-22 15:24:43 +00:00
AUTHORS Migrate Number constants and undefined to C++ 2017-02-27 08:20:45 +00:00
BUILD.gn [cleanup][wasm][fuzzer] Share code among the different fuzzers. 2017-05-08 09:58:26 +00:00
ChangeLog
CODE_OF_CONDUCT.md Explicitly state that the Chromium Code of Conduct also applies to V8 2016-03-02 09:51:24 +00:00
codereview.settings
DEPS Update V8 DEPS. 2017-05-08 07:02:41 +00:00
LICENSE
LICENSE.fdlibm Add LICENSE.fdlibm for all the fdlibm imported sources. 2016-06-09 07:17:03 +00:00
LICENSE.strongtalk
LICENSE.v8
LICENSE.valgrind
Makefile Introduce mkgrokdump to update tools/v8heapconst.py. 2017-04-20 06:15:02 +00:00
Makefile.android [build] Fix d8-for-Android builds 2016-05-20 12:10:45 +00:00
OWNERS Update to OWNER files. 2017-03-21 10:01:16 +00:00
PRESUBMIT.py Reland "Make unittest link correctly again" 2017-05-03 10:44:07 +00:00
README.md
snapshot_toolchain.gni Use clang for snapshot_toolchain by default, except on ChromeOS. 2016-08-23 14:04:27 +00:00
WATCHLISTS [watchlists] Added parser watchlist. 2017-05-03 12:30:13 +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://github.com/v8/v8/wiki

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.