Go to file
littledan 0ff7b4830c Implement immutable prototype chains
This patch implements "immutable prototype exotic objects" from the ECMAScript
spec, which are objects whose __proto__ cannot be changed, but are not otherwise
frozen. They are introduced in order to prevent a Proxy from being introduced
to the prototype chain of the global object.

The API is extended by a SetImmutablePrototype() call in ObjectTemplate, which
can be used to vend new immutable prototype objects. Additionally, Object.prototype
is an immutable prototype object.

In the implementation, a new bit is added to Maps to say whether the prototype is
immutable, which is read by SetPrototype. Map transitions to the immutable prototype
state are not saved in the transition tree because the main use case is just for
the prototype chain of the global object, which there will be only one of per
Context, so no need to take up the extra word for a pointer in each full transition
tree.

BUG=v8:5149

Review-Url: https://codereview.chromium.org/2108203002
Cr-Commit-Position: refs/heads/master@{#37482}
2016-07-01 19:20:11 +00:00
benchmarks Revert "Refactoring: Make gtest testsuite the default." 2014-09-02 09:17:26 +00:00
build_overrides [gn] Fix another ia32/x86 typo. 2016-06-17 07:44:41 +00:00
docs [Docs] Removed unused docs because they are moved to GitHub 2015-11-19 10:23:30 +00:00
gni [gn] Switch linux64 debug and internal snapshot to gn 2016-06-30 08:59:32 +00:00
gypfiles AIX: Adding bbigtoc link step option to fix TOC overflow error 2016-06-28 12:45:42 +00:00
include Implement immutable prototype chains 2016-07-01 19:20:11 +00:00
infra [gn] Switch custom snapsot bot to gn 2016-06-30 11:26:30 +00:00
samples Provide a convenience array buffer allocator 2016-06-29 07:42:40 +00:00
src Implement immutable prototype chains 2016-07-01 19:20:11 +00:00
test Implement immutable prototype chains 2016-07-01 19:20:11 +00:00
testing Converted V8 CQ config to proto-format 2015-05-28 15:02:53 +00:00
third_party/binutils [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
tools [test] Remove presubmit logic from test runner. 2016-06-30 14:30:43 +00:00
.clang-format [formatting] Remove the formatting requirement for 2 empty lines between declarations. 2016-01-25 09:50:17 +00:00
.gitignore [mb] Add mb config 2016-06-09 09:12:54 +00:00
.gn [gn] Use one source of truth for test source files. 2016-06-28 13:24:08 +00:00
.ycm_extra_conf.py Use C++11 / gnu++11, not 0x 2016-03-22 15:24:43 +00:00
AUTHORS Parser: Report use counts once per feature 2016-06-14 21:41:31 +00:00
BUILD.gn Hooking up asm-wasm conversion. 2016-07-01 05:28:43 +00:00
ChangeLog [Release] Update ChangeLog file 2016-02-17 21:29:09 +00:00
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 Use v8-reviews@ for review mail, so v8-dev@ is free for dev discussions 2015-09-09 08:14:11 +00:00
DEPS Update V8 DEPS. 2016-07-01 04:32:20 +00:00
LICENSE Updates to the license information of third party components. 2015-06-16 12:37:50 +00:00
LICENSE.fdlibm Add LICENSE.fdlibm for all the fdlibm imported sources. 2016-06-09 07:17:03 +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 [test] Remove presubmit logic from test runner. 2016-06-30 14:30:43 +00:00
Makefile.android [build] Fix d8-for-Android builds 2016-05-20 12:10:45 +00:00
Makefile.nacl [gn] Move build to gypfiles 2016-04-29 10:11:11 +00:00
OWNERS Adding some wasm committers to top level OWNERS. 2016-06-28 16:28:06 +00:00
PRESUBMIT.py Enable check for non-gender neutral pronouns 2016-06-23 07:15:18 +00:00
README.md [Docs] Removed unused docs because they are moved to GitHub 2015-11-19 10:23:30 +00:00
snapshot_toolchain.gni Try to reland v8_snapshot GN build changes, take #3 2016-05-20 07:00:09 +00:00
WATCHLISTS [GN] Watchlist upadate to track gyp changes. 2016-05-17 08:14:26 +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.