Commit Graph

23685 Commits

Author SHA1 Message Date
arv
b6d950c979 [es6] Bound function names
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-function.prototype.bind

Bound functions should have a name based on the function that was
bound.

This reverts the revert f2747ed9b4. The original
CL was reverted because the Blink layout test broke. I have a CL that disables
these tests at: https://codereview.chromium.org/1196753003/

BUG=N
LOG=N
R=adamk
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

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

Cr-Commit-Position: refs/heads/master@{#29193}
2015-06-22 14:30:01 +00:00
dslomov
e7cdb615ae [destructuring] Implement parameter pattern matching.
Scoping for initializers is yet incorrect. Defaults are not supported.

R=arv@chromium.org,rossberg@chromium.org
BUG=v8:811
LOG=N

Committed: https://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70
Cr-Commit-Position: refs/heads/master@{#29184}

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

Cr-Commit-Position: refs/heads/master@{#29192}
2015-06-22 14:16:02 +00:00
caitpotter88
5337508fe3 [es6] ship Rest Parameters
BUG=v8:2159
LOG=N
R=arv@chromium.org, dslomov@chromium.org, rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29191}
2015-06-22 13:43:26 +00:00
jochen
839170e785 Keep track of ArrayBuffers based on collector type, not space
Since Mark/Compact also collects garbage in the new space, we can't just
free old space ArrayBuffers during MC - otherwise we run the risk of
never freeing new array buffers

BUG=v8:4201
R=hpayer@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29190}
2015-06-22 13:24:46 +00:00
machenbach
2197ef2aaf [android] Merge gyp configurations.
The merge makes it possible to reuse variables from the
android configuration in standalone.gypi.

BUG=chromium:502176
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29189}
2015-06-22 13:17:23 +00:00
machenbach
82e8060515 Revert of [destructuring] Implement parameter pattern matching. (patchset #7 id:120001 of https://codereview.chromium.org/1189743003/)
Reason for revert:
[Sheriff] Breaks tsan:
http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/4392

Original issue's description:
> [destructuring] Implement parameter pattern matching.
>
> Scoping for initializers is yet incorrect. Defaults are not supported.
>
> R=arv@chromium.org,rossberg@chromium.org
> BUG=v8:811
> LOG=N
>
> Committed: https://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70
> Cr-Commit-Position: refs/heads/master@{#29184}

TBR=arv@chromium.org,rossberg@chromium.org,caitpotter88@gmail.com,wingo@igalia.com,dslomov@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:811

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

Cr-Commit-Position: refs/heads/master@{#29188}
2015-06-22 13:14:24 +00:00
mstarzinger
86594b7da2 [turbofan] Add CodeFactory::Instanceof helper.
R=mvstanton@chromium.org
TEST=cctest/test-run-jsops/BinopInstanceOf

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

Cr-Commit-Position: refs/heads/master@{#29187}
2015-06-22 12:16:06 +00:00
ben
44bc918458 Use optparse in js2c.py for python compatibility
Without this change, V8 won't build on RHEL/CentOS 6 because the distro
python is too old to know about the argparse module.

Can this commit be cherry-picked to the 4.4 branch?  It should apply
cleanly.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29186}
2015-06-22 12:13:56 +00:00
bmeurer
d4f70f8ce8 [turbofan] Revive the VectorSlotPair and also put feedback on JSCallFunction.
We resurrect the VectorSlotPair in order to be able to separate the
feedback input for the compiler from the actual type feedback vector
that is required to meet the IC requirements at runtime. This will allow
us to for example use feedback from a different context or divide the
type feedback vector into two separate vectors, without having to touch
the compiler. It'll allow use to load the vector from the shared
function info at runtime, while still consuming feedback in the
compiler (i.e. we don't rely on the feedback vector node to be a heap
constant).

R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29185}
2015-06-22 12:08:20 +00:00
dslomov
42f30f4ded [destructuring] Implement parameter pattern matching.
Scoping for initializers is yet incorrect. Defaults are not supported.

R=arv@chromium.org,rossberg@chromium.org
BUG=v8:811
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29184}
2015-06-22 12:07:13 +00:00
machenbach
5fe960a966 [android] Add toolchain path logic to gyp config.
BUG=chromium:502176
LOG=n
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#29183}
2015-06-22 11:32:18 +00:00
verwaest
6c7449a636 Move SetFastDoubleElementsCapacity into GrowCapacityAndConvert
BUG=v8:4137
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29182}
2015-06-22 11:24:19 +00:00
verwaest
d195c6f9bd Remove broken optimization unwrapping number wrappers on setting array.length
Can't imagine it's very useful; lets restore/fix once it becomes relevant

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29181}
2015-06-22 10:49:02 +00:00
verwaest
57a3810280 Get rid of JSArray::Expand and friends
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29180}
2015-06-22 10:44:24 +00:00
yangguo
7c43967bb7 Do not look for existing shared function info when compiling a new script.
LOG=N
BUG=chromium:502908

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

Cr-Commit-Position: refs/heads/master@{#29179}
2015-06-22 09:56:34 +00:00
bmeurer
def2411a29 [turbofan] Some cleanup to the Typer.
This change does the following:

  a.) Remove unused fields from the Typer.
  b.) Move some interesting unions to types.h.
  c.) Reduce Typer constructor overhead.
  d.) Avoid heap allocation in the Typer.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29178}
2015-06-22 09:16:06 +00:00
mstarzinger
816abc5e86 Fix terrible interaction with code flushing.
This fixes a terrible interaction of code flushing and the clearing of
optimized code maps hanging off a SharedFunctionInfo. The following is
what happened:
1) Incremental marking cleared map in SharedFunctionInfo s, however it
   was not enqueued as a flushing candidate because one JSFunction f1
   still had optimized code.
2) Deoptimization of f1 made s eligible for code flushing.
3) Optimization of f2 added new entry to optimized code map of s.
4) The JSFunction f2 became unreachable and hence is never marked.
5) Incremental marking now visits f1, finds it eligible for flushing,
   also s is eligible for flushing, both are enqueued.
6) Marking finishes, code flusher clears f1 and s, but the optimized
   code map of s still contains an entry.
7) Boom!

R=ulan@chromium.org,hpayer@chromium.org
TEST=mjsunit/es6/generators-iteration
BUG=v8:3803
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29177}
2015-06-22 08:25:45 +00:00
Benedikt Meurer
3253b0a136 [turbofan] Run context specialization, inlining and initial DCE in one pass.
This is another missing piece in the puzzle towards general inlining.
The fact that we can combine this with context specialization is a nice
bonus, and not necessarily a requirement.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29176}
2015-06-22 08:14:42 +00:00
mvstanton
2a3b057587 Built-in apply() performance benefits from an uninitialized IC.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29175}
2015-06-22 07:05:22 +00:00
bmeurer
94a0bc8e90 [turbofan] Run DeadCodeElimination as part of the generic lowering phase.
This way we don't need the separate late control reduction pass over the
graph, plus we can also reduce dead code recognized by generic lowering.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29174}
2015-06-22 07:04:16 +00:00
mvstanton
17c8ffeaa3 Vector ICs: Turbofan vector store ic support
Turbofan needs to pass vector slots around for named and keyed stores.
Also, the CL addresses a missing slot for ClassLiterals.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29173}
2015-06-21 13:55:30 +00:00
v8-autoroll
ed0bd59440 Update V8 DEPS.
Rolling v8/buildtools to ecc8e253abac3b6186a97573871a084f4c0ca3ae

Rolling v8/tools/clang to 73ec8804ed395b0886d6edf82a9f33583f4a7902

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29172}
2015-06-20 08:09:34 +00:00
machenbach
a002cbd743 Revert of Ship Harmony Array/TypedArray methods (patchset #6 id:100001 of https://codereview.chromium.org/1187543003/)
Reason for revert:
[Sheriff] Breaks gcstress and mac asan:
http://build.chromium.org/p/client.v8/builders/V8%20GC%20Stress%20-%203/builds/3896
http://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN/builds/1774

Original issue's description:
> Ship Harmony Array/TypedArray methods
>
> CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
> BUG=v8:3578
> LOG=Y
> R=adamk
>
> Committed: https://crrev.com/7142b0d211b732e1c119fded80f43fbbd9cea0f8
> Cr-Commit-Position: refs/heads/master@{#29170}

TBR=adamk@chromium.org,littledan@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3578

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

Cr-Commit-Position: refs/heads/master@{#29171}
2015-06-20 07:25:27 +00:00
littledan
7142b0d211 Ship Harmony Array/TypedArray methods
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
BUG=v8:3578
LOG=Y
R=adamk

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

Cr-Commit-Position: refs/heads/master@{#29170}
2015-06-20 00:02:02 +00:00
caitpotter88
1765866b0b [es6] throw TypeError when setting cyclic prototype value
Object.setPrototypeOf() throws a TypeError if value would create a
cycle. Previously a plain Error was thrown rather than a TypeError.

BUG=v8:4197
R=mike@bocoup.com
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29169}
2015-06-19 22:18:36 +00:00
arv
7876b43bbe [es6] Ship spread
This enables both --harmony-spreadcalls and --harmony-spread-arrays

BUG=v8:3018
LOG=N
R=caitpotter88@gmail.com, rossberg@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

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

Cr-Commit-Position: refs/heads/master@{#29168}
2015-06-19 20:40:48 +00:00
wingo
9594cc72ee Ship arrow functions
R=rossberg@chromium.org
LOG=Y
BUG=v8:2700

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

Cr-Commit-Position: refs/heads/master@{#29167}
2015-06-19 19:55:16 +00:00
conradw
4ac7be5656 Revert relanded strong property access CL
Reason:
Regressions in various benchmarks.

Revert "Revert of Revert of [strong] Implement strong mode restrictions on property access (patchset #1 id:1 of https://codereview.chromium.org/1189153002/)"

This reverts commit 41405c0470.

Revert "X87: Revert of Revert of [strong] Implement strong mode restrictions on property access."

This reverts commit 48de5f4d6b.

Revert "Fix overlapping KeyedLoadIC bitfield."

This reverts commit 4e6c956abf.

Revert "MIPS64: Fix 'Revert of Revert of [strong] Implement strong mode restrictions on property access'."

This reverts commit 74f97b0d2a.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29166}
2015-06-19 19:00:53 +00:00
verwaest
7028e4b531 Inline SetLengthWithoutNormalize into its callers
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29165}
2015-06-19 18:59:25 +00:00
arv
0f502f679e Test262 update 2015-06-11 (Take 3)
This reverts commit 72bb369d08.

Always skip slow tests.

Also, some eval tests are failing in strict mode with nosnap

BUG=N
LOG=N
R=adamk@chromium.org, littledan@chromium.org, machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29164}
2015-06-19 18:58:19 +00:00
Djordje.Pesic
12e41568b3 MIPS: Added data tracing to simulator
Added memory and register data tracing to mips32 simulator

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

Cr-Commit-Position: refs/heads/master@{#29163}
2015-06-19 18:57:13 +00:00
mstarzinger
ad506eebbb Remove deprecated SharedFunctionInfo::dont_cache predicate.
R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29162}
2015-06-19 18:55:56 +00:00
binji
4f8761ca4e Revert of Add d8 API for spawning function on a new thread (Second try) (patchset #3 id:60001 of https://codereview.chromium.org/1195613003/)
Reason for revert:
Fails on V8 Linux - isolates (http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20isolates/builds/4128)

Original issue's description:
> Add d8 API for spawning function on a new thread (Second try)
>
> This API closely matches the Worker API. The differences:
>
> 1) The argument to the Worker constructor is a function to run, not a script.
> 2) Receiving a message from a worker is a synchronous API (as there is no event
> loop).
>
> The serialization done here is not robust as the real DOM implementation. For
> example, recursive data structures or otherwise duplicated objects are not
> allowed.
>
> BUG=chromium:497295
> R=jochen@chromium.org
> LOG=n
>
> Review URL: https://codereview.chromium.org/1185643004
>
> Cr-Commit-Position: refs/heads/master@{#29126}
>
> Committed: https://crrev.com/ec2eaf712ecee6b4891c0458f2397e04a1f9b339
> Cr-Commit-Position: refs/heads/master@{#29158}

TBR=jochen@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:497295

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

Cr-Commit-Position: refs/heads/master@{#29161}
2015-06-19 18:34:04 +00:00
arv
87afca31ad Revert of Additional HandleScopes to limit Handle consumption. (patchset #4 id:50001 of https://codereview.chromium.org/1185633002/)
Reason for revert:
Fails the following test

handle-count-ast
handle-count-runtime-...

on V8 Linux - nosnap - debug - 1

http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug%20-%201/builds/851/steps/Check/logs/stdio

Original issue's description:
> Additional HandleScopes to limit Handle consumption.
>
> erikcorry@chromium.org suggested digging into v8 handle usage. Found potential scopes in ast.cc and runtime-literals.cc and added tests.
>
> The runtime-literals.cc change reduces peak handles in imaging-darkroom.js from 1,282,610 to 428,218. The ast.cc change reduces the peak handles in string-tagcloud.js from 80,738 to 8,176.
>
> No significant handle count issues found with major websites, but substantial savings on some benchmarks and demos:
>
> Kraken's imaging-darkroom.js down from 1,282,610 to 428,218 due to runtime-literals.cc scope.
> SunSpider's string-tagcloud.js down from 80,738 to 8.176 due to ast.cc
>
> http://www.flohofwoe.net/demos/dragons_asmjs.html (738,906 -> 478,296)
> http://www.flohofwoe.net/demos/instancing_asmjs.html (737,884 -> 477,274)
> https://dl.dropboxusercontent.com/u/16662598/Ports/DOSBox-web/doom.html?engine=dosbox-growth.js (1,724,114 -> 1,087,408)
> https://kripken.github.io/ammo.js/examples/new/ammo.html (175,784 -> 142,058)
>
> BUG=
>
> Committed: https://crrev.com/3a4c7538839186aa38910c66c986abb563f4ccd2
> Cr-Commit-Position: refs/heads/master@{#29155}

TBR=yangguo@chromium.org,erikcorry@chromium.org,oth@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29160}
2015-06-19 18:25:31 +00:00
binji
e6fed5e895 Fix cluster-fuzz bug introduced in refs/heads/master@{#28796}
Don't DCHECK in the atomic runtime functions.

BUG=chromium:501809,chromium:497295
R=jarin@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29159}
2015-06-19 16:14:15 +00:00
binji
ec2eaf712e Add d8 API for spawning function on a new thread (Second try)
This API closely matches the Worker API. The differences:

1) The argument to the Worker constructor is a function to run, not a script.
2) Receiving a message from a worker is a synchronous API (as there is no event
loop).

The serialization done here is not robust as the real DOM implementation. For
example, recursive data structures or otherwise duplicated objects are not
allowed.

BUG=chromium:497295
R=jochen@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#29126}

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

Cr-Commit-Position: refs/heads/master@{#29158}
2015-06-19 16:13:11 +00:00
dusan.milosavljevic
e8173e4ea2 MIPS64: Fix random failures of fannkuch.js.
TEST=mjsunit/asm/embenchen/fannkuch,
     mjsunit/math-abs
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29157}
2015-06-19 16:11:55 +00:00
balazs.kilvady
74f97b0d2a MIPS64: Fix 'Revert of Revert of [strong] Implement strong mode restrictions on property access'.
Port 41405c0470

TEST=mjsunit/strong/load-property-mutate-backing-store, mjsunit/call-stub
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29156}
2015-06-19 16:10:49 +00:00
oth
3a4c753883 Additional HandleScopes to limit Handle consumption.
erikcorry@chromium.org suggested digging into v8 handle usage. Found potential scopes in ast.cc and runtime-literals.cc and added tests.

The runtime-literals.cc change reduces peak handles in imaging-darkroom.js from 1,282,610 to 428,218. The ast.cc change reduces the peak handles in string-tagcloud.js from 80,738 to 8,176.

No significant handle count issues found with major websites, but substantial savings on some benchmarks and demos:

Kraken's imaging-darkroom.js down from 1,282,610 to 428,218 due to runtime-literals.cc scope.
SunSpider's string-tagcloud.js down from 80,738 to 8.176 due to ast.cc

http://www.flohofwoe.net/demos/dragons_asmjs.html (738,906 -> 478,296)
http://www.flohofwoe.net/demos/instancing_asmjs.html (737,884 -> 477,274)
https://dl.dropboxusercontent.com/u/16662598/Ports/DOSBox-web/doom.html?engine=dosbox-growth.js (1,724,114 -> 1,087,408)
https://kripken.github.io/ammo.js/examples/new/ammo.html (175,784 -> 142,058)

BUG=

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

Cr-Commit-Position: refs/heads/master@{#29155}
2015-06-19 16:04:22 +00:00
verwaest
a803254413 Add fast path for setting array.length
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29154}
2015-06-19 15:27:47 +00:00
wingo
d940c02724 Better error reporting for "return();"
R=rossberg@chromium.org
BUG=v8:4194
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29153}
2015-06-19 15:10:10 +00:00
verwaest
8076d6ee2d More cleanup related to setting array.length
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29152}
2015-06-19 14:57:11 +00:00
yangguo
c166945083 Keep a canonical list of shared function infos.
Each Script object now keeps a WeakFixedArray of SharedFunctionInfo
objects created from this script.

This way, when compiling a function, we do not create duplicate shared
function info objects when recompiling with either compiler.

This fixes a class of issues in the debugger, where we set break points
on one shared function info, but functions from duplicate shared function
infos are not affected.

LOG=N
BUG=v8:4132

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

Cr-Commit-Position: refs/heads/master@{#29151}
2015-06-19 14:40:32 +00:00
caitpotter88
b61e9812c3 [es6] ship Object.assign
BUG=v8:4007
LOG=N
R=rossberg@chromium.org, arv@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

Committed: https://crrev.com/12e194860a56d47a10d89ae34761a4af6b6166bb
Cr-Commit-Position: refs/heads/master@{#29118}

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

Cr-Commit-Position: refs/heads/master@{#29150}
2015-06-19 14:39:13 +00:00
bmeurer
a8a844da1c [turbofan] Preserve Bounds when cloning nodes in the scheduler.
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29149}
2015-06-19 14:02:36 +00:00
conradw
4e6c956abf Fix overlapping KeyedLoadIC bitfield.
BUG=
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29148}
2015-06-19 13:37:51 +00:00
bmeurer
1021ed85cb [ubsan] Fix HeapObjectMatcher to avoid invalid casts.
BUG=v8:3809
LOG=n
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29147}
2015-06-19 12:49:13 +00:00
bmeurer
733a246386 [turbofan] Proper dead code elimination as regular reducer.
The three different concerns that the ControlReducer used to deal with
are now properly separated into

  a.) DeadCodeElimination, which is a regular AdvancedReducer, that
      propagates Dead via control edges,
  b.) CommonOperatorReducer, which does strength reduction on common
      operators (i.e. Branch, Phi, and friends), and
  c.) GraphTrimming, which removes dead->live edges from the graph.

This will make it possible to run the DeadCodeElimination together with
other passes that actually introduce Dead nodes, i.e. typed lowering;
and it opens the door for general inlining without two stage fix point
iteration.

To make the DeadCodeElimination easier and more uniform, we basically
reverted the introduction of DeadValue and DeadEffect, and changed the
Dead operator to produce control, value and effect. Note however that
this is not a requirement, but merely a way to make dead propagation
easier and more uniform. We could always go back and decide to have
different Dead operators if some other change requires that.

Note that there are several additional opportunities for cleanup now,
i.e. OSR deconstruction could be a regular reducer now, and we don't
need to use TheHole as dead value marker in the GraphReducer. And we can
actually run the dead code elimination together with the other passes
instead of using separate passes over the graph.  We will do this in
follow up CLs.

R=jarin@chromium.org, mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#29146}
2015-06-19 12:07:26 +00:00
mstarzinger
f82ccff5a2 [turbofan] Disable failing DeoptExceptionHandlerFinally test.
R=jarin@chromium.org
TEST=cctest/test-run-deopt/DeoptExceptionHandlerFinally
BUG=v8:4195
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#29145}
2015-06-19 11:41:12 +00:00
verwaest
be8528b3bd Split setting array length from handling new Array(non-number)
BUG=

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

Cr-Commit-Position: refs/heads/master@{#29144}
2015-06-19 11:21:37 +00:00