dcarney [Thu, 9 Apr 2015 10:40:41 +0000 (03:40 -0700)]
[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}
Benedikt Meurer [Thu, 9 Apr 2015 10:29:15 +0000 (12:29 +0200)]
[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}
machenbach [Thu, 9 Apr 2015 09:55:59 +0000 (02:55 -0700)]
[test-runner] Pass slowest test durations to buildbot.
BUG=
Review URL: https://codereview.chromium.org/
1070753003
Cr-Commit-Position: refs/heads/master@{#27696}
v8-autoroll [Thu, 9 Apr 2015 09:51:40 +0000 (02:51 -0700)]
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}
chunyang.dai [Thu, 9 Apr 2015 09:31:53 +0000 (02:31 -0700)]
X87: Code cleanup in GenerateRecordCallTarget.
port
6a222b8ff033eb523149794d37c0d0f29bc8fc40 (r27630)
original commit message:
Code cleanup in GenerateRecordCallTarget
BUG=
Review URL: https://codereview.chromium.org/
1074683003
Cr-Commit-Position: refs/heads/master@{#27694}
chunyang.dai [Thu, 9 Apr 2015 09:30:47 +0000 (02:30 -0700)]
X87: Make --always-opt also optimize top-level code
port
2d281e71ac49058ef5696f4255ff1fa30796bc5e (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}
dcarney [Thu, 9 Apr 2015 09:15:28 +0000 (02:15 -0700)]
[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}
mvstanton [Thu, 9 Apr 2015 09:06:00 +0000 (02:06 -0700)]
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}
brucedawson [Thu, 9 Apr 2015 09:02:52 +0000 (02:02 -0700)]
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}
hpayer [Thu, 9 Apr 2015 08:55:37 +0000 (01:55 -0700)]
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}
yangguo [Thu, 9 Apr 2015 08:47:28 +0000 (01:47 -0700)]
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}
mstarzinger [Thu, 9 Apr 2015 08:21:38 +0000 (01:21 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1075813002
Cr-Commit-Position: refs/heads/master@{#27687}
bmeurer [Thu, 9 Apr 2015 07:41:06 +0000 (00:41 -0700)]
[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}
hablich [Thu, 9 Apr 2015 07:11:12 +0000 (00:11 -0700)]
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
909500aa1db9789b68e101045a6359a7fcb30e83 (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}
chunyang.dai [Thu, 9 Apr 2015 06:51:59 +0000 (23:51 -0700)]
X87: JSEntryTrampoline: check for stack space before pushing arguments
port
146598f44a1efd0f942745abfd6c08a073972c01 (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}
jing.bao [Thu, 9 Apr 2015 06:50:52 +0000 (23:50 -0700)]
[ia32] Introduce BMI instructions.
BUG=v8:4015
LOG=n
Review URL: https://codereview.chromium.org/
1069683002
Cr-Commit-Position: refs/heads/master@{#27683}
hablich [Thu, 9 Apr 2015 06:49:30 +0000 (23:49 -0700)]
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
909500aa1db9789b68e101045a6359a7fcb30e83 (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}
chunyang.dai [Thu, 9 Apr 2015 02:24:04 +0000 (19:24 -0700)]
X87: Reimplement Maps and Sets in JS
port
909500aa1db9789b68e101045a6359a7fcb30e83 (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}
arv [Wed, 8 Apr 2015 21:18:31 +0000 (14:18 -0700)]
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}
balazs.kilvady [Wed, 8 Apr 2015 19:30:04 +0000 (12:30 -0700)]
MIPS: [turbofan] Add new Float32Abs and Float64Abs operators.
Port
9af9f1d0262e2dab66c62331a03f6a76504f3866
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}
dusan.milosavljevic [Wed, 8 Apr 2015 19:03:39 +0000 (12:03 -0700)]
MIPS: Fix in-object memory slack tracking bug.
TEST=
BUG=
Review URL: https://codereview.chromium.org/
1067393003
Cr-Commit-Position: refs/heads/master@{#27678}
caitpotter88 [Wed, 8 Apr 2015 18:47:36 +0000 (11:47 -0700)]
[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}
arv [Wed, 8 Apr 2015 17:49:11 +0000 (10:49 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 17:28:52 +0000 (10:28 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1070843002
Cr-Commit-Position: refs/heads/master@{#27675}
loislo [Wed, 8 Apr 2015 16:13:24 +0000 (09:13 -0700)]
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}
ulan [Wed, 8 Apr 2015 15:58:14 +0000 (08:58 -0700)]
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}
svenpanne [Wed, 8 Apr 2015 15:57:06 +0000 (08:57 -0700)]
[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}
mvstanton [Wed, 8 Apr 2015 15:55:58 +0000 (08:55 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 14:16:50 +0000 (07:16 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1067413002
Cr-Commit-Position: refs/heads/master@{#27670}
titzer [Wed, 8 Apr 2015 13:28:00 +0000 (06:28 -0700)]
[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}
titzer [Wed, 8 Apr 2015 13:15:34 +0000 (06:15 -0700)]
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}
titzer [Wed, 8 Apr 2015 13:14:26 +0000 (06:14 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 12:54:56 +0000 (05:54 -0700)]
[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}
dusan.milosavljevic [Wed, 8 Apr 2015 12:53:49 +0000 (05:53 -0700)]
MIPS64: Unbreak cross build.
TEST=
BUG=
Review URL: https://codereview.chromium.org/
1066403002
Cr-Commit-Position: refs/heads/master@{#27665}
mvstanton [Wed, 8 Apr 2015 12:52:42 +0000 (05:52 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 12:06:52 +0000 (05:06 -0700)]
[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}
Benedikt Meurer [Wed, 8 Apr 2015 11:54:53 +0000 (13:54 +0200)]
[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}
mstarzinger [Wed, 8 Apr 2015 11:42:19 +0000 (04:42 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=machenbach@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1067303003
Cr-Commit-Position: refs/heads/master@{#27661}
marja [Wed, 8 Apr 2015 11:16:02 +0000 (04:16 -0700)]
[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}
yangguo [Wed, 8 Apr 2015 11:14:56 +0000 (04:14 -0700)]
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}
titzer [Wed, 8 Apr 2015 11:13:43 +0000 (04:13 -0700)]
[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}
mvstanton [Wed, 8 Apr 2015 11:12:37 +0000 (04:12 -0700)]
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}
yangguo [Wed, 8 Apr 2015 11:11:29 +0000 (04:11 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 10:35:09 +0000 (03:35 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1072433002
Cr-Commit-Position: refs/heads/master@{#27655}
yangguo [Wed, 8 Apr 2015 10:29:23 +0000 (03:29 -0700)]
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}
machenbach [Wed, 8 Apr 2015 09:53:35 +0000 (02:53 -0700)]
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}
mstarzinger [Wed, 8 Apr 2015 09:51:14 +0000 (02:51 -0700)]
Disable more failing tests after
f3338dd3b01c.
TBR=yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1067353002
Cr-Commit-Position: refs/heads/master@{#27652}
mstarzinger [Wed, 8 Apr 2015 09:24:55 +0000 (02:24 -0700)]
Disable failing test after
f3338dd3b01c.
R=yangguo@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1070663002
Cr-Commit-Position: refs/heads/master@{#27651}
svenpanne [Wed, 8 Apr 2015 09:10:10 +0000 (02:10 -0700)]
Make GetDebugContext a bit more robust.
Perhaps we should throw an exception and/or change our external API to
use a MaybeLocal, but that would be a bigger change. For now, we just
return undefined when something goes wrong with the DebugContext,
which is good enough to avoid crashing.
BUG=chromium:474538
LOG=y
Review URL: https://codereview.chromium.org/
1065213002
Cr-Commit-Position: refs/heads/master@{#27650}
mstarzinger [Wed, 8 Apr 2015 09:00:41 +0000 (02:00 -0700)]
Prevent overzealous bailout due to script context.
This is a follow-up to
2d281e71ac49 and prevents bailouts on empty
script contexts in Crankshaft, which don't need allocation. Only
non-empty script contexts should cause a bailout.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
1063373003
Cr-Commit-Position: refs/heads/master@{#27649}
jing.bao [Wed, 8 Apr 2015 07:15:51 +0000 (00:15 -0700)]
[x64] Introduce BMI instructions.
BUG=v8:4015
LOG=n
Review URL: https://codereview.chromium.org/
1040603002
Cr-Commit-Position: refs/heads/master@{#27648}
svenpanne [Wed, 8 Apr 2015 07:04:07 +0000 (00:04 -0700)]
Unbreak check-name-clashes.py after recent macro renamings.
This should have been part of https://codereview.chromium.org/
1056863002/. :-/
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
1070593002
Cr-Commit-Position: refs/heads/master@{#27647}
bmeurer [Wed, 8 Apr 2015 06:50:10 +0000 (23:50 -0700)]
[arm] Use position independent table switches.
Performance measurements show that the position independent code is
usually slightly faster than the position dependent code, and there
seems to be no noticable regression.
This also gets rid of a lot of support code that was only required to allow
embedding labels into the code stream. And it implies that neither the GC
nor the deserializer need to do anything for jump tables.
R=svenpanne@chromium.org
BUG=v8:3872
LOG=n
Review URL: https://codereview.chromium.org/
1069633002
Cr-Commit-Position: refs/heads/master@{#27646}
v8-autoroll [Wed, 8 Apr 2015 03:39:22 +0000 (20:39 -0700)]
Update V8 DEPS.
Rolling v8/tools/clang to
7ec0c52c7a66cd94c96b8eb37bacd26d152e40e6
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
1070533002
Cr-Commit-Position: refs/heads/master@{#27645}
balazs.kilvady [Tue, 7 Apr 2015 21:12:13 +0000 (14:12 -0700)]
MIPS64: Fix typo of 'Always update raw pointers when handling interrupts inside RegExp code.'
Port
c67cb287a901ddf03d4ae4dafcf431d09fd3e22c
BUG=
Review URL: https://codereview.chromium.org/
1061363003
Cr-Commit-Position: refs/heads/master@{#27644}
balazs.kilvady [Tue, 7 Apr 2015 21:11:05 +0000 (14:11 -0700)]
MIPS64: Make --always-opt also optimize top-level code.
Port
2d281e71ac49058ef5696f4255ff1fa30796bc5e
Original commit message:
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/
1066843005
Cr-Commit-Position: refs/heads/master@{#27643}
adamk [Tue, 7 Apr 2015 20:09:57 +0000 (13:09 -0700)]
Disable another debug test under turbo always-opt
TBR=mstarzinger@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1064133002
Cr-Commit-Position: refs/heads/master@{#27642}
adamk [Tue, 7 Apr 2015 19:52:17 +0000 (12:52 -0700)]
Use NumberIsNaN in collections.js and make it inlined
Review URL: https://codereview.chromium.org/
1067933002
Cr-Commit-Position: refs/heads/master@{#27641}
machenbach [Tue, 7 Apr 2015 19:42:32 +0000 (12:42 -0700)]
[release-tools] Only read from the chromium checkout in v8rel.
Don't create local branches or otherwise manipulate the
checkout. This reads refs from remote branches and
reads file contents using show. It is faster and requires
less bootstrapping and cleanup.
TBR=tandrii@chromium.org
NOTRY=true
Review URL: https://codereview.chromium.org/
1060013003
Cr-Commit-Position: refs/heads/master@{#27640}
caitpotter88 [Tue, 7 Apr 2015 19:28:33 +0000 (12:28 -0700)]
[es6] emit error when for-in loop declarations are initialized in strict mode
The ES6 grammar forbids the initialization of variable declarations in IterationStatements.
This CL will report `for (var x = y in z)` as a SyntaxError in strict mode (as done in JSC). It is possible that this could break sites in sloppy mode, and so that change can wait.
BUG=
R=
LOG=N
Review URL: https://codereview.chromium.org/
1033823002
Cr-Commit-Position: refs/heads/master@{#27639}
adamk [Tue, 7 Apr 2015 19:00:34 +0000 (12:00 -0700)]
Simplify collections.js now that it's wrapped in an IIFE
Also wrap templates.js in an IIFE to avoid unnecessary pollution
of the builtins object.
Review URL: https://codereview.chromium.org/
1067903004
Cr-Commit-Position: refs/heads/master@{#27638}
erikcorry [Tue, 7 Apr 2015 17:22:10 +0000 (10:22 -0700)]
More robust when allocation fails during compaction
R=ulan@chromium.org
BUG=chromium:473307
LOG=yes
Review URL: https://codereview.chromium.org/
1068833002
Cr-Commit-Position: refs/heads/master@{#27637}
mstarzinger [Tue, 7 Apr 2015 17:06:12 +0000 (10:06 -0700)]
Disabled failing tests after
2d281e71ac49.
R=titzer@chromium.org
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1065983002
Cr-Commit-Position: refs/heads/master@{#27636}
verwaest [Tue, 7 Apr 2015 16:11:20 +0000 (09:11 -0700)]
Simplify instanceof optimization; don't duplicate lookup
BUG=
Review URL: https://codereview.chromium.org/
1066873002
Cr-Commit-Position: refs/heads/master@{#27635}
balazs.kilvady [Tue, 7 Apr 2015 15:59:00 +0000 (08:59 -0700)]
MIPS: JSEntryTrampoline: check for stack space before pushing arguments
Port
146598f44a1efd0f942745abfd6c08a073972c01
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=chromium:469768
LOG=y
Review URL: https://codereview.chromium.org/
1066843003
Cr-Commit-Position: refs/heads/master@{#27634}
mstarzinger [Tue, 7 Apr 2015 15:44:16 +0000 (08:44 -0700)]
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.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
1053063003
Cr-Commit-Position: refs/heads/master@{#27633}
mvstanton [Tue, 7 Apr 2015 15:16:48 +0000 (08:16 -0700)]
MIPS: Fix compilation error.
BUG=
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
1068723006
Cr-Commit-Position: refs/heads/master@{#27632}
mvstanton [Tue, 7 Apr 2015 14:49:59 +0000 (07:49 -0700)]
Vector-ICs - speed towards the monomorphic exit as quickly as possible.
Thanks to some careful assumptions, we can examine the object found at
vector[slot] and trust it's a heap object where the second field is
either a map if it's a WeakCell, or definitely not a map if it's a
Symbol, String or FixedArray. Use this to save a memory read.
BUG=
Review URL: https://codereview.chromium.org/
1032163002
Cr-Commit-Position: refs/heads/master@{#27631}
mvstanton [Tue, 7 Apr 2015 13:39:32 +0000 (06:39 -0700)]
Code cleanup in GenerateRecordCallTarget.
BUG=
Review URL: https://codereview.chromium.org/
1057613003
Cr-Commit-Position: refs/heads/master@{#27630}
yangguo [Tue, 7 Apr 2015 13:38:22 +0000 (06:38 -0700)]
Add yangguo@chromium.org to src/snapshot/OWNERS and WATCHLISTS
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/
1060683003
Cr-Commit-Position: refs/heads/master@{#27629}
machenbach [Tue, 7 Apr 2015 13:30:49 +0000 (06:30 -0700)]
Revert of CpuProfiler: public API for deopt info in cpu profiler. (patchset #6 id:150001 of https://codereview.chromium.org/
1045753002/)
Reason for revert:
[Sheriff] Breaks compile here:
http://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%20nosnap%20-%20shared/builds/6115
Original issue's description:
> 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}
TBR=alph@chromium.org,jkummerow@chromium.org,svenpanne@chromium.org,yurys@chromium.org,loislo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:452067
Review URL: https://codereview.chromium.org/
1062053004
Cr-Commit-Position: refs/heads/master@{#27628}
jkummerow [Tue, 7 Apr 2015 12:47:39 +0000 (05:47 -0700)]
Fix missing SmiTag in failure path of r27614
BUG=chromium:469768
LOG=n
Review URL: https://codereview.chromium.org/
1061263003
Cr-Commit-Position: refs/heads/master@{#27627}
loislo [Tue, 7 Apr 2015 12:40:41 +0000 (05:40 -0700)]
CpuProfiler: public API for deopt info in cpu profiler.
BUG=chromium:452067
LOG=n
Review URL: https://codereview.chromium.org/
1045753002
Cr-Commit-Position: refs/heads/master@{#27626}
yangguo [Tue, 7 Apr 2015 12:21:34 +0000 (05:21 -0700)]
Debugger: remove debug command API.
Instead, please use v8::Isolate::RequestInterrupt to synchronize
to the main thread.
R=yurys@chromium.org
API=Removed v8::Debug::DebugBreakForCommand
LOG=Y
Review URL: https://codereview.chromium.org/
1036863002
Cr-Commit-Position: refs/heads/master@{#27625}
martyn.capewell [Tue, 7 Apr 2015 11:34:33 +0000 (04:34 -0700)]
ARM64: Support sign extend for add and subtract
Support sxtb and sxth extend operators on add and subtract, as we've
done for ubtx/h. This is similar to ARM support for sxtab/h.
BUG=
Review URL: https://codereview.chromium.org/
1064813003
Cr-Commit-Position: refs/heads/master@{#27624}
hpayer [Tue, 7 Apr 2015 11:31:57 +0000 (04:31 -0700)]
Reland "Merge old data and pointer space."
This reverts commit
cbfcee557503514bef20abdfc78ceb262c9c4d64.
BUG=
Review URL: https://codereview.chromium.org/
1051233002
Cr-Commit-Position: refs/heads/master@{#27623}
machenbach [Tue, 7 Apr 2015 11:28:18 +0000 (04:28 -0700)]
[release-tools] Fix v8rel in branch period.
In case the v8 revision in chromium was set to an older
revision that's not in the list of recent v8 releases, the
script will bail out too early. This changes iterates over
10 more revisions, which should cover all exceeding revisions
in branch period.
NOTRY=true
TBR=hablich@chromium.org
Review URL: https://codereview.chromium.org/
1067793002
Cr-Commit-Position: refs/heads/master@{#27622}
bmeurer [Tue, 7 Apr 2015 11:24:15 +0000 (04:24 -0700)]
[heap] Assert that code objects are always properly aligned.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
1059903004
Cr-Commit-Position: refs/heads/master@{#27621}
titzer [Tue, 7 Apr 2015 11:00:40 +0000 (04:00 -0700)]
[turbofan] Rework handling of loop exits in loop peeling.
This CL primarily makes the loop peeling algorithm more robust; it no longer damages the graph if the loops are improperly closed.
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1052753004
Cr-Commit-Position: refs/heads/master@{#27620}
Jochen Eisinger [Tue, 7 Apr 2015 10:59:43 +0000 (12:59 +0200)]
Remove support for thread-based recompilation
BUG=v8:3608
R=yangguo@chromium.org
LOG=y
Review URL: https://codereview.chromium.org/
966653002
Cr-Commit-Position: refs/heads/master@{#27619}
bmeurer [Tue, 7 Apr 2015 10:43:56 +0000 (03:43 -0700)]
[ia32] Match -0 - x with sign bit flip.
We can use xorps/xorpd on Intel CPUs to flip the sign bit. Ideally we'd
use an absolute 128-bit constant in the code object, as OCaml/GCC
does, however that requires 128-bit alignment for code objects,
which is not yet implemented. So for now we materialize the mask
inline.
As drive-by-fix, don't hardcode xmm0 as scratch double register.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
1064833002
Cr-Commit-Position: refs/heads/master@{#27618}
jkummerow [Tue, 7 Apr 2015 10:42:45 +0000 (03:42 -0700)]
Move prototype metadata from internal properties to prototype maps
The motivation is that we prefer to avoid creating internal properties, and we have a usable field on maps ("transitions", which is not used for prototype maps).
This CL also ensures the invariant that prototype maps are never shared, even if they are in dictionary mode.
Review URL: https://codereview.chromium.org/
1033653002
Cr-Commit-Position: refs/heads/master@{#27617}
jochen [Tue, 7 Apr 2015 09:45:58 +0000 (02:45 -0700)]
Revert of Turn off overapproximation of the weak closure again (patchset #1 id:1 of https://codereview.chromium.org/
1050443002/)
Reason for revert:
this indeed drops the max major gc time considerable, so turn it back on
Original issue's description:
> Turn off overapproximation of the weak closure again
>
> As long as we still have to process global handles, the impact is not
> yet worthwhile
>
> BUG=v8:3862
> R=hpayer@chromium.org
> LOG=y
>
> Committed: https://crrev.com/
294cdc6aecbd7f76be68217da4b3d35901ebce4b
> Cr-Commit-Position: refs/heads/master@{#27570}
TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3862
Review URL: https://codereview.chromium.org/
1068723003
Cr-Commit-Position: refs/heads/master@{#27616}
yangguo [Tue, 7 Apr 2015 09:44:47 +0000 (02:44 -0700)]
Always update raw pointers when handling interrupts inside RegExp code.
R=mstarzinger@chromium.org
BUG=chromium:469480
LOG=N
Review URL: https://codereview.chromium.org/
1034173002
Cr-Commit-Position: refs/heads/master@{#27615}
jkummerow [Tue, 7 Apr 2015 09:13:36 +0000 (02:13 -0700)]
JSEntryTrampoline: check for stack space before pushing arguments
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=chromium:469768
LOG=y
Review URL: https://codereview.chromium.org/
1056913003
Cr-Commit-Position: refs/heads/master@{#27614}
titzer [Tue, 7 Apr 2015 09:03:28 +0000 (02:03 -0700)]
[turbofan] Introduce BranchMatcher and DiamondMatcher helpers.
R=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1054963002
Cr-Commit-Position: refs/heads/master@{#27613}
baptiste.afsa [Tue, 7 Apr 2015 08:48:14 +0000 (01:48 -0700)]
[turbofan][arm64] Match add with shifted operand for mult by a power of 2 plus 1.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
1056543002
Cr-Commit-Position: refs/heads/master@{#27612}
bmeurer [Tue, 7 Apr 2015 07:34:55 +0000 (00:34 -0700)]
[x64] Match -0 - x with sign bit flip.
We can use xorps/xorpd on Intel CPUs to flip the sign bit. Ideally we'd
use a RIP-relative 128-bit constant in the code object, as OCaml/GCC
does, however that requires 128-bit alignment for code objects, which is
not yet implemented. So for now we materialize the mask inline.
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/
1046893002
Cr-Commit-Position: refs/heads/master@{#27611}
bmeurer [Tue, 7 Apr 2015 07:13:50 +0000 (00:13 -0700)]
[win32] Improve random mmap address generation on 64-bit.
Currently we only generate addresses in the range 2GiB to 4GiB, because
of a bug, when running in 64-bit mode. With this fix we now use the full
range 2GiB to 4096GiB.
BUG=v8:3997
LOG=n
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/
1051303003
Cr-Commit-Position: refs/heads/master@{#27610}
svenpanne [Tue, 7 Apr 2015 07:12:42 +0000 (00:12 -0700)]
Rearranged intrinsic declarations according to their implementations.
Now every FOR_EACH_INTRINSIC_FOO sub-macro corresponds to a
src/runtime/runtime-FOO.cc file, even the order of runtime functions
within that file has been preserved in the corresponding macro, thanks
to some eye-hurting for/clang/sed/grep madness. ;-)
BUG=v8:3947
LOG=n
Review URL: https://codereview.chromium.org/
1056863002
Cr-Commit-Position: refs/heads/master@{#27609}
michael_dawson [Tue, 7 Apr 2015 07:06:39 +0000 (00:06 -0700)]
PPC: exclude test for AIX due to issue 2857
cctest/test-log/EquivalenceOfLoggingAndTraversal fails on
AIX because it does not correctly handle the full 64 bit
address space supported by AIX. SKIP until the issue
is resolved.
modified: test/cctest/cctest.status
R=danno@chromium.org, svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1055183002
Cr-Commit-Position: refs/heads/master@{#27608}
v8-autoroll [Tue, 7 Apr 2015 03:52:31 +0000 (20:52 -0700)]
Update V8 DEPS.
Rolling v8/third_party/icu to
10834e84d250eb31a73496bfdb7923eaa43ead51
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
1055173004
Cr-Commit-Position: refs/heads/master@{#27607}
adamk [Tue, 7 Apr 2015 00:14:28 +0000 (17:14 -0700)]
Fix formatting in full-codegen-x64.cc
TBR=arv@chromium.org
Review URL: https://codereview.chromium.org/
1062853003
Cr-Commit-Position: refs/heads/master@{#27606}
adamk [Tue, 7 Apr 2015 00:11:48 +0000 (17:11 -0700)]
Reimplement Maps and Sets in JS
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).
Review URL: https://codereview.chromium.org/
947683002
Cr-Commit-Position: refs/heads/master@{#27605}
hablich [Mon, 6 Apr 2015 21:32:07 +0000 (14:32 -0700)]
Updated version to 4.4
BUG=
TBR=machenbach@chromium.org,vogelheim@chromium.org
NOTRY=true
Review URL: https://codereview.chromium.org/
1059433002
Cr-Commit-Position: refs/heads/master@{#27604}
mike [Mon, 6 Apr 2015 21:04:43 +0000 (14:04 -0700)]
Re-implement %Generator% intrinsic as an object
From ES6 25.2.3 ("Properties of the GeneratorFunction Prototype
Object"):
> The GeneratorFunction prototype object is an ordinary object. It is
> not a function object and does not have an [[ECMAScriptCode]] internal
> slot or any other of the internal slots listed in Table 27 or Table
> 56.
Introduce one assertion for the value's type and additional tests for its
properties. Remove an invalid assertion that fails as a result of this
fix.
BUG=v8:3991
LOG=N
Review URL: https://codereview.chromium.org/
1062633002
Cr-Commit-Position: refs/heads/master@{#27603}
hpayer [Mon, 6 Apr 2015 14:58:06 +0000 (07:58 -0700)]
Filter out remembered slots that are at the start of an object.
These slots are invalid and can result in a broken offset when slot index and start of object are equal and are at the beginning of a cell.
Moreover, make DCHECKs CHECKs to catch bugs in the wild.
BUG=chromium:473174
LOG=n
Review URL: https://codereview.chromium.org/
1051243004
Cr-Commit-Position: refs/heads/master@{#27602}
dusan.milosavljevic [Mon, 6 Apr 2015 11:54:38 +0000 (04:54 -0700)]
MIPS: Major fixes and clean-up in asm. for instruction encoding.
- Fixed single float register type instruction en[de]coding in assembler and disassembler.
- Added max and min instructions for r6 and corresponding tests.
- Fixed selection instruction for boundary cases in simulator.
- Update assembler tests to be more thorough wrt boundary cases.
TEST=cctest/test-assembler-mips64/MIPS17, MIPS18
cctest/test-disasm-mips64/Type1
cctest/test-assembler-mips/MIPS16, MIPS17
cctest/test-disasm-mips/Type1
BUG=
Review URL: https://codereview.chromium.org/
1057323002
Cr-Commit-Position: refs/heads/master@{#27601}
v8-autoroll [Sat, 4 Apr 2015 03:47:22 +0000 (20:47 -0700)]
Update V8 DEPS.
Rolling v8/third_party/icu to
e4c31439828d356525b71ef81a6d61ea50d7d673
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/
1058383002
Cr-Commit-Position: refs/heads/master@{#27600}
dusan.milosavljevic [Fri, 3 Apr 2015 18:02:17 +0000 (11:02 -0700)]
MIPS64: Improve deopt jump table code size.
The number of generated instructions per table entry is reduced from six to
two, or four in worst-case scenario.
TEST=
BUG=
Review URL: https://codereview.chromium.org/
1059213002
Cr-Commit-Position: refs/heads/master@{#27599}