Commit Graph

37284 Commits

Author SHA1 Message Date
Aaron Gable
735739bfa4 Enable gerrit-based CQ for v8
BUG=685318

Change-Id: I6654410beaca18f5d8e0791ed18d0daa46edcae0
Reviewed-on: https://chromium-review.googlesource.com/434177
Reviewed-by: Aaron Gable <agable@chromium.org>
Cr-Commit-Position: refs/heads/master@{#42792}
2017-01-30 21:24:35 +00:00
jyan
0d9b0dcf43 s390: TF Optimize 32-bit Mul/Div/Mod/Popcnt
R=joransiu@ca.ibm.com, bjaideep@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/2662963002
Cr-Commit-Position: refs/heads/master@{#42791}
2017-01-30 21:13:18 +00:00
marja
d293656481 [scanner] Fix bom handling
The bug used to show up when
- we were streaming a script starting with 0xef 0xbb 0xbf
- we aborted preparsing a function (and reset to a bookmark)

BUG=chromium:685618

Review-Url: https://codereview.chromium.org/2663773002
Cr-Commit-Position: refs/heads/master@{#42790}
2017-01-30 20:18:26 +00:00
machenbach
6c84b93ad8 Whitespace change to check CQ
BUG=chromium:685318
TBR=tandrii@chromium.org

Review-Url: https://codereview.chromium.org/2666563002
Cr-Commit-Position: refs/heads/master@{#42789}
2017-01-30 19:45:47 +00:00
machenbach
b861a84009 Revert of ValueSerializer: Distinguish between 'undefined' and an absent property. (patchset #2 id:20001 of https://codereview.chromium.org/2660093002/ )
Reason for revert:
Seems to break layout tests:
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/13146

https://github.com/v8/v8/wiki/Blink-layout-tests

Original issue's description:
> ValueSerializer: Distinguish between 'undefined' and an absent property.
>
> Dealing with this case requires a wire format change. It is possible that an
> element can be absent even in an array where the dense format was chosen
> (because the array initially had no holes), if the elements are modified while
> they are being serialized. In this case, a new tag for the "hole" is emitted.
>
> The logic to treat undefined in dense arrays as an absent property is restricted
> to versions of the wire format that this tag did not exist.
>
> BUG=chromium:686159,chromium:665820
>
> Review-Url: https://codereview.chromium.org/2660093002
> Cr-Commit-Position: refs/heads/master@{#42784}
> Committed: dc85f4c833

TBR=jkummerow@chromium.org,jbroman@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:686159,chromium:665820

Review-Url: https://codereview.chromium.org/2667553003
Cr-Commit-Position: refs/heads/master@{#42788}
2017-01-30 19:35:28 +00:00
jochen
d651ce314c Add a test for OptimizingCompileDispatcher::Flush's non-blocking behavior
R=mtrofin@chromium.org,verwaest@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2662883003
Cr-Commit-Position: refs/heads/master@{#42787}
2017-01-30 19:27:00 +00:00
bjaideep
c0f255f075 PPC: Work-around to preserve sNan bit
On ia32/x64 when casting a sNan to double, the signalling
bit is flipped to qNan.

R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2660873003
Cr-Commit-Position: refs/heads/master@{#42786}
2017-01-30 19:02:23 +00:00
jkummerow
e42da75c9e [stubs] KeyedLoadIC_Generic: prototype chain lookup support (reland)
Performing lookups on the prototype chain in the stub avoids a
bunch of slow-path runtime calls. For now, only receivers with
dictionary-mode properties do this; fast-mode receivers will follow
if it's beneficial.

(previously landed as r42751 / 82e10f5fba)

Review-Url: https://codereview.chromium.org/2652213003
Cr-Commit-Position: refs/heads/master@{#42785}
2017-01-30 18:56:19 +00:00
jbroman
dc85f4c833 ValueSerializer: Distinguish between 'undefined' and an absent property.
Dealing with this case requires a wire format change. It is possible that an
element can be absent even in an array where the dense format was chosen
(because the array initially had no holes), if the elements are modified while
they are being serialized. In this case, a new tag for the "hole" is emitted.

The logic to treat undefined in dense arrays as an absent property is restricted
to versions of the wire format that this tag did not exist.

BUG=chromium:686159,chromium:665820

Review-Url: https://codereview.chromium.org/2660093002
Cr-Commit-Position: refs/heads/master@{#42784}
2017-01-30 18:43:38 +00:00
jkummerow
7438304229 ThinStrings: fix Factory::NewProperSubString
BUG=chromium:685504

Review-Url: https://codereview.chromium.org/2660823002
Cr-Commit-Position: refs/heads/master@{#42783}
2017-01-30 18:24:16 +00:00
jkummerow
9ea3e56bd9 ThinStrings: fix CodeStubAssembler::SubString
BUG=chromium:685965

Review-Url: https://codereview.chromium.org/2660123002
Cr-Commit-Position: refs/heads/master@{#42782}
2017-01-30 18:17:52 +00:00
gdeepti
930142e877 [wasm] Update table bounds when module is instantiated with a table import
When WebAssembly.Table initial size is greater than the declared initial size, table size references should be updated on instantiate for functions to be called at indices greater than the declared initial size.

R=bradnelson@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2661773002
Cr-Commit-Position: refs/heads/master@{#42781}
2017-01-30 18:10:32 +00:00
kozyatinskiy
3903817e0e [inspector] introduced memory size limit for console message storage
Without this CL we have only limit for amount of console messages and if user are dumping a huge messages we pretty soon run out of memory.
So let's introduce limit for memory consumption it would help chromium and Node.js as well.

BUG=chromium:671489
R=dgozman@chomium.org,alph@chromium.org, hpayer@chromium.org, ulan@chromium.org

Review-Url: https://codereview.chromium.org/2653293003
Cr-Commit-Position: refs/heads/master@{#42780}
2017-01-30 17:05:58 +00:00
mvstanton
475b455b6f [Turbofan] don't optimize from bytecode > 250K in size.
Compiles simply take too long, and such functions are liable to deopt
quickly.

BUG=chromium:686153

Review-Url: https://codereview.chromium.org/2667573002
Cr-Commit-Position: refs/heads/master@{#42779}
2017-01-30 15:28:23 +00:00
bjaideep
626b95e37e PPC/s390: [TypeFeedbackVector] Combine the literals array and the feedback vector.
Port 93f05b64ae

Original Commit Message:

    They have the same lifetime. It's a match!

    Both structures are native context dependent and dealt with (creation,
    clearing, gathering feedback) at the same time. By treating the spaces used
    for literal boilerplates as feedback vector slots, we no longer have to keep
    track of the materialized literal count elsewhere.

    A follow-on CL removes even more parser infrastructure related to this count.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5456
LOG=N

Review-Url: https://codereview.chromium.org/2659413002
Cr-Commit-Position: refs/heads/master@{#42778}
2017-01-30 15:25:54 +00:00
jochen
1fc5ca85fc Fix --noopt to not optimize
BUG=v8:5904,chromium:639217
R=mstarzinger@chromium.org

Review-Url: https://codereview.chromium.org/2660103002
Cr-Commit-Position: refs/heads/master@{#42777}
2017-01-30 14:41:29 +00:00
petermarshall
f87ce44f52 [Test] Perform warmup first on SixSpeed super_spread benchmarks.
The graphs don't show any performance bump for
https://codereview.chromium.org/2659623002, which I do see a much better result for
locally. I suspect the function isn't being optimized in turbofan when the
benchmarks run. Maybe this warmup flag will trigger that.

BUG=v8:5895

Review-Url: https://codereview.chromium.org/2664783002
Cr-Commit-Position: refs/heads/master@{#42776}
2017-01-30 13:58:57 +00:00
bmeurer
0b1b8c77a0 [turbofan] Optimize ReferenceEqual based on input types.
We can constant-fold ReferenceEqual(a,b) to false, if the intersection
of the types of a and b is empty. This also repairs a regression in the
RestParameter performance test.

R=petermarshall@chromium.org
BUG=chromium:686668

Review-Url: https://codereview.chromium.org/2666543002
Cr-Commit-Position: refs/heads/master@{#42775}
2017-01-30 13:14:34 +00:00
danno
db57a11979 [csa] Return last value from BuildFastLoop to allow chaining sequential loops
Review-Url: https://codereview.chromium.org/2657293002
Cr-Commit-Position: refs/heads/master@{#42774}
2017-01-30 13:06:11 +00:00
danno
dedc8a2f51 [csa] Allow passing VariableList to BuildFastFixedArrayForEach
Review-Url: https://codereview.chromium.org/2655023009
Cr-Commit-Position: refs/heads/master@{#42773}
2017-01-30 13:05:00 +00:00
machenbach
2ef6983426 [foozzie] Remove obsolete suppressions
BUG=chromium:681236
NOTRY=true
TBR=bradnelson@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2662823002
Cr-Commit-Position: refs/heads/master@{#42772}
2017-01-30 12:37:40 +00:00
mvstanton
93f05b64ae [TypeFeedbackVector] Combine the literals array and the feedback vector.
They have the same lifetime. It's a match!

Both structures are native context dependent and dealt with (creation,
clearing, gathering feedback) at the same time. By treating the spaces used
for literal boilerplates as feedback vector slots, we no longer have to keep
track of the materialized literal count elsewhere.

A follow-on CL removes even more parser infrastructure related to this count.

BUG=v8:5456

Review-Url: https://codereview.chromium.org/2655853010
Cr-Commit-Position: refs/heads/master@{#42771}
2017-01-30 12:31:35 +00:00
jarin
a15e9bfd30 [turbofan] Enable escape analysis.
Review-Url: https://codereview.chromium.org/2626013002
Cr-Original-Commit-Position: refs/heads/master@{#42229}
Committed: 30176976e8
Review-Url: https://codereview.chromium.org/2626013002
Cr-Commit-Position: refs/heads/master@{#42770}
2017-01-30 11:56:26 +00:00
tebbi
8b6fa9d519 [turbofan] escape analysis reducer no longer confused by TypeGuards it introduced itself
R=bmeurer@chromium.org

BUG=chromium:682570

Review-Url: https://codereview.chromium.org/2664683003
Cr-Commit-Position: refs/heads/master@{#42769}
2017-01-30 11:51:22 +00:00
bmeurer
2c51ca8fa3 [turbofan] for-in only enumerates Strings.
Update type of JSForInNext to say String\/Undefined.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2660543003
Cr-Commit-Position: refs/heads/master@{#42768}
2017-01-30 11:23:21 +00:00
bmeurer
b912851650 [turbofan] Don't constant-fold ACCESSOR properties.
R=ishell@chromium.org
BUG=chromium:686102

Review-Url: https://codereview.chromium.org/2662793002
Cr-Commit-Position: refs/heads/master@{#42767}
2017-01-30 11:15:02 +00:00
danno
753a2b5578 [csa] Add IsIntPtrOrSmiConstantZero to detect and optimize constant zero values
Review-Url: https://codereview.chromium.org/2658253002
Cr-Commit-Position: refs/heads/master@{#42766}
2017-01-30 10:57:48 +00:00
petermarshall
409d018005 [turbofan] Reduce CallConstructWithSpread where iteration is not observable.
Where the arguments have already been inlined, we can replace these calls with a
direct call to construct. We have to make sure that the iteration over the arguments is not observable.

BUG=v8:5895

Review-Url: https://codereview.chromium.org/2659623002
Cr-Commit-Position: refs/heads/master@{#42765}
2017-01-30 10:29:05 +00:00
petermarshall
ccf428bb04 Convert the array iterator protector to a PropertyCell.
We need it to be a PropertyCell so that we can list it as a dependency for
optimised code.

Also drive-by clean up some variable names in src/isolate-inl.h.

BUG=v8:5895

Review-Url: https://codereview.chromium.org/2658573008
Cr-Commit-Position: refs/heads/master@{#42764}
2017-01-30 09:55:21 +00:00
neis
5ed733737e [modules] Update a test and status file to reflect recent spec changes.
R=adamk@chromium.org
BUG=v8:1569

Review-Url: https://codereview.chromium.org/2657773006
Cr-Commit-Position: refs/heads/master@{#42763}
2017-01-30 09:41:15 +00:00
marja
0307bbb2a0 [parser] Skipping inner funcs: add tests for variables called "arguments"
These tests pass without further changes.

BUG=v8:5516

Review-Url: https://codereview.chromium.org/2654163008
Cr-Commit-Position: refs/heads/master@{#42762}
2017-01-30 09:09:38 +00:00
jochen
22858cb0d4 Only flush not yet started and finished compile jobs from gc
We shouldn't block during GC for arbitrarily long intervals.

BUG=chromium:686153,chromium:642532
R=verwaest@chromium.org,hpayer@chromium.org

Review-Url: https://codereview.chromium.org/2658313002
Cr-Commit-Position: refs/heads/master@{#42761}
2017-01-30 02:27:17 +00:00
caitp
82204eac7c [csa] fix CallRuntime() call in CSA::Print(Node* tagged_value)
emit %DebugPrint(tagged_value) instead of %GlobalPrint(tagged_value) to
avoid a CONVERT_ARG_CHECKED() failure when tagged value is not a string.

BUG=v8:5268
R=ishell@chromium.org, bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2663633002
Cr-Commit-Position: refs/heads/master@{#42760}
2017-01-29 22:26:43 +00:00
machenbach
a8638789c2 [test] Skip flaky test
BUG=v8:5906
NOTRY=true
TBR=binji@chromium.org

Review-Url: https://codereview.chromium.org/2659273002
Cr-Commit-Position: refs/heads/master@{#42759}
2017-01-29 12:52:05 +00:00
v8-autoroll
08cf9bd7c5 Update V8 DEPS.
Rolling v8/third_party/catapult: 9907db5..c3f2575

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

Review-Url: https://codereview.chromium.org/2666443002
Cr-Commit-Position: refs/heads/master@{#42758}
2017-01-29 04:25:52 +00:00
bradnelson
437735ed34 [wasm][asm.js] Make asm.js->wasm return a regular object.
Return a regular JSObject in the asm.js -> wasm case.

BUG=v8:5877
R=mtrofin@chromium.org,aseemgarg@chromium.org,titzer@chromium.org

Review-Url: https://codereview.chromium.org/2664493002
Cr-Commit-Position: refs/heads/master@{#42757}
2017-01-28 23:15:58 +00:00
jarin
6cd2d4ba41 [turbofan] Only use Tagged machine representation for tagged state values.
This avoids using kTaggedSigned and kTaggedPointer because the
semantic information of those type could be invalid in unreachable
code.

For example, SmiCheck(0.1) has representation TaggedSigned, but it is
later compiled to DeoptimizeUnless(ObjectIsSmi(0.1)) with the constant
0.1 directly connected to the uses. If the use is state-values, which
recorded the TaggedSigned representation of CheckSmi, the code
generator will be confused because it will see constant 0.1 that
claims to be TaggedSigned value.

BUG=chromium:675704

Review-Url: https://codereview.chromium.org/2656243004
Cr-Commit-Position: refs/heads/master@{#42756}
2017-01-28 17:25:46 +00:00
jarin
e342ec90f0 Revert of [turbofan] Enable escape analysis. (patchset #1 id:1 of https://codereview.chromium.org/2626013002/ )
Reason for revert:
Temporarily turn off escape analysis to get a clean canary.

Original issue's description:
> [turbofan] Enable escape analysis.
>
> Review-Url: https://codereview.chromium.org/2626013002
> Cr-Commit-Position: refs/heads/master@{#42229}
> Committed: 30176976e8

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

Review-Url: https://codereview.chromium.org/2660063002
Cr-Commit-Position: refs/heads/master@{#42755}
2017-01-28 17:18:06 +00:00
machenbach
291d9a782f Revert of [stubs] KeyedLoadIC_Generic: prototype chain lookup support (patchset #2 id:20001 of https://codereview.chromium.org/2652213003/ )
Reason for revert:
Speculative revert for breaking a layout test:
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/13113

Unfortunately, the test results archive is not giving much info this time.

Original issue's description:
> [stubs] KeyedLoadIC_Generic: prototype chain lookup support
>
> Performing lookups on the prototype chain in the stub avoids a
> bunch of slow-path runtime calls. For now, only receivers with
> dictionary-mode properties do this; fast-mode receivers will follow
> if it's beneficial.
>
> Review-Url: https://codereview.chromium.org/2652213003
> Cr-Commit-Position: refs/heads/master@{#42751}
> Committed: 82e10f5fba

TBR=ishell@chromium.org,jkummerow@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2657393002
Cr-Commit-Position: refs/heads/master@{#42754}
2017-01-28 11:23:27 +00:00
jbroman
bf511b426e ValueSerializer: Support efficiently reading and writing one-byte strings.
memcpy is faster than UTF-8 encoding/decoding. This yields 10-20% wins on
serializing and deserializing long ASCII strings, according to
blink_perf.bindings -- and these are already in a fast path where the entire
string is known to be ASCII (but this has to be checked). The win may be
larger for strings in Latin-1 but not ASCII (though I suspect this is an
uncommon case).

A change is also made to make ValueSerializerTest.EncodeTwoByteStringUsesPadding
survive wire format version number changes.

This is the first of a series of wire format changes from the previous Blink
format. The deserializer continues to be able to read the old format, but
Chromium M56 will no longer be able to read the messages written by this, in M58.

BUG=chromium:686159

Review-Url: https://codereview.chromium.org/2658793004
Cr-Commit-Position: refs/heads/master@{#42753}
2017-01-28 05:52:05 +00:00
v8-autoroll
851ef4677a Update V8 DEPS.
Rolling v8/build: c3da457..3dada45

Rolling v8/buildtools: a7cc7a3..c302711

Rolling v8/third_party/catapult: 683b84f..9907db5

Rolling v8/tools/clang: dbc7572..0b3a445

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

Review-Url: https://codereview.chromium.org/2659873003
Cr-Commit-Position: refs/heads/master@{#42752}
2017-01-28 04:27:18 +00:00
jkummerow
82e10f5fba [stubs] KeyedLoadIC_Generic: prototype chain lookup support
Performing lookups on the prototype chain in the stub avoids a
bunch of slow-path runtime calls. For now, only receivers with
dictionary-mode properties do this; fast-mode receivers will follow
if it's beneficial.

Review-Url: https://codereview.chromium.org/2652213003
Cr-Commit-Position: refs/heads/master@{#42751}
2017-01-28 03:08:07 +00:00
lukasza
01a93925c1 Adapt StringBuilder's append and toString methods via StringUtil helper.
This is needed to insulate generated code from blink::protocol namespace
from naming changes that we plan to do in the Great Blink Rename (which
in particular will change wtf::StringBuilder::toString into ToString,
and similarily will rename reserveCapacity and append methods).

This CL also includes roll of inspector_protocol which starts to
generate code that uses the new methods of StringUtil adapter:
rolling third_party/inspector to 1a131872167f0f7653629326891aa3ec94417f27.

BUG=683447

Review-Url: https://codereview.chromium.org/2660503002
Cr-Commit-Position: refs/heads/master@{#42750}
2017-01-27 21:11:15 +00:00
binji
966355585b [d8] Use ValueSerializer for postMessage (instead of ad-hoc serializer)
Review-Url: https://codereview.chromium.org/2643723010
Cr-Commit-Position: refs/heads/master@{#42749}
2017-01-27 20:15:37 +00:00
bjaideep
9515f7edf0 PPC/s390: [liveedit] reimplement frame restarting.
Port 3f47c63ded

Original Commit Message:

    Previously, when restarting a frame, we would rewrite all frames
    between the debugger activation and the frame to restart to squash
    them, and replace the return address with that of a builtin to
    leave that rewritten frame, and restart the function by calling it.

    We now simply remember the frame to drop to, and upon returning
    from the debugger, we check whether to drop the frame, load the
    new FP, and restart the function.

R=yangguo@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5587
LOG=N

Review-Url: https://codereview.chromium.org/2663453004
Cr-Commit-Position: refs/heads/master@{#42748}
2017-01-27 19:43:59 +00:00
pfeldman
82ef9f75e3 V8 Inspector: complete migration to the standard message level enum.
BUG=chromium:682521

Review-Url: https://codereview.chromium.org/2659913002
Cr-Commit-Position: refs/heads/master@{#42747}
2017-01-27 18:49:09 +00:00
julien.gilli
cd96c7ccd5 add post-mortem metadata for frames type
Previously (and still currently for some of them), post-mortem debugging
tools were using StandardFrameConstants::kContextOffset as the offset to
get the value that represents a frame's type.

However since https://codereview.chromium.org/1696043002, a new, more
general offset was introduced:
CommonFrameConstants::kContextOrFrameTypeOffset.

In order for post-mortem debugging tools to use this constant, it is
included in the generated post-mortem metadata.

R=danno@chromium.org,bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2655553006
Cr-Commit-Position: refs/heads/master@{#42746}
2017-01-27 18:19:08 +00:00
bjaideep
e668872857 PPC/s390: [turbofan] Introduce JSCallForwardVarargs operator.
Port 69747e2658

Original Commit Message:

    We turn a JSCallFunction node for

      f.apply(receiver, arguments)

    into a JSCallForwardVarargs node, when the arguments refers to the
    arguments of the outermost optimized code object, i.e. not an inlined
    arguments, and the apply method refers to Function.prototype.apply,
    and there's no other user of arguments except in frame states.

    We also replace the arguments node in the graph with a marker for
    the Deoptimizer similar to Crankshaft to make sure we don't materialize
    unused arguments just for the sake of deoptimization. We plan to replace
    this with a saner EscapeAnalysis based solution soon.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5267,v8:5726
LOG=N

Review-Url: https://codereview.chromium.org/2656363002
Cr-Commit-Position: refs/heads/master@{#42745}
2017-01-27 17:48:34 +00:00
marja
53667c89b0 [parser] Skipping inner funcs: produce correct data for var redeclarations.
This unifies the behavior of Scope::DeclareVariableName with
Scope::DeclareVariable.

BUG=v8:5516

Review-Url: https://codereview.chromium.org/2658063005
Cr-Commit-Position: refs/heads/master@{#42744}
2017-01-27 16:33:36 +00:00
machenbach
aaaffd3758 [CQ] Make verify-csa bots block CQ
BUG=chromium:685561
NOTRY=true
TBR=danno@chromium.org, kjellander@chromium.org

Review-Url: https://codereview.chromium.org/2650383008
Cr-Commit-Position: refs/heads/master@{#42743}
2017-01-27 15:34:45 +00:00