Commit Graph

7509 Commits

Author SHA1 Message Date
arv
74e38e34b3 ES6 computed property names
This adds support for computed property names, under the flag
--harmony-computed-property-names, for both object literals and
classes.

This is a revert of the revert, 7d48fd9dc2.

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

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

Cr-Commit-Position: refs/heads/master@{#26084}
2015-01-15 20:02:37 +00:00
bmeurer
a9d0d23405 Revert of [turbofan] Make Factory::NewNumber() always return the minus_zero_value. (patchset #1 id:1 of https://codereview.chromium.org/838263006/)
Reason for revert:
Breaks the tree

Original issue's description:
> [turbofan] Make Factory::NewNumber() always return the minus_zero_value.
>
> TEST=unittests
> R=mstarzinger@chromium.org, dcarney@chromium.org
>
> Committed: https://crrev.com/55b3e268b2895e2c09230d39669a75b6ab4e7e4d
> Cr-Commit-Position: refs/heads/master@{#26080}

TBR=dcarney@chromium.org,mstarzinger@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26081}
2015-01-15 15:29:42 +00:00
Benedikt Meurer
55b3e268b2 [turbofan] Make Factory::NewNumber() always return the minus_zero_value.
TEST=unittests
R=mstarzinger@chromium.org, dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26080}
2015-01-15 15:10:05 +00:00
bmeurer
dd6ce12645 [turbofan] Turn IrOpcode::IsXXX() into range checks.
TEST=unittests
R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26079}
2015-01-15 15:07:39 +00:00
bmeurer
4914716387 Revert of [turbofan] Use PlainPrimitiveToNumber whenever possible. (patchset #1 id:1 of https://codereview.chromium.org/852763002/)
Reason for revert:
Tanks performance of SQLite and towers.c.

Original issue's description:
> [turbofan] Use PlainPrimitiveToNumber whenever possible.
>
> TEST=cctest,unittests
> R=jarin@chromium.org
>
> Committed: https://crrev.com/1a5db24e6bf831e61e3f4aa0c252f77e48c3689c
> Cr-Commit-Position: refs/heads/master@{#26071}

TBR=jarin@chromium.org,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26078}
2015-01-15 13:26:55 +00:00
mvstanton
23b181552e Vector-based LoadICs need to handle Smi receivers.
The MISS handler was being called when the receiver was a Smi, instead,
we should recognize the case and use the heap number map.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26076}
2015-01-15 12:52:47 +00:00
mstarzinger
e72c5d2c23 Remove redundant test expectation from mjsunit.
R=jkummerow@chromium.org
TEST=mjsunit/nans

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

Cr-Commit-Position: refs/heads/master@{#26075}
2015-01-15 12:47:59 +00:00
Yang Guo
3706a50457 Fix number-string cache test case.
TBR=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26073}
2015-01-15 11:49:10 +00:00
yangguo
22e6958d63 Fix remaining issues in the custom snapshot.
Math functions:
Some Math functions require typed arrays for their implementation. The embedded
script may call those Math functions. The serializer needs to deal with this.
Added assertion to make sure no other typed array is created when snapshotting.

Number-string cache:
We assume that the initial snapshot does not expand the number-string cache.
This is no longer true for custom heap snapshots.

Bound functions:
Bound functions store the bound arguments in a COW fixed array, including the
bindee function. COW arrays are serialized into the startup snapshot and
referenced in the partial snapshot via partial snapshot cache. However, the
bindee function is context-dependent and must not be part of the startup
snapshot. There is no need for bound functions to use a COW array though.

R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26072}
2015-01-15 11:22:17 +00:00
bmeurer
1a5db24e6b [turbofan] Use PlainPrimitiveToNumber whenever possible.
TEST=cctest,unittests
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26071}
2015-01-15 09:49:23 +00:00
dcarney
e6552d4917 Reland "[turbofan] simplify gap ordering"
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26069}
2015-01-15 09:06:05 +00:00
dcarney
a7e3c71b23 add register allocator regression test
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26068}
2015-01-15 08:56:10 +00:00
baptiste.afsa
51f3c66b64 [turbofan] Allow 0.0 as immediate for floating-point comparison on arm/arm64.
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26066}
2015-01-15 06:31:07 +00:00
Ben L. Titzer
3244a66543 [turbofan] Fix corner case in loop analysis.
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26063}
2015-01-14 17:06:37 +00:00
yangguo
fe82e03bb6 Correctly reference global proxy in the partial snapshot.
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26061}
2015-01-14 16:42:30 +00:00
mstarzinger
2ebe24c9cb First simple implementation of for-of in TurboFan.
R=rossberg@chromium.org
TEST=cctest/test-run-jsbranches/ForOfContinueStatement

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

Cr-Commit-Position: refs/heads/master@{#26060}
2015-01-14 15:24:29 +00:00
jochen
c65799e7c5 Remove support for signatures with arguments
Support for it is slow and difficult to implement, and it's not used in
Blink. An embedder that uses this feature will have to check the
argument types itself.

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

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

Cr-Commit-Position: refs/heads/master@{#26058}
2015-01-14 14:44:10 +00:00
bmeurer
e1d878d16f Add proper support for proxies to HType.
TEST=mjsunit/regress/regress-crbug-448730
BUG=chromium:448730
LOG=y
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26056}
2015-01-14 13:57:09 +00:00
jarin
ac04d777d6 [turbofan] Allow deoptimization for JSToNumber operator.
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26053}
2015-01-14 13:09:32 +00:00
bmeurer
70b32e4b8a [turbofan] Fix truncation/representation sloppiness wrt. bool/bit.
TEST=cctest,mjsunit,unittests
BUG=v8:3812
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#26051}
2015-01-14 12:06:56 +00:00
bmeurer
214387fce1 Revert of [turbofan] Improve typed lowering of JSBitwiseAnd. (patchset #1 id:1 of https://codereview.chromium.org/811653004/)
Reason for revert:
Breaks SQLite

Original issue's description:
> [turbofan] Improve typed lowering of JSBitwiseAnd.
>
> TEST=unittests
> R=jarin@chromium.org
>
> Committed: https://crrev.com/284e1108182995abe85f580bc813d26491642b8c
> Cr-Commit-Position: refs/heads/master@{#26046}

TBR=jarin@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26048}
2015-01-14 09:07:07 +00:00
Benedikt Meurer
284e110818 [turbofan] Improve typed lowering of JSBitwiseAnd.
TEST=unittests
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26046}
2015-01-14 07:40:32 +00:00
balazs.kilvady
3da5a729e8 MIPS: [turbofan] Improve code generation for unordered comparisons.
Port c24220c0c1

TEST=cctest,unittests
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26045}
2015-01-13 20:28:13 +00:00
bmeurer
1fa21bfd39 [turbofan] Reduce Word32And masking with shifted inputs.
TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26040}
2015-01-13 13:02:40 +00:00
bmeurer
9f292086f9 [turbofan] Add PlainPrimitiveToNumber simplified operator.
TEST=unittests

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

Cr-Commit-Position: refs/heads/master@{#26038}
2015-01-13 11:02:57 +00:00
yangguo
bcab9eacf3 Update references to global object after deserializing context.
R=jochen@chromium.org
TEST=test-serialize/CustomContext{Des,S}erialization

Also test by
- make ia32.debug embedscript=<full path to mjsunit.js>
- d8 -e "assertDoesNotThrow('print(1)')"

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

Cr-Commit-Position: refs/heads/master@{#26035}
2015-01-13 08:48:08 +00:00
bmeurer
c24220c0c1 [turbofan] Improve code generation for unordered comparisons.
TEST=cctest,unittests

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

Cr-Commit-Position: refs/heads/master@{#26034}
2015-01-13 08:42:02 +00:00
jarin
527e19afd5 [turbofan] Add missing deopt.
BUG=chromium:447567
LOG=n
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26033}
2015-01-13 08:40:54 +00:00
caitpotter88
4b6316c5ff Check for octals in template spans only, not expressions
BUG=v8:3806
LOG=N
R=arv@chromium.org, dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26028}
2015-01-12 15:07:47 +00:00
bmeurer
0e8a6d4ec8 [turbofan] Canonicalize x - K to x + -K.
TEST=unittests
R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26027}
2015-01-12 15:02:06 +00:00
mstarzinger
df30088de3 Enable test after arguments count limitation was lifted.
R=bmeurer@chromium.org
TEST=mozilla/js1_5/Regress/regress-396684
BUG=v8:3786

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

Cr-Commit-Position: refs/heads/master@{#26026}
2015-01-12 14:32:23 +00:00
erikcorry
7db1759b65 Unify phantom and internal fields weak handle callbacks
R=dcarney@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26022}
2015-01-12 12:12:10 +00:00
dslomov
a4124b3bfc Map -0 to integer 0 for typed array constructors.
R=bmeurer@chromium.org
BUG=chromium:447756
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#26021}
2015-01-12 11:42:57 +00:00
titzer
159b14172f [turbofan] Implement OSR for outer loops.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26020}
2015-01-12 11:39:58 +00:00
marja
2305cfb4e2 ES6 unicode escapes, part 2: Regexps.
Allows \u{xxxxx} in regexps. Behind the --harmony-unicode flag.

Part 1 is here: https://codereview.chromium.org/716423002

BUG=v8:3648
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26018}
2015-01-12 09:50:34 +00:00
bmeurer
b6c7e11c10 [turbofan] Fix typo in IrOpcode::Mnemonic.
TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26014}
2015-01-09 14:20:03 +00:00
jochen
21ce246423 Correctly setup the freelist of the coderange on Win64
Since we have a special guard page at the beginning of the code range on
win64, we need to make sure to adjust the size of the free list
accordingly when creating it.

BUG=chromium:447555
R=hpayer@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#26012}
2015-01-09 13:07:42 +00:00
titzer
7e98658e31 [turbofan] Fix control reducer for degenerate cases of self-loop branches.
R=jarin@chromium.org
BUG=chromium:447526

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

Cr-Commit-Position: refs/heads/master@{#26009}
2015-01-09 12:28:14 +00:00
vogelheim
c72c28dd00 Disable webkit/array-iterate-backwards for debug builds.
(Debug builds have --enable-slow-asserts, and with slow asserts each
assignment to the array in the prepare function will trigger a check
over the entire array. This turns it into n^2 work, for reasonably
large n.)

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26006}
2015-01-09 10:27:15 +00:00
dslomov
a417b41880 Unship ES6 classes.
R=rossberg@chromium.org
BUG=v8:3330

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

Cr-Commit-Position: refs/heads/master@{#26000}
2015-01-08 15:11:01 +00:00
bmeurer
5157472539 [turbofan] Cleanup duplicated/unused code in InstructionSelector.
- Use C++11 range based for loops.
- Remove duplicated virtual register set in unittests.
- Don't expose implementation details of InstructionSelector.

TEST=unittests
R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25997}
2015-01-08 14:13:33 +00:00
Yang Guo
2050994d80 Correctly parse line ends for debugging.
Instead of using only \n as line terminator, we now use the definition
in http://www.ecma-international.org/ecma-262/5.1/#sec-7.3

R=marja@chromium.org
BUG=v8:2825
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25989}
2015-01-08 10:46:13 +00:00
bmeurer
fec1bba852 [turbofan] Correctify representation changes to bit.
TEST=cctest/test-representation-change,unittests,mjsunit/compiler/regress-bit-number-constant
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25987}
2015-01-08 09:48:41 +00:00
dcarney
a5aa01beec remove declarative accessors
R=jochen@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25981}
2015-01-07 16:37:43 +00:00
sergeyv
cedc11ba59 Fix sourceURL & sourceMapURL handling in case of background parsing
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25980}
2015-01-07 15:56:18 +00:00
bmeurer
d1c1a3c48f [turbofan] Fix bit representation of NumberConstant.
TEST=mjsunit/compiler/regress-bit-number-constant

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

Cr-Commit-Position: refs/heads/master@{#25979}
2015-01-07 15:44:22 +00:00
ishell
0d6785805c Correct handling of exceptions occured during getting of exception stack trace.
BUG=chromium:444805
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25978}
2015-01-07 14:50:16 +00:00
bmeurer
e53845d41c [turbofan] Cleanup Graph and related classes.
- Move NodeMarker to its own file, and introduce a non
  templatized base class.
- Cleanup the include hell.
- Sanitize the Node construction methods now that we
  got rid of that GenericNode/GenericGraph stuff.
- Protect against NodeId overflow in Graph.
- Various minor cleanups.

TEST=cctest,mjsunit,unittests

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

Cr-Commit-Position: refs/heads/master@{#25977}
2015-01-07 14:42:49 +00:00
titzer
d77d3ba9a3 Fix bug in Runtime_CompileOptimized resulting from stack overflow.
R=jarin@chromium.org
BUG=chromium:446389
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25974}
2015-01-07 13:43:44 +00:00
jarin
80a7be5cd9 Restrict representation inference to avoid truncation of phi inputs.
BUG=chromium:446778
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25967}
2015-01-07 11:38:54 +00:00
bmeurer
ec35c52e54 [turbofan] Generalize constant propagation.
Also support additional number types (singleton ranges, NaN and minus
zero) for constant propagation in typed lowering.

TEST=unittests

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

Cr-Commit-Position: refs/heads/master@{#25963}
2015-01-07 08:24:38 +00:00
chunyang.dai
818340a410 Disable test case for turbofan unsupported platform.
Test case LowerAnyToBoolean_tagged_tagged invokes "Linkage::GetStubCallDescriptor(...)"
  function but this function is not implemented on turbofan unsupported platform.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25960}
2015-01-06 12:09:24 +00:00
jarin
a9716d9840 Make control reducer revisit newly introduced merges.
TEST=mjsunit/compiler/regress-445876
BUG=chromium:445876
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25959}
2015-01-05 16:35:34 +00:00
Benedikt Meurer
9def087efc [turbofan] Correctify JSToBoolean lowering.
Introduce a new AnyToBoolean simplified operator to handle the later
lowering of boolean conversions. Previously we tried to hack that with
the generic JSToBoolean, having its context set to zero, but that lead
to various problems/bugs and did not handle all cases.

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

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

Cr-Commit-Position: refs/heads/master@{#25958}
2015-01-05 13:44:31 +00:00
Benedikt Meurer
17a180842e [turbofan] Don't crash when typing load from a Uint8ClampedArray.
TEST=mjsunit/compiler/regress-446156
BUG=chromium:446156
LOG=y
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25957}
2015-01-05 13:43:47 +00:00
bmeurer
c329a49d69 [turbofan] Fix incorrect minus zero handling in the unit tests.
TEST=unittests
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25956}
2015-01-05 12:29:27 +00:00
jarin
bdf446f590 Do not reduce effect phis for loops.
This prevents eliminating effectful statements before the loop.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25953}
2015-01-03 12:46:00 +00:00
bmeurer
fb2643c858 [turbofan] Truncation of Bit/Word8/16 to Word32 is a no-op.
TEST=mjsunit/compiler/regress-445859
BUG=chromium:445859
LOG=y
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25951}
2015-01-02 10:39:10 +00:00
bmeurer
cf866b7c61 [x64] Rearrange code for OOB integer loads.
We cannot just clear the result register optimistically, because the
register allocator might assign the same register to result and buffer.

TEST=mjsunit/compiler/regress-445858
BUG=chromium:445858
LOG=y
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25950}
2015-01-02 10:15:40 +00:00
bmeurer
a64ac4575a Fix %NeverOptimizeFunction() intrinsic.
Set a valid reason for disabling optimization when using
%NeverOptimizeFunction.

TEST=mjsunit/compiler/regress-445732
BUG=chromium:445732
LOG=y
TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25949}
2015-01-02 08:18:01 +00:00
bmeurer
643ed5b8be [turbofan] Fix missing MachineOperator unittest.
The machine-operator-unittest.cc file was missing from unittests.gyp.
Fixed the compiler errors and added it back.

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25948}
2015-01-02 07:44:52 +00:00
bmeurer
ef41f70684 [turbofan] Fix invalid bounds check with overflowing offset.
TEST=mjsunit/compiler/regress-445267
BUG=chromium:445267
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25945}
2014-12-29 10:01:15 +00:00
bmeurer
b5e8dd0e12 [turbofan] Raise max virtual registers and call parameter limit.
Change InstructionOperand to use a 64-bit field for encoding the operand
information instead of the 32-bit field that was used before. Ideally we
wouldn't use the Zone-allocated bit field at all, and use an integer
instead of the pointer; but that requires fixing the register allocator
first, which will take some time.

TEST=mjsunit/compiler/regress-3786
BUG=v8:3786
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25941}
2014-12-25 18:18:04 +00:00
bmeurer
4f9193e047 [turbofan] Cache float32 constants on the JSGraph level.
Also slightly refactor the NodeCache and CommonNodeCache classes to
reduce inherent overhead of caching.

TEST=cctest

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

Cr-Commit-Position: refs/heads/master@{#25937}
2014-12-23 14:12:21 +00:00
bmeurer
eeec886e5f [turbofan] Deinlinify OperatorProperties implementation.
TEST=cctest,unittests
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25935}
2014-12-23 12:50:51 +00:00
Benedikt Meurer
3f00ce2d59 [turbofan] Fix missing ChangeUint32ToUint64 in lowering of LoadBuffer.
TEST=mjsunit/compiler/regress-444695
BUG=chromium:444695
LOG=y
R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25932}
2014-12-23 06:54:00 +00:00
jochen
d98d97ee17 Mark mjsunit/setters-on-elements as flaky
TBR=machenbach@chromium.org
LOG=n
BUG=v8:3784
NOTREECHECKS=true

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

Cr-Commit-Position: refs/heads/master@{#25929}
2014-12-22 15:30:46 +00:00
bmeurer
00013a5692 [turbofan] Minor cleanup to reduce code duplication.
TEST=unittests
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25927}
2014-12-22 14:37:22 +00:00
jochen
18b1e6d353 Enable the embedder to specify what kind of context was disposed
This API is used by Blink to inform V8 about HTML frames being disposed.
Using the optional parameter, Blink can tell V8 whether the disposed
frame was a main frame. In that case, we might want to reset GC
parameters

BUG=none
R=hpayer@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25926}
2014-12-22 14:27:37 +00:00
Benedikt Meurer
1ec1f5957f [turbofan] Cleanup use of virtual, OVERRIDE, FINAL.
Following the Google/Chromium coding style wrt. virtual, OVERRIDE and
FINAL specifications.

TEST=unittests
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25924}
2014-12-22 13:48:10 +00:00
Benedikt Meurer
ee98a1d760 [turbofan] Introduce CommonOperatorReducer.
The CommonOperatorReducer currently takes care of redundant Phis,
EffectPhis and Selects. This functionality overlaps with ControlReducer,
but is required to make certain optimizations effective, since the
ControlReducer only runs really early and really late in the pipeline
and therefore other reducers aren't reapplied properly after redundant
phi/select elimination.

TEST=unittests
R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25922}
2014-12-22 13:06:43 +00:00
machenbach
096e1972cd Work-around to make webkit test suite work with optdebug==2.
The test driver doesn't know at the moment if optdebug 1 or 2 has been used (the first is used on the bots, the second
locally in quickcheck). It can't know therefore if slow
asserts can be enabled or not. Trying to enable them leads
to a warning if they weren't compiled, which causes webkit
1:1 text comparison to fail.

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

Cr-Commit-Position: refs/heads/master@{#25921}
2014-12-22 11:13:12 +00:00
ulan
64e1b56107 Revert "Retain maps for several garbage collections"
This reverts commit 2bc756e4b3
because of performance regression in kraken.

BUG=chromium:444232
LOG=N
TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25918}
2014-12-22 09:15:07 +00:00
Benedikt Meurer
65e69497ab [turbofan] Correctify lowering of Uint8ClampedArray buffer access.
TEST=mjsunit/compiler/regress-444508.js
BUG=chromium:444508
LOG=y
R=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25916}
2014-12-22 08:27:59 +00:00
machenbach
7d478d9621 Revert of Remove obsolete V8_INFINITY macro. (patchset #3 id:40001 of https://codereview.chromium.org/798413003/)
Reason for revert:
Speculative revert. This seems to block the current roll: https://codereview.chromium.org/819653003/

I retried several times, also with a new roll. The error is internal - but that doesn't make much of a difference.

Original issue's description:
> Remove obsolete V8_INFINITY macro.
>
> Use std::numeric_limits consistently.
>
> R=svenpanne@chromium.org
>
> Committed: https://crrev.com/31c66e2d53569c4e229d55483d28208491e73612
> Cr-Commit-Position: refs/heads/master@{#25897}

TBR=svenpanne@chromium.org,bmeurer@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25912}
2014-12-20 13:17:35 +00:00
alph
87e4bba31e Support multiple interrupt requests in v8 API.
There might be a number of clients that would like to
setup an interrupt request on the Isolate.

The patch also deprecates ClearInterrupt API. As long as
the interrupt handler is called outside of locks there's no way
to guarantee that the handler will not be called after
ClearInterrupt was invoked as it might have already started execution.

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

Cr-Commit-Position: refs/heads/master@{#25910}
2014-12-20 07:54:19 +00:00
adamk
1f1329d960 Use SetOwnElement when creating splice records in array length setter
This avoids touching the Array prototype, which may have been tampered with.

BUG=chromium:443982
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25908}
2014-12-19 19:39:35 +00:00
mvstanton
ad033893d6 Vector-based ICs also need to hold maps weakly.
Regular ICs in MONOMORPHIC and POLYMORPHIC state now hold onto maps with
WeakCells. Vector-based ICs should do the same.

R=ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25907}
2014-12-19 16:53:49 +00:00
Benedikt Meurer
f7e4689061 [turbofan] Fix unsafe out-of-bounds check for checked loads/stores.
BUG=chromium:443744
LOG=y
TEST=mjsunit/compiler/regress-443744
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25901}
2014-12-19 12:53:29 +00:00
bmeurer
31c66e2d53 Remove obsolete V8_INFINITY macro.
Use std::numeric_limits consistently.

R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25897}
2014-12-19 07:18:00 +00:00
caitpotter88
233f2d2bf1 Simplify scanner and generate better error message for legacy octals in templates
LOG=N
BUG=
R=arv@chromium.org, dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25895}
2014-12-18 22:01:41 +00:00
arv
6e888ca864 Ship ES6 template literals
BUG=v8:3230
LOG=Y
R=dslomov@chromium.org, caitpotter88@gmail.com

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

Cr-Commit-Position: refs/heads/master@{#25892}
2014-12-18 20:12:08 +00:00
arv
c05a4036b0 ES6 template literals should not use legacy octal strings
Correctly handle SyntaxErrors in escape sequences.

BUG=v8:3736
LOG=Y
R=dslomov@chromium.org, caitpotter88@gmail.com

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

Cr-Commit-Position: refs/heads/master@{#25891}
2014-12-18 19:41:58 +00:00
erikcorry
3ff951943f Phantom references support internal fields
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25889}
2014-12-18 16:10:15 +00:00
machenbach
1f44e7267e Revert of [turbofan] simplify gap ordering (patchset #2 id:20001 of https://codereview.chromium.org/810013002/)
Reason for revert:
Revert for breaking emscripten bullet with turbofan on android arm64.

Original issue's description:
> [turbofan] simplify gap ordering
>
> BUG=
>
> Committed: https://crrev.com/70b5eb47b39acbf31746f4a116a9b3ce2730218a
> Cr-Commit-Position: refs/heads/master@{#25865}

TBR=bmeurer@chromium.org,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25888}
2014-12-18 15:49:58 +00:00
ulan
2bc756e4b3 Retain maps for several garbage collections
This keeps dying maps alive for FLAG_retain_maps_for_n_gc garbage collections to increase chances of them being reused for new objects in future.

BUG=v8:3664
LOG=N
TEST=cctest/test-heap/MapRetaining

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

Cr-Commit-Position: refs/heads/master@{#25887}
2014-12-18 15:44:37 +00:00
machenbach
70eb456e73 Revert of [turbofan] remove control field from instruction (patchset #1 id:1 of https://codereview.chromium.org/810023002/)
Reason for revert:
Needed to revert 70b5eb47b3

Original issue's description:
> [turbofan] remove control field from instruction
>
> R=titzer@chromium.org
> BUG=
>
> Committed: https://crrev.com/7b9cb2eb3764d0c807c669e397fc3b84fbefb175
> Cr-Commit-Position: refs/heads/master@{#25866}

TBR=titzer@chromium.org,dcarney@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25884}
2014-12-18 14:42:16 +00:00
ulan
83e6c7fe26 Temporarily disable mjsunit/debug-stepframe for GC stress until
crash is fixed.

BUG=v8:3776
LOG=N
TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25883}
2014-12-18 14:05:04 +00:00
ulan
9ffdae66e2 Monomorphic and polymorphic ICs with cleared maps should not go megamorphic.
BUG=v8:3663
TEST=cctest/test-heap/MonomorphicStaysMonomorphicAfterGC
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25882}
2014-12-18 13:09:43 +00:00
hpayer
377de64246 Make sure backing store pointer in handles get cleared after use in factory.
BUG=442710
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25881}
2014-12-18 12:50:14 +00:00
Benedikt Meurer
0925be14a2 [turbofan] Further reduction of Word32And with Int32Add.
- (y * (K << L) + x) & (-1 << L) => (x & (-1 << L)) + y * (K << L)
- (x + y * (K << L)) & (-1 << L) => (x & (-1 << L)) + y * (K << L)

TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25875}
2014-12-18 08:42:57 +00:00
erikcorry
389c275b4f Mozilla test status: Assign bug number to quadratic assembler arm64 issue & misc regexp cleanup
R=marja@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25873}
2014-12-17 23:13:19 +00:00
machenbach
7d48fd9dc2 Revert of ES6 computed property names (patchset #1 id:1 of https://codereview.chromium.org/792233008/)
Reason for revert:
[sheriff] Still crashes on win32 (XP):
http://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%201/builds/1380

Original issue's description:
> ES6 computed property names
>
> This adds support for computed property names, under the flag
> --harmony-computed-property-names, for both object literals and
> classes.
>
> This is a revert of the revert, a76419f0f4.
>
> This changes to do an early bailout in
> HOptimizedGraphBuilder::VisitObjectLiteral instead of doing that in the later
> loop.
>
> BUG=v8:3754
> LOG=Y
> TBR=dslomov@chromium.org

TBR=dslomov@chromium.org,arv@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=v8:3754

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

Cr-Commit-Position: refs/heads/master@{#25872}
2014-12-17 19:47:12 +00:00
arv
cc568d1b7a ES6 computed property names
This adds support for computed property names, under the flag
--harmony-computed-property-names, for both object literals and
classes.

This is a revert of the revert, a76419f0f4.

This changes to do an early bailout in
HOptimizedGraphBuilder::VisitObjectLiteral instead of doing that in the later
loop.

BUG=v8:3754
LOG=Y
TBR=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25868}
2014-12-17 18:38:55 +00:00
dcarney
44e2dd535e [turbofan] move assembly order to InstructionBlock
R=titzer@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25867}
2014-12-17 15:10:03 +00:00
dcarney
7b9cb2eb37 [turbofan] remove control field from instruction
R=titzer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25866}
2014-12-17 14:10:46 +00:00
dcarney
70b5eb47b3 [turbofan] simplify gap ordering
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25865}
2014-12-17 13:37:56 +00:00
dcarney
84345afbfb [turbofan] use START and END gap positions for constraints
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25864}
2014-12-17 12:13:58 +00:00
Benedikt Meurer
a7d8724188 [turbofan] Improve reduction of Word32And and Int32Add.
TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25863}
2014-12-17 11:34:39 +00:00
bmeurer
5a8be47d21 Revert of [turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer. (patchset #1 id:1 of https://codereview.chromium.org/801263002/)
Reason for revert:
Can cause reduce cycles, needs more investigation

Original issue's description:
> [turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer.
>
> TEST=unittests
> R=svenpanne@chromium.org
>
> Committed: 6e7ceee4d0

TBR=svenpanne@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25859}
2014-12-17 09:51:17 +00:00
erik.corry
a75fc3a95b Allow timeout on regexp test
R=marja@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25858}
2014-12-17 08:23:29 +00:00
caitpotter88
525385ab50 Fix ArrayConcat for JSValues/JSFunctions/JSRegExps with @@isConcatSpreadable
LOG=N
BUG=v8:3764, v8:3765
R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25855}
2014-12-16 21:08:27 +00:00
arv
2639bfe993 ES6: Update unscopables to match spec
The spec ended up using Get(unscopables, propertyName) and
comparing the result to undefined instead of using Has.

BUG=v8:3632
LOG=Y
R=adamk, dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25854}
2014-12-16 20:07:41 +00:00
arv
5f22fdd5ae Revert of ES6 computed property names (patchset #1 id:1 of https://codereview.chromium.org/807173002/)
Reason for revert:
Crashes Win32. It was not flake.

Original issue's description:
> ES6 computed property names
>
> This adds support for computed property names, under the flag
> --harmony-computed-property-names, for both object literals and
> classes.
>
> This is a revert of the revert, a76419f0f4 with
> no changes. I cannot reproduce the issue on Win8.1 or WinXP. Letting the bots
> try again.
>
> BUG=v8:3754
> LOG=Y
> TBR=dslomov@chromium.org

TBR=dslomov@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=v8:3754

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

Cr-Commit-Position: refs/heads/master@{#25853}
2014-12-16 19:38:59 +00:00
arv
a235b1076a ES6 computed property names
This adds support for computed property names, under the flag
--harmony-computed-property-names, for both object literals and
classes.

This is a revert of the revert, a76419f0f4 with
no changes. I cannot reproduce the issue on Win8.1 or WinXP. Letting the bots
try again.

BUG=v8:3754
LOG=Y
TBR=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25851}
2014-12-16 17:30:05 +00:00
Jakob Kummerow
d5e6462d86 Bump the limit for test-heap/TestSizeOfRegExpCode
R=erik.corry@gmail.com

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

Cr-Commit-Position: refs/heads/master@{#25846}
2014-12-16 14:29:06 +00:00
svenpanne
cbf3b0bcc7 More -fsanitize=vptr fixes.
This actually fixes 3 different issues when accessing Operand1:

   * Object vs. HeapObject

   * Wrong defaults for equals/hash

   * silently dropping const

TEST=test/mjsunit/regress/regress-441099.js
BUG=chromium:441099
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25843}
2014-12-16 14:20:28 +00:00
ishell
08146dc023 Introduced PropertyType ACCESSOR_FIELD.
Review URL: https://codereview.chromium.org/805453002

Cr-Commit-Position: refs/heads/master@{#25842}
2014-12-16 13:22:31 +00:00
Benedikt Meurer
2b4eb88cdd [turbofan] Cache conversions inserted during typed lowering.
This greatly reduces the number of nodes in the graph (by more than 20x in
some extreme cases) for the Emscripten python interpreter main function.

BUG=v8:3763
LOG=y
TEST=cctest,mjsunit,unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25840}
2014-12-16 12:59:16 +00:00
erik.corry
d287f225a3 Limit code size generated for very large regexps
R=jkummerow@chromium.org, yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25839}
2014-12-16 12:33:32 +00:00
marja
978f41a1da RegExpParser: Fix Reset()ting to the end.
The bug would occur when we try to Reset() to a position already at the end.

This happens e.g., when the regexp ends with \u. What used to happen in that
case: 1) Advance past \ and u (to the end) (which wouldn't increase next_pos_
enough) 2) Try to parse 4 hex digits 3) When that failed, Reset() to the
position which should've been at the end but wasn't.

To be able to properly Reset() to a position at the end, we need to allow
next_pos_ to move beyond the end (since position() is next_pos_ - 1).

Minimal repro case:

var r = /foo\u/
r.test("foou") // should be true, was false.

(Note that \u not followed by 4 hex didits should be interpreted as an identity
escape. It already worked unless \u was at the end of the regexp.)

BUG=v8:3756
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#25838}
2014-12-16 12:14:19 +00:00
titzer
0f619463f2 [turbofan] First version of loop analysis: loop finder on the soup of nodes.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25837}
2014-12-16 09:36:40 +00:00
Sven Panne
1ee700c45a Log V8 version in profiler log file
Patch from issue 800293002 authored by ben@strongloop.com

TBR=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25835}
2014-12-16 07:40:13 +00:00
Benedikt Meurer
54a31b628d [base] Add iterator_range helper class.
TEST=unittests
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25834}
2014-12-16 07:32:03 +00:00
Benedikt Meurer
283175d984 [turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
Relanded with fix for always returning Change for PlainPrimitive even
if there was no change. The performance regression on primes.js and
corrections.js is due to unlucky loop header alignment; will be addressed
separately.

TEST=unittests
R=svenpanne@chromium.org

Committed: 75484e8d16

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

Cr-Commit-Position: refs/heads/master@{#25832}
2014-12-16 05:39:46 +00:00
bmeurer
2c30ab6616 Revert of [turbofan] Relax effects and context for JSToNumber(x:plain-primitive). (patchset #1 id:1 of https://codereview.chromium.org/799413002/)
Reason for revert:
Performance regressions on primes and corrections benchmarks.

Original issue's description:
> [turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
>
> TEST=unittests
> R=svenpanne@chromium.org
>
> Committed: 75484e8d16

TBR=svenpanne@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25831}
2014-12-16 04:45:09 +00:00
caitpotter88
aed5d734e6 Use proper ToLength() operation in %ArrayConcat()
LOG=N
R=dslomov@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25828}
2014-12-15 19:08:41 +00:00
dslomov
6d35dedf6e Ship ES6 classes.
R=arv@chromium.org
BUG=v8:3330
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25826}
2014-12-15 16:44:00 +00:00
arv
a76419f0f4 Revert of ES6 computed property names (patchset #9 id:160001 of https://codereview.chromium.org/795573005/)
Reason for revert:
Crashes on Win32

http://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%201/builds/1357

Test: mjsunit/harmony/computed-property-names
Flags: --stress-opt --always-opt
Command: build\Release\d8.exe --test --random-seed=-233815021 --stress-opt --always-opt --nohard-abort --nodead-code-elimination --nofold-constants --harmony-computed-property-names test\mjsunit\mjsunit.js test\mjsunit\harmony\computed-property-names.js

Run #1
Exit code: -1073741819
Result: CRASH
Expected outcomes: PASS

Run #2
Exit code: -1073741819
Result: CRASH
Expected outcomes: PASS

Run #3
Exit code: -1073741819
Result: CRASH
Expected outcomes: PASS

Original issue's description:
> ES6 computed property names
>
> This adds support for computed property names, under the flag
> --harmony-computed-property-names, for both object literals and
> classes.
>
> BUG=v8:3754
> LOG=Y

TBR=dslomov@chromium.org,wingo@igalia.com
NOTREECHECKS=true
NOTRY=true
BUG=v8:3754

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

Cr-Commit-Position: refs/heads/master@{#25825}
2014-12-15 16:38:42 +00:00
jkummerow
c060f4e26c Internalize strings being stored into uninitialized property cells
Review URL: https://codereview.chromium.org/804993002

Cr-Commit-Position: refs/heads/master@{#25822}
2014-12-15 15:46:11 +00:00
arv
6e38caf8d3 ES6 computed property names
This adds support for computed property names, under the flag
--harmony-computed-property-names, for both object literals and
classes.

BUG=v8:3754
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25821}
2014-12-15 15:27:19 +00:00
Benedikt Meurer
75484e8d16 [turbofan] Relax effects and context for JSToNumber(x:plain-primitive).
TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25818}
2014-12-15 13:42:54 +00:00
fedor.indutny
f6e68d2c2c Hydrogen: fix keyed loads with string keys
Keyed loads should not unconditionally be compiled to element loads. Update KeyedLoadICs to keep track of the key type, so that Hydrogen can emit ICs for string-keyed loads it doesn't have inline support for.

BUG=v8:3167
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25817}
2014-12-15 13:36:23 +00:00
ishell
b74cfe4a8f LayoutDescriptorHelper is now able to calculate the length of contiguous regions of tagged/non-tagged fields.
This functionality is now used by both object visitor and store buffer.

TEST=cctest/test-unboxed-doubles

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

Cr-Commit-Position: refs/heads/master@{#25816}
2014-12-15 12:13:21 +00:00
Benedikt Meurer
6e7ceee4d0 [turbofan] Correctify TruncateFloat64ToInt32 reduction in MachineOperatorReducer.
TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25812}
2014-12-15 07:46:21 +00:00
mathiasb
b24f04d4c3 Make RegExp.prototype.flags getter configurable
TEST=mjsunit/harmony
BUG=v8:3751
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25809}
2014-12-13 22:36:29 +00:00
caitpotter88
48054170e9 Implement ES6 @@isConcatSpreadable / Array.prototype.concat
Add support for Symbol.isConcatSpreadable in Array.prototype.concat. This enables spreading non-Array objects with the symbol.

LOG=N
R=dslomov@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25808}
2014-12-12 18:38:48 +00:00
danno
10b38df268 [turbofan]: Fix x64 regression during ia32 lea port
Review URL: https://codereview.chromium.org/795353008

Cr-Commit-Position: refs/heads/master@{#25807}
2014-12-12 18:17:01 +00:00
adamk
a32291fa1f Stop sending Object.observe notifications for API accessor properties
Such properties never notified prior to r21558, but the combination of
that change and r23163 led to sending notifications when they were
set via Object.defineProperty (but not when set via other means).

This also allows some cleanup in v8natives.js and objects.cc,
both of which were doing unnecessary contortions to produce the right
change records.

BUG=v8:3745
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25806}
2014-12-12 18:15:52 +00:00
ishell
ac9c9fc5ca Using PropertyKind in transitions instead of PropertyType.
Review URL: https://codereview.chromium.org/801813002

Cr-Commit-Position: refs/heads/master@{#25802}
2014-12-12 15:27:50 +00:00
Michael Stanton
22302b5179 Hydrogen code stubs for vector-based ICs.
This patch finally allows running and passing tests with vector-based
Load and KeyedLoad ICs.

BUG=
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25800}
2014-12-12 13:56:35 +00:00
ishell
9134c7a629 PropertyType is divided into PropertyKind and PropertyStoreMode.
Review URL: https://codereview.chromium.org/786193004

Cr-Commit-Position: refs/heads/master@{#25798}
2014-12-12 13:06:08 +00:00
dcarney
3595176565 [turbofan] improve register allocator testing framework
R=bmeurer@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25794}
2014-12-12 11:15:26 +00:00
Benedikt Meurer
14409abc22 [turbofan] Quickfix for invalid number truncation of typed array loads.
TEST=mjsunit/compiler/regress-int32array-outofbounds-nan
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25793}
2014-12-12 10:45:38 +00:00
svenpanne
71bb00e261 Consistently use only one of virtual/OVERRIDE/FINAL.
FINAL implies OVERRIDE, which in turn implies virtual, so there's no need to use
more than one of these. The Google C++ style guide even requires this, see
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Inheritance.

While we're here, port r24662 to x87.

The net result is that v8 compiles again with a current clang.

BUG=v8:3753
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25792}
2014-12-12 10:44:25 +00:00
Benedikt Meurer
4c583fee26 [turbofan] Various cleanups.
- Decouple JSBuiltinReducer from JSTypedLowering.
- Unify JSTypedLowering::ReduceJSToXXX() lowering.
- Cleanup several includes and forward declarations.
- Unify helper methods.

TEST=cctest
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25790}
2014-12-12 07:44:15 +00:00
caitpotter88
c78a65967a Perf tests for Template Literals
Review URL: https://codereview.chromium.org/769113002

Cr-Commit-Position: refs/heads/master@{#25789}
2014-12-12 05:14:28 +00:00
jarin
5913c7cc3f Reland of "Avoid number range holes in bitset types."
This reverts commit 8a6cbf0a86.

R=rossberg@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25786}
2014-12-11 17:50:11 +00:00
caitpotter88
17ba366bb8 Implement Array.from()
A helpful utility which converts iterables and array-like objects into Arrays

https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from

LOG=Y
BUG=v8:3336
R=arv@chromium.org, rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25785}
2014-12-11 17:16:27 +00:00
vogelheim
efdb6c8de1 Fix builds w/ component=="shared_library" and v8_use_external_startup_data==1.
R=machenbach@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25784}
2014-12-11 16:41:56 +00:00
dslomov
e6198a0fed Update tests in preparation for shipping classes.
R=arv@chromium.org
BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25783}
2014-12-11 15:54:09 +00:00
caitpotter88
ed29ecd838 Add materialized literals for tagged templates in preparser
LOG=N
R=arv@chromium.org, dslomov@chromium.org, marja@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25782}
2014-12-11 15:43:08 +00:00
rossberg
7e9ca491a4 Introduce unsigned representation types
To make space in the type bitset, remove Function, RegExp, and Buffer
types for now, since they aren't really relied upon anyway.

R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25776}
2014-12-11 13:47:46 +00:00
baptiste.afsa
49baecc42b [turbofan] Mark arm64 cbz/cbnz tbz/tbnz instructions as branch instructions.
The instruction selector now selects pseudo instructions: CompareAndBranch or
TestAndBranch which are associated with their continuations so that generic
code in the code generator will treat them as branch instruction and will be
able to apply optimization like avoiding branches when the code can falltrhough.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25773}
2014-12-11 12:45:33 +00:00
danno
2f7a5af0e3 [turbofan]: Port lea changes to ia32
Review URL: https://codereview.chromium.org/747283005

Cr-Commit-Position: refs/heads/master@{#25771}
2014-12-11 11:53:00 +00:00
yangguo
dae6dfe08b Implement Math.log2 via ported extract from fdlibm.
Adapted from Raymond Toy's (rtoy@chromium.org) port, extracted from fdlibm's pow implementation.

R=rtoy@chromium.org
BUG=v8:3579
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25768}
2014-12-11 11:23:37 +00:00
kozyatinskiy
affe4c03b6 [V8] Report v8::AfterCompile and v8::CompileError to listener on pause
V8 didn't report compile events on pause before this patch. These events can be important for listener. For example, DevTools allows user to execute some JS code on pause and needs to show correct stack trace in message from it.

BUG=396013
R=yurys@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25767}
2014-12-11 10:59:00 +00:00
mathiasb
33f0cf5acd Implement the RegExp.prototype.flags getter
TEST=mjsunit/harmony
BUG=v8:3751
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25762}
2014-12-10 20:41:10 +00:00
dslomov
4bf531c1ea Update strict mode function declaration tests before block scoping.
R=arv@chromium.org,marja@chromium.org
BUG=v8:2198
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25760}
2014-12-10 20:09:42 +00:00
adamk
4fa7ae1c07 Optimize Object.seal and Object.preventExtensions
They both now run fast (due to utilizing transitions instead of always
creating new maps) and sealed or non-extensible objects can stay in
fast mode after transitioning.

This almost entirely reuses the code for transitioning objects
frozen by Object.freeze(), with the added benefit of freeing
up a bit on the map (we no longer keep track of frozen-ness,
as that bit wasn't used for anything interesting).

BUG=v8:3662,chromium:115960
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25759}
2014-12-10 20:02:59 +00:00
Adam Klein
986e7cefe1 Ensure class prototype objects have the right Map::constructor field
The null constructor they had previously could be observed as crashes in
the V8 API's Object::CreationContext() method and in Object.observe.

BUG=v8:3750
LOG=n
R=arv@chromium.org, dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25757}
2014-12-10 18:25:55 +00:00
jarin
8a6cbf0a86 Revert of Avoid number range holes in bitset types. (patchset #5 id:80001 of https://codereview.chromium.org/759013003/)
Reason for revert:
For breaking the waterfall (run-json-stringify test).

Original issue's description:
> Avoid number range holes in bitset types.
>
> BUG=

TBR=rossberg@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25756}
2014-12-10 18:25:38 +00:00
ulan
e51e86f459 Skip slow webkit/array-iterate-backwards in arm64.debug/gc-stress mode.
BUG=
TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25755}
2014-12-10 16:57:36 +00:00
jarin
4de4f74cf2 Avoid number range holes in bitset types.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25754}
2014-12-10 16:39:10 +00:00
ishell
7d13ca278a Reland of "TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have several entries for the same property name."
Review URL: https://codereview.chromium.org/793453004

Cr-Commit-Position: refs/heads/master@{#25750}
2014-12-10 15:18:52 +00:00
Benedikt Meurer
f6849d9ed4 [turbofan] Fix cycles introduced by pushing ToNumbers into phis.
TEST=cctest
R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25743}
2014-12-10 11:59:44 +00:00
yangguo
7cff32a9bd Reland "Use same blob format for internal and external snapshots."
Review URL: https://codereview.chromium.org/791723004

Cr-Commit-Position: refs/heads/master@{#25741}
2014-12-10 11:46:55 +00:00
titzer
9a823cf612 Reland "[turbofan] Fix control reducer bug with NTLs."
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25740}
2014-12-10 11:45:35 +00:00
ulan
d2e54925ca Reland remaining parts of 'Use weak cells in map checks in polymorphic ICs'
BUG=v8:3663
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25739}
2014-12-10 10:57:36 +00:00
dcarney
ea11ffc65b ExecutableAccessorInfo::clear_setter should set a null foreign pointer
R=jkummerow@chromium.org
BUG=433458
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25737}
2014-12-10 10:18:12 +00:00
dcarney
aae665862f [turbofan] delay inserting spill slots for parent ranges.
R=jarin@chromium.org,

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25736}
2014-12-10 09:46:01 +00:00
d
4161b54d58 Add Array.prototype.includes
Requires adding a SameValueZero implementation.

LOG=Y
BUG=v8:3575
R=dslomov@chromium.org, arv@chromium.org
TEST=added to test262

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

Cr-Commit-Position: refs/heads/master@{#25735}
2014-12-10 08:58:15 +00:00
dslomov
008405f0b9 Pass --noharmony-scoping to tests validating that we throw on 'const' in strict mode.
R=marja@chromium.org
BUG=v8:2198
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25733}
2014-12-10 08:55:53 +00:00
dslomov
6751f0439f Fix messages tests.
Change tests so that message location is stable under --debug-code.

R=yangguo@chromium.org
BUG=v8:3744
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25732}
2014-12-10 08:54:48 +00:00
Benedikt Meurer
19418d76df [x64] Fix optimization for certain checked load/stores.
BUG=chromium:439743
LOG=y
TEST=mjsunit
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25731}
2014-12-10 07:49:12 +00:00
Ben L. Titzer
a068503b45 Revert "[turbofan] Fix control reducer bug with NTLs."
This reverts commit aeda76c5cf.

Reason: exposed other TurboFan bugs.

R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25730}
2014-12-09 16:28:20 +00:00
machenbach
da6dbe78bc Revert of Use same blob format for internal and external snapshots. (patchset #2 id:20001 of https://codereview.chromium.org/787033002/)
Reason for revert:
[sheriff] breaks http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/1293

Original issue's description:
> Use same blob format for internal and external snapshots.
>
> R=vogelheim@chromium.org

TBR=vogelheim@chromium.org,yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25729}
2014-12-09 16:19:57 +00:00
yangguo
03ba4becbf Use same blob format for internal and external snapshots.
R=vogelheim@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25727}
2014-12-09 15:12:27 +00:00
titzer
aeda76c5cf [turbofan] Fix control reducer bug with NTLs.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25725}
2014-12-09 15:09:59 +00:00
Benedikt Meurer
48a6766e78 [x86] Disable invalid checked load/store optimization.
TEST=mjsunit/compiler/regress-lena
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25722}
2014-12-09 14:16:34 +00:00
bmeurer
baafb8f92e [turbofan] Turn JSToBoolean and JSUnaryNot into pure operators.
Also fix the pushing of JSToBoolean into Phis and generalize it to
also include pushing into Selects.

TEST=cctest,unittests

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

Cr-Commit-Position: refs/heads/master@{#25718}
2014-12-09 07:35:12 +00:00
Dmitry Lomov
90a297a8e0 Ignore tests that fail on nosnap apparently for infa reasons.
TBR=arv@chromium.org
BUG=v8:3744
LOG=N
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25716}
2014-12-08 18:41:39 +00:00
dslomov
b4f3250712 Better message location for 'super(...)' restriction error.
R=arv@chromium.org
BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25714}
2014-12-08 15:55:03 +00:00
chunyang.dai
e980c7e41b update test case for "Disable neutering on embedded arraybuffers"
This test case ( added by git: 4c7effe56e ).
  should has different implementation for Turbofan and crankshaft.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25713}
2014-12-08 15:14:56 +00:00
dslomov
1954ad8bc1 Do not reflect uninitialized 'let' and 'const' in scope mirrors.
R=yangguo@chromium.org,aandrey@chromium.org
BUG=v8:3743
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25712}
2014-12-08 14:59:28 +00:00
marja
6680fd1591 Handle invalid parser cache gracefully (move invalid cache handling to embedder).
Blink already has code for handling invalid cached data. The attached test
ensures that cached data is gracefully rejected if it cannot be used.

This also unifies parser cache and code cache handling.

R=yangguo@chromium.org
BUG=439889
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25708}
2014-12-08 11:47:50 +00:00
ulan
9a60180487 Temporarily skip test-mark-compact/MarkCompactCollector.
BUG=v8:3742
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25706}
2014-12-08 11:05:56 +00:00
jochen
97c1f4b15c Turn on DCHECKs and other debugging code if dcheck_always_on is 1
When compiling with the macro DCHECK_ALWAYS_ON defined, DCHECKs and
supporting code gets compiled and enabled.

This increases test coverage for chromium release buildbots

BUG=v8:3731
R=jkummerow@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25701}
2014-12-08 09:26:16 +00:00
Benedikt Meurer
11b52971d9 Make cpplint happy.
TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25699}
2014-12-08 08:53:20 +00:00
arv
c8c7395644 Optimize GetPrototype
This introduces Hydrogen for %_GetPrototype. The code falls back on
runtime if the object needs access checks or if its prototype is a
hidden prototype.

BUG=None
LOG=Y
R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25694}
2014-12-05 20:36:50 +00:00
dslomov
293f898a6f Make sure that individual shipping features can be disabled.
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25690}
2014-12-05 15:35:37 +00:00
dcarney
5ce364d817 new api for adding indexed interceptors
R=svenpanne@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25688}
2014-12-05 15:21:27 +00:00
verwaest
7fb5f74d20 Allow eval in detached contexts
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25686}
2014-12-05 13:25:10 +00:00
dcarney
4c7effe56e [turbofan] disable neutering on embedded arraybuffers
R=titzer@chromium.org,

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25685}
2014-12-05 13:08:03 +00:00
dslomov
bd04e6cdad Fix the order of context binding/simulate insertion for BlockContexts.
R=jarin@chromium.org
BUG=v8:3741
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25684}
2014-12-05 13:06:50 +00:00
yangguo
ab234760d7 Reland "Encode reservation meta data in the snapshot blob."
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_dbg,v8_linux_nosnap_rel

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

Cr-Commit-Position: refs/heads/master@{#25681}
2014-12-05 13:03:30 +00:00
danno
85d2db8781 [turbofan] Use "leal" in even more situations
Achieve more than parity with modes currently handled on ia32 in preparation for
porting the entire mechanism to ia32, including supporting mul of constants 3,
5 and 9 with "leal" instructions.

TEST=unittests

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

Cr-Commit-Position: refs/heads/master@{#25677}
2014-12-05 10:54:40 +00:00
machenbach
21835209a7 Use merged JSTest config for performance tests.
The new config is now used for perf measurements. The old
ones are deleted to avoid redundancy.

This also ports https://codereview.chromium.org/754523004 to the new config file.

BUG=chromium:374740
LOG=n
TBR=ulan@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25674}
2014-12-05 08:43:19 +00:00
Benedikt Meurer
b3ace35209 [turbofan] Redundant load elimination.
This is an initial version of redundant load elimination, currently
limited to LoadField operators, and implemented by walking the effect
chain.

TEST=unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25673}
2014-12-05 07:59:18 +00:00
arv
f515e3635f Add js-perf-test for ES6 class default constructor
BUG=v8:3330
LOG=N
TBR=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25669}
2014-12-04 20:12:14 +00:00
vogelheim
b27431d52f Cleanup: Remove NativesCollection<.>::*Raw* methods.
These methods for used for compressed libraries, where GetSource* functions
contained the compressed sources and [GS]etRawSource* the uncompressed
sources. This is dead code since the API no longer supports compression.

(If you need/want compressed sources, use the external startup data and
 compress/uncompress on the Embedder's side.)

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25666}
2014-12-04 18:51:22 +00:00
arv
edf3dab466 ES6 template literals: Fix issue with template after rbrace
If we hade }` the right brace was always treated as part of the
template literal. We should only treat the right brace as part of
the literal when we continue to parse the template literal after a
placeholder.

BUG=v8:3734
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25661}
2014-12-04 14:50:17 +00:00
Benedikt Meurer
2bf048f46c [turbofan] Reduce context accesses during typed lowering.
TEST=unittests
R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25656}
2014-12-04 10:50:58 +00:00
machenbach
1364ea7c77 Make JSTests ready for Android measurements.
This adds a common perf configuration for JSTests including
Classes, Collections, Iterators and Strings. This allows
the android test runner to handle subdirectories correctly
and to share the base.js resource in the parent directory.

The new json config has added resources configs for the
Android runner.

The perf runner's relative paths on the device are fixed as
well. Resources are only pushed on the configuration node
where they are specified. They are pushed to a dir on the
device that follows the same directory structure as on the
host. The binary is executed in the benchmark folder on the
device like on the host to allow relative path file
loading.

BUG=chromium:374740
LOG=n
TEST=python -m unittest run_perf_test
TBR=ulan@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25655}
2014-12-04 10:37:42 +00:00
machenbach
ccf68a7b92 Revert of Encode reservation meta data in the snapshot blob. (patchset #3 id:40001 of https://codereview.chromium.org/781443002/)
Reason for revert:
[sheriff] Breaks http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064/builds/1540

Original issue's description:
> Encode reservation meta data in the snapshot blob.
>
> This also makes reserving multiple chunks per object space possible.
>
> R=vogelheim@chromium.org

TBR=vogelheim@chromium.org,baixo@chromium.org,yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25654}
2014-12-04 10:31:33 +00:00
yangguo
aa3ceb8b71 Encode reservation meta data in the snapshot blob.
This also makes reserving multiple chunks per object space possible.

R=vogelheim@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25652}
2014-12-04 09:50:39 +00:00
arv
d67e573dbe Simplify template literal raw string creation
BUG=v8:3710
LOG=Y
R=dslomov@chromium.org, marja@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25640}
2014-12-03 14:17:23 +00:00
marja
02cb54e3cc Make test-parsing faster: don't run parsing tests with all experimental flag combinations.
Instead, make it possible for indifidual tests to pass "always true flags" which
are not part of the varying flag set.

The downside is that if an experimental flag changes parsing of some of the
unrelated code snippets, it's noticed later (only after the flag is turned on by
default). But this is a reasonable trade off for faster tests.

Additional fix: Some tests (ErrorsFutureStrictReservedWords) were using
always_flags incorrectly (running two different tests with different
always_flags basically iterates over every flag combination anyway - most of
them twice).

BUG=v8:3707
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25628}
2014-12-03 08:23:48 +00:00
Benedikt Meurer
2983d84e5c [turbofan] Combine additional Word32And with Int32Add and negative power of two.
- (y << L + x) & (-1 << L) => (x & (-1 << L)) + y << L
- (x + y << L) & (-1 << L) => (x & (-1 << L)) + y << L

TEST=unittests
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25627}
2014-12-03 07:35:03 +00:00
mstarzinger
f9e4527f32 Restrict floating control to minimal control-connected component.
R=jarin@chromium.org
TEST=cctest/test-scheduler/NestedFloatingDiamondWithChain

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

Cr-Commit-Position: refs/heads/master@{#25621}
2014-12-02 15:56:30 +00:00
weiliang.lin
4f3d27e64f [ia32] Introduce FMA3 instructions on scalar data elements.
port 83a635e0d7

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25619}
2014-12-02 15:30:09 +00:00
danno
f6e5bc1642 Clean up node iteration
- Create a first-class Edge type.
- Separate node and edge iterators
- Make iterators only responsible for iteration
- Make it possible to modify the use edge iterator while iterating.
- Add the ability to update inputs to Edges directly.

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

Cr-Commit-Position: refs/heads/master@{#25616}
2014-12-02 14:38:58 +00:00
ulan
2ac522ab15 Reland parts of 'Use weak cells in map checks in polymorphic ICs'
This relands macroassembler instructions and weak cell caching and
does not include parts that caused "Linux ASan LSan" test failures.

BUG=v8:3663
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25615}
2014-12-02 14:25:26 +00:00
svenpanne
c16b8f6cbb Fixed environment handling for LFlooringDivI on ARM.
Beautiful code... :-}

BUG=chromium:437765
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#25613}
2014-12-02 13:47:19 +00:00
Marja Hölttä
d3c217674f Make the ParserSync test faster (and re-enable it).
Most of the run time came from testing with all possible flag combinations. None
of the flags passed affect the test, and there are specialized tests for testing
the features behind the flags; no need to slow down the generic test.

With these changes, run time for debug build goes from 186 s to 0.5 s.

In addition, fixed some missing commas between the test cases.

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

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

Cr-Commit-Position: refs/heads/master@{#25612}
2014-12-02 13:23:39 +00:00
Benedikt Meurer
a94a612220 [turbofan] Cache the JSStoreProperty operator(s).
TEST=unittests
R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25609}
2014-12-02 11:40:32 +00:00
dslomov
71d166ee70 Restore correct logic in GC test.
R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25608}
2014-12-02 11:34:38 +00:00
jochen
49859dc3bb After moving unreachable weak global handles only process harmony collections
Groups and implicit references are no longer relevant at this point.

Also add tests that fail if the first or second round of ephemeral
marking is omitted

BUG=none
R=mstarzinger@chromium.org,hpayer@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25606}
2014-12-02 11:24:00 +00:00
Benedikt Meurer
d33cabea57 [turbofan] Add missing tests for SimplifiedOperatorBuilder.
TEST=unittests
R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25605}
2014-12-02 11:10:55 +00:00
marja
0a0e6c8c81 ES6 unicode extensions, part 1.
Allows \u{xxxxx} in variable names and string literals (not yet in regexps).

Everything's behind the --harmony-unicode flag.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25603}
2014-12-02 10:58:19 +00:00
titzer
77c6ee0c04 [turbofan] Make context specialization into a reducer.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25600}
2014-12-02 10:02:46 +00:00
yurys
f434123a16 Add GetIdentityHash to v8::Name object API
v8::Object already has GetIdentityHash on it. This change adds its counterpart to v8::Name.

BUG=chromium:437416
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25598}
2014-12-02 09:13:30 +00:00
machenbach
d9c83f6bd0 Revert of Use weak cells in map checks in polymorphic ICs. (patchset #8 id:140001 of https://codereview.chromium.org/753993003/)
Reason for revert:
[Sheriff] Speculative revert for breaking chromium asan (roll blocker):
http://build.chromium.org/p/client.v8/builders/Linux%20ASan%20LSan%20Tests%20%281%29/builds/1683

Original issue's description:
> Use weak cells in map checks in polymorphic ICs.
>
> BUG=v8:3663
> LOG=N

TBR=mvstanton@chromium.org,akos.palfi@imgtec.com,weiliang.lin@intel.com,ulan@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=v8:3663

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

Cr-Commit-Position: refs/heads/master@{#25597}
2014-12-02 08:17:05 +00:00
weiliang.lin
2ad1c224b8 [ia32] Introduce vex prefix version of float64 arithmetic binop
port 50c4d8826b

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25595}
2014-12-02 08:09:53 +00:00
Benedikt Meurer
c516d4f094 [turbofan] Add checked load/store operators.
TEST=mjsunit,cctest,unittests
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25591}
2014-12-02 04:49:11 +00:00
dslomov
573401a422 harmony-classes: Fix some issues with syntactic restriction on super(...).
R=arv@chromium.org
BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25589}
2014-12-01 20:13:54 +00:00
ishell
c81e9f5970 Do not call Heap::IterateAndMarkPointersToFromSpace() for unboxed double fields.
BUG=chromium:437143
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25585}
2014-12-01 14:19:29 +00:00
Weiliang Lin
50c4d8826b [x64] introduce vex prefix version of float64 arithmetic binop
BUG=
R=bmeurer@chromium.org

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

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

Cr-Commit-Position: refs/heads/master@{#25582}
2014-12-01 10:45:18 +00:00
ulan
45a36948e1 Use weak cells in map checks in polymorphic ICs.
BUG=v8:3663
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25581}
2014-12-01 10:41:14 +00:00
danno
91ec654bf9 [turbofan]: Use "leal" more prevasively on x64
Only use "addl" and "subl" in cases that have been measured to be
faster (currently only immediate operations).

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

Cr-Commit-Position: refs/heads/master@{#25580}
2014-12-01 10:04:42 +00:00
dslomov
9e02e98771 Introduce a kill-switch for shipping features.
R=rossberg@chromium.org
TBR=hpayer@chromium.org

Committed: d628562086

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

Cr-Commit-Position: refs/heads/master@{#25577}
2014-11-28 20:07:18 +00:00
dslomov
557bf53b79 Revert of Introduce a kill-switch for shipping features. (patchset #2 id:20001 of https://codereview.chromium.org/763273002/)
Reason for revert:
Reverted for breaking nosnap: http://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20nosnap/builds/1003/steps/Check/logs/Threading3

Original issue's description:
> Introduce a kill-switch for shipping features.
>
> R=rossberg@chromium.org
>
> Committed: d628562086

TBR=rossberg@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25574}
2014-11-28 18:27:55 +00:00
mstarzinger
70093d719c De-generify the GenericNode.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25572}
2014-11-28 15:21:44 +00:00
aandrey
cec0acad38 Expose generator object internal properties via mirrors.
BUG=v8:3292
R=yangguo@chromium.org, wingo@igalia.com
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25571}
2014-11-28 14:49:08 +00:00
Dmitry Lomov
d628562086 Introduce a kill-switch for shipping features.
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25570}
2014-11-28 14:32:17 +00:00
mstarzinger
e6b4b8dc55 Remove deprecated pieces from generic algorithm.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25565}
2014-11-28 11:57:15 +00:00
hpayer
297935b34f Use deadline in IdleNotification.
BUG=417668
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25560}
2014-11-28 10:59:24 +00:00
dslomov
65aa17b9c3 harmony-classes: Implement 'super(...)' call syntactic restriction.
R=rossberg@chromium.org,arv@chromium.org
BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25555}
2014-11-28 04:08:58 +00:00
Michael Stanton
c142994f74 Flesh out vector ic state query and set mechanisms.
The IC system now fully integrates the vector concept and can
handle loads and keyed loads vector-based.

BUG=
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25552}
2014-11-27 16:36:40 +00:00
dslomov
34702e9d59 Set @@toStringTag on GeneratorFunction prototype.
R=caitpotter88@gmail.com
BUG=v8:3502
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25550}
2014-11-27 16:09:43 +00:00
Hannes Payer
5c3d1cbf75 Re-land: Distinguish beween final incremental mark-compact and full mark-compact event in IdleNotification.
BUG=
R=ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25545}
2014-11-27 12:39:57 +00:00
dcarney
50ef0690b2 Add interceptor support for symbols
a revival of https://codereview.chromium.org/467013003

R=rossberg@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25537}
2014-11-27 10:21:39 +00:00
dslomov
cd4cc1ba36 Ship harmony-strings
R=rossberg@chromium.org, yangguo@chromium.org
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25536}
2014-11-27 10:17:18 +00:00
ishell
916d56d09e Fast-to-slow migration should wipe out in-object space if it exists in the object after migration.
BUG=chromium:436816
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25535}
2014-11-27 10:10:55 +00:00
dcarney
60af073ad8 [turbofan] add initial move optimizer
R=bmeurer@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25533}
2014-11-27 09:21:06 +00:00
ishell
1a2e4b265a Map::CopyGeneralizeAllRepresentations() left incorrect layout descriptor in a new map.
BUG=chromium:436820
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25530}
2014-11-26 17:37:05 +00:00
caitpotter88
0ea30611f3 Fix raw TemplateLiteral spans with non-ascii characters
BUG=v8:3710

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

Cr-Commit-Position: refs/heads/master@{#25529}
2014-11-26 17:15:54 +00:00
titzer
9da4998204 Abort optimization in corner case.
The %OptimizeFunctionOnNextCall sledgehammer can cause a function to be
marked for optimization before it's ever been compiled by fullcode.
This can lead to the situation where a function doesn't have optimization
disabled until we try to compile it optimized.

Basically, the assert should just handle this case more gracefully.

R=yangguo@chromium.org
BUG=436893
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25528}
2014-11-26 16:57:52 +00:00
jarin
97cab985b8 Do not try to inline if the function has an illegal redeclaration.
R=mvstanton@chromium.org
BUG=chromium:436896
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25527}
2014-11-26 16:32:46 +00:00
titzer
da22163d35 [turbofan] Implement jump threading after register allocation.
R=dcarney@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25521}
2014-11-26 12:41:55 +00:00
dslomov
626f110f0b Introduce legacy const slots in correct context.
R=rossberg@chromium.org
BUG=chromium:410030
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#25519}
2014-11-26 12:16:30 +00:00
rodolph.perfetta
55614cfe69 [turbofan] Recognize rotate right.
Extended the rotate left detection code.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25517}
2014-11-26 11:49:43 +00:00
dslomov
6ac4de87a8 harmony-scoping: make assignment to 'const' a late error.
Per TC39 Nov 2014 decision.

This patch also changes behavior for "legacy const": assignments to sloppy const in strict mode is now also a type error. This fixes v8:2243 and also brings us in compliance with other engines re assignment to function names (see updated webkit test), but might have bigger implications.
That change can easily be reverted by changing Variable::IsSignallingAssignmentToConst.

BUG=v8:3713,v8:2243
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25516}
2014-11-26 11:21:23 +00:00
Benedikt Meurer
560b0c4534 [arm] Fix recognition of VNEG.
TEST=mjsunit,unittests
R=svenpanne@chromium.org

Committed: 2aed882fe7

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

Cr-Commit-Position: refs/heads/master@{#25515}
2014-11-26 11:18:58 +00:00
machenbach
86f6123ade Revert of [arm] Fix recognition of VNEG. (patchset #3 id:40001 of https://codereview.chromium.org/762493006/)
Reason for revert:
Breaks arm compilation.

Original issue's description:
> [arm] Fix recognition of VNEG.
>
> TEST=mjsunit,unittests
> R=svenpanne@chromium.org
>
> Committed: 2aed882fe7

TBR=svenpanne@chromium.org,bmeurer@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25514}
2014-11-26 11:07:23 +00:00
Benedikt Meurer
2aed882fe7 [arm] Fix recognition of VNEG.
TEST=mjsunit,unittests
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25513}
2014-11-26 10:46:37 +00:00
machenbach
38a111c4b2 Mark slow tests as slow.
TBR=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25511}
2014-11-26 08:51:48 +00:00
svenpanne
fd13969ef0 Disable ParserSync test for now, it takes waaaaay too long.
Running this in x64.release mode on a powerful HP620 takes 4 seconds,
this is at least 2 orders of magnitude too slow and leads to tons of
false positives on our build bots due to timeouts. As it is, the
cost-benefit ratio is far too low.

The whole approach needs to be changed: Instead of trying to exhaust
some search space in unit tests, this should be turned into a fuzzing
test where only a small but random number of things are tested. The
exhaustive approach can be done separately, but definitely not in the
unit tests.

BUG=v8:3707

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

Cr-Commit-Position: refs/heads/master@{#25510}
2014-11-26 08:16:01 +00:00
Weiliang Lin
83a635e0d7 [x64] Introduce FMA3 instructions on scalar data elements.
R=bmeurer@chromium.org

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

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

Cr-Commit-Position: refs/heads/master@{#25509}
2014-11-26 05:31:55 +00:00
Benedikt Meurer
a01f4d871a Revert "Distinguish beween final incremental mark-compact and full mark-compact event in IdleNotification."
This reverts commit d15d453fa5 for
breaking cctest/test-api/Threading3.

TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25506}
2014-11-26 05:12:36 +00:00