Commit Graph

25773 Commits

Author SHA1 Message Date
mythria
5a09f1b9a7 [Interpreter] Adds logical and/or and comma operators to interpreter
Adds support for following operators
 -Logical and
 -Logical or
 -Comma

Adds the above bytecodes, support to BytecodeGenerator and BytecodeArrayBuilder
to enable it's use, it's implementation and tests.

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1399773002

Cr-Commit-Position: refs/heads/master@{#31281}
2015-10-15 09:11:59 +00:00
yangguo
c7c7b598ee Serializer: remove unused --serialize-inner flag.
R=vogelheim@chromium.org

Review URL: https://codereview.chromium.org/1404553003

Cr-Commit-Position: refs/heads/master@{#31280}
2015-10-15 08:47:19 +00:00
yangguo
b6c945642c Native context: use import/export for Object observe related functions.
R=adamk@chromium.org

Review URL: https://codereview.chromium.org/1396323011

Cr-Commit-Position: refs/heads/master@{#31279}
2015-10-15 08:32:47 +00:00
littledan
dd24cc33d3 Check for let in lexically bound names for short object literals
An identifier may be parsed in an object literal like {let}, but
this was previously left out of lexical name checking. This patch
adds that check to prohibit code like
  let {let} = {let: 1}

BUG=v8:4403
LOG=N
R=adamk

Review URL: https://codereview.chromium.org/1401253003

Cr-Commit-Position: refs/heads/master@{#31278}
2015-10-15 07:52:20 +00:00
alph
ad1e057049 Revert of [x64] Use vcvtlsi2sd when AVX is enabled (patchset #1 id:1 of https://codereview.chromium.org/1404903004/ )
Reason for revert:
Caused a crash on Windows

Original issue's description:
> [x64] Use vcvtlsi2sd when AVX is enabled
>
> BUG=v8:4406
> LOG=N
>
> Committed: https://crrev.com/adcbe619a959fe1d8f21d06fbf5984868c4f6b9a
> Cr-Commit-Position: refs/heads/master@{#31276}

TBR=bmeurer@chromium.org,danno@chromium.org,yurys@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4406

Review URL: https://codereview.chromium.org/1396283004

Cr-Commit-Position: refs/heads/master@{#31277}
2015-10-15 06:08:52 +00:00
alph
adcbe619a9 [x64] Use vcvtlsi2sd when AVX is enabled
BUG=v8:4406
LOG=N

Review URL: https://codereview.chromium.org/1404903004

Cr-Commit-Position: refs/heads/master@{#31276}
2015-10-15 05:53:24 +00:00
alph
5cda2bcfab [x64] Use vmovapd and vmovsd when AVX is enabled.
R=bmeurer@chromium.org
BUG=v8:4406
LOG=N

Review URL: https://codereview.chromium.org/1391963005

Cr-Commit-Position: refs/heads/master@{#31275}
2015-10-15 04:15:00 +00:00
v8-autoroll
facf9953d2 Update V8 DEPS.
Rolling v8/buildtools to ef7f1f539cff0441c4401d8c052e54cfd01bff07

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

Review URL: https://codereview.chromium.org/1396783005

Cr-Commit-Position: refs/heads/master@{#31274}
2015-10-15 03:25:07 +00:00
franziska.hinkelmann
8ed0454332 Emit better error message about writable properties
Section 8.10.5 9a specifies that a property descriptor cannot both have
accessors and specify the writability of the property. The previous
error message was misleading because it referred to writable rather
than specifying the writability (which includes writable: false).

BUG=v8:2536
LOG=N

Review URL: https://codereview.chromium.org/1399693003

Cr-Commit-Position: refs/heads/master@{#31273}
2015-10-14 19:22:27 +00:00
domenic
8f8457d2a4 Add methods to extras' InternalPackedArray
https://codereview.chromium.org/1343113003 introduced a separate InternalPackedArray constructor to the extras utils object, distinct from the one used by natives. However, it omitted the code to set up the methods for that InternalPackedArray. This makes all the basic manipulation methods available.

BUG=v8:4276
LOG=Y
R=jochen@chromium.org,yangguo@chromium.org

Review URL: https://codereview.chromium.org/1401243003

Cr-Commit-Position: refs/heads/master@{#31272}
2015-10-14 17:40:54 +00:00
caitpotter88
6b4d7f81a9 [es6] parse arrow ConciseBody with accept_IN flag
Fixes corner case where arrow function ConciseBody expression does not
accept 'in' in productions.

BUG=v8:4472
LOG=N
R=wingo@igalia.com, adamk@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/1407633002

Cr-Commit-Position: refs/heads/master@{#31271}
2015-10-14 17:39:52 +00:00
domenic
0db3710421 Put experimental extras through the same filters as non-experimental
When introducing experimental extras I forgot to update this check. That resulted in experimental extras running through the steps normally reserved for non-extra natives: macro and constant expansion, validation, and minification. This causes problems since per the linked bug minification is buggy.

R=yangguo@chromium.org, jochen@chromium.org
BUG=v8:4064
LOG=N

Review URL: https://codereview.chromium.org/1400253002

Cr-Commit-Position: refs/heads/master@{#31270}
2015-10-14 17:38:47 +00:00
littledan
ab3110e875 Add a lexical scope for the body of a with statement
For an edge case like the following in sloppy mode
  with ({}) function f() {}
a lexical scope needs to be created around the body in order
to hold the function declaration, so it can be hoisted according
to a loose interpretation of Annex B 3.3 (loose because ES2015
does not permit a function declaration as the body of a with
statement). This patch adds that scope.

BUG=chromium:542100
LOG=N
R=adamk

Review URL: https://codereview.chromium.org/1404803002

Cr-Commit-Position: refs/heads/master@{#31269}
2015-10-14 17:37:22 +00:00
littledan
d0618585a7 Fix scopes for body of sloppy-mode for-in/of loop
This patch fixes an obscure edge case for functions defined as the
direct body of a for-of/for-in loop, such as the following:

 for (foo in []) function foo() { return foo; }

Here, the first occurrence of foo should point to the outer scope;
however, before this patch, it pointed to the inner foo in an
invalid way which caused an assertion about the scope chain to fail.
This patch fixes the scope chain by inserting an extra scope for
the body of the loop, not including the header.

BUG=chromium:542099
LOG=N
R=rossberg

Review URL: https://codereview.chromium.org/1396663004

Cr-Commit-Position: refs/heads/master@{#31268}
2015-10-14 17:36:16 +00:00
machenbach
e6d45f1a78 [swarming] Isolate webkit and optimize_for_size.
BUG=chromium:535160
LOG=n

Review URL: https://codereview.chromium.org/1402953004

Cr-Commit-Position: refs/heads/master@{#31267}
2015-10-14 17:35:05 +00:00
machenbach
dc0adc5668 Revert of Add bailout for large objects when allocating arrays in optimized code. (patchset #1 id:1 of https://codereview.chromium.org/1408553002/ )
Reason for revert:
[Sheriff] Breaks deopt fuzzer:
http://build.chromium.org/p/client.v8/builders/V8%20Deopt%20Fuzzer/builds/5634

See comment in CL for repro.

Original issue's description:
> Add bailout for large objects when allocating arrays in optimized code.
>
> BUG=
>
> Committed: https://crrev.com/0c81c4e924d7bdb45fce98209c21985d754e047d
> Cr-Commit-Position: refs/heads/master@{#31259}

TBR=bmeurer@chromium.org,hpayer@chromium.org,mlippautz@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/1409543002

Cr-Commit-Position: refs/heads/master@{#31266}
2015-10-14 15:04:19 +00:00
jarin
59c616ccd7 [turbofan] Introduce node regions for protection from scheduling.
This CL re-purposes ValueEffect and Finish as delimiters for regions
that are scheduled atomically (renamed to BeginRegion, FinishRegion).

The BeginRegion node takes and produces an effect. For the uses that do
not care about the placement in the effect chain, it is ok to feed
graph->start() as an effect input.

The FinishRegion takes a value and an effect and produces a value and
an effect. It is important that any value or effect produced inside the
region is not used outside the region. The FinishRegion node is the only
way to smuggle an effect and a value out.

At the moment, this does not support control flow inside the region. Control flow would be hard.

During scheduling we do some sanity check, but the checks are not exhaustive. Here is what we check:
- the effect chain between begin and finish is linear (no splitting,
  single effect input and output).
- any value produced is consumed by the FinishRegion node.
- no control flow outputs.

Review URL: https://codereview.chromium.org/1399423002

Cr-Commit-Position: refs/heads/master@{#31265}
2015-10-14 14:53:12 +00:00
rmcilroy
1919fa38c2 [Interpreter]: Fix ObjectLiterals test for arm64-sim-nosnap bot.
The AccessorsTable has a non-deterministic iteration order depending on the
random seed. This means that the order of the accessor defines could vary
and the test which tried to set accessors on two different properties
could flakly fail due to the order not being as expected. To fix this I make
the test only do a setter on one property (the test-interpreter.cc test
does the check on multiple property accessors

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1404793002

Cr-Commit-Position: refs/heads/master@{#31264}
2015-10-14 14:52:12 +00:00
martyn.capewell
a456134b8b [turbofan] Negate with shifted input for ARM64
Support negate with shifted input on ARM64 by supporting lhs zero registers for
binary operations, and removing explicit Neg instruction support.

Review URL: https://codereview.chromium.org/1404093003

Cr-Commit-Position: refs/heads/master@{#31263}
2015-10-14 14:51:06 +00:00
rmcilroy
2ad5655260 [Interpreter]: Use vector store for array literal computed stores.
Replaces the use of KeyedStoreICGeneric with a vector based KeyedStoreIC for
array literal computed stores now that there is a feedback vector slot for
these expressions. Removes KeyedStoreICGeneric bytecode since this is no
longer necessary.

BUG=v8:4280
LOG=N
TBR=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/1400353002

Cr-Commit-Position: refs/heads/master@{#31262}
2015-10-14 13:20:11 +00:00
mbrandy
0f51a35061 PPC: VectorICs: use a vector slot to aid in array literal processing.
Port f2f46aff8b

Original commit message:
    The lack of a vector slot for the keyed store operation in filling in
    non-constant array literal properties led to undesirable contortions in
    compilers downwind of full-codegen. The use of a single slot to initialize all
    the array elements is sufficient.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1390353006

Cr-Commit-Position: refs/heads/master@{#31261}
2015-10-14 13:18:33 +00:00
adamk
d317145d05 Eagerly extract stack limit from Isolate in InitializeAstVisitor()
Previously, any AstVisitor subclasses which wanted to make use of
the shared stack overflow checking code needed to depend on Isolate.

With this patch, it will be easy to create a second InitializeAstVisitor
overload taking a stack_limit directly, for use in code that has no
Isolate available (such as code running in the parser).

AstVisitor subclasses which depended upon the isolate() accessor have
been fixed to either have their own isolate_ member or get it from
somewhere else convenient.

Review URL: https://codereview.chromium.org/1387383005

Cr-Commit-Position: refs/heads/master@{#31260}
2015-10-14 13:04:55 +00:00
mlippautz
0c81c4e924 Add bailout for large objects when allocating arrays in optimized code.
BUG=

Review URL: https://codereview.chromium.org/1408553002

Cr-Commit-Position: refs/heads/master@{#31259}
2015-10-14 13:00:12 +00:00
hpayer
a0159c1168 Bailout to runtime when BuildUncheckedStringAdd results in a large object.
BUG=

Review URL: https://codereview.chromium.org/1396333004

Cr-Commit-Position: refs/heads/master@{#31258}
2015-10-14 12:59:07 +00:00
hpayer
24622f5f12 Bailout for large object allocations in full code EmitFastOneByteArrayJoin.
BUG=chromium:542823
LOG=n

Review URL: https://codereview.chromium.org/1391373004

Cr-Commit-Position: refs/heads/master@{#31257}
2015-10-14 12:44:45 +00:00
rmcilroy
822b493bee Move AccessorTable from full-codegen.h to ast.h.
It is used by AstGraphBuilder (TF) and BytecodeGenerator (Ignition), so is no
longer a full-codegen datastructure. Removes full-codegen.h dependency from
compiler/ and interpreter/

Review URL: https://codereview.chromium.org/1393393003

Cr-Commit-Position: refs/heads/master@{#31256}
2015-10-14 12:22:22 +00:00
bmeurer
d702f70795 [turbofan] Move native context specialization before inlining.
Perform native context specialization immediately after graph
construction (also after inlinee graph construction). This way
we can do unified inlining before we go to typing and typed
lowering. And we will get better typing due to constants and
(checked) type feedback.

R=mstarzinger@chromium.org
BUG=v8:4470
LOG=n

Review URL: https://codereview.chromium.org/1404123002

Cr-Commit-Position: refs/heads/master@{#31255}
2015-10-14 12:21:03 +00:00
mvstanton
a2a45a1669 Revert of VectorICs: turn on vectors for STORE and KEYED_STORE ics. (patchset #1 id:1 of https://codereview.chromium.org/1396523005/ )
Reason for revert:
Windows crash failure, must be investigated.

Original issue's description:
> VectorICs: turn on vectors for STORE and KEYED_STORE ics.
>
> R=jkummerow@chromium.org
> BUG=
>
> Committed: https://crrev.com/52225f39df578e77b4804506ca4bc15e096f5cab
> Cr-Commit-Position: refs/heads/master@{#31252}

TBR=jkummerow@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/1398123003

Cr-Commit-Position: refs/heads/master@{#31254}
2015-10-14 10:52:32 +00:00
rmcilroy
20fba51253 [Interpreter] Adds Object literal support.
Adds Object literal support to the interpreter. Adds the following bytecodes:
 - ToName
 - CreateObjectLiteral.

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1386313005

Cr-Commit-Position: refs/heads/master@{#31253}
2015-10-14 10:10:27 +00:00
mvstanton
52225f39df VectorICs: turn on vectors for STORE and KEYED_STORE ics.
R=jkummerow@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1396523005

Cr-Commit-Position: refs/heads/master@{#31252}
2015-10-14 09:27:53 +00:00
mstarzinger
ecc8485da0 [Interpreter] Drop obsolete BuildConstantElements call.
R=rmcilroy@chromium.org

Review URL: https://codereview.chromium.org/1403613003

Cr-Commit-Position: refs/heads/master@{#31251}
2015-10-14 08:59:39 +00:00
machenbach
749b419a82 [swarming] Isolate test262.
BUG=chromium:535160
LOG=n

Review URL: https://codereview.chromium.org/1402073003

Cr-Commit-Position: refs/heads/master@{#31250}
2015-10-14 08:44:27 +00:00
mstarzinger
8ff6a0c005 [turbofan] First rudimentary inlining heuristic.
This is a first prototype for a rudimentary inlining heuristic allowing
enabling of general inlining based existing budget flags. Also note that
this approach does not yet work for multi-level inlining, for now the
list of candidates is processed exactly once.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1406543002

Cr-Commit-Position: refs/heads/master@{#31249}
2015-10-14 08:37:19 +00:00
machenbach
6628b77d57 [test] Mark intl test as failing on linux.
BUG=v8:2899
LOG=n
TBR=jochen@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/1396293006

Cr-Commit-Position: refs/heads/master@{#31248}
2015-10-14 07:09:36 +00:00
bmeurer
1262a41c1f [turbofan] Disable native context specialization for the asm.js pipeline.
R=jarin@chromium.org
BUG=v8:4470
LOG=n

Review URL: https://codereview.chromium.org/1401923004

Cr-Commit-Position: refs/heads/master@{#31247}
2015-10-14 05:51:24 +00:00
dpranke
dd8206c81a Use //build_overrides instead of //build/modules for GN builds.
R=machenbach@chromium.org
BUG=chromium:541791
LOG=N

Review URL: https://codereview.chromium.org/1396743005

Cr-Commit-Position: refs/heads/master@{#31246}
2015-10-13 23:56:25 +00:00
akos.palfi
d3f97a972f MIPS: Fix movz_movn test failure with Clang.
Correctly initialize the high FP registers.

TEST=test-assembler-mips/movz_movn,test-assembler-mips64/movz_movn
BUG=

Review URL: https://codereview.chromium.org/1399413003

Cr-Commit-Position: refs/heads/master@{#31245}
2015-10-13 22:16:16 +00:00
hpayer
c1a81536ed Do not allow large object allocation from optimized code.
BUG=

Review URL: https://codereview.chromium.org/1406593002

Cr-Commit-Position: refs/heads/master@{#31244}
2015-10-13 19:20:19 +00:00
Djordje.Pesic
d6741e80ea MIPS: Fix mina in mips32 and mips64 simulator
Fix mina instruction in mips32 and mips64 simulator according to IEEE 754-2008 standard

BUG=

Review URL: https://codereview.chromium.org/1402923002

Cr-Commit-Position: refs/heads/master@{#31243}
2015-10-13 15:47:07 +00:00
mvstanton
f2f46aff8b VectorICs: use a vector slot to aid in array literal processing.
The lack of a vector slot for the keyed store operation in filling in
non-constant array literal properties led to undesirable contortions in
compilers downwind of full-codegen. The use of a single slot to initialize all
the array elements is sufficient.

BUG=

Review URL: https://codereview.chromium.org/1405503002

Cr-Commit-Position: refs/heads/master@{#31242}
2015-10-13 14:48:49 +00:00
jkummerow
c706c0fa19 Add C++ implementation of Object.defineProperties
Not used yet, so this CL shouldn't change behavior.

Review URL: https://codereview.chromium.org/1368753003

Cr-Commit-Position: refs/heads/master@{#31241}
2015-10-13 14:38:35 +00:00
rmcilroy
6a10a9af3b [Interpreter] Add array literal support.
Adds array literal support to the interpreter. Currently constructed
array elements don't have type feedback slots, so also adds support for
generic keyed store operations.

Adds the following bytecodes:
 - CreateArrayLiteral
 - KeyedStoreICGeneric

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1400753003

Cr-Commit-Position: refs/heads/master@{#31240}
2015-10-13 14:00:57 +00:00
hpayer
1f98ef6ec8 Revert of [heap] Reland decrease large object limit for regular heap objects. (patchset #3 id:40001 of https://codereview.chromium.org/1401173003/ )
Reason for revert:
Still one failing test on Windows.

Original issue's description:
> [heap] Reland decrease large object limit for regular heap objects.
>
> BUG=
>
> Committed: https://crrev.com/9b91bf3a630b5382080ba1d7f9f3e88de3de8a95
> Cr-Commit-Position: refs/heads/master@{#31228}

TBR=mlippautz@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/1395653003

Cr-Commit-Position: refs/heads/master@{#31239}
2015-10-13 13:47:23 +00:00
rmcilroy
c0185b7d98 [Interpreter] Add support for new local function context creation.
Adds support for creation of new local function contexts (or script context for
top-level code). As part of this, also adds support for context push/pop
operations using a ContextScope object in BytecodeGenerator. Adds the following
bytecodes:
 - PushContext
 - PopContext

Support for inner contexts and loading from / storing to context allocated
variables will come in a future CL.

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1379793004

Cr-Commit-Position: refs/heads/master@{#31238}
2015-10-13 13:09:56 +00:00
ofrobots
010897c16a Reland improve perf_basic_prof filename reporting
Using perf-basic-prof in the test-case was problematic on windows. Use
CodeEventLogger directly.

Previous issue: https://codereview.chromium.org/1396843004/

R=jkummerow@chromium.org,yangguo@chromium.org,yurys@chromium.org
BUG=chromium:539892
LOG=N

Committed: https://crrev.com/701ba0b255f9c34f4b8c43584ef1e35040474e7d
Cr-Commit-Position: refs/heads/master@{#31197}

patch from issue 1396843004 at patchset 60001 (http://crrev.com/1396843004#ps60001)

Review URL: https://codereview.chromium.org/1403763002

Cr-Commit-Position: refs/heads/master@{#31237}
2015-10-13 12:45:31 +00:00
yangguo
4f7caf2f57 Debugger: fix stepping when break points are deactivated.
The flag for deactivating break points also affects stepping, since both
are implemented via debug break slots. Fixing this by introducing a new
flag solely responsible for deactivating actual break points.

R=mvstanton@chromium.org
BUG=chromium:119800
LOG=N

Review URL: https://codereview.chromium.org/1402913002

Cr-Commit-Position: refs/heads/master@{#31236}
2015-10-13 12:44:28 +00:00
mlippautz
ec1046f9f8 Revert of [heap] Divide available memory upon compaction tasks (patchset #9 id:340001 of https://codereview.chromium.org/1382003002/ )
Reason for revert:
Failing tests: https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug%20-%202/builds/3804/steps/Check/logs/DontLeakGlobalObjects

Original issue's description:
> [heap] Divide available memory upon compaction tasks
>
> - Fairly (round-robin) divide available memory upon compaction tasks.
> - Ensure an upper limit (of memory) since dividing is O(n) for n free-space
>   nodes.
> - Refill from free lists managed by sweeper once a compaction space becomes
>   empty.
>
> Assumption for dividing memory: Memory in the free lists is sparse upon starting
> compaction (which means that only few nodes are available), except for memory
> reducer GCs, which happen in idle time though (so it's less of a problem).
>
> BUG=chromium:524425
> LOG=N
>
> Committed: https://crrev.com/30236c052ba9266fc55412a8fd63b17f683ff40b
> Cr-Commit-Position: refs/heads/master@{#31234}

TBR=ulan@chromium.org,hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:524425

Review URL: https://codereview.chromium.org/1406533002

Cr-Commit-Position: refs/heads/master@{#31235}
2015-10-13 12:00:11 +00:00
mlippautz
30236c052b [heap] Divide available memory upon compaction tasks
- Fairly (round-robin) divide available memory upon compaction tasks.
- Ensure an upper limit (of memory) since dividing is O(n) for n free-space
  nodes.
- Refill from free lists managed by sweeper once a compaction space becomes
  empty.

Assumption for dividing memory: Memory in the free lists is sparse upon starting
compaction (which means that only few nodes are available), except for memory
reducer GCs, which happen in idle time though (so it's less of a problem).

BUG=chromium:524425
LOG=N

Review URL: https://codereview.chromium.org/1382003002

Cr-Commit-Position: refs/heads/master@{#31234}
2015-10-13 11:05:18 +00:00
yangguo
82b30828bd Check for validity when accessing call site objects in runtime.
R=jkummerow@chromium.org
BUG=chromium:528379
LOG=N

Review URL: https://codereview.chromium.org/1404613002

Cr-Commit-Position: refs/heads/master@{#31233}
2015-10-13 10:53:22 +00:00
mstarzinger
2633401137 Workaround for borked sem_init library function.
This adds a workaround that zeroes out semaphores before they are
initialized. Some versions of sem_init (e.g. GLIBC_2.0) fail to fully
zero out the semaphore, leading to {errno == ENOSYS} with subsequent
sem_timedwait calls.

R=machenbach@chromium.org
BUG=chromium:536813
LOG=n

Review URL: https://codereview.chromium.org/1407463002

Cr-Commit-Position: refs/heads/master@{#31232}
2015-10-13 09:53:10 +00:00