Commit Graph

16643 Commits

Author SHA1 Message Date
sigurds@chromium.org
bc475b4a6b Add inlining for intrinsics.
This issue is for discussion on how to proceed.

I think the implementation of ValueOf shows that directly creating the IR does not scale.

BUG=
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 07:56:50 +00:00
dcarney@chromium.org
d7e0820a69 some static casts for windows to fix r24717
TBR=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24718 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 07:43:56 +00:00
dcarney@chromium.org
b3f2277ea4 [turbofan] decouple register allocation from schedule and graph
R=bmeurer@chromium.org, jarin@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 07:32:01 +00:00
bmeurer@chromium.org
d029d76120 [turbofan] Skip bounds checks for positive indices only.
TEST=unittests,mjsunit/asm/int32array-constant-key
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24716 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 06:25:41 +00:00
weiliang.lin@intel.com
d367c25c85 X87: ReceiverCheckMode needs to be utilized further.
port r24704.

original commit message:

  ReceiverCheckMode needs to be utilized further.

  The parameter wasn't being passed appropriately, and there was an extra
   opportunity to use mode RECEIVER_IS_STRING in SubStringStub.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 04:12:53 +00:00
weiliang.lin@intel.com
66febc0aa0 X87: Tick processor: Print C++ entry points.
port r24700.

original commit message:

  Tick processor: Print C++ entry points

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24713 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 04:06:06 +00:00
weiliang.lin@intel.com
48a7db0609 X87: Implement the new semantics for 'super(...)'
original commit message:

  Implement the new semantics for 'super(...)'

  Per the latest ES6 draft, super(...) translates into a call
   to function's prototype.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24711 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 02:00:50 +00:00
weiliang.lin@intel.com
4b7c0c05c5 X87: Make disassembler string tables read-only.
port r24672.

original commit message:

  Move them from .data to .rodata.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 01:58:46 +00:00
akos.palfi@imgtec.com
89ceacaed4 MIPS64: ReceiverCheckMode needs to be utilized further.
Port r24704 (f43a27ee)

Original commit message:
The parameter wasn't being passed appropriately, and there was an extra
opportunity to use mode RECEIVER_IS_STRING in SubStringStub.

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24707 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 20:17:01 +00:00
adamk@chromium.org
730c3fa3e0 Don't expose Array.prototype.values as it breaks webcompat
Some versions of Outlook Web Access test for the existence of a 'values'
property on Array instances, so adding the 'values' iterator to the prototype
(even with @@unscopeables) causes breakage.

This matches Gecko: they ship Array.prototype.{keys,entries} but not 'values'.

BUG=409858
LOG=Y
R=arv@chromium.org, danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 20:11:47 +00:00
dslomov@chromium.org
e3ad693020 Correct semantics for numerically indexed stores to typed arrays.
R=verwaest@chromium.org, ishell@chromium.org

Committed: https://code.google.com/p/v8/source/detail?r=24691

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24705 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 16:33:38 +00:00
mvstanton@chromium.org
2dfefb42eb ReceiverCheckMode needs to be utilized further.
The parameter wasn't being passed appropriately, and there was an extra
opportunity to use mode RECEIVER_IS_STRING in SubStringStub.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 16:23:31 +00:00
jkummerow@chromium.org
77d8b4b9d0 Fix compilation with GCC-4.8 after r24685
TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 15:50:05 +00:00
jkummerow@chromium.org
c186399e5f Tick processor: Print C++ entry points
R=loislo@chromium.org, yangguo@chromium.org, yurys@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 15:44:02 +00:00
yangguo@chromium.org
f1d808fa95 Fix compile issue.
TBR=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24699 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 14:46:05 +00:00
yangguo@chromium.org
83ddaa0df7 Fix break location calculation.
R=ulan@chromium.org
BUG=chromium:419663
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 14:11:01 +00:00
dslomov@chromium.org
e149f81eba Keyed stores to super with numeric keys.
R=verwaest@chromium.org, arv@chromium.org, ishell@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 13:19:45 +00:00
dslomov@chromium.org
8854589c79 Revert "Correct semantics for numerically indexed stores to typed arrays."
This reverts commit r24691 because win64 release build breaks.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24695 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 13:01:54 +00:00
titzer@chromium.org
e4c6f9488e Implement graph trimming in ControlReducer.
Trimming the graph consists of breaking links from nodes that are not reachable from end to nodes that are reachable from end. Such dead nodes show up in the use lists of the live nodes and though mostly harmless, just clutter up the graph. They also can limit instruction selection opportunities, so it is good to get rid of them.

This CL is one half of the ControlReducer functionality, the other half
being branch folding.

R=bmeurer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:51:57 +00:00
dslomov@chromium.org
3154c4a5f2 Correct semantics for numerically indexed stores to typed arrays.
R=verwaest@chromium.org, ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:40:40 +00:00
balazs.kilvady@imgtec.com
15e018db2d MIPS: Implement the new semantics for 'super(...)'.
Port r24683 (b1533f6)

Original commit message:
Per the latest ES6 draft, super(...) translates into a call
to function's prototype.

BUG=v8:3330
LOG=N
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24690 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:30:13 +00:00
titzer@chromium.org
8c5f9b6bb0 Fix InstructionSelector to handle calls with no (used) output values.
R=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 11:26:26 +00:00
yangguo@chromium.org
d913faaf6d Improve String.repeat.
Adapted from patch contributed by Isiah Meadows <impinball@gmail.com>.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 10:01:38 +00:00
yangguo@chromium.org
f0e3ae8e24 Prohibit serializing with --harmony-scoping.
R=jochen@chromium.org
BUG=v8:3628
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:54:48 +00:00
bmeurer@chromium.org
a779150260 [turbofan] Eliminate typed array bounds checks if both key and length are constant.
TEST=mjsunit,unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24685 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:35:45 +00:00
dslomov@chromium.org
d4cbcfce6e Implement the new semantics for 'super(...)'
Per the latest ES6 draft, super(...) translates into a call
to function's prototype.

R=arv@chromium.org, ishell@chromium.org, verwaest@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24683 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:16:03 +00:00
dslomov@chromium.org
7cf9d1c807 Share code between Factory::NewJSTypedArray and API
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 09:04:58 +00:00
bmeurer@chromium.org
23da1cebec [x64] add missing disassm of pcmpeqd
BUG=
R=bmeurer@chromium.org

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

Patch from Weiliang Lin <weiliang.lin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 07:35:38 +00:00
bmeurer@chromium.org
fe6656fbfe [arm] Prefer BIC over BFC.
BFC requires same register for input and output and causes introduction
of some unneccesary gap moves.

TEST=unittests,mjsunit
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24678 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 07:07:54 +00:00
weiliang.lin@intel.com
d8ae78539f X87: Eliminate special keyed load string stub in favor of uniform handlers
port r24661.

original commit message:

  Eliminate special keyed load string stub in favor of uniform handlers.

  KeyedLoadIC installs a special case if the receiver is a string.
  Although there are several maps for strings, in practice we seem to
  be able to treat them individually because a given KeyedLoad site
  only sees 1-2 string types

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24674 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 05:23:14 +00:00
bmeurer@chromium.org
0854ee289b [x64] simply tweak materialization of float/double constants
port 24485
Fixed a bug of "psllq" instruction in x64

R=bmeurer@chromium.org

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

Patch from Weiliang Lin <weiliang.lin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 04:18:38 +00:00
bmeurer@chromium.org
bacde72e20 Move them from .data to .rodata.
R=bmeurer@chromium.org

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

Patch from Ben Noordhuis <ben@strongloop.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 04:03:15 +00:00
haraken@chromium.org
f3bfd04bcf Pass an Isolate to v8::VisitHandlesWithClassIds
The Isolate version of v8::VisitHandlesWithClassIds is needed
for https://codereview.chromium.org/651713002/

R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 00:46:18 +00:00
dslomov@chromium.org
80acb53d22 Harden CopyJSObject.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 19:38:32 +00:00
balazs.kilvady@imgtec.com
9c7a753e51 MIPS: Fix clang compilation error.
Port r24662 (4722032)

BUG=
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 17:24:15 +00:00
balazs.kilvady@imgtec.com
17b5b71bf7 MIPS: Eliminate special keyed load string stub in favor of uniform handlers.
Port r24661 (5499efb)

Original commit message:
KeyedLoadIC installs a special case if the receiver is a string.
Although there are several maps for strings, in practice we seem to
be able to treat them individually because a given KeyedLoad site
only sees 1-2 string types.

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24668 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 16:39:51 +00:00
balazs.kilvady@imgtec.com
ec68f95987 MIPS: Fix code for InstanceofStub.
Port r24654 (66aa0fb)

BUG=
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24667 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 16:25:27 +00:00
wingo@igalia.com
0841f7241b Track usage of "this" and "arguments" in Scope
This adds flags in Scope to track wheter a Scope uses "this" and,
"arguments". The information is exposed via Scope::uses_this(),
and Scope::uses_arguments(), respectively. Flags for tracking
usage on any inner scope uses are available as well via
Scope::inner_uses_this(), and Scope::inner_uses_arguments().

Knowing whether scopes use "this" and "arguments" will be handy
to generate the code needed to capture their values when generating
the code for arrow functions.

BUG=v8:2700
LOG=
R=rossberg@chromium.org

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

Patch from Adrian Perez de Castro <aperez@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 13:19:36 +00:00
mvstanton@chromium.org
0476093778 Fix clang compilation error.
TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24662 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 12:27:35 +00:00
mvstanton@chromium.org
ecac8b0877 Eliminate special keyed load string stub in favor of uniform handlers.
KeyedLoadIC installs a special case if the receiver is a string.
Although there are several maps for strings, in practice we seem to
be able to treat them individually because a given KeyedLoad site
only sees 1-2 string types.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:42:47 +00:00
bmeurer@chromium.org
fe3a8845f0 [turbofan] Correctify typed lowering.
We cannot add new JSToNumber nodes here in general, because:

 a) The inserted ToNumber operation screws up observability of valueOf.
 b) Deoptimization at ToNumber doesn't have corresponding bailout id.

TEST=cctest,mjsunit
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:31:00 +00:00
bmeurer@chromium.org
785f7a21c0 Fix x64 after r24656.
TBR=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24659 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:29:31 +00:00
wingo@igalia.com
04c17602a4 Object.is should use SameValue
BUG=v8:3576
LOG=
R=arv@chromium.org, svenpanne@chromium.org, wingo@igalia.com

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

Patch from Diego Pino <dpino@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24658 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:24:45 +00:00
wingo@igalia.com
ee64a14b24 Implement .forEach() on typed arrays
BUG=v8:3578
LOG=Y
R=dslomov@chromium.org, wingo@igalia.com

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

Patch from Adrian Perez de Castro <aperez@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24657 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 10:55:26 +00:00
bmeurer@chromium.org
15bc4aa2c8 [turbofan] Run value numbering after SimplifiedLowering.
Running ValueNumberingReducer together with ChangeLowering causes
trouble with the current GraphReducer and makes GVN ineffective, so
running it before we get to change lowering works around that well-known
(phase ordering) problem for now.

R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 10:50:21 +00:00
aandrey@chromium.org
b96b570628 Introduce v8::Exception::GetStackTrace API method.
This will be needed to get a stack trace from a DOMException.

API=v8::Exception::GetStackTrace
R=yangguo@chromium.org
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24655 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 10:42:08 +00:00
m.m.capewell@googlemail.com
0840abf37b [arm][arm64] fix code for InstanceofStub
R=ulan@chromium.org, bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 10:38:58 +00:00
bmeurer@chromium.org
5cfc74948f [turbofan] Fix GraphC1Visualizer::PrintType().
TBR=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24650 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 06:59:39 +00:00
weiliang.lin@intel.com
ef6ffa2a01 X87: Implement inline %_IsJSProxy() for full codegen and Hydrogen.
port r24636.

original commit message:

  Implement inline %_IsJSProxy() for full codegen and Hydrogen
  Saving a runtime call for many builtin functions.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24649 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 06:24:47 +00:00
adamk@chromium.org
ae7161e4cb Revert "Remove SmartMove, bringing Array methods further into spec compliance"
This reverts https://code.google.com/p/v8/source/detail?r=24647

It caused test failures in Array methods in Linux64 OptimizeForSize.

BUG=v8:2615
TBR=verwaest@chromium.org
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24648 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 23:53:02 +00:00
adamk@chromium.org
bb885a79db Remove SmartMove, bringing Array methods further into spec compliance
This is one step towards a single codepath for each method in array.js.

This patch is based on rafaelw's https://codereview.chromium.org/349073002

BUG=v8:2615
LOG=Y
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 23:36:58 +00:00
adamk@chromium.org
a6ff3f7f4a Handle exceptions thrown by Array.observe machinery
BUG=chromium:417709
LOG=N
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 18:22:20 +00:00
balazs.kilvady@imgtec.com
e6a73c1eb5 MIPS: Implement inline %_IsJSProxy() for full codegen and Hydrogen.
Port r24636

Original commit message:
Saving a runtime call for many builtin functions.

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 17:14:17 +00:00
jkummerow@chromium.org
8949d5f580 Fix compilation some more after r24639
Third time's a charm...

TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24644 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 15:04:09 +00:00
sigurds@chromium.org
2577d6c261 Fix compilation after r24639
TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24643 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:42:32 +00:00
jkummerow@chromium.org
d7acb9148b Fix compilation after r24639
TBR=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24642 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:27:26 +00:00
rossberg@chromium.org
0ab88698ae Fix verification of Int64Constant
TBR=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24641 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:17:26 +00:00
neis@chromium.org
a6f06b4d1f Give simple types to Math.Min, Math.Max, Math.Fround, Math.Clz32.
R=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:12:20 +00:00
yangguo@chromium.org
4f9fd83d85 Break deserializer reservations into chunks that fit onto a page.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:04:53 +00:00
dslomov@chromium.org
461a2f403e Convert argument toObject() in Object.getOwnPropertyNames/Descriptors
BUG=v8:3443
LOG=Y
R=arv@chromium.org, dslomov@chromium.org

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

Patch from Caitlin Potter <caitpotter88@gmail.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 14:01:20 +00:00
jkummerow@chromium.org
c9ae9b3b70 Implement inline %_IsJSProxy() for full codegen and Hydrogen
Saving a runtime call for many builtin functions.

R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 13:26:43 +00:00
titzer@chromium.org
ad80a80a8b Fix bug in NodeCache::GetCachedNodes
TBR=dcarney@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 13:07:18 +00:00
jochen@chromium.org
21f7300a5b Fix GetCurrentThreadId for Solaris etc..
BUG=v8:3620
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24634 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:38:53 +00:00
titzer@chromium.org
754abff699 Add JSGraph::GetCachedNodes and NodeCache::GetCachedNodes. These routines are necessary in the dead code elimination phase to trim away uses from unreachable nodes.
R=bmeurer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:29:39 +00:00
verwaest@chromium.org
23868b419c Optimize Function.prototype.call
BUG=
R=verwaest@chromium.org, jarin@chromium.org, jkummerow@chromium.org

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

Patch from Petka Antonov <p.antonov@partner.samsung.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:22:15 +00:00
dcarney@chromium.org
37f1645023 [turbofan] more verification of rpo
R=titzer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:15:38 +00:00
vegorov@chromium.org
6fc00b4dea Fix out-of-bounds read in SourcePositionToScriptPosition with --hydrogen-track-positions.
We were indexing into the list of inlined functions with inlining ID, which is incorrect.

There can be multiple inlinining IDs corresponding to the same inlined function, because inlining ID is inlining path sensitive unique id for an inlining attempt.

Additionally allow HAbnormalExit to have unknown source position even if we are tracking source positions. No code is generated from abnormal exits anyways.

R=svenpanne@chromium.org
BUG=v8:3184
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24629 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:06:41 +00:00
rossberg@chromium.org
458db603a4 Presubmit checks
TBR=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24628 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 11:58:30 +00:00
rossberg@chromium.org
7464f04ebf Fix oversight in type change
TBR=dcarney@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24627 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 11:56:05 +00:00
rossberg@chromium.org
0e16150d33 Better typing and type verification
- Extend verifier to check types of JS and Simplified nodes.
- Untyped nodes now contain NULL as types, enforcing hard failure.
- Typer immediately installs itself as a decorator; remove explicit decorator installation.
- Decorator eagerly types all nodes that have typed inputs
  (subsumes typing of constant cache, removing its typing
  side-channel and various spurious dependencies on the typer).
- Cut down typer interface to prevent inconsistently typed graphs.
- Remove verification from start, since it caused too much trouble
  with semi-wellformed nodes.
- Fix a couple of bugs on the way that got uncovered.

To do: verifying machine operators. Also, various conditions in the
verifier are currently commented out, because they don't yet hold.

BUG=
R=jarin@chromium.org,titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 11:38:04 +00:00
yangguo@chromium.org
46db2f9b80 Make event logger slightly more light-weight.
R=dcarney@chromium.org
BUG=chromium:423668
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 11:16:42 +00:00
erikcorry@chromium.org
3727a10d20 Use WeakCell to handle the script wrapper cache
The script wrapper cache used the API weak handles to provide a weak link from Script to ScriptWrapper. We want to change the way API weakness works, and in this context it's best to get rid of users of the API that don't need to be users.

R=ulan@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 10:11:08 +00:00
yangguo@chromium.org
5e17ead8df Initialize double values before calling rempio2.
R=ishell@chromium.org
BUG=chromium:421981
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24621 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 09:24:55 +00:00
svenpanne@chromium.org
e216ab1d40 Array.prototype.{every, filter, find, findIndex, forEach, map, some}: Use fresh primitive wrapper for calls.
When the receiver is a primitive value, it's cast to an Object before entering the loop. Instead, it should be cast to an Object for each function call while in the loop.

BUG=v8:3536
LOG=Y
R=arv@chromium.org, svenpanne@chromium.org, wingo@igalia.com

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

Patch from Diego Pino <dpino@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24620 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 09:11:32 +00:00
bmeurer@chromium.org
985db1a3c8 [x86] Several small performance improvements.
- Generate

    cmp reg, 0

  instead of

    test reg, -1

  for word tests.
- Generate

    mov reg, [stack slot]
    add reg, reg
    jo label

  instead of

    mov reg, [stack slot]
    add reg, [stack slot]
    jo label

  for SMI tagging.
- Improve materialization of int32 constants on X86-64.
- Branch fusion fix for Word64And and Int64Sub on X86-64.

R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 09:05:40 +00:00
dcarney@chromium.org
b26632f655 Let FastCloneShallowObjectStub work with empty literal objects.
R=verwaest@chromium.org

LOG=N

BUG=417290

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24618 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 08:48:44 +00:00
dcarney@chromium.org
c8a0ea9e3a [turbofan] fix block mapping in code comments
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 08:23:24 +00:00
neis@chromium.org
93d0e79d6e Again reland "Refine expression typing, esp. by propagating range information."
This relands commit 24552.

TBR=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 08:21:46 +00:00
bmeurer@chromium.org
f574d93e51 Revert "Reland "Refine expression typing, esp. by propagating range information.""
This reverts commit r24609 for breaking the
cctest/test-js-typed-lowering/Int32BitwiseBinops test.

TBR=rossberg@chromium.org,neis@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24614 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 03:50:13 +00:00
balazs.kilvady@imgtec.com
2de468e854 MIPS: [turbofan] Optimize division/modulus by constant.
Port r24595 (d0f464e)

TEST=cctest,mjsunit,unittests
BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 17:26:14 +00:00
sigurds@chromium.org
b30c09d969 Fix performance bug in scheduler.
TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 16:28:32 +00:00
neis@chromium.org
a7eb593147 Reland "Refine expression typing, esp. by propagating range information."
This relands commit 24552.

R=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 16:27:26 +00:00
yangguo@chromium.org
9a21ba499c Catch exceptions thrown when enqueuing change records.
R=ishell@chromium.org
BUG=chromium:417709
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24608 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 14:46:11 +00:00
yangguo@chromium.org
1a90501909 Fix V8's default timer event logger.
This broke because the optimizing compiler thread no longer holds
Isolate::Current() in its TLS.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 14:45:03 +00:00
ulan@chromium.org
dd49272c00 Weak Cells
Introduce an object that holds a weak reference.
Design document: http://goo.gl/9dSvvy.

BUG=
R=erik.corry@gmail.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 14:43:45 +00:00
jkummerow@chromium.org
75fe010f93 Always initialize key_type_ in AST nodes
BUG=chromium:423117
LOG=n
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24604 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 13:52:15 +00:00
yangguo@chromium.org
974f3dcfee Correctly expand literal buffer for surrogate pairs.
R=jkummerow@chromium.org
BUG=chromium:423212
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 13:25:19 +00:00
neis@chromium.org
327d3ae870 Add typing for Int32MulHigh.
TBR=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24602 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 12:41:34 +00:00
neis@chromium.org
4587329594 Simple typing of machine operators.
R=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24601 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 12:27:29 +00:00
jkummerow@chromium.org
d7482818a6 Fix de/serialization tests after r24592
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 12:21:18 +00:00
sigurds@chromium.org
4dc4b40925 Reland "Fix scheduler to correctly schedule nested diamonds".
Reland fix: Consume less memory.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 12:08:55 +00:00
bmeurer@chromium.org
81877a6440 [turbofan] Optimize division/modulus by constant.
TEST=cctest,mjsunit,unittests
R=dcarney@chromium.org, svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 11:57:06 +00:00
ishell@chromium.org
f58558d910 Preserve order of fields when doing slow-to-fast object migration.
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 11:03:35 +00:00
svenpanne@chromium.org
da0c38056f Squeeze the layout of various AST node types.
The following AST node types were improved (in decreasing number of
importance for asm.js-like source code): Expression, VariableProxy,
Assignment, BinaryOperation, Declaration, Property, Call.

BUG=chromium:417697
LOG=y
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 10:24:18 +00:00
jkummerow@chromium.org
b774d2068b Always compile functions in the snapshot with deoptimization support.
This prevents an unnecessary deopt-reopt cycle due to type feedback
having been thrown away as part of recompiling with deopt support.
(For non-snapshotted functions this is not an issue.)

Bonus: Add missing space in --trace-ic output, and provide names for
PropertyDescriptor's methods, because passing anonymous functions to
SetUpLockedPrototype frightens and confuses our FuncNameInferrer.

R=hpayer@chromium.org, yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 09:59:24 +00:00
baptiste.afsa@arm.com
573ca15f48 [turbofan] Add support for shifted and rotated operands on ARM64.
R=bmeurer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 09:28:53 +00:00
dcarney@chromium.org
c469dcbc61 build fix
TBR=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 09:22:21 +00:00
sigurds@chromium.org
b0596e9e44 Add control input to LoadField.
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 08:59:27 +00:00
dcarney@chromium.org
75d15894f6 [turbofan] remove some of the dependency of Instruction on Schedule
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 08:51:22 +00:00
jarin@chromium.org
173b07faa9 [turbofan] Output schedule, instructions and register allocator in C1 visualizer format when --turbo-trace is specified.
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 08:43:33 +00:00
jarin@chromium.org
d75f736c11 [turbofan] Use register for instruction operands when SameAsFirst is specified.
As the register allocator cannot reuse spill slots, SameAsFirst
constraint means that we would have to do an expensive move to a
differen spill slot if we choose to spill. Forcing the operand
to a register is cheaper.

In zlib, we get >10% speed-up for ia32, >25% for x64.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24580 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 08:34:20 +00:00
bmeurer@chromium.org
8a00950303 [arm] Drop SMMLS support.
Apparently

 SMMLS r, b, c, a

computes

 r = ((a << 32) - b * c) >> 32

while the documentation is kinda misleading and states that it should
compute

 r = a - ((b * c) >> 32)

The actual behavior is kinda useless, so we drop the instruction again.

TEST=cctest,unittests
TBR=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 07:47:27 +00:00
bmeurer@chromium.org
8950e0a3de [arm] Add support for SMMLA, SMMLS and SMMUL.
TEST=cctest,unittests
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 05:03:04 +00:00
bmeurer@chromium.org
a433541a65 Fix non-TF targets after r24546.
Fix mips64 and x87 builds.

BUG=
R=bmeurer@chromium.org

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

Patch from Paul Lind <paul.lind@imgtec.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 03:46:37 +00:00
weiliang.lin@intel.com
c704369eab X87: Support for super assignments in for..in.
port r24560.

original commit message:
  Support for super assignments in for..in.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 02:55:29 +00:00
paul.lind@imgtec.com
d9cda16c6a MIPS: [turbofan] Make VisitBranch and friends to backend specific.
Port r24546 (c3443cd)

Original commit message:
This is required to fix a tricky branch fusion bug on ARM, which was
caused by the interaction between the architecture-independent and
architecture-specific parts of the InstructionSelector. In the end it
wasn't worth sharing a few common lines of code for the additional
complexity, especially if we also want to properly support architectures
without any dedicated flags register (i.e. MIPS).

TEST=mjsunit,unittests
BUG=
R=paul.lind@imgtec.com

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

Patch from Balazs Kilvady <balazs.kilvady@imgtec.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 23:31:59 +00:00
balazs.kilvady@imgtec.com
55f77c28ac MIPS: Support for super assignments in for..in.
Port r24560 (ef1070b)

BUG=v8:3330
LOG=N
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 19:28:25 +00:00
mstarzinger@chromium.org
25dbc2476c Switch schedule early phase to basic blocks.
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 16:32:12 +00:00
hpayer@chromium.org
d1e693a43a Check if there is still time before finalizing an incremental collection.
BUG=
R=erik.corry@gmail.com, ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 16:27:55 +00:00
sigurds@chromium.org
aa67d12f09 Revert "Fix scheduler to correctly schedule nested diamonds."
This reverts commit 0ab306041a6eba99fe5e2ef78251de137321f559.

"Fix" make scheduler run out of memory.

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 16:08:29 +00:00
rmcilroy@chromium.org
08941c0140 Refactor FrameAndConstantPoolScope and ConstantPoolUnavailableScope to be architecture independent
Move the FrameAndConstantPoolScope and ConstantPoolUnavailableScope out of the arm architecture directory to enable them to be used on all architectures.

R=rmcilroy@chromium.org

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

Patch from André Baixo <baixo@google.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 14:41:33 +00:00
sigurds@chromium.org
0f5949d605 Fix scheduler to correctly schedule nested diamonds.
The scheduler rewires control based on the last *control*
node that appears in the schedule of a block. This is not
sufficient to account for dependencies.

This patch adds additional dependencies to floating control
nodes. Given a floating control node A, every non-control
dependency of every node B that depends on A is introduces
as an additional dependency of A.

This allows the scheduler to correctly schedule two
diamonds A, B, if their only correct schedule is to
schedule B into the ifTrue successor in A.

TEST=cctest/test-scheduler/NestedFloatingDiamonds
R=mstarzinger@chromium.org, titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 13:07:49 +00:00
dslomov@chromium.org
952690a148 Support for super assignments in for..in.
R=ishell@chromium.org, arv@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 12:46:46 +00:00
bmeurer@chromium.org
5c1f7b5aa1 [turbofan] Optimize Int32Mod by power-of-two.
TEST=mjsunit/asm/int32-tmod,unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24554 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 11:09:32 +00:00
neis@chromium.org
a2f4963abd Revert "Refine expression typing, esp. by propagating range information."
This reverts commit 24552.

TBR=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24553 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 10:48:01 +00:00
neis@chromium.org
5a0ff8e656 Refine expression typing, esp. by propagating range information.
R=rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24552 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 10:40:29 +00:00
bmeurer@chromium.org
4a5055174b [turbofan] Embed the actual backing store address for typed loads/stores.
TEST=unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 09:17:33 +00:00
marja@chromium.org
363ac55a5d Script streaming: UTF-8 handling fix.
The problem was that there can be several multi-byte UTF-8 characters near the
splitting point of the data chunks, and the code didn't handle it properly.

This was also the source of crbug.com/417891 - I thought the crash can only
happen when V8 is passed invalid UTF-8 data, but it can also happen in the
abovementioned case. After the fix, we handle the valid UTF-8 case and also
guard against invalid UTF-8 data.

R=yangguo@chromium.org
BUG=chromium:417891
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 09:01:54 +00:00
bmeurer@chromium.org
f60bc89083 [turbofan] Make VisitBranch and friends to backend specific.
This is required to fix a tricky branch fusion bug on ARM, which was
caused by the interaction between the architecture-independent and
architecture-specific parts of the InstructionSelector. In the end it
wasn't worth sharing a few common lines of code for the additional
complexity, especially if we also want to properly support architectures
without any dedicated flags register (i.e. MIPS).

TEST=mjsunit,unittests
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 08:15:03 +00:00
dcarney@chromium.org
657052e87f [turbofan] remove graph from InstructionSequence
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 08:09:27 +00:00
yangguo@chromium.org
f92dc9a1fd Fix build failure.
TBR=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:57:40 +00:00
yangguo@chromium.org
33dc53f9cc Always include full reloc info to stubs for serialization.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:50:21 +00:00
dcarney@chromium.org
907ad65dce [turbofan]IA: ChangeFloat32ToFloat64 supports mem operand
BUG=
R=titzer@chromium.org

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

Patch from Jing Bao <jing.bao@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:42:35 +00:00
dcarney@chromium.org
3396c2badd [turbofan] IA: TruncateFloat64ToFloat32 supports mem operand
BUG=
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 07:12:57 +00:00
weiliang.lin@intel.com
52e156a866 X87: Introduce FeedbackVectorSlot type - better than int.
port r24528.

original commit message:

  Introduce FeedbackVectorSlot type - better than int.

  It's good to have typing around this value.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 01:54:44 +00:00
weiliang.lin@intel.com
ed5f2f814c X87: Teach TurboFan to call vector-based ICs.
port r24519.

original commit message:

  Teach TurboFan to call vector-based ICs.

  Additional static information needs to be passed to Load and KeyedLoad calls if
  --vector-ics is turned on

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-11 06:00:44 +00:00
dusan.milosavljevic@imgtec.com
8e092181ae MIPS: Fix loading Float64 constants in turbofan.
TEST=ctest/test-run-machops/RunFloat64SubImm1,
     RunFloat64SubImm2, RunFloat64MulImm, RunFloat64Compare

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24536 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 18:00:58 +00:00
balazs.kilvady@imgtec.com
f7afce6aea MIPS: Introduce FeedbackVectorSlot type - better than int.
Port r24528 (f7b7e5a)

Original commit message:
It's good to have typing around this value.

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24534 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 16:17:10 +00:00
yangguo@chromium.org
ba6e17c494 Split off remaining runtime functions in runtime.cc.
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 14:59:53 +00:00
balazs.kilvady@imgtec.com
396008387b MIPS: Teach TurboFan to call vector-based ICs.
Port r24519 (842debf)

Original commit message:
Additional static information needs to be passed to Load and KeyedLoad calls if
--vector-ics is turned on.

BUG=
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:56:34 +00:00
mstarzinger@chromium.org
a56c3ce06c Use phase-local zone in the graph builder.
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24531 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:40:08 +00:00
jkummerow@chromium.org
ed585c083c Fix type feedback for name-keyed stores
BUG=chromium:422212
LOG=n
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:27:52 +00:00
mvstanton@chromium.org
d04617b2db Introduce FeedbackVectorSlot type - better than int.
It's good to have typing around this value.

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:22:10 +00:00
mvstanton@chromium.org
8f983e7672 Bogus assert caused turbofan failure.
TBR=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:09:41 +00:00
mstarzinger@chromium.org
2d29390448 Improve comments and readability of scheduler.
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24526 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 11:57:55 +00:00
mstarzinger@chromium.org
6490b9a656 Remove fixpoint workaround from schedule early phase.
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 11:49:53 +00:00
svenpanne@chromium.org
b17d131779 AST nodes have at most one bailout/typefeedback ID now, saving lots of memory.
This is basically https://codereview.chromium.org/569573002/ done right:

During construction, each node type tells its parent how many IDs it
needs in addition to the parent's ones. This is done all the way up in
the class hierarchy until a node's parent doesn't need any ID. At that
point we know how many IDs in summary are needed, and we reserve the
whole range at once, saving only the base ID of that range. All IDs
are now calculated via simple offsets to that base ID. To all
performaniacs: The C++ compiler simplifies the constant calculation to
a simple load and the addition of a single constant.

Note that the actual code is much simpler than all that prose above. :-)
It's basically how compilers for OO languages figure out vtable entries.

We still have lots of holes due to padding in the AST nodes, but this
will be addressed in a separate CL.

BUG=chromium:417697
LOG=y
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24524 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:52:31 +00:00
yangguo@chromium.org
6ca8f782aa Reset code age when serializing code objects.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:51:34 +00:00
dslomov@chromium.org
c9049c0325 Keyed loads from super with numeric keys.
R=ishell@chromium.org, arv@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24522 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:40:29 +00:00
ulan@chromium.org
1adc1565b2 Set output representation of HIsStringAndBranch to tagged.
BUG=chromium:421877
LOG=N
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24521 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:35:30 +00:00
bmeurer@chromium.org
059e4c206e [turbofan] Optimize Uint32LessThan with Word32Sar.
TEST=unittests
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:23:04 +00:00
mvstanton@chromium.org
52575220d4 Teach TurboFan to call vector-based ICs.
Additional static information needs to be passed to Load and KeyedLoad calls if
--vector-ics is turned on.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 09:49:43 +00:00
akos.palfi@imgtec.com
b9cc56dd34 MIPS: Fix for r24501.
BUG=
R=akos.palfi@imgtec.com

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

Patch from Paul Lind <paul.lind@imgtec.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 09:06:55 +00:00
bmeurer@chromium.org
cb37b6c54e [turbofan] Fix typed lowering of typed array loads/stores.
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24514 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 08:10:29 +00:00
jochen@chromium.org
5a4578ccde Fix typo in Mac GetCurrentThreadId
BUG=none
TBR=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 07:27:33 +00:00
jochen@chromium.org
3c7e440391 Sync OS::GetCurrentThreadId with chromium's/blink's implementation
Compare third_party/WebKit/Source/wtf/ThreadingPthreads.cpp

BUG=v8:3620
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 07:22:57 +00:00
yangguo@chromium.org
0dd69ec439 Allow identifier code points from supplementary multilingual planes.
ES5.1 section 6 ("Source Text"):
"Throughout the rest of this document, the phrase “code unit” and the
word “character” will be used to refer to a 16-bit unsigned value
used to represent a single 16-bit unit of text."

This changed in ES6 draft section 10.1 ("Source Text"):
"The ECMAScript code is expressed using Unicode, version 5.1 or later.
ECMAScript source text is a sequence of code points. All Unicode code
point values from U+0000 to U+10FFFF, including surrogate code points,
may occur in source text where permitted by the ECMAScript grammars."

This patch is to reflect this spec change.

BUG=v8:3617
LOG=Y
R=jochen@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 07:13:46 +00:00
weiliang.lin@intel.com
c493ac26be X87: Fix uninitialized FixedArray potentially being left behind by ElementsTransitionGenerator::Generate.
port r24498.

original commit message:
  Fix uninitialized FixedArray potentially being left behind by ElementsTransitionGenerator::Generate.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 06:04:31 +00:00
weiliang.lin@intel.com
35ab21900c X87: Keyed stores to super where key is a name.
port r24490.

original commit message:
   Keyed stores to super where key is a name.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 05:44:13 +00:00
weiliang.lin@intel.com
e0e844b490 X87: Add MEGAMORPHIC state support for KeyedStoreIC
port r24500.

original commit message:

  Add MEGAMORPHIC state support for KeyedStoreIC

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 05:40:44 +00:00
balazs.kilvady@imgtec.com
980cc41238 MIPS: Add MEGAMORPHIC state support for KeyedStoreIC.
Port r24500 (e10f342)

BUG=
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 18:09:14 +00:00
balazs.kilvady@imgtec.com
d6013e940c MIPS: Fix uninitialized FixedArray potentially being left behind by ElementsTransitionGenerator::GenerateDoubleToObject.
Port r24498 (eeef8c0)

BUG=chromium:421843
LOG=n
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24502 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 17:06:17 +00:00
balazs.kilvady@imgtec.com
69cc49ce46 MIPS: Keyed stores to super where key is a name.
Port r24490 (839f44c)

BUG=v:3330
LOG=N
R=paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 15:33:10 +00:00
jkummerow@chromium.org
01206ad5bd Add MEGAMORPHIC state support for KeyedStoreIC
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 14:30:44 +00:00
ulan@chromium.org
29296d7e50 Fix computation of UTC time from local time at DST change points.
This also reverts r23606, which was an incorrect fix.

BUG=v8:3116,chromium:417640,chromium:415424
LOG=Y
TEST=mjsunit/regress/regress-3116.js
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24499 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 14:17:33 +00:00
jkummerow@chromium.org
e604df037c Fix uninitialized FixedArray potentially being left behind by ElementsTransitionGenerator::GenerateDoubleToObject
BUG=chromium:421843
LOG=n
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24498 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 14:12:05 +00:00
mstarzinger@chromium.org
2514113887 Remove deprecated verification for context separation.
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24497 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 14:01:59 +00:00
dslomov@chromium.org
2fd8a7f6b8 Convert obj ToObject in Object.keys()
BUG=v8:3587
LOG=Y
R=arv@chromium.org, dslomov@chromium.org

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

Patch from Caitlin Potter <caitpotter88@gmail.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 13:19:02 +00:00
bmeurer@chromium.org
2cdb96d7bf [ia32] Use more efficient encoding when loading integer constants.
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 12:50:13 +00:00
bmeurer@chromium.org
c95ba9bd04 [turbofan] Eliminate redundant masking operations for word8/word16 stores.
There's no need to apply 0xff when storing 8-bit values or 0xffff when
storing 16-bit values.

TEST=unittests
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 12:20:45 +00:00
bmeurer@chromium.org
52ec8a702f [ia32] Fix for no SSE4.1.
TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 12:16:27 +00:00
dslomov@chromium.org
53c9f0bb3d Keyed stores to super where key is a name.
R=arv@chromium.org, ishell@chromium.org
BUG=v:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 11:36:22 +00:00
dslomov@chromium.org
49e5b0d60c Simplify Scope and ScopePtr conversions.
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 10:40:18 +00:00
dusan.milosavljevic@imgtec.com
3758fceca9 MIPS: Improve runtime detection and compatibility wrt arch. revisions.
TEST=
BUG=
R=jkummerow@chromium.org, paul.lind@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 09:39:23 +00:00
bmeurer@chromium.org
d143beb658 [ia32] Better code generation for materialization of float/double constants.
TEST=cctest,mjsunit
R=mstarzinger@chromium.org, jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 09:32:59 +00:00
jochen@chromium.org
c5ee3ae511 Store local copies of flags needed on the background thread
BUG=none
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 09:21:46 +00:00
bmeurer@chromium.org
f0452e2193 [turbofan] Add support for ARM64 Ubfx
Support selecting Ubfx for shift-mask and mask-shift operations. Also, rename
the shifts to match the instruction names.

BUG=
R=bmeurer@chromium.org

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

Patch from Martyn Capewell <m.m.capewell@googlemail.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 09:18:31 +00:00
svenpanne@chromium.org
b09998f13c Simplify AST ID generation.
Every CompilationInfo has an ID generator now, and it is never
reset/copied/assigned. Simplified FunctionState.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 08:16:13 +00:00
jochen@chromium.org
0fae280e4a Make Profiler::running_ atomic.
It's used from multiple threads

BUG=none
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 07:51:35 +00:00
weiliang.lin@intel.com
c09abc87ab X87: Updates to maintain flag --vector-ics
port r24548.

original commit message:

   Updates to maintain flag --vector-ics

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-09 07:05:20 +00:00
akos.palfi@imgtec.com
d39fc16a4b MIPS64: Fix TruncatingDiv.
- Fix the Macroassembler::TruncatingDiv to compute
  the correct result even when the magic number is negative.
- Fix the MULT instruction in the simulator.

TEST=mjsunit/compiler/division-by-constant
BUG=
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 16:15:28 +00:00
titzer@chromium.org
c605a8c1da Smarter representation selection for phis.
R=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 16:01:18 +00:00
yangguo@chromium.org
8659e50723 Update unicode to 7.0.0.
And do not use code points with PATTERN_* property for identifier start.
Maintain that \u180E is a white space character.

BUG=v8:2892
LOG=Y
R=dpino@igalia.com, mathias@qiwi.be

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:55:03 +00:00
arv@chromium.org
c8b1c3e784 Classes: Add support for toString
BUG=v8:3330
LOG=Y
R=dslomov@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24472 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:48:48 +00:00
mstarzinger@chromium.org
f99fd3867b Remove premordial math functions from native context.
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:42:31 +00:00
jochen@chromium.org
f4e4091532 Resolve race between starting the profiler thread and the logging timer
BUG=none
TBR=ishell@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24470 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:08:12 +00:00
balazs.kilvady@imgtec.com
e86626ed40 MIPS: Updates to maintain flag --vector-ics
Port r24458 (18af11b)

Original commit message:
Experimental feature vector-ics needs some maintenance.

BUG=
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24467 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 11:55:24 +00:00
jochen@chromium.org
9bbf788750 Get rid of isolate state.
it's not thread safe, and there are only initialized isolates now.

BUG=none
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 11:51:57 +00:00
jochen@chromium.org
76441ed516 Make Profiler::tail_ atomic
it's used on several threads

BUG=none
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24465 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 11:33:31 +00:00
ulan@chromium.org
5b463207d7 Move fdlibm in src/third_party.
BUG=
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 11:19:51 +00:00
bmeurer@chromium.org
9b306893a3 [turbofan] Properly emit bounds checks for typed array element loads.
Also fix an awfull bug in simplified lowering.

TEST=cctest,mjsunit/asm
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24463 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 11:16:45 +00:00
titzer@chromium.org
015f963e8f Lower NumberMultiply, NumberDivide, and NumberModulus to Int32Mul, Int32[U]Div, and Int32[U]Mod when possible in simplified-lowering.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 10:53:46 +00:00
bmeurer@chromium.org
fd7fb06bf2 [turbofan] Fix typo in IA-32 code generator.
TEST=benchmarks/octane/zlib
TBR=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 10:44:45 +00:00
mvstanton@chromium.org
8faca47ef2 Updates to maintain flag --vector-ics
Experimental feature vector-ics needs some maintenance.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 09:15:09 +00:00
jochen@chromium.org
ba9bf72a2a Avoid unnecessary data race on FLAG_track_double_fields
BUG=none
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 09:01:43 +00:00
jarin@chromium.org
bb5b39260b Relax representation requirement in FrameStates.
This change enables non-tagged representations in FrameStates.

That allows us to run zlib with deoptimization support and have almost the same performance of the generated code (as the code with no deoptimization). Unfortunately, the frame states seem to confuse typer. As a consequence, we generate more representation changes, which in turn causes the scheduler to take a lot more time and memory (>4x). The added compiler time makes zlib with deopt be about 50% slower.

BUG=
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 08:47:29 +00:00
jochen@chromium.org
73733bb3eb Fix data races and leaks related to v8::Lockers
BUG=v8:3618
R=ishell@chromium.org, svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 08:17:04 +00:00
bmeurer@chromium.org
db33f07f79 [turbofan] Reenable value numbering.
Value numbering is now limited to eliminatable operators (i.e. operators
that don't throw and don't write), and uses linear probing instead of
separate chaining.

TEST=unittests
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24452 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 08:06:59 +00:00
bmeurer@chromium.org
8617b3acf8 [turbofan] Fix HashCode/Equals for floating point operators.
Those floating point constant operators require bitwise handling of
their parameters, otherwise 0.0 equals -0.0. This is solved in a
general way by adding new base::bit_equal_to and base::bit_hash
function objects.

TEST=unittests
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 07:32:07 +00:00
weiliang.lin@intel.com
956591293c X87: Support for super keyed loads where key is a name.
port r24403.

original commit message:

  Support for super keyed loads where key is a name.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24449 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 06:21:42 +00:00
weiliang.lin@intel.com
5c0bd0cb00 X87: [turbofan] support all shift operands on ia32
port r24387.

original commit message:
  [turbofan] support all shift operands on ia32

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 06:13:22 +00:00
weiliang.lin@intel.com
8fdae69d9f X87: Replace OStream with std::ostream.
port r24319.

original commit message:

  Replace OStream with std::ostream.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24447 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 06:11:22 +00:00
weiliang.lin@intel.com
84bd2a5f72 X87: [turbofan] IA: Uint32ToFloat64 supports mem operand.
port r24318.

original commit message:
  [turbofan] IA: Uint32ToFloat64 supports mem operand.

BUG=
R=weiliang.lin@intel.com

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24446 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 06:08:25 +00:00
arv@chromium.org
583868288a This uses a runtime function to set up the the constructor and its
prototype.

This does not add the methods/accessors to the prototype or the
constructor.

BUG=v8:3330
LOG=Y
R=dslomov@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 16:24:59 +00:00
jochen@chromium.org
be69c78e6d Fix data race on Debug::thread_local_.current_debug_scope_
BUG=v8:3614
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 16:11:31 +00:00
jochen@chromium.org
7f61f657ce Fix data race on CpuProfiler::running_
BUG=v8:3613
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24439 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 14:45:17 +00:00
ishell@chromium.org
2c30ec5f65 Fix for assertion failures appeared after StoreTransitionStub implementation.
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24438 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 14:32:19 +00:00
bmeurer@chromium.org
a17289f4bc [turbofan] Drop broken StaticParameterTraits.
The StaticParameterTraits are broken by design, and cause way too much
trouble. The compilers usually pick the wrong specialization (i.e. the
default specialization is picked for Load and Phi even tho there is a
specialization for MachineType), which is not only the reason why GVN is
ineffective and slow, but can also lead to correctness issues in some
rare cases.

Also clean up some minor bugs/inconsistencies on the way.

TEST=cctest,unittests
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 13:30:28 +00:00
dslomov@chromium.org
5e21a9723b Add classes-related bailout reasons to DONT_TURBOFAN_NODE
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24435 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 12:35:06 +00:00
titzer@chromium.org
fabb14e87f Fix bugs in lowering NumberToInt32.
The backward propagation was different in the lowering phase versus the propagation phase, leading to some missing truncations.

R=bmeurer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 12:18:39 +00:00
svenpanne@chromium.org
f647ed7bfd Do not save/restore AST id generator.
AST ids only need to be unique, so there is no need to fiddle around with them.

R=dslomov@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 12:16:28 +00:00
yangguo@chromium.org
ec871585fc Add stack trace to the promise reject callback.
R=aandrey@chromium.org
BUG=chromium:393913
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24432 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 12:03:55 +00:00
jochen@chromium.org
ff51fa0691 Remove unnecessary isolate TLS from compiler jobs
BUG=none
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24430 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 09:54:18 +00:00
wingo@igalia.com
1888b8f10d Clean up manual bit field usage in PreParserExpression
Instead of using an integer value and manual bit-fiddling, use C++'s
support for specifying bit sizes for integral types. This way the bits
used to describe a PreParserExpression are handled by the compiler.

BUG=
LOG=
R=svenpanne@chromium.org

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

Patch from Adrian Perez <aperez@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 09:20:08 +00:00
svenpanne@chromium.org
ac1224eafd Fixed compilation with older clang versions.
TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24428 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 09:04:39 +00:00
bmeurer@chromium.org
0a6e406927 Further improve hashing of pointers and integers.
Also make sure that the appropriate functions are inlined properly
(using V8_INLINE instead of inline to enforce it even with GCC),
and improve the HashIsOkish unittest.

TEST=unittests
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 07:39:19 +00:00
bmeurer@chromium.org
e3294b1f09 [turbofan] Fix lowering of typed loads/stores.
Only JSLoadProperty/JSStoreProperty nodes with external typed arrays can
be lowered to LoadElement/StoreElement, because lowering of non-external
typed arrays would require a map check.

TEST=cctest,unittests,mjsunit
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24426 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 07:36:21 +00:00
jochen@chromium.org
40a1f82238 Introduce --job-based-recompilation flag
The implementation is not yet complete, it doesn't support blocking yet,
and doesn't collect statistics.

This things will be fixed in follow-up CLs.

BUG=v8:3608
R=yangguo@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24425 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-07 07:29:24 +00:00
erikcorry@chromium.org
d0dc7fc4da Reland: Add a use counter for Intl.v8BreakIterator
This relands https://codereview.chromium.org/619913002/
The test has been fixed to do a GC so it does not appear to leak in
ASAN.  In addition the test has been fixed to work in the no-i18n
build, by incorporating the change from https://codereview.chromium.org/631743002/
R=ishell@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 15:50:40 +00:00
balazs.kilvady@imgtec.com
041c80e774 MIPS: Support for super keyed loads where key is a name.
Port r24403 (891eb62)

BUG=v8:3330
LOG=N
R=dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 15:48:56 +00:00
arv@chromium.org
6708f664a9 Stage ES6 numeric literals
BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 15:40:55 +00:00
bmeurer@chromium.org
03255440de Don't use identity as hash function for integers.
Also slightly improve hashing of floats/doubles.

TEST=unittests
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24420 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 15:23:59 +00:00
dcarney@chromium.org
e7a635c853 [turbofan] fix vreg mapping for instruction selector tests
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24418 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 14:30:55 +00:00
jkummerow@chromium.org
b6f82c734c Remove FLAG_opt_safe_uint32_operations.
It has been turned on by default for a long time, and hydrogenized BinaryOpStubs actually depend on it being turned on.

BUG=v8:3487
LOG=n
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24415 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 13:15:23 +00:00
dcarney@chromium.org
eb00c5301a [turbofan] map vregs early
R=bmeurer@chromium.org, jarin@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24414 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 13:03:04 +00:00
svenpanne@chromium.org
0a95f8982c Squeeze the layout of variable proxy nodes.
Around 200MB less peak memory usage in the bug mentioned below.

BUG=417697
LOG=y
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24413 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 12:56:11 +00:00
bmeurer@chromium.org
9440b885ae Add C++11 compatible base::hash function object.
Implement NodeCache in terms of base::hash and std::equal_to in preparation
for HeapConstant caching.

TEST=cctest,unittests
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24412 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 12:27:24 +00:00
rmcilroy@chromium.org
7cbe1ef9ca Add MonotonicallyIncreasingTime to V8 Platform.
Adds a MonotonicallyIncreasingTime() function to the Platform API to enable the
embedder to provide a time API to V8 which will be used for IdleNotification deadlines.

BUG=417668
LOG=Y
R=jochen@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 12:22:25 +00:00
ulan@chromium.org
de51833695 Fix representation of HLoadRoot.
HLoadRoot doesn't participate in representation inference, and its
represenation is not Tagged at code generation, which leads to incorrect
pointer map assignment and eventual stale pointer access after GC.

BUG=chromium:419036
LOG=Y
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24410 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 11:42:13 +00:00
erikcorry@chromium.org
33da50f2ea Revert Add a use counter for Intl.v8BreakIterator https://codereview.chromium.org/619913002/
This is due to breakage on the ASAN memory leak bot, possibly due to
pre-existing leaks in v8BreakIterator().

R=ishell@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 11:14:50 +00:00
jochen@chromium.org
548428d955 Make V8 compile with Win64 dbg
BUG=chromium:420538
R=dcarney@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 10:46:15 +00:00
m.m.capewell@googlemail.com
b662e754ae [turbofan] Negated immediates for ARM64 add/sub
Add ARM64 instruction selector support for negating the sense of an arithmetic
instruction when its immediate is negative.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 10:39:23 +00:00
jarin@chromium.org
f40d582cf1 Revert "[turbofan] Fix lowering of typed loads/stores."
This reverts commit r24386 for tanking asm.js benchmarks.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 08:54:24 +00:00
svenpanne@chromium.org
f33d033725 Unbreak PNaCL build
Forgot to add a file...

TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24404 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 08:26:29 +00:00
dslomov@chromium.org
da86ab5d23 Support for super keyed loads where key is a name.
R=arv@chromium.org, ishell@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 08:25:27 +00:00
svenpanne@chromium.org
955876b5f3 Use the pnacl-clang toolchain for (P)NaCL builds
Patch from JF Bastien <jfb@google.com>.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-06 08:10:50 +00:00
erikcorry@chromium.org
43257b61ae Add a use counter for Intl.v8BreakIterator
R=marja@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24400 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-03 10:29:12 +00:00
paul.lind@imgtec.com
f9b39f29fb MIPS: Add turbofan support for mips32.
BUG=
R=bmeurer@chromium.org, dusan.milosavljevic@imgtec.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24397 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 15:48:48 +00:00
svenpanne@chromium.org
e2ed242385 Removed the Isolate* field from literal nodes.
Again 50MB less peak memory usage in the bug mentioned below...

BUG=417697
LOG=y
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 13:05:11 +00:00
dcarney@chromium.org
c9c4b931f0 fix imul(reg, op, imm) emission on x64
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24395 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 12:22:36 +00:00
yurys@chromium.org
08c40baa1f Revert of Extend CPU profiler with mapping ticks to source lines (patchset #3 id:40001 of https://codereview.chromium.org/616963005/)
Reason for revert:
It broke layout test fast/events/window-onerror-02.html, error column reported by window.onerror is now wrong (I believe it is because of the change in full-codegen):

http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/652

Original issue's description:
> Extend CPU profiler with mapping ticks to source lines
>
> The idea behind of this solution is to use the existing "relocation info" instead of consumption the CodeLinePosition events emitted by the V8 compilers.
> During generation code and relocation info are generated simultaneously.
> When code generation is done you each code object has associated "relocation info".
> Relocation information lets V8 to mark interesting places in the generated code: the pointers that might need to be relocated (after garbage collection),
> correspondences between the machine program counter and source locations for stack walking.
>
> This patch:
> 1. Add more source positions info in reloc info to make it suitable for source level mapping.
> The amount of data should not be increased dramatically because (1) V8 already marks interesting places in the generated code and
> (2) V8 does not write redundant information (it writes a pair (pc_offset, pos) only if pos is changed and skips other).
> I measured it on Octane benchmark - for unoptimized code the number of source positions may achieve 2x ('lin_solve' from NavierStokes benchmark).
>
> 2. When a sample happens, CPU profiler finds a code object by pc, then use its reloc info to match the sample to a source line.
> If a source line is found that hit counter is increased by one for this line.
>
> 3. Add a new public V8 API to get the hit source lines by CDT CPU profiler.
> Note that it's expected a minor patch in Blink to pack the source level info in JSON to be shown.
>
> 4.Add a test that checks how the samples are distributed through source lines.
> It tests two cases: (1) relocation info created during code generation and (2) relocation info associated with precompiled function's version.
>
> Patch from Denis Pravdin <denis.pravdin@intel.com>
> BUG=None
> LOG=Y
> R=svenpanne@chromium.org
>
> Committed: https://code.google.com/p/v8/source/detail?r=24389

TBR=svenpanne@chromium.org,danno@chromium.org,alph@chromium.org,denis.pravdin@intel.com,weiliang.lin@intel.com
BUG=None
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 11:58:21 +00:00
svenpanne@chromium.org
53454d95d0 Squeeze the layout of expression nodes a bit.
Again 112MB less peak memory usage in the bug mentioned below. :-)
Routed all writes to to_boolean_types_ through its setter on the way.

BUG=417697
LOG=y
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 11:52:54 +00:00
jkummerow@chromium.org
8d283eddc0 Drop some unused code
Bonus: fix bitrot in (disabled) Hydrogen-BCH

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 10:52:12 +00:00
yangguo@chromium.org
a2099f5292 Serialize all external strings except for native source code strings.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:39:13 +00:00
svenpanne@chromium.org
6e3b54ae36 Merged FeedbackSlotInterface into AstNode, removing the need for a 2nd vtable.
This tiny change shaves off 112MB from the peak memory usage in the
bug mentioned below, more to come...

BUG=417697
LOG=y
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:38:28 +00:00
yurys@chromium.org
6482fb3ee4 Extend CPU profiler with mapping ticks to source lines
The idea behind of this solution is to use the existing "relocation info" instead of consumption the CodeLinePosition events emitted by the V8 compilers.
During generation code and relocation info are generated simultaneously.
When code generation is done you each code object has associated "relocation info".
Relocation information lets V8 to mark interesting places in the generated code: the pointers that might need to be relocated (after garbage collection),
correspondences between the machine program counter and source locations for stack walking.

This patch:
1. Add more source positions info in reloc info to make it suitable for source level mapping.
The amount of data should not be increased dramatically because (1) V8 already marks interesting places in the generated code and
(2) V8 does not write redundant information (it writes a pair (pc_offset, pos) only if pos is changed and skips other).
I measured it on Octane benchmark - for unoptimized code the number of source positions may achieve 2x ('lin_solve' from NavierStokes benchmark).

2. When a sample happens, CPU profiler finds a code object by pc, then use its reloc info to match the sample to a source line.
If a source line is found that hit counter is increased by one for this line.

3. Add a new public V8 API to get the hit source lines by CDT CPU profiler.
Note that it's expected a minor patch in Blink to pack the source level info in JSON to be shown.

4.Add a test that checks how the samples are distributed through source lines.
It tests two cases: (1) relocation info created during code generation and (2) relocation info associated with precompiled function's version.

Patch from Denis Pravdin <denis.pravdin@intel.com>
BUG=None
LOG=Y
R=svenpanne@chromium.org

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

Patch from Denis Pravdin <denis.pravdin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:20:37 +00:00
dcarney@chromium.org
944858e7d5 [turbofan] support all shift operands on x64
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:08:09 +00:00
dcarney@chromium.org
e9fcaa4be9 [turbofan] support all shift operands on ia32
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:04:04 +00:00
bmeurer@chromium.org
5899cc8ca7 [turbofan] Fix lowering of typed loads/stores.
We can only access to external typed arrays; lowering of internal
typed arrays would require a map check plus eager deoptimization.
Also embed the array buffer reference directly instead of embedding
the typed array.

TEST=cctest,mjsunit,unittests
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:38:37 +00:00
jochen@chromium.org
d709e6aa13 Change minimum code range size to 3MB
There will be at least 2MB of guard pages around allocatable code memory

BUG=none
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:28:29 +00:00
jochen@chromium.org
5f47fe15e2 Remove support for parallel sweeping
BUG=none
R=hpayer@chromium.org
LOG=y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24382 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 08:24:48 +00:00
hpayer@chromium.org
2bfbe0d862 Fix Windows compile.
BUG=
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:42:11 +00:00
hpayer@chromium.org
ad6b41ffa7 Force scavenge in idle notification if we estimate that it will take long.
BUG=
R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:21:53 +00:00
yangguo@chromium.org
43ddad10b3 Handle external strings in the code serializer.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24378 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:12:46 +00:00
yangguo@chromium.org
2134c5c0ba Fulfill some code serializer related TODOs.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:04:28 +00:00
yangguo@chromium.org
321dad9b8e Introduce v8::Object::GetIsolate().
API=v8::Object::GetIsolate()
LOG=Y
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 06:52:39 +00:00
marja@chromium.org
e1a5abb6c8 Debug a mystery crash bug in script streaming.
This adds a bunch of checks so we hopefully get more detailed information about
what exactly goes wrong.

R=jochen@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 16:54:42 +00:00
yangguo@chromium.org
b84614983f Attempt to fix GC mole failures.
TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 15:39:12 +00:00
mstarzinger@chromium.org
3bc3df9a27 Implement inlined stack-check guards in TurboFan.
R=bmeurer@chromium.org
TEST=cctest/test-run-stackcheck/TerminateAtMethodEntry

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 14:03:02 +00:00
jkummerow@chromium.org
1bb52d0da8 Fix Hydrogen's BuildStore()
BUG=chromium:417508
LOG=y
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 13:17:34 +00:00