yurys [Tue, 29 Sep 2015 08:18:57 +0000 (01:18 -0700)]
Tell MSAN that profiler doesn't expect sp to point at initialized memory
BUG=v8:4444,v8:4151
LOG=N
Review URL: https://codereview.chromium.org/
1371253002
Cr-Commit-Position: refs/heads/master@{#30996}
mstarzinger [Tue, 29 Sep 2015 08:08:14 +0000 (01:08 -0700)]
[heap] Cleanup string factory methods a bit.
This is mostly removing dead code and also dropping MUST_USE_RESULT
annotations from methods that cannot throw an exception anyways.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
1370153002
Cr-Commit-Position: refs/heads/master@{#30995}
jacob.bramley [Tue, 29 Sep 2015 07:48:43 +0000 (00:48 -0700)]
Fix Frame::AlignSavedCalleeRegisterSlots
The return value is expected to be the number of padding slots added to the frame. However, the original logic would return -1 if padding was required, so insufficient stack space would be reserved.
This function now returns either 0 or 1, as the existing calling code expects.
BUG=
Review URL: https://codereview.chromium.org/
1369303002
Cr-Commit-Position: refs/heads/master@{#30994}
bmeurer [Tue, 29 Sep 2015 07:41:03 +0000 (00:41 -0700)]
[es6] Introduce %ToInteger and %ToLength.
This adds ES6 compliant Object::ToInteger, Object::ToInt32,
Object::ToUint32 and Object::ToLength, and replaces the old
Execution wrappers of those abstract operations (which were
not using the correct ToPrimitive).
This also introduces proper %ToInteger and %ToLength runtime
entries, with a fast path %_ToInteger supported in fullcodegen
and Crankshaft (for now). Internal JavaScript code should use
TO_INTEGER and TO_LENGTH respectively.
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg
BUG=v8:4307
LOG=n
Review URL: https://codereview.chromium.org/
1378533002
Cr-Commit-Position: refs/heads/master@{#30993}
machenbach [Tue, 29 Sep 2015 04:53:06 +0000 (21:53 -0700)]
Revert of Clean up rewriter. (patchset #3 id:40001 of https://codereview.chromium.org/
1362333002/ )
Reason for revert:
[Sheriff] Seems to break layout tests:
http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/2073
https://storage.googleapis.com/chromium-layout-test-archives/V8-Blink_Linux_64/2073/layout-test-results/results.html
Please request rebaseline upstream first.
Original issue's description:
> Clean up rewriter.
>
> The main changes are:
> - Fix treatment of loops, which was incorrect and sometimes resulted in
> the wrong completion value.
> - Get rid of unnecessary variables.
>
> This is in preparation of implementing ES6 completion semantics.
>
> R=rossberg
> BUG=
>
> Committed: https://crrev.com/
b466dc14791844b7ae6d1e9ebd00a778965c206d
> Cr-Commit-Position: refs/heads/master@{#30981}
TBR=rossberg@chromium.org,neis@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/
1379513002
Cr-Commit-Position: refs/heads/master@{#30992}
bmeurer [Tue, 29 Sep 2015 04:39:51 +0000 (21:39 -0700)]
Revert of [heap] Remove retry space from AllocateRaw. (patchset #3 id:40001 of https://codereview.chromium.org/
1370123002/ )
Reason for revert:
Breaks arm64 nosnap simulator (bogus cctest?): https://chromegw.corp.google.com/i/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20nosnap%20-%20debug%20-%201/builds/2934/steps/Bisect%
202786ceec.Retry/logs/IncrementalWriteBarri..
Original issue's description:
> [heap] Remove retry space from AllocateRaw.
>
> BUG=
>
> Committed: https://crrev.com/
2786ceec1eb491494d24d29a59eefbe3b6704be2
> Cr-Commit-Position: refs/heads/master@{#30984}
TBR=mstarzinger@chromium.org,hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/
1379493003
Cr-Commit-Position: refs/heads/master@{#30991}
mtrofin [Tue, 29 Sep 2015 03:46:53 +0000 (20:46 -0700)]
[turbofan] Greedy: smarter last resort splitting.
When all heuristics fail, we run a "last resort" heuristic. Before, it was
splitting at the first found splittable position either before or after a
use position. That turns out to be too naive: it may split in loops, when
alternative split positions exist outside loops.
This change chooses a "before" use case location that is outside the
loop.
Review URL: https://codereview.chromium.org/
1372213005
Cr-Commit-Position: refs/heads/master@{#30990}
v8-autoroll [Tue, 29 Sep 2015 03:23:41 +0000 (20:23 -0700)]
Update V8 DEPS.
Rolling v8/buildtools to
e7111440c07a883b82ffbbe6d26c744dfc6c9673
TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
Review URL: https://codereview.chromium.org/
1374833002
Cr-Commit-Position: refs/heads/master@{#30989}
chunyang.dai [Tue, 29 Sep 2015 02:20:47 +0000 (19:20 -0700)]
X87: [es6] Fix invalid ToString in implementation of ToName.
port
09626525fea63396c8a200deb9081d6dd1034d57 (r30957).
original commit message:
BUG=
Review URL: https://codereview.chromium.org/
1370283003
Cr-Commit-Position: refs/heads/master@{#30988}
alph [Mon, 28 Sep 2015 19:34:08 +0000 (12:34 -0700)]
Move heap and CPU profilers into a dedicated directory.
Drive-by: remove unnecessary includes.
Review URL: https://codereview.chromium.org/
1356223004
Cr-Commit-Position: refs/heads/master@{#30987}
oth [Mon, 28 Sep 2015 19:14:16 +0000 (12:14 -0700)]
[Interpreter] Add tests for adding strings and heap number arithmetic.
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/
1374613002
Cr-Commit-Position: refs/heads/master@{#30986}
mstarzinger [Mon, 28 Sep 2015 18:08:17 +0000 (11:08 -0700)]
[heap] Move CALL_HEAP_FUNCTION macro into factory.cc file.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
1372063002
Cr-Commit-Position: refs/heads/master@{#30985}
hpayer [Mon, 28 Sep 2015 18:07:09 +0000 (11:07 -0700)]
[heap] Remove retry space from AllocateRaw.
BUG=
Review URL: https://codereview.chromium.org/
1370123002
Cr-Commit-Position: refs/heads/master@{#30984}
oth [Mon, 28 Sep 2015 18:05:56 +0000 (11:05 -0700)]
[Interpreter] Add interpreter support for compare ops and ToBoolean.
The comparison operators and ToBoolean are implemented by calling into
the runtime. There are new runtime methods are prefixed with Interpreter
to make use case clear.
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/
1369123002
Cr-Commit-Position: refs/heads/master@{#30983}
ishell [Mon, 28 Sep 2015 16:40:52 +0000 (09:40 -0700)]
Revert of Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. (patchset #3 id:80001 of https://codereview.chromium.org/
1361763004/ )
Reason for revert:
This CL breaks cross-compiling to arm.
Original issue's description:
> Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again.
>
> Without that, it has a few false positives about out-of-bounds array accesses.
> Also makes the clang static-analyzer happy.
>
> Original code review from Sven Panne:
> https://codereview.chromium.org/
790723002/
>
> Committed: https://crrev.com/
0b48b2a8ebfc791a36f4ec1f299f46db76265a3a
> Cr-Commit-Position: refs/heads/master@{#30977}
TBR=jochen@chromium.org,bmeurer@chromium.org,jkummerow@chromium.org,karl@skomski.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1370203002
Cr-Commit-Position: refs/heads/master@{#30982}
neis [Mon, 28 Sep 2015 15:09:42 +0000 (08:09 -0700)]
Clean up rewriter.
The main changes are:
- Fix treatment of loops, which was incorrect and sometimes resulted in
the wrong completion value.
- Get rid of unnecessary variables.
This is in preparation of implementing ES6 completion semantics.
R=rossberg
BUG=
Review URL: https://codereview.chromium.org/
1362333002
Cr-Commit-Position: refs/heads/master@{#30981}
ishell [Mon, 28 Sep 2015 15:04:11 +0000 (08:04 -0700)]
Add ishell@ and mvstanton@ to full codegen owners list.
NOTRY=true
Review URL: https://codereview.chromium.org/
1371913006
Cr-Commit-Position: refs/heads/master@{#30980}
caitpotter88 [Mon, 28 Sep 2015 14:51:42 +0000 (07:51 -0700)]
[test] Remove FAIL expectation for intl/collator/default-locale on Android and Mac
BUG=v8:2899
LOG=N
R=
Review URL: https://codereview.chromium.org/
1364583004
Cr-Commit-Position: refs/heads/master@{#30979}
ben [Mon, 28 Sep 2015 14:12:35 +0000 (07:12 -0700)]
Fix DCHECK in ScopeInfo::Print().
Review URL: https://codereview.chromium.org/
1369913002
Cr-Commit-Position: refs/heads/master@{#30978}
karl [Mon, 28 Sep 2015 14:02:50 +0000 (07:02 -0700)]
Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again.
Without that, it has a few false positives about out-of-bounds array accesses.
Also makes the clang static-analyzer happy.
Original code review from Sven Panne:
https://codereview.chromium.org/
790723002/
Review URL: https://codereview.chromium.org/
1361763004
Cr-Commit-Position: refs/heads/master@{#30977}
machenbach [Mon, 28 Sep 2015 13:59:38 +0000 (06:59 -0700)]
[test] Remove test262-es6.
This was copied into test262.
BUG=v8:4254
NOTRY=true
LOG=n
Review URL: https://codereview.chromium.org/
1368313002
Cr-Commit-Position: refs/heads/master@{#30976}
jkummerow [Mon, 28 Sep 2015 13:10:13 +0000 (06:10 -0700)]
objects-inl.h: Remove ACCESSORS_TO_SMI macro
Replacing it with SMI_ACCESSORS.
This change makes accesses to Smi fields in objects more regular (the
accessors now always consume/return an int rather than a Smi*), which
avoids a bunch of manual Smi::FromInt() and Smi::value() conversions,
and is a step on the way towards being able to generate objects-inl.h.
Review URL: https://codereview.chromium.org/
1371893002
Cr-Commit-Position: refs/heads/master@{#30975}
ishell [Mon, 28 Sep 2015 13:02:43 +0000 (06:02 -0700)]
Removing the Class/ObjectLiteral::LayoutFeedbackSlots().
Review URL: https://codereview.chromium.org/
1372003002
Cr-Commit-Position: refs/heads/master@{#30974}
mstarzinger [Mon, 28 Sep 2015 12:55:45 +0000 (05:55 -0700)]
[heap] Simplify CALL_HEAP_FUNCTION macro dance.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
1371943002
Cr-Commit-Position: refs/heads/master@{#30973}
andybons [Mon, 28 Sep 2015 12:40:25 +0000 (05:40 -0700)]
[Docs] Add wiki content to Markdown docs
NOTE: You will have to land this as I don’t have write perms to this repo.
BUG=none
R=hablich@chromium.org
Review URL: https://codereview.chromium.org/
1347153006
Cr-Commit-Position: refs/heads/master@{#30972}
ishell [Mon, 28 Sep 2015 11:41:40 +0000 (04:41 -0700)]
Refactored interface of FeedbackVectorSpec and friends.
This is a second step towards merging FeedbackVectorSlot and FeedbackVectorICSlot.
Review URL: https://codereview.chromium.org/
1376443002
Cr-Commit-Position: refs/heads/master@{#30971}
neis [Mon, 28 Sep 2015 11:16:55 +0000 (04:16 -0700)]
[es6] Ship rest parameters.
R=rossberg
BUG=
Review URL: https://codereview.chromium.org/
1371963002
Cr-Commit-Position: refs/heads/master@{#30970}
hpayer [Mon, 28 Sep 2015 09:55:35 +0000 (02:55 -0700)]
[heap] Reland Move large object space selection into AllocateRaw.
BUG=
Review URL: https://codereview.chromium.org/
1371033002
Cr-Commit-Position: refs/heads/master@{#30969}
bmeurer [Mon, 28 Sep 2015 09:42:09 +0000 (02:42 -0700)]
[bootstrapper] Fix raw pointer use during potential GC.
This should fix a weird random crash we keep seeing on Linux nosnap
bot with TurboFan enabled.
BUG=v8:4435,v8:4423
LOG=n
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
1374663002
Cr-Commit-Position: refs/heads/master@{#30968}
bmeurer [Mon, 28 Sep 2015 09:02:31 +0000 (02:02 -0700)]
[api] Make sure InterceptorInfo is always in a verifyable state.
This should fix the Threading1 flakiness that we see on the waterfall.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
1369993002
Cr-Commit-Position: refs/heads/master@{#30967}
ben [Mon, 28 Sep 2015 08:44:31 +0000 (01:44 -0700)]
Remove obsolete try/catch from ObjectIsPromise().
Review URL: https://codereview.chromium.org/
1367123003
Cr-Commit-Position: refs/heads/master@{#30966}
mlippautz [Mon, 28 Sep 2015 08:32:40 +0000 (01:32 -0700)]
[heap] Adjust number of parallel compaction tasks
This is a trivial spinoff of the more complicated CL splitting up memory:
https://codereview.chromium.org/
1365743003/
- Parallel compaction is still off.
- We now compute the number of parallel compaction tasks, depending on the
evacuation candidate list, the number of cores, and some hard limit.
BUG=chromium:524425
LOG=N
Review URL: https://codereview.chromium.org/
1371923002
Cr-Commit-Position: refs/heads/master@{#30965}
ishell [Mon, 28 Sep 2015 08:23:35 +0000 (01:23 -0700)]
Use FeedbackVectorSlotKind instead of Code::Kind for type feedback vector.
This is a first step towards merging FeedbackVectorSlot and FeedbackVectorICSlot.
Review URL: https://codereview.chromium.org/
1369973002
Cr-Commit-Position: refs/heads/master@{#30964}
mstarzinger [Mon, 28 Sep 2015 08:18:29 +0000 (01:18 -0700)]
[presubmit] Fix whitespace/semicolon linter violations.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
1365803004
Cr-Commit-Position: refs/heads/master@{#30963}
jarin [Mon, 28 Sep 2015 08:12:41 +0000 (01:12 -0700)]
[turbofan] Move node verification methods to the Verifier class.
Review URL: https://codereview.chromium.org/
1367423002
Cr-Commit-Position: refs/heads/master@{#30962}
mstarzinger [Mon, 28 Sep 2015 08:04:11 +0000 (01:04 -0700)]
[heap] No leakage of mark-compact.h outside of heap.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/
1366183003
Cr-Commit-Position: refs/heads/master@{#30961}
machenbach [Mon, 28 Sep 2015 07:03:44 +0000 (00:03 -0700)]
[test] Skip test on noi18n.
Fails since test262-es6 is tested without i18n support.
BUG=v8:4437
LOG=n
NOTRY=true
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
1368293002
Cr-Commit-Position: refs/heads/master@{#30960}
Michael Achenbach [Mon, 28 Sep 2015 06:58:49 +0000 (08:58 +0200)]
remove byte-accounting assert for crbug.com/536163
The change https://codereview.chromium.org/
1274453002 is causing a breakage
on the Chrome OS builds. It is not clear how to easily revert because there is
a following on dependent change (https://codereview.chromium.org/
1351983002) am
I am not too familiar with the revert process.
The simplest revert is to remove the DCHECK.
BUG=chromium:536163
LOG=n
NOTRY=true
R=machenbach@chromium.org, cmumford@chromium.org, hpayer@chromium.org
Review URL: https://codereview.chromium.org/
1372693002 .
Cr-Commit-Position: refs/heads/master@{#30959}
jarin [Mon, 28 Sep 2015 05:37:26 +0000 (22:37 -0700)]
[turbofan] In GraphReducer::Replace, check uses to not misuse the replacement.
Review URL: https://codereview.chromium.org/
1361893006
Cr-Commit-Position: refs/heads/master@{#30958}
bmeurer [Mon, 28 Sep 2015 05:33:55 +0000 (22:33 -0700)]
[es6] Fix invalid ToString in implementation of ToName.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
1365503005
Cr-Commit-Position: refs/heads/master@{#30957}
bmeurer [Mon, 28 Sep 2015 05:03:29 +0000 (22:03 -0700)]
[builtins] Fix ToString in Array.prototype.join.
The internal ConvertToString helper was using the wrong ToPrimitive,
actually the old ES5 like DefaultString, and it also prematurely
optimized for no real benefit.
BUG=v8:4307
LOG=n
Review URL: https://codereview.chromium.org/
1370943002
Cr-Commit-Position: refs/heads/master@{#30956}
bmeurer [Mon, 28 Sep 2015 05:01:10 +0000 (22:01 -0700)]
[crankshaft] Add support for %_ToString.
Also support %_ToString in Crankshaft utilizing the ToStringStub, which
is also used in TurboFan and fullcodegen. This is necessary to repair a
regression on Octane that was introduced when switching from the hand
crafted NonStringToString/ToString magic to %_ToString (which properly
supports @@toPrimitive).
BUG=chromium:535953,v8:4307
LOG=n
Review URL: https://codereview.chromium.org/
1373743002
Cr-Commit-Position: refs/heads/master@{#30955}
chunyang.dai [Mon, 28 Sep 2015 03:09:00 +0000 (20:09 -0700)]
X87: Full code shouldn't embed the type feedback vector.
port
c90c60ba2689fb524a1526503c9c87f534cf58fb (r30940)
original commit message:
Make sure to always reference it indirectly. This allows us to make the vector
native-context dependent should we wish.
BUG=
Review URL: https://codereview.chromium.org/
1369963002
Cr-Commit-Position: refs/heads/master@{#30954}
v8-autoroll [Sun, 27 Sep 2015 03:25:02 +0000 (20:25 -0700)]
Update V8 DEPS.
Rolling v8/buildtools to
8d89c1b15f80323b54b3305b2be7b26686fd5611
TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
Review URL: https://codereview.chromium.org/
1368213002
Cr-Commit-Position: refs/heads/master@{#30953}
machenbach [Sat, 26 Sep 2015 12:07:43 +0000 (05:07 -0700)]
[test] Skip test on noi18n.
Fails since test262-es6 is tested without i18n support.
BUG=v8:4437
LOG=n
NOTRY=true
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
1369113002
Cr-Commit-Position: refs/heads/master@{#30952}
v8-autoroll [Sat, 26 Sep 2015 03:24:58 +0000 (20:24 -0700)]
Update V8 DEPS.
Rolling v8/third_party/icu to
423fc7e1107fb08ccf007c4aeb76dcab8b2747c1
Rolling v8/tools/clang to
290301c180118e27755bfced176ff61bd0acb1b8
TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
Review URL: https://codereview.chromium.org/
1373683002
Cr-Commit-Position: refs/heads/master@{#30951}
vogelheim [Fri, 25 Sep 2015 17:22:05 +0000 (10:22 -0700)]
Revert of JSObject::GetEnumProperty cleanup (patchset #2 id:20001 of https://codereview.chromium.org/
1363293002/ )
Reason for revert:
Reverting, because of broken GC stress bots.
@cbruni: Sorry for the revert. I'm not entirely sure it's actually your CL; but policy is to revert speculatively if we can't determine an exact cause.
Original issue's description:
> JSObject::GetEnumProperty cleanup
>
> BUG=
>
> Committed: https://crrev.com/
a00d47c802f93cf9835eafce4c9da2dd10b44f6a
> Cr-Commit-Position: refs/heads/master@{#30946}
TBR=jkummerow@chromium.org,cbruni@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/
1371673004
Cr-Commit-Position: refs/heads/master@{#30950}
mlippautz [Fri, 25 Sep 2015 16:14:03 +0000 (09:14 -0700)]
[tools] Add capability of generating log2-based histograms to eval_gc_nvp.py
BUG=
Review URL: https://codereview.chromium.org/
1372623002
Cr-Commit-Position: refs/heads/master@{#30949}
machenbach [Fri, 25 Sep 2015 16:11:11 +0000 (09:11 -0700)]
Revert of [heap] Move large object space selection into AllocateRaw. (patchset #2 id:20001 of https://codereview.chromium.org/
1373523002/ )
Reason for revert:
Breaks mac asan:
http://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN/builds/2895
According to auto bisect
Original issue's description:
> [heap] Move large object space selection into AllocateRaw.
>
> BUG=
>
> Committed: https://crrev.com/
e4f7ebb000432cc2011ecaaa71a69e2e60f416f0
> Cr-Commit-Position: refs/heads/master@{#30938}
TBR=mlippautz@chromium.org,hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/
1368833004
Cr-Commit-Position: refs/heads/master@{#30948}
mlippautz [Fri, 25 Sep 2015 15:40:27 +0000 (08:40 -0700)]
Revert of "[heap] Add more tasks for parallel compaction" (patchset #4 id:100001 of https://codereview.chromium.org/
1365743003/ )
Reason for revert:
failing again: https://chromegw.corp.google.com/i/client.v8/builders/V8%20Mac/builds/4505/steps/Mozilla%20%28flakes%29/logs/regress-416628
Original issue's description:
> Reland of "[heap] Add more tasks for parallel compaction"
>
> - We now compute the number of parallel compaction tasks, depending on the
> evacuation candidate list, the number of cores, and some hard limit.
> - Free memory is moved over to compaction tasks (up to some limit)
> - Moving over memory is done by dividing the free list of a given space up among
> other free lists. Since this is potentially slow we limit the maximum amount
> of moved memory.
>
> This reverts commit
bfccd5187ceb21c99feea4538e08ca7aef48b65b.
>
> BUG=chromium:524425
> LOG=N
>
> Committed: https://crrev.com/
7e283d746a194ceaaca114e2ba17504653d6a109
> Cr-Commit-Position: refs/heads/master@{#30945}
TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:524425
Review URL: https://codereview.chromium.org/
1371653002
Cr-Commit-Position: refs/heads/master@{#30947}
cbruni [Fri, 25 Sep 2015 15:27:32 +0000 (08:27 -0700)]
JSObject::GetEnumProperty cleanup
BUG=
Review URL: https://codereview.chromium.org/
1363293002
Cr-Commit-Position: refs/heads/master@{#30946}
mlippautz [Fri, 25 Sep 2015 15:05:07 +0000 (08:05 -0700)]
Reland of "[heap] Add more tasks for parallel compaction"
- We now compute the number of parallel compaction tasks, depending on the
evacuation candidate list, the number of cores, and some hard limit.
- Free memory is moved over to compaction tasks (up to some limit)
- Moving over memory is done by dividing the free list of a given space up among
other free lists. Since this is potentially slow we limit the maximum amount
of moved memory.
This reverts commit
bfccd5187ceb21c99feea4538e08ca7aef48b65b.
BUG=chromium:524425
LOG=N
Review URL: https://codereview.chromium.org/
1365743003
Cr-Commit-Position: refs/heads/master@{#30945}
ulan [Fri, 25 Sep 2015 14:49:07 +0000 (07:49 -0700)]
Perform scavenge in idle tasks.
BUG=chromium:490559
LOG=NO
Review URL: https://codereview.chromium.org/
1352453004
Cr-Commit-Position: refs/heads/master@{#30944}
machenbach [Fri, 25 Sep 2015 14:36:58 +0000 (07:36 -0700)]
[swarming] Add isolate configs for d8 on linux.
BUG=chromium:535160
LOG=n
Review URL: https://codereview.chromium.org/
1361953003
Cr-Commit-Position: refs/heads/master@{#30943}
vogelheim [Fri, 25 Sep 2015 14:35:20 +0000 (07:35 -0700)]
Fix use of deprecated API.
R=jochen@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1366173002
Cr-Commit-Position: refs/heads/master@{#30942}
ben [Fri, 25 Sep 2015 13:57:31 +0000 (06:57 -0700)]
Remove unused imports from tools/js2c.py
Review URL: https://codereview.chromium.org/
1359033002
Cr-Commit-Position: refs/heads/master@{#30941}
mvstanton [Fri, 25 Sep 2015 13:56:24 +0000 (06:56 -0700)]
Full code shouldn't embed the type feedback vector.
Make sure to always reference it indirectly. This allows us to make the vector
native-context dependent should we wish.
R=ishell@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1364373003
Cr-Commit-Position: refs/heads/master@{#30940}
mstarzinger [Fri, 25 Sep 2015 13:55:11 +0000 (06:55 -0700)]
[heap] No leakage of gc-idle-time-handler.h outside of heap.
This prevents the internal gc-idle-time-handler.h to be usable outisde
of the "heap" directory. The logic inside that component is only useful
within the GC and is now properly encapsulated.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/
1368983002
Cr-Commit-Position: refs/heads/master@{#30939}
hpayer [Fri, 25 Sep 2015 13:54:01 +0000 (06:54 -0700)]
[heap] Move large object space selection into AllocateRaw.
BUG=
Review URL: https://codereview.chromium.org/
1373523002
Cr-Commit-Position: refs/heads/master@{#30938}
machenbach [Fri, 25 Sep 2015 13:51:33 +0000 (06:51 -0700)]
[test] Skip test262-es6 tests failing on mac.
Looks like we never ran test262-es6 on mac. After merging
into test262 we've got these failures. Skipping for now.
BUG=v8:4437
LOG=n
NOTRY=true
NOTREECHECKS=true
TBR=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/
1372603002
Cr-Commit-Position: refs/heads/master@{#30937}
machenbach [Fri, 25 Sep 2015 13:03:27 +0000 (06:03 -0700)]
[test] Copy test262-es6 into test262.
BUG=v8:4254
LOG=n
NOTRY=true
Review URL: https://codereview.chromium.org/
1365293002
Cr-Commit-Position: refs/heads/master@{#30936}
jkummerow [Fri, 25 Sep 2015 12:26:22 +0000 (05:26 -0700)]
[elements.cc] Clean up CopyDoubleToObjectElements
Review URL: https://codereview.chromium.org/
1372533002
Cr-Commit-Position: refs/heads/master@{#30935}
bmeurer [Fri, 25 Sep 2015 11:33:28 +0000 (04:33 -0700)]
[turbofan] Rename --context-specialization to --function-context-specialization.
This name makes it clear that the flag (also the variant in the Compiler)
is talking about specializing to the function context instead of i.e. the
native context.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/
1372513003
Cr-Commit-Position: refs/heads/master@{#30934}
mstarzinger [Fri, 25 Sep 2015 11:32:38 +0000 (04:32 -0700)]
[presubmit] Enable runtime/threadsafe_fn linter checking.
This enables linter checking for "runtime/threadsafe_fn" violations
during presubmit and instead marks the few known exceptions that we
allow explicitly.
R=jochen@chromium.org
Review URL: https://codereview.chromium.org/
1369673003
Cr-Commit-Position: refs/heads/master@{#30933}
paul.lind [Fri, 25 Sep 2015 11:31:27 +0000 (04:31 -0700)]
Fix a sign-compare error to make gcc 4.9.2 happy.
This is from
https://chromium.googlesource.com/v8/v8/+/
347fa90626a448e3535cf6aa100124dfd5b711ce
BUG=
Review URL: https://codereview.chromium.org/
1365113003
Cr-Commit-Position: refs/heads/master@{#30932}
machenbach [Fri, 25 Sep 2015 11:27:43 +0000 (04:27 -0700)]
Revert of [heap] Move large object space selection into AllocateRaw. (patchset #1 id:1 of https://codereview.chromium.org/
1360903004/ )
Reason for revert:
[Sheriff] Breaks:
http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug%20-%202/builds/2080
And maybe (not sure):
http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/1529
Original issue's description:
> [heap] Move large object space selection into AllocateRaw.
>
> BUG=
>
> Committed: https://crrev.com/
1403815bdbcbd3336b2d85291704640fada30ffe
> Cr-Commit-Position: refs/heads/master@{#30930}
TBR=mlippautz@chromium.org,hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review URL: https://codereview.chromium.org/
1368103002
Cr-Commit-Position: refs/heads/master@{#30931}
hpayer [Fri, 25 Sep 2015 10:41:02 +0000 (03:41 -0700)]
[heap] Move large object space selection into AllocateRaw.
BUG=
Review URL: https://codereview.chromium.org/
1360903004
Cr-Commit-Position: refs/heads/master@{#30930}
mstarzinger [Fri, 25 Sep 2015 09:29:27 +0000 (02:29 -0700)]
[turbofan] Remove obsolete method from RawMachineAssembler.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
1370663002
Cr-Commit-Position: refs/heads/master@{#30929}
mlippautz [Fri, 25 Sep 2015 09:27:23 +0000 (02:27 -0700)]
[heap] Fix PagedSpace::SizeOfObjects calling from within FreeList::Allocate
Not resetting the allocation area after freeing it potentially results in
negative SizeOfObjects() because the area is accounted for as allocated while it
has already been freed.
BUG=
Review URL: https://codereview.chromium.org/
1364303002
Cr-Commit-Position: refs/heads/master@{#30928}
jarin [Fri, 25 Sep 2015 08:42:51 +0000 (01:42 -0700)]
[turbofan] Check node input/use consistency for changed operators and new nodes.
Verifies consistency of node inputs and uses:
- node inputs should agree with the input count computed from the node's operator.
- effect inputs should have effect outputs (or be a sentinel).
- control inputs should have control outputs (or be a sentinel).
- frame state inputs should be frame states (or be a sentinel).
- if the node has control uses, it should produce control.
- if the node has effect uses, it should produce effect.
- if the node has frame state uses, it must be a frame state.
I also removed some tests, either because they did not seem to be useful (scheduler) or they tested dead functionality (diamond effect phi).
Review URL: https://codereview.chromium.org/
1368913002
Cr-Commit-Position: refs/heads/master@{#30927}
julien.gilli [Fri, 25 Sep 2015 04:59:20 +0000 (21:59 -0700)]
Update post-mortem metadata generation
mdb_v8, a post-mortem debugger for Node.js, now uses JSArrayBuffer's
backing_store property and JSArrayBufferView's byte_offset property to
get access to the content of Buffer instances in node (which are
Uint8Array instances). This change adds post-mortem metadata for these
two properties.
This change also fixes a typo in
inobject_properties_of_constructor_function_index_offset that was added
to gen-postmortem-metadata in a previous change. It should be named
inobject_properties_or_constructor_function_index instead.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/
1363403003
Cr-Commit-Position: refs/heads/master@{#30926}
bmeurer [Fri, 25 Sep 2015 04:04:28 +0000 (21:04 -0700)]
[es6] Remove left-overs from Function.prototype.toMethod.
The actual Function.prototype.toMethod was removed some time already,
but there were some stuff (esp. %ToMethod) left in the tree, including
tests for %ToMethod. This code (and esp. the tests) cause trouble in
the process of moving bound functions away from JSFunction; so since
the code is unused anyway, we can as well remove it.
The original removal of Function.prototype.toMethod was in February
2015 in
68e489758607bb7373409b49a0a7883407a322b3.
R=jarin@chromium.org
BUG=v8:3330
LOG=n
Review URL: https://codereview.chromium.org/
1366063002
Cr-Commit-Position: refs/heads/master@{#30925}
v8-autoroll [Fri, 25 Sep 2015 03:25:17 +0000 (20:25 -0700)]
Update V8 DEPS.
Rolling v8/tools/clang to
1f65dc9f9e1879a25d79a8bc46a12265532e4a0f
TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
Review URL: https://codereview.chromium.org/
1368903002
Cr-Commit-Position: refs/heads/master@{#30924}
chunyang.dai [Fri, 25 Sep 2015 03:00:27 +0000 (20:00 -0700)]
X87: [turbofan] Call ArgumentsAccessStub to materialize arguments.
port
9b12ec9ac2aff2978d05df775ce621ba4d90cbe8 (r30919)
original commit message:
This lowers JSCreateArgument nodes to call the ArgumentsAccessStub for
help with materializing arguments objects when possible. Along the way
this changes the calling convention of said stub to take parameters in
registers instead of on the stack.
R=weiliang.lin@intel.com
BUG=
Review URL: https://codereview.chromium.org/
1368873002
Cr-Commit-Position: refs/heads/master@{#30923}
stefan.penner [Thu, 24 Sep 2015 21:46:35 +0000 (14:46 -0700)]
Don’t smash globals used by the test helper itself.
Since https://codereview.chromium.org/
366103005 the promise tests null out
various globals, to ensure the promise implementation doesn’t itself rely
on functions patchable by monkeys.
Unfortunately, doing so breaks test assertion failures which rely on
those globals.
This isn’t the ideal solution, but does improve the current state.
R=littledan@chromium.org,domenic@chromium.org
LOG=N
BUG=
Review URL: https://codereview.chromium.org/
1370583002
Cr-Commit-Position: refs/heads/master@{#30922}
ofrobots [Thu, 24 Sep 2015 18:22:09 +0000 (11:22 -0700)]
[heap] refactor inline allocation step code
Once I improved byte accounting done for incremental mark in [1], there is some
code duplication that becomes apparent. This commit refactors the duplicated
code into a private method on NewSpace. This also makes it easy to add new
consumers of inline allocation steps in the future.
[1] https://codereview.chromium.org/
1274453002/
R=hpayer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/
1351983002
Cr-Commit-Position: refs/heads/master@{#30921}
mstarzinger [Thu, 24 Sep 2015 16:48:50 +0000 (09:48 -0700)]
[turbofan] Remove dead code from Diamond class.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/
1365963003
Cr-Commit-Position: refs/heads/master@{#30920}
mstarzinger [Thu, 24 Sep 2015 15:30:30 +0000 (08:30 -0700)]
[turbofan] Call ArgumentsAccessStub to materialize arguments.
This lowers JSCreateArgument nodes to call the ArgumentsAccessStub for
help with materializing arguments objects when possible. Along the way
this changes the calling convention of said stub to take parameters in
registers instead of on the stack.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/
1348773002
Cr-Commit-Position: refs/heads/master@{#30919}
oth [Thu, 24 Sep 2015 15:20:47 +0000 (08:20 -0700)]
[Interpreter] Basic flow control.
+ Add bytecodes for conditional and unconditional jumps.
+ Add bytecodes for test/compare operations.
+ Expose jumps in bytecode-array-builder and add BytecodeLabel class for
identifying jump targets.
+ Add support for if..then...else in the bytecode-generator.
+ Implement jump bytecodes in the interpreter. Test/compare operations
dependent on runtime call for comparisons.
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/
1343363002
Cr-Commit-Position: refs/heads/master@{#30918}
machenbach [Thu, 24 Sep 2015 14:51:31 +0000 (07:51 -0700)]
[test] Make fuzzer output the archive file name for easy upload.
NOTRY=true
Review URL: https://codereview.chromium.org/
1365083002
Cr-Commit-Position: refs/heads/master@{#30917}
mstarzinger [Thu, 24 Sep 2015 14:46:29 +0000 (07:46 -0700)]
[turbofan] Make Node::set_op safer via wrapper.
This introduces the NodeProperties::ChangeOp helper which guards node
operator changes so that additional checking can be done without any
additional dependencies being pulled into the Node class. For now only
the input count is checked, but additional checking might follow.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/
1366753003
Cr-Commit-Position: refs/heads/master@{#30916}
cbruni [Thu, 24 Sep 2015 14:09:41 +0000 (07:09 -0700)]
PrototypeInfo.validity_cell: adding comment
BUG=
Review URL: https://codereview.chromium.org/
1370443002
Cr-Commit-Position: refs/heads/master@{#30915}
danno [Thu, 24 Sep 2015 13:38:50 +0000 (06:38 -0700)]
Revert of Remove register index/code indirection (patchset #17 id:320001 of https://codereview.chromium.org/
1287383003/ )
Reason for revert:
Failures on greedy RegAlloc, Fuzzer
Original issue's description:
> Remove register index/code indirection
>
> Previous to this patch, both the lithium and TurboFan register
> allocators tracked allocated registers by "indices", rather than
> the register codes used elsewhere in the runtime. This patch
> ensures that codes are used everywhere, and in the process cleans
> up a bunch of redundant code and adds more structure to how the
> set of allocatable registers is defined.
>
> Some highlights of changes:
>
> * TurboFan's RegisterConfiguration class moved to V8's top level
> so that it can be shared with Crankshaft.
> * Various "ToAllocationIndex" and related methods removed.
> * Code that can be easily shared between Register classes on
> different platforms is now shared.
> * The list of allocatable registers on each platform is declared
> as a list rather than implicitly via the register index <->
> code mapping.
>
> Committed: https://crrev.com/
80bc6f6e11f79524e3f1ad05579583adfd5f18b2
> Cr-Commit-Position: refs/heads/master@{#30913}
TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/
1365073002
Cr-Commit-Position: refs/heads/master@{#30914}
danno [Thu, 24 Sep 2015 12:52:54 +0000 (05:52 -0700)]
Remove register index/code indirection
Previous to this patch, both the lithium and TurboFan register
allocators tracked allocated registers by "indices", rather than
the register codes used elsewhere in the runtime. This patch
ensures that codes are used everywhere, and in the process cleans
up a bunch of redundant code and adds more structure to how the
set of allocatable registers is defined.
Some highlights of changes:
* TurboFan's RegisterConfiguration class moved to V8's top level
so that it can be shared with Crankshaft.
* Various "ToAllocationIndex" and related methods removed.
* Code that can be easily shared between Register classes on
different platforms is now shared.
* The list of allocatable registers on each platform is declared
as a list rather than implicitly via the register index <->
code mapping.
Review URL: https://codereview.chromium.org/
1287383003
Cr-Commit-Position: refs/heads/master@{#30913}
titzer [Thu, 24 Sep 2015 12:51:30 +0000 (05:51 -0700)]
Refactor the StackFrameIterator::ComputeType() method to look up the code object (if any) before looking at the magic markers.
This will allow per-code-kind logic more easily in the future (e.g. for WASM).
BUG=
Review URL: https://codereview.chromium.org/
1350763004
Cr-Commit-Position: refs/heads/master@{#30912}
pierre.langlois [Thu, 24 Sep 2015 12:04:01 +0000 (05:04 -0700)]
[arm] Optimize vcmp when lhs operand is #0.0
This patch checks the type of the lhs operand of a floating point
comparison for ARM, and commutes the operands if it is #0.0. It allows
us to optimize a comparison with zero, as the vcmp instruction
accepts #0.0 as rhs operand.
Code before for "0.0 < 0.123":
------------------------------
movw ip, #29360
movt ip, #37224
movw r9, #31981
movt r9, #16319
vmov d0, ip, r9
mov ip, #0
vmov d1, ip, ip
vcmp.f64 d1, d0
vmrs APSR, FPSCR
bcc +12
Code after:
-----------
movw ip, #29360
movt ip, #37224
movw r9, #31981
movt r9, #16319
vmov d0, ip, r9
vcmp.f64 d0, #0.0
vmrs APSR, FPSCR
bgt +12
BUG=
Review URL: https://codereview.chromium.org/
1361913003
Cr-Commit-Position: refs/heads/master@{#30911}
rmcilroy [Thu, 24 Sep 2015 11:48:22 +0000 (04:48 -0700)]
[Interpreter] Add support for loading globals in the interpreter.
Adds LdaGlobal bytecode and augments BytecodeGenerator to load globals for
global variables and function calls.
Modified TestBytecodeGenerator to add the ability to specify that a bytecode
operand has an unknown value (used so we don't need to figure out the slot
index of a global). Also added a helper which checks equality of BytecodeArray
with the expected snipptets.
Modified TestInterpreter to allow it to take snippets of JS and have the
BytecodeGenerator generate the bytecode rather than having to build a
BytecodeArray manually. This is used to enable the global tests.
BUG=v8:4280
LOG=N
Review URL: https://codereview.chromium.org/
1361113002
Cr-Commit-Position: refs/heads/master@{#30910}
martyn.capewell [Thu, 24 Sep 2015 11:24:23 +0000 (04:24 -0700)]
[turbofan] Elide fp32 convert for const compares
Reduce operations of the form f64cmp(fp32to64(x), k) to f32cmp(x, k) when k
can be encoded as a 32-bit float.
Review URL: https://codereview.chromium.org/
1365623002
Cr-Commit-Position: refs/heads/master@{#30909}
chunyang.dai [Thu, 24 Sep 2015 10:46:05 +0000 (03:46 -0700)]
X87: [es6] Introduce spec compliant IsConstructor.
port
8fe3ac07014ce5891be0a1cbd8019e9f3b02ff0b (30902).
original commit message:
There was already a bit on the Map named "function with prototype",
which basically meant that the Map was a map for a JSFunction that could
be used as a constructor. Now this CL generalizes that bit to
IsConstructor, which says that whatever (Heap)Object you are looking at
can be used as a constructor (i.e. the bit is also set for bound
functions that can be used as constructors and proxies that have a
[[Construct]] internal method).
This way we have a single chokepoint for IsConstructor checking, which
allows us to get rid of the various ways in which we tried to guess
whether something could be used as a constructor or not.
Drive-by-fix: Renamed IsConstructor on FunctionKind to
IsClassConstructor to resolve the weird name clash, and the
IsClassConstructor name also matches the spec.
BUG=
Review URL: https://codereview.chromium.org/
1362313002
Cr-Commit-Position: refs/heads/master@{#30908}
chunyang.dai [Thu, 24 Sep 2015 10:37:28 +0000 (03:37 -0700)]
X87: [runtime] Remove weird pushing of something on StackOverflow.
port
556b522ac62414c87d05f5d6bab33f6b6cab9b13 (r30883)
original commit message:
We somehow try to push some stuff on the stack when we detect a stack
overflow, that we don't need. Even worse we might access outside the
valid stack bounds. Since we don't need this, it's gone.
BUG=
Review URL: https://codereview.chromium.org/
1367943002
Cr-Commit-Position: refs/heads/master@{#30907}
machenbach [Thu, 24 Sep 2015 09:42:19 +0000 (02:42 -0700)]
[test] Fetch mozilla test data from SVN.
NOTRY=true
Review URL: https://codereview.chromium.org/
1367933002
Cr-Commit-Position: refs/heads/master@{#30906}
pierre.langlois [Thu, 24 Sep 2015 09:27:20 +0000 (02:27 -0700)]
[arm64] Explicit commuted conditions in unittests
This patch explicitly names commuted conditions for floating point
comparisons, instead of relying on CommuteFlagsCondition. Otherwise, a
bug in this function would not be caught.
BUG=
Review URL: https://codereview.chromium.org/
1364773002
Cr-Commit-Position: refs/heads/master@{#30905}
chunyang.dai [Thu, 24 Sep 2015 08:58:19 +0000 (01:58 -0700)]
X87: [builtin] Refactor Invoke to deal with any kind of callable.
port
634d1d86d8e98584097c6cb548a68ecf705c44f7 (r30874).
original commit message:
Now both Execution::Call and Execution::New can deal with any
kind of target and will raise a proper exception if the target is not
callable (which is not yet spec compliant for New, as we would
have to check IsConstructor instead, which we don't have yet).
Now we no longer need to do any of these weird call/construct
delegate gymnastics in C++, and we finally have a single true
bottleneck for Call/Construct abstract operations in the code
base, with only a few special handlings left in the compilers to
optimize the JSFunction case.
BUG=
Review URL: https://codereview.chromium.org/
1362293002
Cr-Commit-Position: refs/heads/master@{#30904}
chunyang.dai [Thu, 24 Sep 2015 08:53:19 +0000 (01:53 -0700)]
X87: [ic] Introduce BOOLEAN state for CompareIC.
port
10c5f2e85ef92b7ca002ef95e406d5dc4f0c410b
original commit message:
Slow path for relational comparison of boolean primitive values
now goes through the runtime, which made the slow path even
slower than it already was. So in order to repair the regression,
we just track boolean feedback for comparisons and use that
to generate decent code in Crankshaft (not the best possible
code, but good enough for Crankshaft; TurboFan will be able
to do better on that).
BUG=
Review URL: https://codereview.chromium.org/
1367523005
Cr-Commit-Position: refs/heads/master@{#30903}
bmeurer [Thu, 24 Sep 2015 06:50:01 +0000 (23:50 -0700)]
[es6] Introduce spec compliant IsConstructor.
There was already a bit on the Map named "function with prototype",
which basically meant that the Map was a map for a JSFunction that could
be used as a constructor. Now this CL generalizes that bit to
IsConstructor, which says that whatever (Heap)Object you are looking at
can be used as a constructor (i.e. the bit is also set for bound
functions that can be used as constructors and proxies that have a
[[Construct]] internal method).
This way we have a single chokepoint for IsConstructor checking, which
allows us to get rid of the various ways in which we tried to guess
whether something could be used as a constructor or not.
Drive-by-fix: Renamed IsConstructor on FunctionKind to
IsClassConstructor to resolve the weird name clash, and the
IsClassConstructor name also matches the spec.
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_layout_dbg,v8_linux_nosnap_dbg
R=jarin@chromium.org, rossberg@chromium.org
BUG=v8:4413, v8:4430
LOG=n
Committed: https://crrev.com/
8de4d9351df4cf66c8a128d561a6e331d196be54
Cr-Commit-Position: refs/heads/master@{#30900}
Review URL: https://codereview.chromium.org/
1358423002
Cr-Commit-Position: refs/heads/master@{#30902}
bmeurer [Thu, 24 Sep 2015 05:26:44 +0000 (22:26 -0700)]
Revert of [es6] Introduce spec compliant IsConstructor. (patchset #2 id:20001 of https://codereview.chromium.org/
1358423002/ )
Reason for revert:
Failed on Fuzzer and MIPS bot.
Original issue's description:
> [es6] Introduce spec compliant IsConstructor.
>
> There was already a bit on the Map named "function with prototype",
> which basically meant that the Map was a map for a JSFunction that could
> be used as a constructor. Now this CL generalizes that bit to
> IsConstructor, which says that whatever (Heap)Object you are looking at
> can be used as a constructor (i.e. the bit is also set for bound
> functions that can be used as constructors and proxies that have a
> [[Construct]] internal method).
>
> This way we have a single chokepoint for IsConstructor checking, which
> allows us to get rid of the various ways in which we tried to guess
> whether something could be used as a constructor or not.
>
> Drive-by-fix: Renamed IsConstructor on FunctionKind to
> IsClassConstructor to resolve the weird name clash, and the
> IsClassConstructor name also matches the spec.
>
> R=jarin@chromium.org, rossberg@chromium.org
> BUG=v8:4430
> LOG=n
>
> Committed: https://crrev.com/
8de4d9351df4cf66c8a128d561a6e331d196be54
> Cr-Commit-Position: refs/heads/master@{#30900}
TBR=jarin@chromium.org,rossberg@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4430
Review URL: https://codereview.chromium.org/
1360403002
Cr-Commit-Position: refs/heads/master@{#30901}
bmeurer [Thu, 24 Sep 2015 04:00:25 +0000 (21:00 -0700)]
[es6] Introduce spec compliant IsConstructor.
There was already a bit on the Map named "function with prototype",
which basically meant that the Map was a map for a JSFunction that could
be used as a constructor. Now this CL generalizes that bit to
IsConstructor, which says that whatever (Heap)Object you are looking at
can be used as a constructor (i.e. the bit is also set for bound
functions that can be used as constructors and proxies that have a
[[Construct]] internal method).
This way we have a single chokepoint for IsConstructor checking, which
allows us to get rid of the various ways in which we tried to guess
whether something could be used as a constructor or not.
Drive-by-fix: Renamed IsConstructor on FunctionKind to
IsClassConstructor to resolve the weird name clash, and the
IsClassConstructor name also matches the spec.
R=jarin@chromium.org, rossberg@chromium.org
BUG=v8:4430
LOG=n
Review URL: https://codereview.chromium.org/
1358423002
Cr-Commit-Position: refs/heads/master@{#30900}
chunyang.dai [Thu, 24 Sep 2015 03:51:55 +0000 (20:51 -0700)]
X87: [builtins] Add support for NewTarget to Execution::New.
port
1dfac69f1fb5ad8e2db2d5be591c094def55d451 (r30857).
original commit message:
Introduce new builtins Construct and ConstructFunction (in line
with the Call and CallFunction builtins that we already have) as
proper bottleneck for Construct and [[Construct]] on JSFunctions.
Use these builtins to support passing NewTarget from C++ to
JavaScript land.
Long-term we want the CallConstructStub to be used for
gathering feedback on entry to construction chain (i.e. the
initial new Foo), and use the Construct builtins to do the
actual work inside the construction chain (i.e. calling into
super and stuff).
BUG=
Review URL: https://codereview.chromium.org/
1362573002
Cr-Commit-Position: refs/heads/master@{#30899}
chunyang.dai [Thu, 24 Sep 2015 03:43:42 +0000 (20:43 -0700)]
X87: [turbofan] Add support for reinterpreting integers as floating point and vice versa.
port
c610a22231212b12055c294f55b8f3942127580b (r30849).
original commit message:
BUG=
Review URL: https://codereview.chromium.org/
1362783003
Cr-Commit-Position: refs/heads/master@{#30898}
chunyang.dai [Thu, 24 Sep 2015 03:34:45 +0000 (20:34 -0700)]
X87: [ic] Also collect known map for relational comparison.
port
e56f265f6d41fadbcea2be65d9b573bad8b4709d (r30852).
original commit message:
Previously we only collected the known map for equality comparisons. But
if we also collect it for relational comparisons, we can inline a fast
path of ToPrimitive on the objects, which is especially interesting
since both sides have the same map.
For now we only inline a very limited subset of ToPrimitive in
Crankshaft, which is when the receiver map (and its prototype chain)
doesn't have @@toPrimitive, and both valueOf and toString are the
default versions on the %ObjectPrototype%. In this case the relational
comparison would reduce to a string comparison of "[object CLASS]" with
itself and so we can reduce that to a boolean constant plus map checks
on both left and right hand side, plus code dependencies on the
prototype chain. This repairs the regression on box2d.
BUG=
Review URL: https://codereview.chromium.org/
1342243005
Cr-Commit-Position: refs/heads/master@{#30897}