Commit Graph

31120 Commits

Author SHA1 Message Date
ivica.bogosavljevic
4a96bc2a94 Fix MIPS64 compilation issue with GN build system
NOTRY=true

Review-Url: https://codereview.chromium.org/1995473002
Cr-Commit-Position: refs/heads/master@{#36328}
2016-05-18 14:44:37 +00:00
yangguo
2b60b3580e [serializer] cosmetic changes to SerializerReference.
R=vogelheim@chromium.org

Review-Url: https://codereview.chromium.org/1991793002
Cr-Commit-Position: refs/heads/master@{#36327}
2016-05-18 14:39:42 +00:00
mythria
b498f0c93b [Interpreter] Removes failure expectation for gc related blink_tests.
Updates blink_tests/TestExpecations by removing failure expectation for
gc related tests. These tests are modified to work with ignition by
the following cls:
https://codereview.chromium.org/1972943002/
https://codereview.chromium.org/1950613005/

BUG=v8:4280,chromium:595672
LOG=N

Review-Url: https://codereview.chromium.org/1985673002
Cr-Commit-Position: refs/heads/master@{#36326}
2016-05-18 14:15:39 +00:00
mstarzinger
6046e4a10a [turbofan] Remove verbose escape analysis helper methods.
This is a pure refactoring that removes unnecessary wrapper methods from
the EscapeAnalysis class. This completely removes the notion of "Alias"
from the interface.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1989243002
Cr-Commit-Position: refs/heads/master@{#36325}
2016-05-18 14:05:50 +00:00
mstarzinger
d5aa995e3c [turbofan] Make escape analysis non-experimental.
This promotes the escape analysis from an experimental feature to be a
fully supported feature. The main goal is to unleach ClusterFuzz on the
implementation so that we can stabilize it.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1989833002
Cr-Commit-Position: refs/heads/master@{#36324}
2016-05-18 13:51:01 +00:00
jyan
246d5bba8f PPC/S390: Fix %FunctionGetName and %_ClassOf for bound functions.
port 8e303dd0b3

R=bmeurer@chromium.org, yangguo@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=v8:5010

Review-Url: https://codereview.chromium.org/1986343002
Cr-Commit-Position: refs/heads/master@{#36323}
2016-05-18 13:48:28 +00:00
mstarzinger
84a8e817a5 [turbofan] Hide escape analysis internals from interface.
This is pure refactoring that moves many internal details of the escape
analysis from the header into the compilation unit. The goal of this is
to simplify the interface for readability.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1991723003
Cr-Commit-Position: refs/heads/master@{#36322}
2016-05-18 13:45:45 +00:00
cbruni
e4c3be5af3 [keys] KeyAccumulator cleanups
Move most of JSReceiver::GetKeys to the KeyAccumulator

BUG=

Review-Url: https://codereview.chromium.org/1989263002
Cr-Commit-Position: refs/heads/master@{#36321}
2016-05-18 13:43:08 +00:00
akos.palfi
233ca4cee3 MIPS64: Make GCC happy.
BUG=

Review-Url: https://codereview.chromium.org/1987253002
Cr-Commit-Position: refs/heads/master@{#36320}
2016-05-18 13:30:31 +00:00
machenbach
64a518fa8e [gn] Make gyp include dirs equal to gn
BUG=chromium:474921
LOG=n

Review-Url: https://codereview.chromium.org/1989193002
Cr-Commit-Position: refs/heads/master@{#36319}
2016-05-18 12:02:05 +00:00
yangguo
735fa0c478 [serializer] prepare attached references for general use.
Currently attached references are only used for global proxy, source
string and code stubs. Mid-term future we want to use attached
references for arbitrary objects (in fixed order) provided from outside.

This change renames BackReference to SerializerReference to include both
back references and attached references.

R=mtrofin@chromium.org, vogelheim@chromium.org

Review-Url: https://codereview.chromium.org/1992723002
Cr-Commit-Position: refs/heads/master@{#36318}
2016-05-18 11:30:33 +00:00
jkummerow
e83ac2342d [arm][arm64] Remove COHERENT_CACHE support
We have evidence (see r34896) that this avoids crashes.

BUG=chromium:524337

Review-Url: https://codereview.chromium.org/1995483002
Cr-Commit-Position: refs/heads/master@{#36317}
2016-05-18 11:08:52 +00:00
balazs.kilvady
c7f5419fa5 MIPS64: Add a check to addiu simulation according to the specification.
BUG=

Review-Url: https://codereview.chromium.org/1984313002
Cr-Commit-Position: refs/heads/master@{#36316}
2016-05-18 11:05:38 +00:00
akos.palfi
253050cbf7 MIPS64: Fix '[Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.'
Port 39738bc905

BUG=

Review-Url: https://codereview.chromium.org/1990823002
Cr-Commit-Position: refs/heads/master@{#36315}
2016-05-18 10:41:25 +00:00
rmcilroy
776d4d87a9 [Interpreter] Inline Inc/Dec code stubs into bytecode handlers.
BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1980463003
Cr-Commit-Position: refs/heads/master@{#36314}
2016-05-18 09:45:13 +00:00
neis
3560d9bd58 [runtime] Fix effect of setting .prototype on generator functions.
When setting a generator function's  "prototype" property to a non-object, the
prototype of new generator instances should be %GeneratorPrototype%, not
%ObjectPrototype%.

R=verwaest@chromium.org
BUG=v8:5011

Review-Url: https://codereview.chromium.org/1982203003
Cr-Commit-Position: refs/heads/master@{#36313}
2016-05-18 09:18:12 +00:00
neis
75140f39dd [compiler] Remove obsolete JSYield operator.
R=bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1981323002
Cr-Commit-Position: refs/heads/master@{#36312}
2016-05-18 08:55:33 +00:00
mstarzinger
992c9c4d7a [turbofan] Enable all escape analysis tests.
R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1980503002
Cr-Commit-Position: refs/heads/master@{#36311}
2016-05-18 08:01:44 +00:00
rmcilroy
39738bc905 [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
In order to support compiling to baseline on return we need to be able to
return to the actual return address. With this change this is what the
Return bytecode now does, removing the need for the
InterpreterExitTrampoline.

This change also removes the InterpreterNotifyDeoptXXX builtins and
unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
change, FullCodegenerator::State is moved to Deoptimize::BailoutState.

BUG=v8:4280
LOG=N

Committed: https://crrev.com/34c9626e2ee56fe805de549697ca5323aed7cb66
Cr-Commit-Position: refs/heads/master@{#36288}

Review-Url: https://codereview.chromium.org/1969423002
Cr-Commit-Position: refs/heads/master@{#36310}
2016-05-18 07:52:13 +00:00
hablich
cab4685e35 Revert of Ship Turbofan optimization for try-catch and try-finally. (patchset #1 id:1 of https://codereview.chromium.org/1946883003/ )
Reason for revert:
Reverted because of
BUG=chromium:611885

Original issue's description:
> Ship Turbofan optimization for try-catch and try-finally.
>
> Committed: https://crrev.com/b84b01e6d2d8a0ed1e6b9186a5af755bab4bac9a
> Cr-Commit-Position: refs/heads/master@{#36005}

TBR=bmeurer@chromium.org,jarin@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review-Url: https://codereview.chromium.org/1994543002
Cr-Commit-Position: refs/heads/master@{#36309}
2016-05-18 07:49:27 +00:00
bmeurer
91a2ea815b [turbofan] We never use Int64Constant for branch/select conditions.
Remove dead code to optimize Int64Constants as branch/select conditions,
because we either have tagged booleans or bits represented as word32.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1994533002
Cr-Commit-Position: refs/heads/master@{#36308}
2016-05-18 07:20:19 +00:00
rmcilroy
b8fe4b0fb4 [TurboFan] Fix missing initialization of must_save_lr in OutOfLineRecordWrite.
One of the Arm OutOfLineRecordWrite was missing initialiation of must_save_lr

Review-Url: https://codereview.chromium.org/1988623003
Cr-Commit-Position: refs/heads/master@{#36307}
2016-05-18 07:12:54 +00:00
jgruber
5bf3699221 [debugger] Refactor LiveEdit function info collection
This moves collection of function information from its previous spot in
the standard compiler pipeline (GetSharedFunctionInfo() and
CompileTopLevel()) to its new location in CompileForLiveEdit. Nesting
information is reconstructed by traversing the AST.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1971683002
Cr-Commit-Position: refs/heads/master@{#36306}
2016-05-18 07:10:24 +00:00
zhengxing.li
dcc283e823 X87: Fix %FunctionGetName and %_ClassOf for bound functions.
port 8e303dd0b3 (r36276)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1989153002
Cr-Commit-Position: refs/heads/master@{#36305}
2016-05-18 06:58:19 +00:00
bmeurer
c5a71f029f [turbofan] Turn common Guard operator into simplified TypeGuard.
The type guard should never be used after the effect/control
linearization pass, so making it a simplified operator better
expresses the intended use. Also this way none of the common
operators actually has any dependency on the type system.

Drive-by-fix: Properly print the type parameter to a TypeGuard operator.

BUG=chromium:612142
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1994503002
Cr-Commit-Position: refs/heads/master@{#36304}
2016-05-18 06:19:30 +00:00
zhengxing.li
529e333258 X87: [es6] Reintroduce the instanceof operator in the backends.
port 551e0aa11b (r36275)

  original commit message:
  This adds back the instanceof operator support in the backends and
  introduces a @@hasInstance protector cell on the isolate that guards the
  fast path for the InstanceOfStub. This way we recover the ~10%
  regression on Octane EarleyBoyer in Crankshaft and greatly improve
  TurboFan and Ignition performance of instanceof.

BUG=

Review-Url: https://codereview.chromium.org/1991663002
Cr-Commit-Position: refs/heads/master@{#36303}
2016-05-18 05:45:35 +00:00
bmeurer
33e571ff4b [turbofan] Kill type Guard nodes during effect/control linearization.
These guards are useless anyways once you make it throw the
effect/control linearizer because all memory operations and
calls are connected to the control and/or effect chain anyways
afterwards.

Drive-by-fix: Fail in the InstructionSelector if we ever see
a Guard node.

R=jarin@chromium.org
BUG=chromium:612142

Review-Url: https://codereview.chromium.org/1980383002
Cr-Commit-Position: refs/heads/master@{#36302}
2016-05-18 05:38:22 +00:00
bmeurer
4e0105d876 [turbofan] Introduce CheckPoint common operator.
This operator will be used to carry eager frame states, and is hooked up
to the effect chain with a control dependency to avoid hosting out of
control structures.

R=jarin@chromium.org
BUG=v8:5021

Review-Url: https://codereview.chromium.org/1993593002
Cr-Commit-Position: refs/heads/master@{#36301}
2016-05-18 05:28:31 +00:00
v8-autoroll
9e332635ce Update V8 DEPS.
Rolling v8/build to 01ca9403e7d6ba63e9a4b6df1cb5cb8397ff7b92

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/1989093002
Cr-Commit-Position: refs/heads/master@{#36300}
2016-05-18 03:28:30 +00:00
littledan
20fd70811f Ship removing extra intl functions
BUG=v8:3785

CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_noi18n_rel_ng

Review-Url: https://codereview.chromium.org/1985133002
Cr-Commit-Position: refs/heads/master@{#36299}
2016-05-18 00:22:22 +00:00
jshin
a4e0ee12e4 Make normalize, collator, breakiterator faster
1. Normalizer: Use ICU's normalizer2 API instead of deprecated
normalizer. Also uses quick scan method in the API to speed up in the
most common cases (almost normalized and the target is NFC)

2. In all three cases,  replace |v8::Utils::ToLocal(..)| with a more
efficient internal method.

BUG=v8:4983
TEST=intl/string/normal*, intl/collator/*, intl/break-iterator/*
TEST=test262/intl402/Collator/*, test262/built-ins/String/prototype/normalize/*
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_noi18n_rel_ng

Review-Url: https://codereview.chromium.org/1971943002
Cr-Commit-Position: refs/heads/master@{#36298}
2016-05-17 23:01:24 +00:00
bryleun
ef006c4257 S390: Added 96 new instructions to the simulator EVALUATE code.
R=joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com,jyan@ca.ibm.com

BUG=

Review-Url: https://codereview.chromium.org/1980913003
Cr-Commit-Position: refs/heads/master@{#36297}
2016-05-17 22:58:55 +00:00
mike
d0c65f93bf [parser] Relex restriction on reserved words
Some IdentifierNames are only included in the set of FutureReservedWords
for strict mode code. Outside of strict mode, these IdentifierNames may
be used as Identifiers. Notably, this includes their use as
BindingIdentifiers in LexicalBindings.

From ES2015 12.1.1 Static Semantics: Early Errors (Identifiers):

> It is a Syntax Error if this phrase is contained in strict mode code
> and the StringValue of IdentifierName is: "implements", "interface",
> "let", "package", "private", "protected", "public", "static", or
> "yield".

http://www.ecma-international.org/ecma-262/6.0/#sec-identifiers-static-semantics-early-errors

Due to a error in its heuristic for disambiguating the `let` token, V8
does not currently allow any of the strict-mode-only FutureReservedWords
to be used as a BindingIdentifier outside of strict mode.

Update V8's heuristic for disambiguating the `let` keyword to account
for strict mode, enabling these IdentifierNames to be used

BUG=v8:4918
LOG=N
R=adamk@chromium.org

Review-Url: https://codereview.chromium.org/1891453005
Cr-Commit-Position: refs/heads/master@{#36296}
2016-05-17 21:14:01 +00:00
rmcilroy
8352ad50e6 [Interpreter] Change LogicalNot to ToBooleanLogicalNot and add non-ToBoolean version.
Makes LogicalNot bytecode not do the ToBoolean operation, and add support in the
peephole optimizer to choose between the appropriate bytecode depending upon
whether the previous bytecode emitted a boolean or not.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1985033002
Cr-Commit-Position: refs/heads/master@{#36295}
2016-05-17 20:41:04 +00:00
machenbach
c473f2931d Revert of [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline. (patchset #6 id:170001 of https://codereview.chromium.org/1969423002/ )
Reason for revert:
Breaks
https://build.chromium.org/p/client.v8.ports/builders/V8%20Linux%20-%20arm%20-%20sim/builds/619

Might only affect pure release builds?

Original issue's description:
> [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
>
> In order to support compiling to baseline on return we need to be able to
> return to the actual return address. With this change this is what the
> Return bytecode now does, removing the need for the
> InterpreterExitTrampoline.
>
> This change also removes the InterpreterNotifyDeoptXXX builtins and
> unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
> change, FullCodegenerator::State is moved to Deoptimize::BailoutState.
>
> BUG=v8:4280
> LOG=N
>
> Committed: https://crrev.com/34c9626e2ee56fe805de549697ca5323aed7cb66
> Cr-Commit-Position: refs/heads/master@{#36288}

TBR=mstarzinger@chromium.org,oth@chromium.org,rmcilroy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4280

Review-Url: https://codereview.chromium.org/1986353002
Cr-Commit-Position: refs/heads/master@{#36294}
2016-05-17 19:47:00 +00:00
machenbach
0151651603 [gn] Port more build flags for gn
BUG=chromium:474921
LOG=n
NOTRY=true

Review-Url: https://codereview.chromium.org/1983093002
Cr-Commit-Position: refs/heads/master@{#36293}
2016-05-17 19:40:07 +00:00
titzer
f93066b3af [wasm] Remove renumbering of local variables from asm->wasm.
R=ahaas@chromium.org,bradnelson@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1980543002
Cr-Commit-Position: refs/heads/master@{#36292}
2016-05-17 17:57:34 +00:00
mstarzinger
328d6037dd [wasm] Allow validator to inspect entire module.
This changes the parser to keep around bodies for asm.js functions when
then asm.js validator is turned on. Eventually the validator will work
on one function at a time, but for now we validate the entire module at
once.

R=rossberg@chromium.org

Review-Url: https://codereview.chromium.org/1981333003
Cr-Commit-Position: refs/heads/master@{#36291}
2016-05-17 17:45:21 +00:00
jyan
e9aad72f39 PPC/S390: [es6] Reintroduce the instanceof operator in the backends.
port 551e0aa11b

Original Commit Messag:
  This adds back the instanceof operator support in the backends and
  introduces a @@hasInstance protector cell on the isolate that guards the
  fast path for the InstanceOfStub. This way we recover the ~10%
  regression on Octane EarleyBoyer in Crankshaft and greatly improve
  TurboFan and Ignition performance of instanceof.

R=bmeurer@chromium.org, ishell@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
TBR=hpayer@chromium.org,rossberg@chromium.org
BUG=chromium:597249, v8:4447
LOG=n

Review-Url: https://codereview.chromium.org/1989523002
Cr-Commit-Position: refs/heads/master@{#36290}
2016-05-17 17:38:13 +00:00
balazs.kilvady
bbb8ff1907 MIPS64: Fix 'Remove usages of Heap::NewSpaceStart and its external reference'.
Port f2a585935f

Original commit message:
Replace the uses with proper page flag lookups.

BUG=chromium:581412
LOG=N
TEST=mjsunit/allocation-site-info

Review-Url: https://codereview.chromium.org/1989483002
Cr-Commit-Position: refs/heads/master@{#36289}
2016-05-17 17:07:54 +00:00
rmcilroy
34c9626e2e [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
In order to support compiling to baseline on return we need to be able to
return to the actual return address. With this change this is what the
Return bytecode now does, removing the need for the
InterpreterExitTrampoline.

This change also removes the InterpreterNotifyDeoptXXX builtins and
unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
change, FullCodegenerator::State is moved to Deoptimize::BailoutState.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1969423002
Cr-Commit-Position: refs/heads/master@{#36288}
2016-05-17 16:46:33 +00:00
neis
2123afff52 Remove more unused bailout reasons.
There's a script for finding them (tools/check-unused-bailouts.sh), but make
sure you don't have an old .bailout-reason.h.swp or such around when using it...

R=mstarzinger@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1986173004
Cr-Commit-Position: refs/heads/master@{#36287}
2016-05-17 16:13:33 +00:00
mstarzinger
7cef5593e4 [turbofan] Escape analysis treats guard nodes as escaping.
This makes escape analysis treat all guard nodes in the graph as an
escaping use. We eventually want to properly handle guard nodes, this
just serves as a temporary workaround to get things going.

R=bmeurer@chromium.org
BUG=v8:602595
LOG=n

Review-Url: https://codereview.chromium.org/1972323004
Cr-Commit-Position: refs/heads/master@{#36286}
2016-05-17 15:47:35 +00:00
mstarzinger
639ce6027b [turbofan] Simplify escape analysis VerifyReplacement.
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1984203002
Cr-Commit-Position: refs/heads/master@{#36285}
2016-05-17 14:46:47 +00:00
ssanfilippo
101e076b34 [Interpreter] List top dispatch sources and destinations for a given Ignition bytecode.
This commit introduces a new mode for bytecode_dispatches_report.py
which reports the top sources of dispatches to a given bytecode and
the top destinations of dispatches from the same bytecode.

The bytecode name is passed with --top-dispatches-for-bytecode
(short form: -f), while the number of sources and destinations to
show is controlled with -n.

BUG=v8:4899
LOG=N

Review-Url: https://codereview.chromium.org/1979233002
Cr-Commit-Position: refs/heads/master@{#36284}
2016-05-17 14:44:04 +00:00
jgruber
62b397a3a7 [compiler] Add a traversing AST visitor
Contrary to AstVisitor, which does not implement any traversal logic,
AstTraversalVisitor provides default implementations for each Visit*
function which walk through the AST. It is intended to be used as a base
class for visitors which are only interested in a small portion of the
AST.

R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1963243003
Cr-Commit-Position: refs/heads/master@{#36283}
2016-05-17 14:11:29 +00:00
aseemgarg
6e170c9fe1 [wasm] remove extra nops in asm-wasm
R=bradnelson@chromium.org,titzer@chromium.org
BUG=v8:4203
LOG=Y

Review-Url: https://codereview.chromium.org/1982293002
Cr-Commit-Position: refs/heads/master@{#36282}
2016-05-17 14:06:37 +00:00
neis
b9bfbcb558 Remove now-unused kIllegalBytecode bailout reason.
R=mstarzinger@chromium.org, oth@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1988573003
Cr-Commit-Position: refs/heads/master@{#36281}
2016-05-17 13:36:18 +00:00
jacob.bramley
b5413f7e94 [arm] Fix platform requirements for ldrd and strd.
These instructions were available before V8's baseline (ARMv6). V8 can
always assume that they're present.

BUG=

Review-Url: https://codereview.chromium.org/1985013002
Cr-Commit-Position: refs/heads/master@{#36280}
2016-05-17 13:26:34 +00:00
epertoso
f43ed04f50 [ignition] Inline the binary op TurboFan code stubs in the bytecode handlers.
Trying to reland http://crrev.com/1974293002.

This time some blocks have been shuffled around in the AddStub so that the frame still doesn't get built for the fast path.

Also disables the DCHECK(!is_default_snapshot) in snapshot-common.cc if --debug-code is specified. This was causing cctest to fail on arm64 debug builds.

Review-Url: https://codereview.chromium.org/1980333002
Cr-Commit-Position: refs/heads/master@{#36279}
2016-05-17 13:14:45 +00:00