Commit Graph

34552 Commits

Author SHA1 Message Date
caitp
8352a0feac [esnext] ship String.prototype.padStart / String.prototype.padEnd
Enable the --harmony-string-padding flag by default

BUG=v8:4954
R=adamk@chromium.org, littledan@chromium.org

Review-Url: https://codereview.chromium.org/2382193002
Cr-Commit-Position: refs/heads/master@{#40060}
2016-10-06 19:53:31 +00:00
ziyang
411aa27a47 PPC/s390: [turbofan] JSGenericLowering mostly uses builtins instead of code stubs now
Port 0c168a90ff

R=tebbi@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/2397193003
Cr-Commit-Position: refs/heads/master@{#40059}
2016-10-06 19:39:26 +00:00
mtrofin
917ef616cc [wasm] Support recompilation if deserialization fails.
One step closer to the informally-agreed upon specification
that structured cloning will always succeed, meaning, if
we fail to deserialize (e.g. because version mismatch in
serialized format and v8 version), we recompile.

As part of this work, the deserializer will need to become
more resilient to invalid input data, and fail graciously
rather than CHECK-ing. This CL addresses some of that,
sufficient to unblock the current serialization tests.
Subsequent CLs will add more testing and the appropriate
fixes.

BUG=639090

Review-Url: https://codereview.chromium.org/2395793003
Cr-Commit-Position: refs/heads/master@{#40058}
2016-10-06 19:33:57 +00:00
adamk
3aeaf49781 [modules] Add basic path normalization to d8's module loader
d8 now elides './' when constructing absolute paths.
'../' is still not normalized.

R=neis@chromium.org
BUG=v8:1569

Review-Url: https://codereview.chromium.org/2393243002
Cr-Commit-Position: refs/heads/master@{#40057}
2016-10-06 19:32:37 +00:00
gsathya
9d836ec64a [promises] fix deferred object leak
This patch sets `this` to be undefined when calling resolve and reject
functions attached to the deferred.

BUG=v8:5476

Review-Url: https://codereview.chromium.org/2399053003
Cr-Commit-Position: refs/heads/master@{#40056}
2016-10-06 18:29:35 +00:00
adamk
b5c542bac8 Avoid static initializers in PropertyAccessCompiler
Introduce AccessCompilerData which hangs off the Isolate, and initialize
it when the first PropertyAccessCompiler is instantiated. This avoids
TSAN failures when trying to access load/store calling convention arrays.

BUG=v8:5427

Review-Url: https://codereview.chromium.org/2389313002
Cr-Commit-Position: refs/heads/master@{#40055}
2016-10-06 18:20:08 +00:00
alph
4b575dfcef [profiler] Tracing-based CPU profiler.
A new V8 API object v8::TracingCpuProfiler is introduced.
Client can create it on an isolate to enable JS CPU profiles collected
during tracing session.

Once the v8.cpu_profile2 tracing category is enabled the profiler emits
CpuProfile and CpuProfileChunk events with the profile data.

BUG=chromium:406277

Review-Url: https://codereview.chromium.org/2396733002
Cr-Commit-Position: refs/heads/master@{#40054}
2016-10-06 18:14:24 +00:00
adamk
549690f2bf Remove now-unused TailCallExpressionProduction from ExpressionClassifier
R=ishell@chromium.org

Review-Url: https://codereview.chromium.org/2395003002
Cr-Commit-Position: refs/heads/master@{#40053}
2016-10-06 17:53:39 +00:00
kozyatinskiy
88702e08bc [inspector] fix test expectations for command-line-api-with-bound-function
TBR=dgozman@chromium.org

Review-Url: https://codereview.chromium.org/2397193002
Cr-Commit-Position: refs/heads/master@{#40052}
2016-10-06 16:20:15 +00:00
tebbi
0c168a90ff [turbofan] JSGenericLowering mostly uses builtins instead of code stubs now
BUG=v8:5431

Review-Url: https://codereview.chromium.org/2372113004
Cr-Commit-Position: refs/heads/master@{#40051}
2016-10-06 15:46:26 +00:00
titzer
e97ca6ec47 [wasm] Refactor import handling for 0xC.
Imports and exports in 0xC can be much more than functions, including
tables, memories, and globals. This CL refactors the underlying
organization of imports and exports to support these new import types.

BUG=

Committed: https://crrev.com/599f8a83420346d9cba5ff97bd2a7520468207b6
Review-Url: https://codereview.chromium.org/2390113003
Cr-Original-Commit-Position: refs/heads/master@{#40033}
Cr-Commit-Position: refs/heads/master@{#40050}
2016-10-06 15:43:22 +00:00
alph
3990953ba8 [tracing] Add support for TracedValue JSON serializer.
BUG=chromium:406277

Review-Url: https://codereview.chromium.org/2399463004
Cr-Commit-Position: refs/heads/master@{#40049}
2016-10-06 15:27:13 +00:00
heimbuef
fc840361e3 Replaced different means of zone pooling/reusing by one zone segment pool
BUG=v8:5409

Committed: https://crrev.com/a124feb0760896c8be61de08004a08c3bc9b4b3f
Review-Url: https://codereview.chromium.org/2348303002
Cr-Original-Commit-Position: refs/heads/master@{#39633}
Cr-Commit-Position: refs/heads/master@{#40048}
2016-10-06 15:16:41 +00:00
leszeks
c9b908a060 [ignition] Inline the add for strings in AddWithFeedback
There's no point going through all the checks in the Add stub when we
already know that both sides are strings.

Review-Url: https://codereview.chromium.org/2395083002
Cr-Commit-Position: refs/heads/master@{#40047}
2016-10-06 15:13:55 +00:00
jbroman
3a14fc91b9 Throw a deserialization error internally in ValueDeserializer (previously-missed cases).
Caught with libfuzzer.

BUG=chromium:148757

Review-Url: https://codereview.chromium.org/2394983002
Cr-Commit-Position: refs/heads/master@{#40046}
2016-10-06 15:12:51 +00:00
mstarzinger
98e3ed6b21 [turbofan] Enable BytecodeGraphBuilder by default.
This enables the {BytecodeGraphBuilder} whenever heuristics in the
compilation pipeline determine both Ignition and TurboFan to be used.
There no longer needs to be an explicit flag passed in order to build
graphs from bytecode.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2363413005
Cr-Commit-Position: refs/heads/master@{#40045}
2016-10-06 15:11:42 +00:00
heimbuef
316669f62e Pool implementation for zone segments
BUG=v8:5409

Committed: https://crrev.com/37c688a24578e787d3d8941093563ed049c3497e
Review-Url: https://codereview.chromium.org/2335343007
Cr-Original-Commit-Position: refs/heads/master@{#39631}
Cr-Commit-Position: refs/heads/master@{#40044}
2016-10-06 14:35:49 +00:00
hpayer
0083c0931a Revert of [heap] Concurrent slot filtering in sweeper threads. (patchset #4 id:60001 of https://codereview.chromium.org/2401563002/ )
Reason for revert:
Crashing.

Original issue's description:
> [heap] Concurrent slot filtering in sweeper threads.
>
> This is an intermediate step for concurrent slot filtering. This CL already makes filtering concurrent, but does not integrate it in the actual sweeping. This will be done in two follow up CLs. One for the regular slot set and one for the typed slot set.
>
> BUG=chromium:648568
>
> Committed: https://crrev.com/1f89d369fc952a2826f9f62901fb84fcf30920d7
> Cr-Commit-Position: refs/heads/master@{#40040}

TBR=ulan@chromium.org,mlippautz@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:648568

Review-Url: https://codereview.chromium.org/2399003002
Cr-Commit-Position: refs/heads/master@{#40043}
2016-10-06 14:21:06 +00:00
mstarzinger
8f5d1c1d4c [parser] Lazy compilation no longer needs context chain.
Now that the scope chain is deserialized directly from the chain of
{ScopeInfo} objects, it is no longer needed to provide a context. This
makes the {AllowsLazyCompilationWithoutContext} predicate coincide with
the more general {AllowsLazyCompilation}. Remove the former.

R=jochen@chromium.org

Review-Url: https://codereview.chromium.org/2399853002
Cr-Commit-Position: refs/heads/master@{#40042}
2016-10-06 14:18:12 +00:00
mvstanton
978fe70beb [Turbofan] Introduce OtherNumberConstant.
With this CL, we devolve all Constants introduced as they are with an object handle into

* Range - for integers
* Nan
* MinusZero
* OtherNumberConstant - for doubles
* HeapConstant

We reduce the amount we have to inspect an object handle during optimization. Also, simplifications result. For example, you never have to check if a Range contains a HeapConstant.

BUG=

Review-Url: https://codereview.chromium.org/2381523002
Cr-Commit-Position: refs/heads/master@{#40041}
2016-10-06 14:13:53 +00:00
hpayer
1f89d369fc [heap] Concurrent slot filtering in sweeper threads.
This is an intermediate step for concurrent slot filtering. This CL already makes filtering concurrent, but does not integrate it in the actual sweeping. This will be done in two follow up CLs. One for the regular slot set and one for the typed slot set.

BUG=chromium:648568

Review-Url: https://codereview.chromium.org/2401563002
Cr-Commit-Position: refs/heads/master@{#40040}
2016-10-06 13:59:54 +00:00
Miran.Karic
a943c9e4d8 MIPS: Fix segment alignment.
Recent changes in Segment class caused many tests to fail on mips32
because of an unaligned read error. Setting the alignment to 8 for mips
fixes the issue. Accessing doubles on mips32 must be eight bit aligned.

BUG=

Review-Url: https://codereview.chromium.org/2390303003
Cr-Commit-Position: refs/heads/master@{#40039}
2016-10-06 13:57:59 +00:00
hablich
3b1b544c20 Revert of [wasm] Refactor import handling for 0xC. (patchset #10 id:180001 of https://codereview.chromium.org/2390113003/ )
Reason for revert:
Failes a few GC stress tests.https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/6253

Original issue's description:
> [wasm] Refactor import handling for 0xC.
>
> Imports and exports in 0xC can be much more than functions, including
> tables, memories, and globals. This CL refactors the underlying
> organization of imports and exports to support these new import types.
>
> BUG=
>
> Committed: https://crrev.com/599f8a83420346d9cba5ff97bd2a7520468207b6
> Cr-Commit-Position: refs/heads/master@{#40033}

TBR=mtrofin@chromium.org,ahaas@chromium.org,bradnelson@chromium.org,titzer@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review-Url: https://codereview.chromium.org/2395133002
Cr-Commit-Position: refs/heads/master@{#40038}
2016-10-06 13:43:23 +00:00
hablich
eeaa239889 Update version to 5.6
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2397153002
Cr-Commit-Position: refs/heads/master@{#40037}
2016-10-06 13:22:54 +00:00
jgruber
4e219bb46a [regexp] Port RegExp getters and setters
Flag getters are implemented as TurboFan stubs while the rest are written as
C++. This distinction is somewhat arbitrary and more getters could be ported to
TurboFan in the future.

BUG=v8:5339

Review-Url: https://codereview.chromium.org/2389233002
Cr-Commit-Position: refs/heads/master@{#40036}
2016-10-06 13:01:08 +00:00
epertoso
a105dafa96 [turbofan] Renames variables in machine-graph-verifier.cc to make them consistent.
R=jarin@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2401553002
Cr-Commit-Position: refs/heads/master@{#40035}
2016-10-06 12:47:07 +00:00
hpayer
84b81f8c86 [heap] Do not touch pre-freed typed slot set memory anymore.
BUG=chromium:648568

Review-Url: https://codereview.chromium.org/2397473004
Cr-Commit-Position: refs/heads/master@{#40034}
2016-10-06 12:39:46 +00:00
titzer
599f8a8342 [wasm] Refactor import handling for 0xC.
Imports and exports in 0xC can be much more than functions, including
tables, memories, and globals. This CL refactors the underlying
organization of imports and exports to support these new import types.

BUG=

Review-Url: https://codereview.chromium.org/2390113003
Cr-Commit-Position: refs/heads/master@{#40033}
2016-10-06 12:30:50 +00:00
heimbuef
94c8170a88 Remove unnecessary statics
In an anonymous namespace, all methods are already treated like being
static, so no need for these keywords.

Review-Url: https://codereview.chromium.org/2384403006
Cr-Commit-Position: refs/heads/master@{#40032}
2016-10-06 12:14:30 +00:00
mstarzinger
23644ddffd [parser] Load outer ScopeInfo from SharedFunctionInfo.
This switches the {ParseInfo} constructor to always determine the outer
scope info from the shared function info instead of a concrete closure.
It is a precursor to deprecate the constructor taking closures entirely
and hence make the fact that we can parse without a closure explicit.

R=jochen@chromium.org
BUG=v8:2206

Review-Url: https://codereview.chromium.org/2397053003
Cr-Commit-Position: refs/heads/master@{#40031}
2016-10-06 12:01:29 +00:00
ahaas
a03ac68c55 [wasm] grow_memory(0) is the same as memory_size()
BUG=chromium:653264
TEST=cctest/test-run-wasm-module/GrowMemoryZero
R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2389263005
Cr-Commit-Position: refs/heads/master@{#40030}
2016-10-06 11:44:37 +00:00
mvstanton
f5c439db18 [turbofan] Remove infinity types from truncating_to_zero in typing.
BUG=
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2393923003
Cr-Commit-Position: refs/heads/master@{#40029}
2016-10-06 11:08:38 +00:00
mstarzinger
d874e0dca7 [wasm] Remove dangerous ByteArray::data accessor.
R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2388303008
Cr-Commit-Position: refs/heads/master@{#40028}
2016-10-06 10:55:35 +00:00
bmeurer
1411c7628b [turbofan] Pass NoContextConstant to stubs that don't need a context.
The generic implementations for typeof, strict equality and ToBoolean
don't need a context, so we can just pass the NoContextConstant (which
is Smi zero) instead, to reduce the live ranges for the context.

R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/2400633002
Cr-Commit-Position: refs/heads/master@{#40027}
2016-10-06 10:15:42 +00:00
mlippautz
f88fe51a00 [heap] Remove PromotionMode used by Scavenger
The scavenger should never consider mark bits for promotion/copy as this creates
weird livetimes at the start of incremental marking. E.g. consider an object
marked black by the marker at the start of incremental marking. A scavenge would
promote it to the old generation although it could --and for short-living
objects actually does-- become unreachable during marking

Also, keeping this invariant significantly simplifies young generation mark
compacting as we can compare against the scavenging decision without keeping
different sets of markbits.

BUG=chromium:651354
R=hpayer@chromium.org

Review-Url: https://codereview.chromium.org/2397713002
Cr-Commit-Position: refs/heads/master@{#40026}
2016-10-06 10:14:23 +00:00
ishell
6d9b2e129a [crankshaft] Remove HLoadNamedGeneric and use HCallWithDescriptor to call LoadIC.
... because the latter automatically respects the desired calling convention.

BUG=v8:5408

Review-Url: https://codereview.chromium.org/2398683004
Cr-Commit-Position: refs/heads/master@{#40025}
2016-10-06 09:32:21 +00:00
heimbuef
506c9bcd46 Remove the runtime zone. The runtime zone is ugly
because ownership over it is not obviously clear
and leads to errors.

Review-Url: https://codereview.chromium.org/2366283003
Cr-Commit-Position: refs/heads/master@{#40024}
2016-10-06 09:13:18 +00:00
ishell
5b34db2249 [crankshaft] Remove HLoadGlobalGeneric and use HCallWithDescriptor instead to call LoadGlobalIC.
... because the latter automatically respects the desired calling convention.

BUG=v8:5408

Review-Url: https://codereview.chromium.org/2396023002
Cr-Commit-Position: refs/heads/master@{#40023}
2016-10-06 08:36:23 +00:00
bmeurer
e17ea8ddf2 [turbofan][x64] Use the root register for comparisons with certain roots.
Emit code like this

  cmpq reg, [kRootRegister + offset]

when selecting instructions for comparisons with immortal, immovable
roots. This reduces register pressure as we don't need to load those
roots into registers first.

R=jarin@chromium.org
TBR=hpayer@chromium.org

Review-Url: https://codereview.chromium.org/2396923003
Cr-Commit-Position: refs/heads/master@{#40022}
2016-10-06 08:19:17 +00:00
jarin
5d6b514192 Reland of "[turbofan] Osr value typing + dynamic type checks on entry. (patchset #5 id:80001 of https://codereview.chromium.org/2384113002/ )"
Fixes:

- Remove OsrGuards on frame specialization (for asm.js).
- Handle the rename in the walk for native context.
- Fix LoadContext effect wiring for Osr context chains.

Review-Url: https://codereview.chromium.org/2388303006
Cr-Commit-Position: refs/heads/master@{#40021}
2016-10-06 06:42:29 +00:00
danno
697aa6f579 [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance
Specifically an attempt to address a 3.5% regression on the total load
time on cnn introduced by https://codereview.chromium.org/2113673002.

Non-refactoring effect of this CL is to reduce the number of branches in
CodeStubAssembler-generated loops iterating over FixedArrays from
two to one.

LOG=N
BUG=v8:5423

Review-Url: https://codereview.chromium.org/2380953002
Cr-Commit-Position: refs/heads/master@{#40020}
2016-10-06 06:40:21 +00:00
v8-autoroll
a3d0c2e08b Update V8 DEPS.
Rolling v8/build: 475d5b3..67604e1

Rolling v8/buildtools: 5fd6695..39b1db2

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

Review-Url: https://codereview.chromium.org/2397993002
Cr-Commit-Position: refs/heads/master@{#40019}
2016-10-06 03:38:43 +00:00
gsathya
4dc97f4a83 [promises] dont create resolving closures in PromiseThen
When we create native promises as part of PromiseThen, we don't have
to create resolving closures. The closure will only ever be called
once from PromiseHandle, therefore we don't need the alreadyResolved
check.

This results in a 21.76% improvement in the bluebird benchmark
over 5 runs.

BUG=v8:5046

Review-Url: https://codereview.chromium.org/2396763002
Cr-Commit-Position: refs/heads/master@{#40018}
2016-10-05 23:36:01 +00:00
ziyang
0c7e1bef40 PPC/s390: Remove unnecessary duplication of FunctionKind enums in CompilerHints
Port 7a82be3d0d

Original commit message:

    The duplicated enum values are only used by the FastNewClosureStub,
    so inline them there, with the help of one new constant (kFunctionKindShift)
    in SharedFunctionInfo.

R=adamk@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/2391343003
Cr-Commit-Position: refs/heads/master@{#40017}
2016-10-05 23:12:11 +00:00
kozyatinskiy
6ea067a40c [inspector] fix integer conversion
v8::Integer::Value() method returns int64 but all scriptIds are 32 bit based. We can safely cast int64 into int here to make compilers happy.

R=dgozman@chromium.org

Review-Url: https://codereview.chromium.org/2394973002
Cr-Commit-Position: refs/heads/master@{#40016}
2016-10-05 22:56:56 +00:00
leszeks
b3c8b0ce2c [interpreter] Add string type feedback to add
Adds string type feedback to Ignition's AddWithFeedback code stub, for now only
adding a special case for when both lhs and rhs are strings. This improves
octane's splay by >100%.

BUG=v8:5400

Committed: https://crrev.com/fb4ae2239d37adaf0321165034050316914de708
Committed: https://crrev.com/bf1a94f1b269914856a8c8763fd282367f066c67
Review-Url: https://codereview.chromium.org/2392533002
Cr-Original-Original-Commit-Position: refs/heads/master@{#39987}
Cr-Original-Commit-Position: refs/heads/master@{#39996}
Cr-Commit-Position: refs/heads/master@{#40015}
2016-10-05 19:48:49 +00:00
bjaideep
45b64d15a0 [heap] Update verification of LO_SPACE in SizeOfInitialHeap
On PPC64 linux the OS page size is 64KB, therefore when the
snapshot is created the serialized heap already has LO_SPACE
allocated(the allocation goes beyond the 1st page of
CODE_SPACE and hence LO_SPACE is allocated).
I've updated the testcase to check if the delta
of the LO_SPACE is zero.

R=mlippautz@chromium.org, ulan@chromium.org, vogelheim@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2394893002
Cr-Commit-Position: refs/heads/master@{#40014}
2016-10-05 19:47:27 +00:00
bradnelson
e901ccdd18 [wasm] [asm.js] Fix asm.js issues around floating point globals.
Allow fround to take values without dots for globals (the spec allows this
subtly).

Drop over-restrictive assert preventing floating point globals from working.

BUG=v8:4203
R=jpp@chromium.org,aseemgarg@chromium.org

Review-Url: https://codereview.chromium.org/2397823003
Cr-Commit-Position: refs/heads/master@{#40013}
2016-10-05 19:46:25 +00:00
ziyang
8ba6686b20 S390: Change printf format specifier for size_t in heap.cc
GCC on S390 31-bit treats size_t as 'long unsigned int', which
is incompatible with %d format specifier that expects an 'int'.
Using the appropriate macro (PRIuS) instead.

R=mlippautz@chromium.org, hpayer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2398703002
Cr-Commit-Position: refs/heads/master@{#40012}
2016-10-05 19:45:08 +00:00
gsathya
34a0ac3cca [promises] Use PromiseCreate when applicable
Review-Url: https://codereview.chromium.org/2376613003
Cr-Commit-Position: refs/heads/master@{#40011}
2016-10-05 19:44:04 +00:00