Commit Graph

355 Commits

Author SHA1 Message Date
svenpanne
6e4e43b652 Massage the CodeStub class hierarchy a bit.
Several tiny changes for the upcoming TurboFan-genrated handlers/stubs:

   * Relaxed the type of code_stub().

   * Made GetCodeKind() public, it effectly was like this, anyway.

   * Const-corrected GetStubType().

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

Cr-Commit-Position: refs/heads/master@{#26542}
2015-02-10 11:46:04 +00:00
loislo
2491a639bf Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

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

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

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

Cr-Commit-Position: refs/heads/master@{#26463}
2015-02-05 14:51:58 +00:00
bmeurer
368a503cc1 Revert of Externalize deoptimization reasons. (patchset #7 id:120001 of https://codereview.chromium.org/874323003/)
Reason for revert:
This CL breaks RelocInfo::INTERNAL_REFERENCE (and maybe others that come after DEOPT_REASON), which is currently (mostly) unused on tip-of-tree, but will be used for jump tables soon(ish) and should therefore work. It seems to be a problem with implicitly assumptions about the number of reloc info modes. Needs further investigation.

Original issue's description:
> Externalize deoptimization reasons.
>
> 1) The hardcoded strings were converted into DeoptReason enum.
>
> 2) Deopt comment were converted into a pair location and deopt reason entries so
> the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.
>
> 3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.
>
> BUG=452067
> LOG=n
>
> Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
> Cr-Commit-Position: refs/heads/master@{#26434}
>
> Committed: https://crrev.com/ec42e002da03adb2db968dd5b7453341ddc59a5c
> Cr-Commit-Position: refs/heads/master@{#26448}

TBR=alph@chromium.org,mstarzinger@chromium.org,svenpanne@chromium.org,yurys@chromium.org,loislo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=452067

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

Cr-Commit-Position: refs/heads/master@{#26457}
2015-02-05 12:03:26 +00:00
Benedikt Meurer
634b0f20f4 Remove the obsolete OverwriteMode optimization.
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26454}
2015-02-05 10:39:28 +00:00
loislo
ec42e002da Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

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

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

Cr-Commit-Position: refs/heads/master@{#26448}
2015-02-05 06:25:18 +00:00
loislo
bfc5d83bd0 Revert of Externalize deoptimization reasons. (patchset #6 id:100001 of https://codereview.chromium.org/874323003/)
Reason for revert:
it broke the build

Original issue's description:
> Externalize deoptimization reasons.
>
> 1) The hardcoded strings were converted into DeoptReason enum.
>
> 2) Deopt comment were converted into a pair location and deopt reason entries so
> the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.
>
> 3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.
>
> BUG=452067
> LOG=n
>
> Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
> Cr-Commit-Position: refs/heads/master@{#26434}

TBR=alph@chromium.org,mstarzinger@chromium.org,svenpanne@chromium.org,yurys@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=452067

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

Cr-Commit-Position: refs/heads/master@{#26435}
2015-02-04 16:48:34 +00:00
loislo
c49820e45b Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#26434}
2015-02-04 16:35:30 +00:00
mvstanton
6fc97a1965 Retry "Use a WeakCell in the CallIC type vector."
The first try failed because I needed to make a better distinction
between clearing ICs according to policy at GC time or unconditional
clearing (say, via %ClearFunctionTypeFeedback).

It was also blocked by an issue in super constructor calls.
This fix (https://codereview.chromium.org/892113002/) needs to land
before checking in this CL.

R=ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26420}
2015-02-04 09:46:22 +00:00
marja
c7851da4ae Introduce LanguageMode, drop StrictMode.
This enables adding more language modes in the future.

For maximum flexibility, LanguageMode is a bitmask, so we're not restricted to
use a sequence of language modes which are progressively stricter, but we can
express the language mode as combination of features.

For now, LanguageMode can only be "sloppy" or "strict", and there are
STATIC_ASSERTS in places which need to change when more modes are added.

LanguageMode is a bit like the old LanguageMode when "extended" mode was still
around (see https://codereview.chromium.org/8417035 and
https://codereview.chromium.org/181543002 ) except that it's transmitted through
all the layers (there's no StrictModeFlag).

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26419}
2015-02-04 09:34:26 +00:00
ulan
edb70555ff Use weak cell to embed property cell in StoreGlobal.
BUG=v8:3629
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26396}
2015-02-03 11:27:01 +00:00
ulan
34b72eca35 Fetch global object from jsproxy prototype instead of embedding it in StoreGlobal.
BUG=v8:3629
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26385}
2015-02-02 17:56:49 +00:00
dcarney
74c00e93c5 update vector ics to handle megamorphic keyed loads
R=mvstanton@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26352}
2015-01-30 12:41:08 +00:00
Dan Carney
75c1c0df50 fix gcc after r26345
BUG=
R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26349}
2015-01-30 10:12:24 +00:00
dcarney
491eb81780 Add MEGAMORPHIC state support for KeyedLoadIC
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26345}
2015-01-30 09:17:16 +00:00
machenbach
24bfa90b31 Revert of Use a WeakCell in the CallIC type vector. (patchset #4 id:80001 of https://codereview.chromium.org/881433002/)
Reason for revert:
Breaks a regression test on linux isloates, and linux with gcc 4.8.

Original issue's description:
> Use a WeakCell in the CallIC type vector.
>
> This allows us to clear the IC on a more sedate schedule, just
> like Load and Store ICs.
>
> R=ulan@chromium.org
> BUG=
>
> Committed: https://crrev.com/bcc79d33ca6d97d9ecfcfcf110a6ea84a0225389
> Cr-Commit-Position: refs/heads/master@{#26332}

TBR=ulan@chromium.org,mvstanton@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26334}
2015-01-29 18:01:23 +00:00
mvstanton
bcc79d33ca Use a WeakCell in the CallIC type vector.
This allows us to clear the IC on a more sedate schedule, just
like Load and Store ICs.

R=ulan@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26332}
2015-01-29 17:36:51 +00:00
mostynb
cc6c373e2a convert compile-time checkable DCHECKs to STATIC_ASSERTs
Review URL: https://codereview.chromium.org/768683006

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

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26076}
2015-01-15 12:52:47 +00:00
mvstanton
ad033893d6 Vector-based ICs also need to hold maps weakly.
Regular ICs in MONOMORPHIC and POLYMORPHIC state now hold onto maps with
WeakCells. Vector-based ICs should do the same.

R=ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25907}
2014-12-19 16:53:49 +00:00
ulan
31de02151b Use weak cell to embed map in CompareNil IC.
BUG=v8:3629
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25905}
2014-12-19 14:51:25 +00:00
adamk
4fb4d75db6 Use C++11 nullptr in Hydrogen to replace static_cast<HValue*>(NULL)
Review URL: https://codereview.chromium.org/805523002

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

BUG=
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25800}
2014-12-12 13:56:35 +00:00
svenpanne
7c42ae3e47 Fixed an ordering issue found by UBSan_vptr.
We managed to access the scope_ member of CompilationInfo before its
containing object was actually constructed.

Rule of thumb: When constructing an object, never ever pass around
pointers to members which come later in the member initializer list,
you simply can't see locally if this might cause trouble or not.

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

Cr-Commit-Position: refs/heads/master@{#25796}
2014-12-12 12:36:15 +00:00
yangguo
33853f73a7 Partially revert "Optimize function across closures."
BUG=chromium:434447

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

Cr-Commit-Position: refs/heads/master@{#25500}
2014-11-25 13:22:04 +00:00
Michael Stanton
cfa1f94781 Revert "Re-land r25392 Use a stub in crankshaft for grow store arrays."
Due to performance issue.
TBR=danno@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25421}
2014-11-19 14:08:43 +00:00
Michael Stanton
47f55baeaf Re-land r25392 Use a stub in crankshaft for grow store arrays.
Code was vulnerable to different evaluation order in Clang.

R=danno@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25397}
2014-11-18 14:31:00 +00:00
Michael Stanton
77ee440af1 Revert "Use a stub in crankshaft for grow store arrays."
This reverts commit d40204f84c.

TBR=danno@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25393}
2014-11-18 13:08:07 +00:00
Michael Stanton
d40204f84c Use a stub in crankshaft for grow store arrays.
We were deopting without learning anything.

BUG=v8:3417
LOG=N
R=danno@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25392}
2014-11-18 12:32:24 +00:00
yangguo
6714365a30 Reland "Optimize function across closures." (again).
Review URL: https://codereview.chromium.org/707463002

Cr-Commit-Position: refs/heads/master@{#25367}
2014-11-17 08:43:00 +00:00
dslomov@chromium.org
eacdfa0b7a Various clean-ups after top-level lexical declarations are done.
1. Global{Context,Scope}=>Script{Context,Scope}
2. Enable fixed tests
3. Update comments

R=rossberg@chromium.org
BUG=v8:2198
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25291}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-12 11:35:18 +00:00
dslomov@chromium.org
480fbfeb2a harmony-scoping: Implement StoreIC handler for stores to global contexts.
R=ishell@chromium.org, adamk@chromium.org, rossberg@chromium.org, verwaest@chromium.org
BUG=v8:2198
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25264}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 15:16:20 +00:00
dslomov@chromium.org
e4d1839612 harmony-scoping: Implement LoadIC handler for loads from global contexts.
R=ishell@chromium.org, adamk@chromium.org, rossberg@chromium.org, verwaest@chromium.org
BUG=v8:2198
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25259}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25259 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 11:16:43 +00:00
ishell@chromium.org
c5a492961f Reland "In-object double fields unboxing (for 64-bit only)."
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25258}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-11 10:25:46 +00:00
verwaest@chromium.org
2d9079ca1d Revert "In-object double fields unboxing (for 64-bit only)."
Revert "Fixes for Windows and Mac builds after r25250."
TBR=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25252}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 17:44:51 +00:00
ishell@chromium.org
f133ac501b In-object double fields unboxing (for 64-bit only).
This CL introduces LayoutDescriptor which is responsible for tracking which in-object fields are tagged and which are not.
LayoutDescriptor field added to Map. Currently unboxing is disabled.

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

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

Cr-Commit-Position: refs/heads/master@{#25250}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25250 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 16:35:22 +00:00
bmeurer@chromium.org
9b72f14ced Turn ToNumberStub into a PlatformCodeStub again.
The HydrogenCodeStub is too expensive and there's no easy way to reduce
this cost, so turning it into a PlatformCodeStub solves that problem
until we can use TurboFan for code stubs.

TEST=mjsunit
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25187}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 12:02:16 +00:00
yangguo@chromium.org
6de28b2be1 Revert "Reland "Optimize function across closures.""
This reverts commit r25142.

TBR=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25145}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 11:37:42 +00:00
yangguo@chromium.org
1cdf4e9308 Reland "Optimize function across closures."
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25142}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 11:12:41 +00:00
bmeurer@chromium.org
3897182246 [turbofan] Add AllocateHeapNumberStub to avoid runtime call.
TEST=unittests
R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25107}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 12:58:49 +00:00
yangguo@chromium.org
c66a3f95ae Revert "Optimize function across closures."
This reverts r25102.

TBR=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25104}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 11:40:45 +00:00
yangguo@chromium.org
1d66934565 Optimize function across closures.
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25102}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25102 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 11:06:44 +00:00
dcarney@chromium.org
b26632f655 Let FastCloneShallowObjectStub work with empty literal objects.
R=verwaest@chromium.org

LOG=N

BUG=417290

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

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

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

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

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

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 07:04:28 +00:00
ishell@chromium.org
85d7140de0 Hydrogenize (and share) part of StoreTransition handler as a StoreTransitionStub and StoreField handler simplification.
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 14:54:14 +00:00
bmeurer@chromium.org
3eebdc3264 Replace OStream with std::ostream.
Review URL: https://codereview.chromium.org/618643002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 10:29:32 +00:00
ishell@chromium.org
171e62e589 ExtendStorageStub added, it is aimed for extending objects backing store when it runs out of space.
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24286 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 13:11:27 +00:00
yangguo@chromium.org
43538e57a4 Refactor bailout reasons and disable optimization in more cases.
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 07:08:27 +00:00
mvstanton@chromium.org
6bb1340515 Make KeyedLoads from a sloppy arguments array use a handler.
Before, a custom stub was installed.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 13:23:27 +00:00
mvstanton@chromium.org
a4176d2052 Removing ic.h from code-stubs.h
CodeStubs use state types defined in ic.h, but this has the unfortunate effect of spreading ic.h all over the place. Instead, define these shared state types in ic-public.h and allow ic.h to concern itself with internal state change of the ICs.

More work could/should be done here, but this is a first step.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23977 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 12:51:33 +00:00
arv@chromium.org
45d8e74cd6 ES6: Add support for method shorthand in object literals
This is governed by the harmony-object-literals flag.

BUG=v8:3516
LOG=Y
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 16:39:42 +00:00
yangguo@chromium.org
9da1d7dc15 Get CallInterfaceDescriptor directly from CodeStub.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 15:18:54 +00:00
yangguo@chromium.org
014c0fe278 Initialize CodeStubInterfaceDescriptor in the constructor.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 13:27:56 +00:00
mvstanton@chromium.org
6e1ebdcbc3 To aid vector-based load ic work, we need to be able to handle
the megamorphic load case in hydrogen. A simple approach is to
wrap the probe activity in a hydrogen instruction.

The instruction is novel in that it always tail-calls away.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23772 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 12:51:29 +00:00
yangguo@chromium.org
b7ea991a06 Do not cache CodeStubInterfaceDescriptor on the isolate.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23744 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 15:20:45 +00:00
mvstanton@chromium.org
c2fe5b2b68 Make concrete classes for individual call descriptors. The ic-convention classes that hold register specifications are merged into these new call descriptor classes, which should represent a final home for that information.
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23639 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 10:51:51 +00:00
yangguo@chromium.org
bdead275bb Sub-minor-key-ify HandlerStubs.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 13:55:39 +00:00
yangguo@chromium.org
3cfef1e09e Sub-minor-key-ify four HydrogenCodeStubs.
- FastNewContextStub
- FastCloneShallowArrayStub
- ToBooleanStub
- ElementsTransitionAndStoreStub.

R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23474 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 07:02:53 +00:00
mvstanton@chromium.org
76e22ca629 Added vector-based loadic hydrogen stubs. Not yet callable.
The next step is to integrate the use of vector[slot] into the IC
infrastructure so it can do the right thing for a vector-based ic.
Then these stubs can be installed. For now, they immediately bail out
to the miss handler.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 14:12:47 +00:00
mvstanton@chromium.org
295448a4ea Move register conventions out of the IC classes.
A change to a convention shouldn't require recompilation of ic.h/.cc.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 09:50:09 +00:00
mstarzinger@chromium.org
8627bd5347 Make Clang 3.0 happy about static cast in DoGenerateCode.
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22998 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-08 13:33:28 +00:00
mstarzinger@chromium.org
ade23c891a Extend ToBooleanStub to be able to return oddballs.
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-08 12:41:57 +00:00
verwaest@chromium.org
a7aae7a811 Don't smi-untag on 64bit in the store-field stub
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 13:09:33 +00:00
verwaest@chromium.org
b8ab822040 Hydrogenize (and share) StoreField except heapobject (for now).
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22909 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 09:31:10 +00:00
verwaest@chromium.org
5aaf1487da Load constants from the DescriptorArray
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-06 08:02:21 +00:00
bmeurer@chromium.org
d07a2eb806 Rename ASSERT* to DCHECK*.
This way we don't clash with the ASSERT* macros
defined by GoogleTest, and we are one step closer
to being able to replace our homegrown base/ with
base/ from Chrome.

R=jochen@chromium.org, svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 11:34:54 +00:00
verwaest@chromium.org
3416d1133f Clean up name distinction between Keyed ICs and Element Handlers
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22679 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 16:07:34 +00:00
yangguo@chromium.org
2811213380 Flag for serialization when compiling code stubs if --serialize-toplevel.
R=mvstanton@chromium.org
BUG=v8:3465
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 12:11:30 +00:00
mvstanton@chromium.org
54636ae4e2 StubCallInterfaceDescriptor and CallInterfaceDescriptor are unified under a base class InterfaceDescriptor.
Handling of the context register had to be massaged to effect the unification. This will make it easier to call hydrogen code stubs directly from crankshaft.

R=danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 11:50:04 +00:00
mvstanton@chromium.org
086290baf0 Use the same registers for StoreIC and KeyedStoreIC.
Based on https://codereview.chromium.org/389283002 ("Use register parameters in ElementsTransitionGenerator") which must land first.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22387 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 20:43:41 +00:00
mvstanton@chromium.org
18961d7c03 Revert "Use the same registers for StoreIC and KeyedStoreIC."
This reverts commit r22358 due to release mode arm64 test failures.

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 14:50:59 +00:00
mvstanton@chromium.org
8a0267f96e Use the same registers for StoreIC and KeyedStoreIC.
The x64 and ia32 platforms already did this, port to arm and arm64.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22358 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 13:53:19 +00:00
mvstanton@chromium.org
3d880be540 Use a register spec for StoreIC and KeyedStoreIC.
This continues refactoring already applied for LoadIC in r22035 (https://code.google.com/p/v8/source/detail?r=22035).

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 14:59:47 +00:00
jkummerow@chromium.org
8ec78178cd Hydrogenized KeyedLoadGeneric stub: when probing the KeyedLookupCache fails, call the runtime, don't stub-fail.
R=danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22254 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 16:24:51 +00:00
jkummerow@chromium.org
aca5038b3d Hydrogenized KeyedLoadGeneric stub: Fix string hash retrieval
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 08:55:42 +00:00
svenpanne@chromium.org
d7934d1fbe Start using OStreams.
Note that until everything is OStream-based, there are a few places
where we have to do some impedance matching. A few accessors had to be
const-corrected on the way.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 07:18:30 +00:00
jochen@chromium.org
a4506cd3f2 Move platform abstraction to base library
Also split v8-core independent methods from checks.h to base/logging.h and
merge v8checks with the rest of checks.

The CPU::FlushICache method is moved to CpuFeatures::FlushICache

RoundUp and related methods are moved to base/macros.h

Remove all layering violations from src/libplatform

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 13:25:46 +00:00
mvstanton@chromium.org
addd35df56 The IC exposes a register definition.
Centralize a register definition in an IC that provides:
1) symbolic names for the register (like, edx == receiver)
2) defines ordering when passed on the stack

Code that implements or uses the IC should use this definition instead of "knowing" what the registers are. Or at least have the definition to validate it's assumptions.

As a side effect of avoiding runtime static initializers (enforced by tools/check-static-initializers.sh, neat), I gave ownership of the registers array to CodeStubInterfaceDescriptor. This prompted a cleanup of that struct.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22011 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-25 12:32:12 +00:00
mvstanton@chromium.org
41e2dc7063 Revert "Create a RegisterSpec class inside of the IC that provides:"
This reverts commit r21939 due to a static initializer issue.

TBR=marja@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21943 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 14:28:38 +00:00
mvstanton@chromium.org
b3f8487726 Create a RegisterSpec class inside of the IC that provides:
1) symbolic names for the register (like, edx == receiver)
2) can return an array of registers
3) defines ordering when passed on the stack

Code that implements or uses the IC should use this RegisterSpec instead of "knowing" what the registers are. Or at least have the RegisterSpec to validate it's assumptions.

R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21939 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 13:42:12 +00:00
danno@chromium.org
634cb5e8a1 Revert "Revert "Reland 21774: Generate KeyedLoadGeneric with Hydrogen""
This CL tickled an unrelated arm64 bug which was is fixed separately.

The MIPS port (originally landed 21784) is also included.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-12 09:58:10 +00:00
haitao.feng@intel.com
4891950b39 Remove unnecessary HCompareNumericAndBranch when generating HShr instruction.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21799 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-12 09:40:59 +00:00
danno@chromium.org
c17e79293b Revert "Reland 21774: Generate KeyedLoadGeneric with Hydrogen"
Due to lingering arm64 failures in Test262

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-12 07:38:49 +00:00
danno@chromium.org
905d777d8f Reland 21774: Generate KeyedLoadGeneric with Hydrogen
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-11 21:44:50 +00:00
danno@chromium.org
006bdafecc Revert 21774: "Generate KeyedLoadGeneric with Hydrogen"
Due to arm64 and GCMole failures

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21776 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-11 16:33:44 +00:00
danno@chromium.org
3b9039abc3 Generate KeyedLoadGeneric with Hydrogen
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-11 14:56:38 +00:00
danno@chromium.org
7c56c0e864 Reland 21720: Introduce FieldIndex to unify and abstract property/field offset
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-10 14:01:08 +00:00
danno@chromium.org
ec57abdaa7 Revert 21720: "Introduce FieldIndex to unify and abstract property/field offset"
Due to assorted failures

R=mstarzinger@chromium.org
TBR=mstarzginer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-10 09:00:10 +00:00
danno@chromium.org
ffc4ad0697 Introduce FieldIndex to unify and abstract property/field offset
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21720 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-06 14:05:10 +00:00
ishell@chromium.org
4473edd7f1 Implemented folding of constant size allocation followed by dynamic size allocation.
Manually folded allocations (JSArray, JSRegExpResult) are split into two separate allocations.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-04 09:35:41 +00:00
jochen@chromium.org
56a486c322 Use full include paths everywhere
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps

BUG=none
R=jkummerow@chromium.org, danno@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00
bmeurer@chromium.org
7d14f34a1b Inline Array.shift() fast path instead of using a code stub.
TEST=mjsunit/array-shift,mjsunit/array-shift2,mjsunit/array-shift3
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 07:02:24 +00:00
bmeurer@chromium.org
f600133031 Fix HPushArguments instruction.
Use the zone that is passed to New() and fix implementation of
HPushArguments::AddInput() to match HPhi::AddInput().

R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 06:42:56 +00:00
bmeurer@chromium.org
e9357a5e77 Refactor HType to get rid of various hacks.
- Move HType to it's own file.
- Add HType::HeapObject and some other useful types.
- Get rid of the broken and useless HType::NonPrimitive.
- Introduce HType::FromType() to convert from HeapType to HType.
- Also add unit tests for HType.
- Fix types in Crankshaft.

R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21578 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-29 04:13:50 +00:00
alexandre.rames@arm.com
8d334ed1dc Allow HPushArgument to handle more than one argument.
R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 14:06:42 +00:00
bmeurer@chromium.org
fd4da6bfe7 Get rid of HStoreNamedField::SkipWriteBarrier().
The write barrier elimination does the right thing now, so
we can get rid of this hack.

R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21384 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 11:25:47 +00:00
danno@chromium.org
327c016af4 Fix performance regression in regular expressions after Array.push() optimizations
R=yangguo@chromium.org
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-16 15:42:00 +00:00
danno@chromium.org
71789ea1e5 Reland r20974: Unify and simplify the FastCloneShallowArrayStub
- Don't bake in length/capacity into full codegen calls of stubs,
allowing boilerplates to increase their capacity without regenerating
code.
- Unify all variants of the clone stub into a single,
length-independent version.
- Various tweaks to make sure that the clone stub doesn't spill and
therefore need an eager stack frame.
- Handle all lengths of array literals in the fast case.

R=mvstanton@chromium.org

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 07:49:11 +00:00
verwaest@chromium.org
c33a72b27f Revert "Reland r20974: Unify and simplify the FastCloneShallowArrayStub"
This breaks nosnap.

BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 17:56:55 +00:00