Go to file
Tobias Tebbi 2579951648 [turbofan] Masking/poisoning in codegen (optimized code, arm)
This introduces masking of loads with speculation bit during code generation.
At the moment, this is done only under the
--branch-load-poisoning flag, and this CL enlarges the set of supported
platforms from {x64} to {x64, arm}.

Overview of changes:
- new register configuration configuration with one register reserved for
  the speculation poison/mask (kSpeculationPoisonRegister).
- in codegen, we introduce an update to the poison register at the starts
  of all successors of branches (and deopts) that are marked as safety
  branches (deopts).
- in memory optimizer, we lower all field and element loads to PoisonedLoads.
- poisoned loads are then masked in codegen with the poison register.
  * only integer loads are masked at the moment.

Bug: chromium:798964
Change-Id: I37f5531fd18a96038ea8b059641e3dfc852c2d34
Reviewed-on: https://chromium-review.googlesource.com/913354
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51374}
2018-02-19 15:25:23 +00:00
benchmarks Fix common misspellings 2017-08-02 09:35:28 +00:00
build_overrides [ndk] Change android ndk root for v8 2018-01-11 08:10:33 +00:00
docs
gni [GN][MIPS] Add ldso_path and gcc_target_rpath config on MIPS 2018-01-30 11:51:24 +00:00
include [api] Add API for annotating retainer of a strong global handle. 2018-02-19 11:42:03 +00:00
infra [build] Remove last vestiges of gyp from MB configs 2018-02-12 13:53:02 +00:00
samples [gyp] move gyp files from src to gypfiles. 2018-01-23 09:54:36 +00:00
src [turbofan] Masking/poisoning in codegen (optimized code, arm) 2018-02-19 15:25:23 +00:00
test [esnext] fix tagged template caching strategy for eval caching 2018-02-19 15:15:01 +00:00
testing [gyp] move build targets for tests to gypfiles. 2018-01-30 06:31:00 +00:00
third_party Move detect_v8_host_arch out of gypfiles. 2018-01-31 08:21:01 +00:00
tools Reland "[bigint] Add BigInt64Array, BigUint64Array" 2018-02-19 10:23:18 +00:00
.clang-format
.editorconfig Add .editorconfig 2017-07-28 13:39:24 +00:00
.git-blame-ignore-revs [build] Add DEPS formatting to hyper-blame 2017-10-09 14:08:45 +00:00
.gitignore [gyp] remove gyp files. 2018-02-08 20:04:06 +00:00
.gn For building v8 using gn on aix_ppc64, linux_s390x and linux_ppc64(both LE and BE). 2017-05-12 01:35:09 +00:00
.vpython Add a comment for the VPython dep 2017-10-25 12:23:35 +00:00
.ycm_extra_conf.py [ycm] Switch from gnu++11 to gnu++14 2017-11-27 07:48:21 +00:00
AUTHORS Reland: Reimplement Object.entries/values as CSA to optimize performance. 2018-02-08 10:12:32 +00:00
BUILD.gn [builtins] Add v8_enable_embedded_builtins gn flag 2018-02-16 13:52:25 +00:00
ChangeLog [tools] Merge ChangeLog from latest release 2017-12-19 12:30:56 +00:00
CODE_OF_CONDUCT.md
codereview.settings Make Gerrit the default code review for V8 2017-06-30 17:37:37 +00:00
DEPS Update V8 DEPS. 2018-02-17 04:53:59 +00:00
LICENSE
LICENSE.fdlibm
LICENSE.strongtalk
LICENSE.v8
LICENSE.valgrind
OWNERS Update top-level OWNERS. 2018-01-19 08:37:12 +00:00
PRESUBMIT.py [gyp] remove gyp files. 2018-02-08 20:04:06 +00:00
README.md
snapshot_toolchain.gni MIPS[64]: Generate snapshots on MIPS big-endian targets 2017-11-24 19:00:32 +00:00
WATCHLISTS [gyp] remove gyp files. 2018-02-08 20:04:06 +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.