Commit Graph

22194 Commits

Author SHA1 Message Date
titzer
6e5d805718 [turbofan] Disable select matching due to bug manifesting on arm.
R=machenbach@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27702}
2015-04-09 12:41:18 +00:00
dcarney
5950acf29a [turbofan] Push layout descriptors to InstructionOperand subclasses.
Review URL: https://codereview.chromium.org/1070043002

Cr-Commit-Position: refs/heads/master@{#27701}
2015-04-09 11:28:58 +00:00
balazs.kilvady
8157b6c91a MIPS: [turbofan] Materialize JSFunction from frame if possible.
Port 725cdc533c

Original commit message:
This reduces the overhead of recursive calls when context specialization
is enabled. Based on this it might be possible to further reduce the
overhead by also specializing the call itself.

As a drive-by-fix, port the fast context materialization optimization to
arm and arm64, that was previously only supported on x64 and ia32.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27700}
2015-04-09 11:16:03 +00:00
mstarzinger
63eeab12eb Make TestInternalWeakLists more robust against flags.
This makes some tests in test-heap.cc more robust against flags, now
that top-level code can be optimized by the --always-opt flag.

R=hpayer@chromium.org
TEST=cctest/test-heap/TestInternalWeakLists

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

Cr-Commit-Position: refs/heads/master@{#27699}
2015-04-09 11:01:21 +00:00
dcarney
8392d9c43b [turbofan] Make AllocatedOperand an InstructionOperand::Kind.
This is preparatory work to have MachineTypes encoded in AllocatedOperands.

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

Cr-Commit-Position: refs/heads/master@{#27698}
2015-04-09 10:40:43 +00:00
Benedikt Meurer
f190a6d23d [turbofan] Add poor man's store elimination for storing to fields.
This is a very simple dead store elimination that removes StoreField
nodes which are immediately followed by other StoreField nodes that
store to the same field. Ideally there should be a fully featured store
elimination, which walks over the effect graph starting from the end,
but there are some technical difficulties to solve before we can get to
that, esp. we need to think about "effect producing" operators like
ValueEffect first. Once we have that, it is trivial to remove this temporary
poor man's store elimination.

R=dcarney@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27697}
2015-04-09 10:29:26 +00:00
machenbach
99be3e82bf [test-runner] Pass slowest test durations to buildbot.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27696}
2015-04-09 09:56:03 +00:00
v8-autoroll
ef6257f84f Update V8 DEPS.
Rolling v8/tools/clang to 5e71fff34c77c4ee9056fe3f2124c433768e2282

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27695}
2015-04-09 09:51:43 +00:00
chunyang.dai
8f3b3ba6ba X87: Code cleanup in GenerateRecordCallTarget.
port 6a222b8ff0 (r27630)

original commit message:

  Code cleanup in GenerateRecordCallTarget

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27694}
2015-04-09 09:31:56 +00:00
chunyang.dai
8fe72d6ff5 X87: Make --always-opt also optimize top-level code
port 2d281e71ac (r27633)

original commit message:

    Make --always-opt also optimize top-level code.

    This enables eager optimization of top-level code with TurboFan and
    extends test coverage by triggering it with the --always-opt flag.
    Script contexts are now also properly allocated in TurboFan.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27693}
2015-04-09 09:30:52 +00:00
dcarney
07ff6d9f22 [turbofan] cleanup InstructionOperand a little
- ConstantOperand was using a too-small field too store its virtual register
- drop ConvertTo, replace it with simple copy
- split AllocatedOperand off from Immediate and Constant to make assignment clearer, also paving the way for small Immediates
- put zone first in *Operand::New
- driveby: drop delayed ssa deconstruction experiment

R=titzer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27692}
2015-04-09 09:15:32 +00:00
mvstanton
a3dcfa2255 VectorICs - turn on vector ICs for LoadIC and KeyedLoadIC
BUG=
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27691}
2015-04-09 09:06:06 +00:00
brucedawson
5a6247a31b Don't #define snprintf in VS2015 - it's illegal and unneeded.
VS 2015 supplies a conforming snprintf implementation, so #define
snprintf is no longer needed. Also, VS 2015 checks for #define of
snprintf and treats it as a fatal error.

LOG=Y
R=jarin@chromium.org
BUG=440500

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

Cr-Commit-Position: refs/heads/master@{#27690}
2015-04-09 09:02:58 +00:00
hpayer
ba70a7a3e1 MarkBit cleanup: They have to be accessed through Marking accessors. Avoid arbitrary abuse of mark bits and make marking explicit.
Added DCHECKs to mark bit transitions to check source state.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27689}
2015-04-09 08:55:43 +00:00
yangguo
fd8d0d1419 Blacklist tests due to optimizing toplevel with --always-opt.
Those two tests fail in gc-stress and custom snapshot (embedding mjsunit.js).
This is likely due to different GC timing with the custom snapshot.

R=mstarzinger@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27688}
2015-04-09 08:47:34 +00:00
mstarzinger
dd3067a787 Disable more failing tests after f3338dd3b0.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27687}
2015-04-09 08:21:45 +00:00
bmeurer
725cdc533c [turbofan] Materialize JSFunction from frame if possible.
This reduces the overhead of recursive calls when context specialization
is enabled. Based on this it might be possible to further reduce the
overhead by also specializing the call itself.

As a drive-by-fix, port the fast context materialization optimization to
arm and arm64, that was previously only supported on x64 and ia32.

R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27686}
2015-04-09 07:41:13 +00:00
hablich
eacb0de817 Revert of Revert of X87: Reimplement Maps and Sets in JS (patchset #1 id:1 of https://codereview.chromium.org/1073723002/)
Reason for revert:
Revert the revert as this commit cannot be the cause for the closed tree.

Original issue's description:
> Revert of X87: Reimplement Maps and Sets in JS (patchset #1 id:1 of https://codereview.chromium.org/1066373002/)
>
> Reason for revert:
> Reverting as it resulted in a closed waterfall.
>
> Original issue's description:
> > X87: Reimplement Maps and Sets in JS
> >
> > port 909500aa1d (r27605)
> >
> > original commit message:
> >     Previously, the only optimized code path for Maps and Sets was for String keys.
> >     This was achieved through an implementation of various complex operations
> >     in Hydrogen. This approach was neither scalable nor forward-compatible.
> >
> >     This patch adds the necessary intrinsics to implement Maps and Sets almost entirely
> >     in JS. The added intrinsics are:
> >
> >       %_FixedArrayGet
> >       %_FixedArraySet
> >       %_TheHole
> >       %_JSCollectionGetTable
> >       %_StringGetRawHashField
> >
> >     With these additions, as well as a few changes to what's exposed as runtime functions,
> >     most of the C++ code backing Maps and Sets is gone (including both runtime code in
> >     objects.cc and Crankshaft in hydrogen.cc).
> >
> > BUG=
> >
> > Committed: https://crrev.com/56600a35a49ffa5abcba66b14839089de3589ad9
> > Cr-Commit-Position: refs/heads/master@{#27681}
>
> TBR=weiliang.lin@intel.com,chunyang.dai@intel.com
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=
>
> Committed: https://crrev.com/a0486f128109443ed07802fb463c267e53533d81
> Cr-Commit-Position: refs/heads/master@{#27682}

TBR=weiliang.lin@intel.com,chunyang.dai@intel.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27685}
2015-04-09 07:11:13 +00:00
chunyang.dai
c8521794ba X87: JSEntryTrampoline: check for stack space before pushing arguments
port 146598f44a (r27614)

original commit message:

  Optimistically pushing a lot of arguments can run into the stack limit of the
  process, at least on operating systems where this limit is close to the limit
  that V8 sets for itself.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27684}
2015-04-09 06:52:02 +00:00
jing.bao
dba47f6486 [ia32] Introduce BMI instructions.
BUG=v8:4015
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#27683}
2015-04-09 06:50:58 +00:00
hablich
a0486f1281 Revert of X87: Reimplement Maps and Sets in JS (patchset #1 id:1 of https://codereview.chromium.org/1066373002/)
Reason for revert:
Reverting as it resulted in a closed waterfall.

Original issue's description:
> X87: Reimplement Maps and Sets in JS
>
> port 909500aa1d (r27605)
>
> original commit message:
>     Previously, the only optimized code path for Maps and Sets was for String keys.
>     This was achieved through an implementation of various complex operations
>     in Hydrogen. This approach was neither scalable nor forward-compatible.
>
>     This patch adds the necessary intrinsics to implement Maps and Sets almost entirely
>     in JS. The added intrinsics are:
>
>       %_FixedArrayGet
>       %_FixedArraySet
>       %_TheHole
>       %_JSCollectionGetTable
>       %_StringGetRawHashField
>
>     With these additions, as well as a few changes to what's exposed as runtime functions,
>     most of the C++ code backing Maps and Sets is gone (including both runtime code in
>     objects.cc and Crankshaft in hydrogen.cc).
>
> BUG=
>
> Committed: https://crrev.com/56600a35a49ffa5abcba66b14839089de3589ad9
> Cr-Commit-Position: refs/heads/master@{#27681}

TBR=weiliang.lin@intel.com,chunyang.dai@intel.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27682}
2015-04-09 06:49:33 +00:00
chunyang.dai
56600a35a4 X87: Reimplement Maps and Sets in JS
port 909500aa1d (r27605)

original commit message:
    Previously, the only optimized code path for Maps and Sets was for String keys.
    This was achieved through an implementation of various complex operations
    in Hydrogen. This approach was neither scalable nor forward-compatible.

    This patch adds the necessary intrinsics to implement Maps and Sets almost entirely
    in JS. The added intrinsics are:

      %_FixedArrayGet
      %_FixedArraySet
      %_TheHole
      %_JSCollectionGetTable
      %_StringGetRawHashField

    With these additions, as well as a few changes to what's exposed as runtime functions,
    most of the C++ code backing Maps and Sets is gone (including both runtime code in
    objects.cc and Crankshaft in hydrogen.cc).

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27681}
2015-04-09 02:24:13 +00:00
arv
e965a1f84a ES6: Number and Boolean prototype should be ordinary objects
BUG=v8:4001
LOG=N
R=adamk@chromium.org, rossberg@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

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

Cr-Commit-Position: refs/heads/master@{#27680}
2015-04-08 21:18:40 +00:00
balazs.kilvady
8c3af6ca03 MIPS: [turbofan] Add new Float32Abs and Float64Abs operators.
Port 9af9f1d026

Original commit message:
These operators compute the absolute floating point value of some
arbitrary input, and are implemented without any branches (i.e. using
vabs on arm, and andps/andpd on x86).

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27679}
2015-04-08 19:30:11 +00:00
dusan.milosavljevic
b881bf9ca8 MIPS: Fix in-object memory slack tracking bug.
TEST=
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27678}
2015-04-08 19:03:46 +00:00
caitpotter88
ab7d5f9620 [parser] report better errors for multiple ForBindings in ForIn/Of loops
Instead of "unexpected token" errors, report something meatier and more actionable.

BUG=
R=marja@chromium.org, arv@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27677}
2015-04-08 18:47:45 +00:00
arv
6244bbcd84 Ship ES6 computed property names
BUG=v8:3754
LOG=N
R=dslomov@chromium.org, rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27676}
2015-04-08 17:49:18 +00:00
mstarzinger
4b5bf1e33c Disable more failing tests after f3338dd3b0.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27675}
2015-04-08 17:28:58 +00:00
loislo
eb95406e2b CpuProfiler: public API for deopt info in cpu profiler.
BUG=chromium:452067
LOG=n

Committed: https://crrev.com/baf927ff5115ec62a6dad684b9232ed9d3960e3a
Cr-Commit-Position: refs/heads/master@{#27626}

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

Cr-Commit-Position: refs/heads/master@{#27674}
2015-04-08 16:13:31 +00:00
ulan
c4321962d9 Check mark bit of the found object in MarkCompactCollector::IsSlotInBlackObject.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27673}
2015-04-08 15:58:18 +00:00
svenpanne
d995d4bd4b [TurboFan] Fixed handling of CompareIC return type.
Although all this code might be moved around later, it's a good idea
to unhackify it now. :-)

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

Cr-Commit-Position: refs/heads/master@{#27672}
2015-04-08 15:57:14 +00:00
mvstanton
af293729ad Tests that carefully checks opt/deopt status shouldn't --always-opt.
If we optimize a function before gathering feedback it may be
peppered with soft deoptimizations. So it can't help but deoptimize.
A judicious reading of the code isn't enough to determine what the
optimization state should be in the face of such chaotic gyrations.

BUG=
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27671}
2015-04-08 15:56:01 +00:00
mstarzinger
515e483dd0 Disable more failing tests after f3338dd3b0.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27670}
2015-04-08 14:16:58 +00:00
titzer
29450e14cf [turbofan] Reduce JSLoadProperty and JSStoreProperty of strings to JSLoadNamed and JSStoreNamed.
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27669}
2015-04-08 13:28:06 +00:00
titzer
1b400a14cb Add more systematic tests for comparisons.
Because, well, JavaScript is tricky and compilers like folding.

R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27668}
2015-04-08 13:15:41 +00:00
titzer
a511c78999 Fix maybe_string_add for adds that have no type feedback where --always-opt is on.
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27667}
2015-04-08 13:14:30 +00:00
mstarzinger
322cfb3589 [turbofan] Add JSStackCheck into loop bodies.
This allows loopy TurboFan code to be interrupted by placing a stack
check (i.e. JSStackCheck node) into each loop. Note that we currently
limit this to non-asm.js code. Also note that stack checks are actually
placed after loop headers and not at back-branches, which allows us to
reuse existing BailoutIds from Crankshaft.

R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27666}
2015-04-08 12:55:02 +00:00
dusan.milosavljevic
87a27e42ea MIPS64: Unbreak cross build.
TEST=
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27665}
2015-04-08 12:53:52 +00:00
mvstanton
ab86a050ce Revert of VectorICs: Turn on vector ICs for LOAD and KEYED_LOAD cases. (patchset #1 id:1 of https://codereview.chromium.org/1070653002/)
Reason for revert:
ARM test failure, need to investigate.

Original issue's description:
> VectorICs: Turn on vector ICs for LOAD and KEYED_LOAD cases.
>
> R=verwaest@chromium.org
> BUG=
>
> Committed: https://crrev.com/2395eda3bb7aca938751938df76e01ac2b89b0a6
> Cr-Commit-Position: refs/heads/master@{#27657}

TBR=verwaest@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27664}
2015-04-08 12:52:49 +00:00
mstarzinger
d1bcfaf034 [ia32] Fix MacroAssembler::Move for int64 to float64 moves.
R=bmeurer@chromium.org
TEST=test262-es6/language/expressions/addition/S9.3_A4.1_T2

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

Cr-Commit-Position: refs/heads/master@{#27663}
2015-04-08 12:06:59 +00:00
Benedikt Meurer
9af9f1d026 [turbofan] Add new Float32Abs and Float64Abs operators.
These operators compute the absolute floating point value of some
arbitrary input, and are implemented without any branches (i.e. using
vabs on arm, and andps/andpd on x86).

R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27662}
2015-04-08 11:55:04 +00:00
mstarzinger
ed6733e8fd Disable more failing tests after f3338dd3b0.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27661}
2015-04-08 11:42:24 +00:00
marja
b3287e91cc [es6] Stage unicode escapes in strings, var names etc.
R=rossberg@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27660}
2015-04-08 11:16:05 +00:00
yangguo
3a4d073f1d Create result array of %DebugGetLoadedScripts outside the debug context.
R=jarin@chromium.org
BUG=chromium:474297
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27659}
2015-04-08 11:15:02 +00:00
titzer
2b59959c71 [turbofan] Match selects in control reducer (configurable).
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27658}
2015-04-08 11:13:49 +00:00
mvstanton
2395eda3bb VectorICs: Turn on vector ICs for LOAD and KEYED_LOAD cases.
R=verwaest@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27657}
2015-04-08 11:12:43 +00:00
yangguo
5db360dd56 Blacklist failing test on arm64 (issue 4016).
TBR=jkummerow@chromium.org
BUG=v8:4016
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27656}
2015-04-08 11:11:37 +00:00
mstarzinger
ad94e145c3 Disable more failing tests after f3338dd3b0.
TBR=yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27655}
2015-04-08 10:35:16 +00:00
yangguo
c4081d2503 Revert of Remove support for thread-based recompilation (patchset #1 id:1 of https://codereview.chromium.org/966653002/)
Reason for revert:
speculative revert due to gc-stress timeouts.

Original issue's description:
> Remove support for thread-based recompilation
>
> BUG=v8:3608
> R=yangguo@chromium.org
> LOG=y
>
> Committed: https://crrev.com/ed5db223a19dfe126af012e894582251aa3635d7
> Cr-Commit-Position: refs/heads/master@{#27619}

TBR=jochen@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
BUG=v8:3608
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27654}
2015-04-08 10:29:33 +00:00
machenbach
a54f22d418 Make test runner more chatty to avoid it getting killed by buildbot.
NOTRY=true
NOTREECHECKS=true

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

Cr-Commit-Position: refs/heads/master@{#27653}
2015-04-08 09:53:39 +00:00