Go to file
Caitlin Potter bf84766a2c [CloneObjectIC] clone MutableHeapNumbers instead of referencing them
Adds a helper macro "CloneIfMutablePrimitive", which tests if the
operand is a MutableHeapNumber, and if so, clones it, otherwise
returning the original value.

Also modifies the signature of "CopyPropertyArrayValues" to take a
"DestroySource" enum, indicating whether or not the resulting object is
supplanting the source object or not, and removes all default
parameters from that macro (which were not used anyways).

This corrects the issue reported in chromium:901301, where
StaNamedOwnProperty was replacing the value of a MutableHeapNumber
referenced by both the cloned object and the source object.

BUG=chromium:901301, v8:7611
R=cbruni@chromium.org, jkummerow@chromium.org

Change-Id: I43df1ddc84dfa4840e680b6affeba452ce0b6629
Reviewed-on: https://chromium-review.googlesource.com/c/1318096
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57304}
2018-11-07 03:15:45 +00:00
benchmarks
build_overrides
custom_deps
docs
gni
include
infra
samples
src [CloneObjectIC] clone MutableHeapNumbers instead of referencing them 2018-11-07 03:15:45 +00:00
test [CloneObjectIC] clone MutableHeapNumbers instead of referencing them 2018-11-07 03:15:45 +00:00
testing
third_party
tools [testrunner] Remove last use of 'simulator' and its handling code 2018-11-06 20:04:38 +00:00
.clang-format
.clang-tidy
.editorconfig
.git-blame-ignore-revs
.gitattributes
.gitignore
.gn
.vpython
.ycm_extra_conf.py
AUTHORS
BUILD.gn
ChangeLog
CODE_OF_CONDUCT.md
codereview.settings
DEPS s390x: ignore luci-go on the arch because it's missing 2018-11-06 19:23:35 +00:00
LICENSE
LICENSE.fdlibm
LICENSE.strongtalk
LICENSE.v8
LICENSE.valgrind
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://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.