Commit Graph

2200 Commits

Author SHA1 Message Date
verwaest
a4b7d45c7b Handlify ExecutableAccessorInfo::ClearSetter since it allocates.
BUG=chromium:478556
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28065}
2015-04-27 10:18:30 +00:00
jochen
3383f6280e Reland "Remove the weak list of views from array buffers"
Original description:
> Instead, views have to check their array buffer for whether
> it's neutered or not.
>
> BUG=v8:3996
> R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
> LOG=n

BUG=v8:3996
R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28060}
2015-04-27 09:27:53 +00:00
jkummerow
968715c653 Revert of Lazily register prototype users (patchset #2 id:20001 of https://codereview.chromium.org/1104813004/)
Reason for revert:
Suspected of causing GC stress failures.

Original issue's description:
> Lazily register prototype users
>
> when handing out validity cells to handles; because invalidating said cells is the only time we'll need the user registrations.
> Along the way, fix a corner case in WeakFixedArray, which can now be empty after the recently introduced compaction support.
>
> Committed: https://crrev.com/a4bb7643c076b014816431a9b85af3e2edf828e7
> Cr-Commit-Position: refs/heads/master@{#28047}

TBR=yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28049}
2015-04-24 14:09:48 +00:00
jkummerow
a4bb7643c0 Lazily register prototype users
when handing out validity cells to handles; because invalidating said cells is the only time we'll need the user registrations.
Along the way, fix a corner case in WeakFixedArray, which can now be empty after the recently introduced compaction support.

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

Cr-Commit-Position: refs/heads/master@{#28047}
2015-04-24 12:51:37 +00:00
jochen
41098dbb07 Revert of Reland "Remove the weak list of views from array buffers" (patchset #2 id:20001 of https://codereview.chromium.org/1093183004/)
Reason for revert:
still working on perf

Original issue's description:
> Reland "Remove the weak list of views from array buffers"
>
> Original description:
> > Instead, views have to check their array buffer for whether
> > it's neutered or not.
> >
> > BUG=v8:3996
> > R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
> > LOG=n
>
> BUG=v8:3996
> R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
> LOG=n
>
> Committed: https://crrev.com/655b04637e9da2749f53c866bca8f5f6abb05a3f
> Cr-Commit-Position: refs/heads/master@{#28029}

TBR=dslomov@chromium.org,hpayer@chromium.org,verwaest@chromium.org,dcarney@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3996

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

Cr-Commit-Position: refs/heads/master@{#28038}
2015-04-24 06:46:23 +00:00
jochen
655b04637e Reland "Remove the weak list of views from array buffers"
Original description:
> Instead, views have to check their array buffer for whether
> it's neutered or not.
>
> BUG=v8:3996
> R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
> LOG=n

BUG=v8:3996
R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28029}
2015-04-23 13:02:36 +00:00
jochen
47f2dfa9bd Revert of Remove the weak list of views from array buffers (patchset #6 id:100001 of https://codereview.chromium.org/1094863002/)
Reason for revert:
I'm reverting this while working on the regression fix

Original issue's description:
> Remove the weak list of views from array buffers
>
> Instead, views have to check their array buffer for whether
> it's neutered or not.
>
> BUG=v8:3996
> R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
> LOG=n
>
> Committed: https://crrev.com/5ae083a05a6743d6cb91585f449539f7846a5d8c
> Cr-Commit-Position: refs/heads/master@{#27995}

TBR=dslomov@chromium.org,hpayer@chromium.org,verwaest@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3996

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

Cr-Commit-Position: refs/heads/master@{#28014}
2015-04-22 15:03:12 +00:00
dslomov
aec46ca54a Stack allocate lexical locals + hoist stack slots
Review URL: https://codereview.chromium.org/981203003

Cr-Commit-Position: refs/heads/master@{#28008}
2015-04-22 13:22:18 +00:00
machenbach
2631c9f5e3 Revert of Revert of Protect the emptiness of Array prototype elements with a PropertyCell. (patchset #1 id:1 of https://codereview.chromium.org/1099203004/)
Reason for revert:
This was probably an infrastructure problem caused by the mac ninja/goma switch.

Original issue's description:
> Revert of Protect the emptiness of Array prototype elements with a PropertyCell. (patchset #7 id:120001 of https://codereview.chromium.org/1092043002/)
>
> Reason for revert:
> MAC GCSTRESS failure on new test.
>
> Original issue's description:
> > Protect the emptiness of Array prototype elements with a PropertyCell.
> >
> > Not just emptiness, but also a particular structure.
> >
> > BUG=v8:4044
> > LOG=N
>
> TBR=jkummerow@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=v8:4044

TBR=jkummerow@chromium.org,mvstanton@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4044

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

Cr-Commit-Position: refs/heads/master@{#28000}
2015-04-22 10:35:09 +00:00
mvstanton
15b98a3328 Revert of Protect the emptiness of Array prototype elements with a PropertyCell. (patchset #7 id:120001 of https://codereview.chromium.org/1092043002/)
Reason for revert:
MAC GCSTRESS failure on new test.

Original issue's description:
> Protect the emptiness of Array prototype elements with a PropertyCell.
>
> Not just emptiness, but also a particular structure.
>
> BUG=v8:4044
> LOG=N

TBR=jkummerow@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4044

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

Cr-Commit-Position: refs/heads/master@{#27998}
2015-04-22 09:56:28 +00:00
jochen
5ae083a05a Remove the weak list of views from array buffers
Instead, views have to check their array buffer for whether
it's neutered or not.

BUG=v8:3996
R=hpayer@chromium.org,dslomov@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#27995}
2015-04-22 09:19:19 +00:00
mvstanton
b6f075f001 Protect the emptiness of Array prototype elements with a PropertyCell.
Not just emptiness, but also a particular structure.

BUG=v8:4044
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27993}
2015-04-22 08:50:14 +00:00
yangguo
7b1b964362 Compact weak fixed arrays before serializing.
R=ulan@chromium.org
BUG=v8:4050
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27988}
2015-04-22 07:39:52 +00:00
machenbach
9974348674 Revert of track global accesses to constant types (patchset #15 id:280001 of https://codereview.chromium.org/1062163005/)
Reason for revert:
[Sheriff] Speculative revert for maybe breaking layout tests, e.g.
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2032/builds/2589

Will reland if it doesn't help.

Original issue's description:
> track global accesses to constant types
>
> BUG=

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

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

Cr-Commit-Position: refs/heads/master@{#27982}
2015-04-21 18:02:59 +00:00
dcarney
7bcc3d1083 track global accesses to constant types
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27966}
2015-04-21 13:36:58 +00:00
jkummerow
6b5dd313e1 Drop unused field from PrototypeInfo
Review URL: https://codereview.chromium.org/1097313002

Cr-Commit-Position: refs/heads/master@{#27965}
2015-04-21 13:21:56 +00:00
yangguo
0a8f8a953e Change hash table capacity heuristics when serializing.
Also extract non-templated parts of HashTable class into HashTableBase.

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

Cr-Commit-Position: refs/heads/master@{#27959}
2015-04-21 11:07:26 +00:00
titzer
f557d75360 Reland "Refactor compilation dependency handling."
R=mstarzinger@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27945}
2015-04-20 15:21:44 +00:00
jochen
53cc6486df Remove support for externally backed elements from the API
Embedders should use ArrayBuffers instead

BUG=v8:3996
LOG=y
R=verwaest@chromium.org,dslomov@chromium.org,kbr@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27939}
2015-04-20 13:31:27 +00:00
machenbach
e3c2ba776a Revert of Refactor compilation dependency handling. (patchset #4 id:60001 of https://codereview.chromium.org/1095433002/)
Reason for revert:
[Sheriff] Causes crashes in laout tests:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/2543

Extra bisect run:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/2548

Original issue's description:
> Refactor compilation dependency handling.
>
> Extract a new data structure CompilationDependencies and move (most) logic there.
>
> R=mstarzinger@chromium.org,verwaest@chromium.org
> BUG=
>
> Committed: https://crrev.com/b882479f1c84a48961b8aec81fa1bb1225034784
> Cr-Commit-Position: refs/heads/master@{#27892}

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

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

Cr-Commit-Position: refs/heads/master@{#27904}
2015-04-17 07:47:09 +00:00
titzer
b882479f1c Refactor compilation dependency handling.
Extract a new data structure CompilationDependencies and move (most) logic there.

R=mstarzinger@chromium.org,verwaest@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27892}
2015-04-16 16:04:34 +00:00
ulan
aae2c01740 Use atomic operation to read the length of a fixed array.
This fixes a race where
- mutator changes the fixed array length by trimming it,
- sweeper thread reads the length of the fixed array.

Also rename FROM_GC and FROM_MUTATOR to be more precise.

BUG=chromium:462908
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#27869}
2015-04-16 08:39:12 +00:00
mvstanton
13459c1ae3 Array() in optimized code can create with wrong ElementsKind in corner cases.
Calling new Array(JSObject::kInitialMaxFastElementArray) in optimized code
makes a stub call that bails out due to the length. Currently, the bailout
code a) doesn't have the allocation site, and b) wouldn't use it if it did
because the length is perceived to be too high.

This CL passes the allocation site to the stub call (rather than undefined),
and alters the bailout code to utilize the feedback.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27857}
2015-04-15 21:02:13 +00:00
jkummerow
0179ec5797 Use Cells to check prototype chain validity (disabled by default).
The cells are stored on prototypes (in their map's PrototypeInfo). When a prototype object changes its map, then both its own validity cell and those of all "downstream" prototypes are invalidated; handlers for a given receiver embed the currently valid cell for that receiver's prototype during their compilation and check it on execution.

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

Cr-Commit-Position: refs/heads/master@{#27845}
2015-04-15 12:53:24 +00:00
verwaest
4bd9bdbb28 Reland "Merge cellspace into old pointer space"
This fixes the arm(64) and mips(64) write barriers

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27751}
2015-04-10 13:54:10 +00:00
jkummerow
c1f28b6c10 Handlify Map::SetPrototype()
Review URL: https://codereview.chromium.org/1005393004

Cr-Commit-Position: refs/heads/master@{#27745}
2015-04-10 12:13:22 +00:00
adamk
9e3e0aaa88 Revert of Merge cellspace into old pointer space (patchset #8 id:180001 of https://codereview.chromium.org/1010803012/)
Reason for revert:
Causes test failures on ARM bots related to cells and write barriers.

Original issue's description:
> Merge cellspace into old pointer space
>
> BUG=
>
> Committed: https://crrev.com/4e7163ce05f135918205c7855ae60a48e5d46cc5
> Cr-Commit-Position: refs/heads/master@{#27707}

TBR=hpayer@chromium.org,balazs.kilvady@imgtec.com,yangguo@chromium.org,verwaest@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27711}
2015-04-09 18:16:40 +00:00
verwaest
4e7163ce05 Merge cellspace into old pointer space
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27707}
2015-04-09 13:34:21 +00:00
yangguo
4a5de9d9e3 Eagerly escape RegExp.source.
Escaping used to happen lazily, implemented in an accessor property.
However, native implementation of RegExp methods use .source as well.
This leads to performance regressions. Now we do it eagerly instead.

R=jkummerow@chromium.org
BUG=chromium:436447
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27705}
2015-04-09 13:22:22 +00:00
hpayer
59be4ba7f4 Reland "Merge old data and pointer space."
This reverts commit cbfcee5575.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27623}
2015-04-07 11:32:10 +00:00
jkummerow
90cbede588 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}
2015-04-07 10:42:57 +00:00
adamk
909500aa1d 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}
2015-04-07 00:12:04 +00:00
ishell
ffe886de48 Support for typed arrays added to Heap::RightTrimFixedArray().
BUG=chromium:472513
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#27586}
2015-04-02 11:26:19 +00:00
dcarney
a45a1de7aa add access checks to receivers on function callbacks
R=verwaest@chromium.org
BUG=468451
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27482}
2015-03-26 15:22:08 +00:00
machenbach
f0d555b26d Revert of add access checks to receivers on function callbacks (patchset #5 id:80001 of https://codereview.chromium.org/1036743004/)
Reason for revert:
This seems to lead to lots of timeouts of layout tests, e.g.:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064/builds/2807

Original issue's description:
> add access checks to receivers on function callbacks
>
> R=verwaest@chromium.org
> BUG=468451
> LOG=N
>
> Committed: https://crrev.com/255528710b0a128eef7b66827d9ac43e44650ff4
> Cr-Commit-Position: refs/heads/master@{#27452}

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

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

Cr-Commit-Position: refs/heads/master@{#27457}
2015-03-25 18:31:51 +00:00
dcarney
255528710b add access checks to receivers on function callbacks
R=verwaest@chromium.org
BUG=468451
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27452}
2015-03-25 16:16:56 +00:00
mstarzinger
38a719f965 Switch full-codegen from StackHandlers to handler table.
This switches full-codegen to no longer push and pop StackHandler
markers onto the operand stack, but relies on a range-based handler
table instead. We only use StackHandlers in JSEntryStubs to mark the
transition from C to JS code.

Note that this makes deoptimization and OSR from within any try-block
work out of the box, makes the non-exception paths faster and should
overall be neutral on the memory footprint (pros).

On the other hand it makes the exception paths slower and actually
throwing and exception more expensive (cons).

R=yangguo@chromium.org
TEST=cctest/test-run-jsexceptions/DeoptTry

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

Cr-Commit-Position: refs/heads/master@{#27440}
2015-03-25 13:14:02 +00:00
marja
cb7279da81 [strong] Check strong mode free variables against the global object.
Gather references to unbound variables where the reference (VariableProxy) is
inside strong mode. Check them against the global object when a script is bound
to a context (during compilation).

This CL only checks unbound variables which are not inside lazy functions - TBD
how do we solve that; alternatives: add developer mode which disables laziness /
do the check whenever lazy functions are really compiled.

BUG=v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27422}
2015-03-24 16:46:59 +00:00
ulan
1efcca7f04 Reload length of retained_maps array after GC.
This fixes flaky GC stress failure:

> Fatal error in ../src/heap/mark-compact.cc, line 2127
> Check failed: retained_maps->Get(i)->IsWeakCell().

BUG=
TEST=test-heap/RegressArrayListGC

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

Cr-Commit-Position: refs/heads/master@{#27412}
2015-03-24 14:36:09 +00:00
erikcorry
36d7aa6817 Fix out of date assert after PropertyCell enterbung
R=verwaest@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27400}
2015-03-24 12:16:20 +00:00
ulan
c56fa73699 Reland "Fix memory leak caused by field type in descriptor array."
BUG=v8:3877
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#27362}
2015-03-23 11:20:50 +00:00
hpayer
cbfcee5575 Revert "Merge old data and pointer space."
TBR=verwaest@chromium.org,ulan@chromium.org,ishell@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27323}
2015-03-19 22:03:32 +00:00
yangguo
3f10f409c8 Revert of Reland of "Fix memory leak caused by field type in descriptor array."
TBR=ulan@chromium.org
BUG=v8:3969
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27286}
2015-03-19 07:43:37 +00:00
yangguo
7c149afb6c Serializer: serialize internal references via object visitor.
Review URL: https://codereview.chromium.org/1005183006

Cr-Commit-Position: refs/heads/master@{#27275}
2015-03-18 13:38:45 +00:00
verwaest
8c0d289772 Disinherit PropertyCell from Cell
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27274}
2015-03-18 12:54:17 +00:00
dcarney
0880d4da26 add interceptors which do not mask existing properties
R=verwaest@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27271}
2015-03-18 12:50:48 +00:00
verwaest
16c8485a35 Remove PropertyCell space
Replaces StoreGlobalCell / LoadGlobalCell with NamedField variants that use write barriers.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27269}
2015-03-18 11:43:58 +00:00
hpayer
257ff48931 Merge old data and pointer space.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27259}
2015-03-18 09:39:03 +00:00
dcarney
d3fb7bf809 correctly invalidate global cells
additionally, remove unnecessary deopts when transitioning to global accessor properties from data properties

R=verwaest@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27239}
2015-03-17 13:27:41 +00:00
kozyatinskiy
ec73e08860 [V8] Use Function.name in Error.stack
Error.stack contains function.name if its type is string.
Otherwise if function have inferred name then .stack contains it.
For functions from eval .stack property contains "eval".

LOG=N
BUG=chromium:17356
R=yurys@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27186}
2015-03-13 15:11:57 +00:00
dcarney
2d3311b82f remove DeletedField from PropertyDetails
R=verwaest@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27166}
2015-03-12 16:03:27 +00:00
marja
6ad87e4f86 [strong] More scoping related errors: object literal methods.
This CL adds errors for illegal references which occur inside object literal
methods inside computed properrty names.

BUG=v8:3948,v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27118}
2015-03-10 16:48:07 +00:00
marja
3ff7da93d8 Fix CompilerHints flag order to match FunctionKind.
The bits in CompilerHints are accessed via FunctionKindBits, and on the other
hand, with accessors defined by BOOL_ACCESSORS(SharedFunctionInfo,
compiler_hints, is_accessor_function, kIsAccessorFunction) etc.

So the bit order in FunctionKind must match CompilerHints.

This is not causing problems (yet) because there's no accessor for these two
bits, but if somebody adds one, things will go wrong.

R=dslomov@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27096}
2015-03-10 11:57:20 +00:00
loislo
66ab309e73 CpuProfiler: fix for GetDeoptReason code.
The original code always returned the first entry from RelocInfo that matched with
bailout_id. But we may have a few different deopt reasons for one bailout_id.
So we need to get the one which matches with a particular call from JumpTable.

We can do this by checking not 'target_address' (it maps to bailout_id)
but 'from' address which maps to a particular JumpTable entry.

The test was reworked so it tests identical functions against different reasons.

BUG=chromium:452067
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#27076}
2015-03-09 14:43:40 +00:00
marja
4a709dd658 [strong] Fix scoping related errors for methods.
Methods can refer to the class name.

BUG=v8:3927
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27075}
2015-03-09 14:30:40 +00:00
yangguo
206303f703 Do not include code objects for functions in the start-up snapshot.
Review URL: https://codereview.chromium.org/981213002

Cr-Commit-Position: refs/heads/master@{#27047}
2015-03-06 15:07:06 +00:00
jkummerow
233ea0eef8 Reland: Simplify and compact transitions storage
Original issue: https://codereview.chromium.org/980573002/

Simple transitions are now stored in a map's "transitions" field (as a WeakCell wrapping the target map); full TransitionArrays are used when that's not sufficient.
To encapsulate these storage format implementation details, functions for manipulating and querying transitions have been refactored to be static functions on the TransitionArray class, and take maps as inputs.

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

Cr-Commit-Position: refs/heads/master@{#27044}
2015-03-06 14:08:47 +00:00
ulan
1b00451f57 Retain maps embedded in optimized code for several garbage collections.
This keeps dying maps alive for FLAG_retain_maps_for_n_gc garbage collections
to increase chances of them being reused for new objects in future and
decrease number of deoptimizations.

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

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

Cr-Commit-Position: refs/heads/master@{#27040}
2015-03-06 12:36:32 +00:00
verwaest
67d531c33c Don't double-allocate mutable heap numbers in the json parser. This removes some stupidity when committing state.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27034}
2015-03-06 08:37:18 +00:00
jkummerow
948a973d45 Revert of Simplify and compact transitions storage (patchset #4 id:80001 of https://codereview.chromium.org/980573002/)
Reason for revert:
x64 test failures

Original issue's description:
> Simplify and compact transitions storage
>
> Simple transitions are now stored in a map's "transitions" field (as a WeakCell wrapping the target map); full TransitionArrays are used when that's not sufficient.
> To encapsulate these storage format implementation details, functions for manipulating and querying transitions have been refactored to be static functions on the TransitionArray class, and take maps as inputs.
>
> Committed: https://crrev.com/45fbef7f2252fce10634931cb103ccc1fc95ae6a
> Cr-Commit-Position: refs/heads/master@{#27029}

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

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

Cr-Commit-Position: refs/heads/master@{#27030}
2015-03-05 20:42:03 +00:00
jkummerow
45fbef7f22 Simplify and compact transitions storage
Simple transitions are now stored in a map's "transitions" field (as a WeakCell wrapping the target map); full TransitionArrays are used when that's not sufficient.
To encapsulate these storage format implementation details, functions for manipulating and querying transitions have been refactored to be static functions on the TransitionArray class, and take maps as inputs.

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

Cr-Commit-Position: refs/heads/master@{#27029}
2015-03-05 20:09:41 +00:00
yangguo
1a608493e5 Refactor BreakLocationIterator.
We now have BreakLocation::Iterator to iterate via RelocIterator, and
create a BreakLocation when we are done iterating. The reloc info is
stored in BreakLocation in a GC-safe way and instantiated on demand.

R=ulan@chromium.org
BUG=v8:3924
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26983}
2015-03-04 13:15:34 +00:00
ulan
bbf8c0f23d Revert "Revert of Fix memory leak caused by field type in descriptor array."
This reverts commit b57be748b1 and
disables the test/mjsunit/debug-clearbreakpointgroup.js because
BreakLocationIterator::ClearBreakPoint is already broken for unrelated reasons (see v8:3924).

BUG=v8:3877
LOG=N
TEST=cctest/test-heap/Regress3877

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

Cr-Commit-Position: refs/heads/master@{#26893}
2015-02-26 18:38:34 +00:00
ulan
250dd1ed5a Store weak cell cache for map in the map itself.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26891}
2015-02-26 18:36:06 +00:00
marja
b57be748b1 Revert of Fix memory leak caused by field type in descriptor array. (patchset #3 id:40001 of https://codereview.chromium.org/955063002/)
Reason for revert:
Breaks test/mjsunit/debug-clearbreakpointgroup.js on arm64.debug.

Original issue's description:
> Fix memory leak caused by field type in descriptor array.
>
> When a field type is a map, it is wrapped in a weak cell upon storing to the descriptor array.
>
> Map::GetFieldType(i) does the unwrapping.
>
> BUG=v8:3877
> LOG=N
> TEST=cctest/test-heap/Regress3877
>
> Committed: https://crrev.com/77d3ae0e119893ac8d34ea6ca090cddd5bbf987e
> Cr-Commit-Position: refs/heads/master@{#26879}

TBR=verwaest@chromium.org,ulan@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3877

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

Cr-Commit-Position: refs/heads/master@{#26883}
2015-02-26 14:46:07 +00:00
ulan
77d3ae0e11 Fix memory leak caused by field type in descriptor array.
When a field type is a map, it is wrapped in a weak cell upon storing to the descriptor array.

Map::GetFieldType(i) does the unwrapping.

BUG=v8:3877
LOG=N
TEST=cctest/test-heap/Regress3877

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

Cr-Commit-Position: refs/heads/master@{#26879}
2015-02-26 13:16:39 +00:00
verwaest
6b1bddb454 Remove NativeContext from Literal array, since we always create the literals in the native context of the current closure.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26867}
2015-02-25 22:41:48 +00:00
jkummerow
affcfaf428 Move Maps' back pointers from "transitions" to "constructor" field
Review URL: https://codereview.chromium.org/950283002

Cr-Commit-Position: refs/heads/master@{#26835}
2015-02-24 20:50:24 +00:00
verwaest
74c0cdbf76 Prototype objects never share their map, and hence cannot be in deprecated state.
Review URL: https://codereview.chromium.org/955433002

Cr-Commit-Position: refs/heads/master@{#26802}
2015-02-23 18:25:54 +00:00
arv
0cffc08b66 Super store
When the property is not found on the [[HomeObject]] prototype chain
then we should do a [[DefineOwnProperty]] on the instance.

BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26754}
2015-02-19 16:15:35 +00:00
ulan
5242700da4 Revert "Remove IC age from Code."
This reverts commit 3cd889 for regressing Kraken benchmark

BUG=chromium:457174
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26740}
2015-02-19 09:56:19 +00:00
verwaest
7138634d5a Move LookupResult into crankshaft as that's now the only place where it's still used
Additionally handlify the "transition" field so that GC can stop caring about it.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26718}
2015-02-18 13:21:43 +00:00
verwaest
6e56fd60e0 Remove the holder_ field from LookupResult
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26717}
2015-02-18 11:21:18 +00:00
verwaest
119cb56617 Stop using HeapType in IC and Crankshaft
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26696}
2015-02-17 15:33:37 +00:00
ishell
35841b5055 Property reconfiguring implemented.
Previous approach for property reconfiguration was to create a free-floating map with generalized representations of all fields. This patch does it right.

When property is reconfigured either by changing its kind (kData <-> kAccessor) or its attributes it implies creation of a new branch in transition tree. If such a branch already existed before reconfiguration then it should be merged with the old (or source) branch of the transition tree. Merging procedure includes all the heavy machinery such as property location changes (kDescriptor -> kField), field representation/field type generalization, map deprecation, etc.

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

Cr-Commit-Position: refs/heads/master@{#26667}
2015-02-16 15:25:54 +00:00
verwaest
a1f7b01ccf Remove prototype key from the prototype transitions since its also embedded in the target map.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26662}
2015-02-16 13:10:06 +00:00
caitpotter88
8bb2e39774 Implement ES6 rest parameters
LOG=Y
BUG=v8:2159
R=dslomov@chromium.org, arv@chromium.org, marja@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26645}
2015-02-14 00:15:12 +00:00
arv
d0c2c2b32c ES6 Classes: Remove tracking of super construct calls.
With the new ES6 semantics super construct calls are only valid in
a constructor in a derived class. This is something that is
statically known and we report early SyntaxError in case it occurs.
We therefore do not need to track this any more.

BUG=v8:3330
LOG=N
R=dslomov@chromium.org, adamk

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

Cr-Commit-Position: refs/heads/master@{#26644}
2015-02-13 22:26:34 +00:00
rossberg
eecde44f82 Properly thread language mode to compilation cache
Fixes the TSAN issue.

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

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

Cr-Commit-Position: refs/heads/master@{#26623}
2015-02-12 16:29:54 +00:00
ulan
b79b985988 Use weak cells in dependent code.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26614}
2015-02-12 13:21:13 +00:00
titzer
688dcc3aa9 Move SetFunctionInfo() from compiler.cc to objects.cc. Rationale: not related to generating code.
R=verwaest@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26583}
2015-02-11 14:52:13 +00:00
dslomov
bf49be39f3 new classes: implement new.target passing to superclass constructor.
R=arv@chromium.org,rossberg@chromium.org
BUG=v8:3834
LOG=N

Committed: https://crrev.com/8aed43e82c6d2742fe5988603cb8841324cc942b
Cr-Commit-Position: refs/heads/master@{#26560}

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

Cr-Commit-Position: refs/heads/master@{#26572}
2015-02-11 09:47:51 +00:00
dcarney
79417664b2 remove undetectable strings
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26571}
2015-02-11 09:28:12 +00:00
dcarney
307d2bdd81 add transitions for global properties in ics
R=verwaest@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26569}
2015-02-11 09:15:33 +00:00
dslomov
8e4ec9dd13 Revert of new classes: implement new.target passing to superclass constructor. (patchset #9 id:150001 of https://codereview.chromium.org/908883002/)
Reason for revert:
Breaks Linux64 release

Original issue's description:
> new classes: implement new.target passing to superclass constructor.
>
> R=arv@chromium.org,rossberg@chromium.org
> BUG=v8:3834
> LOG=N
>
> Committed: https://crrev.com/8aed43e82c6d2742fe5988603cb8841324cc942b
> Cr-Commit-Position: refs/heads/master@{#26560}

TBR=arv@chromium.org,rossberg@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:3834

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

Cr-Commit-Position: refs/heads/master@{#26561}
2015-02-11 01:36:32 +00:00
dslomov
8aed43e82c new classes: implement new.target passing to superclass constructor.
R=arv@chromium.org,rossberg@chromium.org
BUG=v8:3834
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26560}
2015-02-11 01:23:11 +00:00
dcarney
313b24dbc2 add support for all can read interceptors
R=verwaest@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26522}
2015-02-09 11:33:50 +00:00
dslomov
158a87659f new classes: assert that constructors are not callable and rewrite 'return;'
R=arv@chromium.org
BUG=v8:3834
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26483}
2015-02-06 10:35:13 +00:00
Erik Arvidsson
b67b3c5401 Accessor functions should have no prototype property
This also removes some convenience functions that were not used.

BUG=v8:3700
LOG=N
R=adamk@chromium.org, adamk

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

Cr-Commit-Position: refs/heads/master@{#26472}
2015-02-05 23:34:28 +00:00
ulan
3cd88975a1 Remove IC age from Code.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26468}
2015-02-05 16:40:43 +00:00
marja
d21b9a1422 Add strong mode.
It doesn't do anything for now, but it implies strict mode. Added tests to
test-parsing.cc to test that.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26460}
2015-02-05 14:11:47 +00:00
arv
176b68d11a Class methods should be non enumerable
Class methods and accessors (both prototype and static) should be
non enumerable.

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

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

Cr-Commit-Position: refs/heads/master@{#26437}
2015-02-04 17:23:17 +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
cd203cd629 Verify that code stubs and full code do not have pointers that can retain
context.

BUG=v8:3629
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26412}
2015-02-03 17:46:31 +00:00
dslomov
6f97a4948f new classes: special construct stub for derived classs and TDZ for this.
R=arv@chromium.org,rossberg@chromium.org
BUG=v8:3834
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26409}
2015-02-03 17:43:03 +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
fedor
a0d0c4333d tools: fix postmortem generator
BUG=
R=danno

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

Cr-Commit-Position: refs/heads/master@{#26389}
2015-02-02 21:21:54 +00:00
Benedikt Meurer
883852293a Revert "Make GCC happy again." and "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".
This reverts commit 6a4c0a3bae and commit
0deaa4b629 for breaking GCC bots.

TBR=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26342}
2015-01-30 07:19:57 +00:00
bmeurer
0deaa4b629 Initial switch to Chromium-style CHECK_* and DCHECK_* macros.
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26340}
2015-01-30 06:25:36 +00:00
kozyatinskiy
eaae397c42 [V8] Added Script::is_debugger_script flag for embedders
In DevTools we need one more flag for script origin - is debugger script. We already have "is shared origin" flag. The new flag added by analogy with the old but new has accessor in script object.

R=yurys@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26324}
2015-01-29 14:01:33 +00:00
danno
328cf76e35 [turbofan] Improve JSON output
Review URL: https://codereview.chromium.org/882973002

Cr-Commit-Position: refs/heads/master@{#26323}
2015-01-29 12:15:14 +00:00
yangguo
e5a082f0c4 Reland "Only use FreeSpace objects in the free list"
Review URL: https://codereview.chromium.org/882633002

Cr-Commit-Position: refs/heads/master@{#26296}
2015-01-27 14:57:00 +00:00
ishell
7f9b2fa699 Do not generalize field representations when making elements kind or observed transition.
BUG=chromium:448711
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#26289}
2015-01-27 11:19:06 +00:00
yangguo
cc79418b59 Revert of Only use FreeSpace objects in the free list. (patchset #3 id:40001 of https://codereview.chromium.org/876613002/)
Reason for revert:
Test failures

Original issue's description:
> Only use FreeSpace objects in the free list.
>
> This solves an issue with the custom startup snapshot, in cases where
> deserializing the isolate requires more than one page per space.
>
> R=hpayer@chromium.org
>
> Committed: https://crrev.com/66964395108f03220cb6f45ddc73c5965e2c76a9
> Cr-Commit-Position: refs/heads/master@{#26285}

TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#26287}
2015-01-27 09:41:21 +00:00
yangguo
6696439510 Only use FreeSpace objects in the free list.
This solves an issue with the custom startup snapshot, in cases where
deserializing the isolate requires more than one page per space.

R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26285}
2015-01-27 09:20:31 +00:00
ulan
a730a31a5b Cache WeakCell for optimized code.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26274}
2015-01-26 15:31:32 +00:00
danno
c7b09aac31 Remove the dependency of Zone on Isolate
Along the way:
- Thread isolate parameter explicitly through code that used to
  rely on getting it from the zone.
- Canonicalize the parameter position of isolate and zone for
  affected code
- Change Hydrogen New<> instruction templates to automatically
  pass isolate

R=mstarzinger@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26252}
2015-01-23 15:20:00 +00:00
dcarney
845072e66e cleanup check for compatible receiver of api callback
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26242}
2015-01-23 09:57:35 +00:00
dcarney
0aef24e2cf CHECK that FunctionTemplates are not modified after first instantiation
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26237}
2015-01-23 09:07:19 +00:00
ulan
4097318792 Treat pointers in optimized code as strong before all weak dependencies are registered.
This prevents GC from observing code objects with out-of-sync weak dependencies.

BUG=v8:3823
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26225}
2015-01-22 15:31:04 +00:00
Benedikt Meurer
9eace97bba Use signaling NaN for holes in fixed double arrays.
TEST=mjsunit,cctest,unittests
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26180}
2015-01-21 08:52:25 +00:00
verwaest
e99faf93ff Remove ForceDelete
This method circumvented JS semantics, and should not be used.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#26157}
2015-01-20 13:41:31 +00:00
ishell
33994b4a22 Massive renaming of PropertyType values and other implied stuff.
PropertyKind:
  DATA -> kData
  ACCESSOR -> kAccessor

PropertyType:
  FIELD -> DATA
  CONSTANT -> DATA_CONSTANT
  ACCESSOR_FIELD -> ACCESSOR
  CALLBACKS -> ACCESSOR_CONSTANT

PropertyLocation:
  IN_OBJECT -> kField
  IN_DESCRIPTOR -> kDescriptor

StoreMode:
  FORCE_IN_OBJECT -> FORCE_FIELD

FieldDescriptor -> DataDescriptor
ConstantDescriptor -> DataConstantDescriptor
CallbacksDescriptor -> AccessorConstantDescriptor

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

Cr-Commit-Position: refs/heads/master@{#26146}
2015-01-19 17:49:22 +00:00
dcarney
c15c737362 remove SignatureInfo class
BUG=

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

Cr-Commit-Position: refs/heads/master@{#26129}
2015-01-19 12:17:23 +00:00
Sven Panne
e4c5b84652 Contribution of PowerPC port (continuation of 422063005)
Contribution of PowerPC port (continuation of 422063005). The inital patch
covers the core changes to the common files.  Subsequent patches will cover
changes to common files to support AIX and to update the ppc directories so
they are current with the changes in the rest of the project.

This is based off of the GitHub repository
https://github.com/andrewlow/v8ppc

BUG=
R=svenpanne@chromium.org, danno@chromium.org, sevnpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#26091}
2015-01-16 07:42:15 +00:00
marja
2305cfb4e2 ES6 unicode escapes, part 2: Regexps.
Allows \u{xxxxx} in regexps. Behind the --harmony-unicode flag.

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

BUG=v8:3648
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#26018}
2015-01-12 09:50:34 +00:00
dcarney
a5aa01beec remove declarative accessors
R=jochen@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25981}
2015-01-07 16:37:43 +00:00
ulan
0344722a16 Remove custom weak handling of monomorphic IC.
This is not needed anymore since all ICs use weak cells to embed maps.

BUG=v8:3629
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25928}
2014-12-22 15:04:18 +00:00
jkummerow
60dafcaab2 Add infrastructure to keep track of references to prototypes.
There are no users of this infrastructure yet, so it's behind an off-by-default flag.

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

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

Cr-Commit-Position: refs/heads/master@{#25822}
2014-12-15 15:46:11 +00:00
ishell
b1b5d7e2f4 StoreMode enum values renamed.
FORCE_FIELD -> FORCE_IN_OBJECT,
ALLOW_AS_CONSTANT -> ALLOW_IN_DESCRIPTOR.

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

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

Cr-Commit-Position: refs/heads/master@{#25802}
2014-12-12 15:27:50 +00:00
adamk
9aab9f13d6 Create optimized versions of the Map/Set clear method
This completes the first round of optimizations for Map and Set.
All non-key-dependent methods now have a Hydrogen version, and
for keyed methods, string versions are optimized.

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

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

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

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

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

Cr-Commit-Position: refs/heads/master@{#25759}
2014-12-10 20:02:59 +00:00
adamk
8877f15664 Create optimized inline versions of Map and Set initialization
Review URL: https://codereview.chromium.org/779173010

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

Cr-Commit-Position: refs/heads/master@{#25750}
2014-12-10 15:18:52 +00:00
jochen
581747c869 Make it possible to turn on OBJECT_PRINT without DEBUG
BUG=none
R=machenbach@chromium.org
LOG=n
NOTREECHECKS=true

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

Cr-Commit-Position: refs/heads/master@{#25723}
2014-12-09 14:20:16 +00:00
adamk
243764b04b Optimize add/set/delete operations for string keys in Maps and Sets
This was previously landed in commit 8599f5f, but failed the
collections mjsunit test on ia32 with --deopt-every-n=1. The fixed
patch adds a ClearFlag(HValue::kCanOverflow) call after every
arithmetic operation, which should remove all the deopt points in these
intrinsics.

Ideally, it seems like there should be a way to verify that there are
no deopt points for these inline optimized functions, since there's
nothing to deopt to. But I don't currently know of such a thing.

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

Cr-Commit-Position: refs/heads/master@{#25715}
2014-12-08 18:03:39 +00:00
ulan
513d1261e1 Fix typo in r25689 (Refactor Map::ConstructionCount.)
BUG=chromium:439868
LOG=N

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

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

This increases test coverage for chromium release buildbots

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

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

Cr-Commit-Position: refs/heads/master@{#25701}
2014-12-08 09:26:16 +00:00
adamk
1988251044 Revert of Optimize add/set/delete operations for string keys in Maps and Sets (patchset #1 id:1 of https://codereview.chromium.org/777663003/)
Reason for revert:
Deopt fuzzer reports that something's still broken, reverting until
I can create a minimal repro.

Original issue's description:
> Optimize add/set/delete operations for string keys in Maps and Sets
>
> This was previously landed in commit 66e2f60, but failed the
> collections mjsunit test with --deopt-every-n=1 due to a typo
> in the shrinking code. This patch corrects and simplifies the
> shrinking logic, and the tests now pass.
>
> R=dslomov@chromium.org
>
> Committed: 8599f5f047

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

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

Cr-Commit-Position: refs/heads/master@{#25696}
2014-12-05 22:25:11 +00:00
Adam Klein
8599f5f047 Optimize add/set/delete operations for string keys in Maps and Sets
This was previously landed in commit 66e2f60, but failed the
collections mjsunit test with --deopt-every-n=1 due to a typo
in the shrinking code. This patch corrects and simplifies the
shrinking logic, and the tests now pass.

R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25695}
2014-12-05 21:04:00 +00:00
ulan
35ff259b63 Refactor Map::ConstructionCount.
This combines Map::DoneInobjectSlackTracking and Map::ConstructionCount into one more generic 4-bit counter.

Counter values from 15 down to 8 are used for in-object slack tracking, values from 7 down to 0 are free to be used for a new counter when in-object slack tracking is inactive.

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

Cr-Commit-Position: refs/heads/master@{#25689}
2014-12-05 15:28:22 +00:00
adamk
13fd4a529a Revert of Optimize add/set/delete operations for string keys in Maps and Sets (patchset #5 id:70001 of https://codereview.chromium.org/773993002/)
Reason for revert:
Caused test failures in mjsunit/es6/collections with --deopt-every-n-times=1

Original issue's description:
> Optimize add/set/delete operations for string keys in Maps and Sets

TBR=dslomov@chromium.org,arv@chromium.org
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#25670}
2014-12-04 21:37:24 +00:00
adamk
66e2f60bf9 Optimize add/set/delete operations for string keys in Maps and Sets
Review URL: https://codereview.chromium.org/773993002

Cr-Commit-Position: refs/heads/master@{#25668}
2014-12-04 20:07:54 +00:00
adamk
34d9be2e58 Optimize non-mutation Map and Set operations for String keys
Review URL: https://codereview.chromium.org/757143002

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

BUG=v8:3663
LOG=N

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

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

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

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

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

Cr-Commit-Position: refs/heads/master@{#25597}
2014-12-02 08:17:05 +00:00
ulan
45a36948e1 Use weak cells in map checks in polymorphic ICs.
BUG=v8:3663
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25581}
2014-12-01 10:41:14 +00:00
halton.huo
82d0f800a2 Fix clang++ warnings on -Wtautological-constant-out-of-range-compare
BUG=v8:3730
LOG=N
R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25579}
2014-12-01 09:17:32 +00:00
dslomov
65aa17b9c3 harmony-classes: Implement 'super(...)' call syntactic restriction.
R=rossberg@chromium.org,arv@chromium.org
BUG=v8:3330
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25555}
2014-11-28 04:08:58 +00:00
caitpotter88
93cd816c07 Make TemplateLiteral hashing algorithm more memory efficient
Previously, a separate string to be hashed (in order to help determine the need to
use a cached Template Call Site) was built up by joining UTF8 spans within a template.

Now, the hash key is generated from the original spans, removing the need to allocate a new
buffer and copy bytes into it.

BUG=

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

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

R=rossberg@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25537}
2014-11-27 10:21:39 +00:00
yangguo
4590e4f4d6 Ensure double alignment when deserializing.
R=rmcilroy@chromium.org
BUG=chromium:436510
LOG=N
TEST=compile with V8_OOL_CONSTANT_POOL=1, run d8 with --verify-heap --test

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

Cr-Commit-Position: refs/heads/master@{#25534}
2014-11-27 09:22:28 +00:00
dcarney
4695abcafa Don't use ConsStringIterator to compute string hashes
R=yangguo@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25518}
2014-11-26 11:53:34 +00:00
yangguo
39d0b85430 Force inline Stirng::GetCharVector<>.
R=mvstanton@chromium.org
BUG=chromium:436447

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

Cr-Commit-Position: refs/heads/master@{#25504}
2014-11-25 15:30:03 +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
yangguo
7904576039 Refactor use of Isolate::use_crankshaft.
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25499}
2014-11-25 12:48:06 +00:00
yangguo
2ed39d936a Reset code age on the cloned code when serializing.
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25498}
2014-11-25 12:03:41 +00:00
ishell
1f5f088969 Reland of "Enable inobject double fields unboxing for 64-bit archs."
Review URL: https://codereview.chromium.org/751643005

Cr-Commit-Position: refs/heads/master@{#25483}
2014-11-24 14:54:38 +00:00
ishell
25b8efffa3 Reland of "TransitionArray::Search() now returns insertion index if the entry was not found."
Review URL: https://codereview.chromium.org/739013004

Cr-Commit-Position: refs/heads/master@{#25482}
2014-11-24 14:31:36 +00:00
andrew_low
c1bfc3485d Fix alignment of Code::kConstantPoolOffset.
This is needed for 64bit alignment sensitive platforms (PowerPC)
Exposed bugs with new GC compare and swap changes updating the
field.

Example failing test:
out/ppc64.debug/cctest  test-decls/ExistsInPrototype

BUG=

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

Cr-Commit-Position: refs/heads/master@{#25472}
2014-11-24 10:22:17 +00:00
yangguo
61bee5c898 Correctly escape RegExp source.
R=ulan@chromium.org
BUG=v8:3229
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25457}
2014-11-21 10:50:24 +00:00
yangguo
c64b47f552 When optimizing deserialized code, make sure IC state is preserved.
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25444}
2014-11-20 16:20:56 +00:00
ishell
40d4674d61 Removed unnecessary generalization of all fields in Map::GeneralizeRepresentation() (introduced in r25082).
This generalization caused unnecessary map deprecation when the transition tree of the split map is full.

BUG=chromium:431807
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#25427}
2014-11-19 18:10:30 +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
yangguo
472f8823a7 Do fewer encoding checks in FlatStringReader used in the JSON stringifier.
R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25416}
2014-11-19 11:17:01 +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
Michael Stanton
78cf188e18 Hydrogen should recognize literal smi arrays as fast literals.
R=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25387}
2014-11-18 09:27:56 +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
adamk
4a4158f363 Throw as per spec when modifying an Array with builtin methods
BUG=v8:3684
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#25364}
2014-11-14 19:42:15 +00:00
ishell@chromium.org
994094cc62 Revert "TransitionArray::Search() now returns insertion index if the entry was not found."
This reverts the commit because it possibly causes renderer hangs.

BUG=chromium:431807
LOG=N
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25338}
2014-11-13 16:59:44 +00:00
Erik Arvidsson
04719195a2 Classes: Cleanup default constructor flag
Now that we keep track of whether a function contains super we do not
need kDefaultConstructorCallSuper

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

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

Cr-Commit-Position: refs/heads/master@{#25337}
2014-11-13 16:50:21 +00:00
ishell@chromium.org
2e38f33911 Revert "TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have several entries for the same property name."
Revert "Fix for an assertion failure in Map::FindTransitionToField(...). Appeared after r25136."

This revert is made in order to revert r25099 which potentially causes renderer hangs.

R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25332}
2014-11-13 15:31:04 +00:00
ishell@chromium.org
bc8c41c08d Avoid fast short-cut in Map::GeneralizeRepresentation() for literals with non-simple transitions.
It started showing after r25253.

BUG=v8:3687
LOG=N
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25324}
2014-11-13 10:56:31 +00:00
Andy Wingo
910711a169 Move BailoutReason and flags computation to post-pass
R=svenpanne@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25321}
2014-11-13 09:57:56 +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
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
ishell@chromium.org
18cf6c9ac9 MapCache simplification. It is now a FixedArray that maps number of properties to a WeakCell with a Map.
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25253}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-10 18:04:17 +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
arv@chromium.org
b86c30a2b3 Classes: Partial fix for constructor not calling super
Introduce two new function kind, one for default constructor and one
for default constructor call super. Then when we are about to pares
these we just generate the correct AST in source.

BUG=v8:3661, v8:3672
LOG=Y
R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25222}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25222 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 16:39:27 +00:00
dslomov@chromium.org
1a64b02dcf harmony_scoping: Implement lexical bindings at top level
This implements correct semantics for "extensible" top level lexical scope.
The entire lexical scope is represented at runtime by GlobalContextTable, reachable from native context and accumulating global contexts from every script loaded into the context.

When the new script starts executing, it does the following validation:
- checks the GlobalContextTable and global object (non-configurable own) properties against the set of declarations it introduces and reports potential conflicts.
- invalidates the conflicting PropertyCells on global object, so that any code depending on them will miss/deopt causing any contextual lookups to be reexecuted under the new bindings
- adds the lexical bindings it introduces to the GlobalContextTable

Loads and stores for contextual lookups are modified so that they check the GlobalContextTable before looking up properties on global object, thus implementing the shadowing of global object properties by lexical declarations.

R=adamk@chromium.org, rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25220}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25220 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 16:29:45 +00:00
jkummerow@chromium.org
e2e9e1d3f6 Add FLAG_trace_maps
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25219}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-07 16:03:44 +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
ishell@chromium.org
33dde8d92c TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have several entries for the same property name.
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25136}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25136 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-05 09:26:48 +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
ishell@chromium.org
d7bc74f866 TransitionArray::Search() now returns insertion index if the entry was not found.
This is a prerequisite for https://codereview.chromium.org/661133002/.

R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25099}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-04 09:30:20 +00:00
ishell@chromium.org
a19c18ac6d Reland "Limit the number of transitions allowed per hidden class."
BUG=chromium:427813
LOG=N
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25082}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 16:46:29 +00:00
verwaest@chromium.org
604672e87f Changing the aging mechanism for script and eval caches.
Instead of using multiple generations for the code, first only store the hash that gets aged. Once a hash matched on a next probe, actually cache the code. Use regular code aging to remove entries from the cache.

BUG=
R=ulan@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25040}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-31 14:52:27 +00:00
yangguo@chromium.org
f01e08315f Assert that unoptimized code does not embed context-specific objects.
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25029}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25029 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-31 09:31:12 +00:00
dcarney@chromium.org
d24cd63fff allow disabling of ArrayBuffer neutering
BUG=
R=dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24973}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-29 10:37:12 +00:00
yangguo@chromium.org
0dfbf83468 Use shared function info for eval cache key.
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24927}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24927 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-28 10:01:44 +00:00
dusan.milosavljevic@imgtec.com
05effbaadf Make NextCodeLink pointer 8-byte aligned after GC pointer updating uses atomics.
After r24737 pointer updating is done by atomic operations which strictly
require target address to be 8-byte alignment on MIPS64.

The alignment is broken on 64-bit arches because InstructionSize is first field
and has Int size.

Order of fields in object layout are changed to make kNextCodeLinkOffset
divisible by 8. The size of code object header remains the same.

TEST=cctest/test-debug/* on MIPS64
BUG=
R=jkummerow@chromium.org, paul.lind@imgtec.com

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

Cr-Commit-Position: refs/heads/master@{#24914}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 18:24:39 +00:00
mvstanton@chromium.org
15c5c9d530 A type vector with multiple IC types needs metadata.
This CL adds a bitset to describe the type of IC in each IC slot.
This is necessary for clearing ICs of different types.

With FLAG_vector_ics off (the current state), it's not required because
CALL_IC is the only type of IC in the vector.

R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24911}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 16:34:39 +00:00
verwaest@chromium.org
d83acdf9a0 Revert "Limit the number of transitions allowed per hidden class." Due to crashes in ClearMapTransitions
BUG=
R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24900}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24900 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 11:58:18 +00:00
adamk@chromium.org
02d37b8f10 Widen definition of %HasComplexElements() to include non-enumerability
This avoids using the Sparse methods on objects with non-enumerable elements,
which can cause the 'enumerable: false' bit to get lost in the operation.

R=mstarzinger@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24883}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24883 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 18:04:13 +00:00
mvstanton@chromium.org
b0bfef00f3 Improve printing for Symbols.
Private symbols we create in the heap don't have names, but we can
resolve them to a constant string.

This gives handy debugger output like:

(gdb) job 0x2020c67d
0x2020c67d: [Symbol]
 - hash: 547385396
 - name: 0x20208091 <undefined> (uninitialized_symbol)
 - private: 1
 - own: 1
$7 = void
(gdb)

or with ShortPrint() in an array:

...
  [5]: 0x2020c67d <Symbol: 547385396 (uninitialized_symbol)>
...

Printing help for internal symbols

R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#24869}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24869 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 13:12:07 +00:00
verwaest@chromium.org
8189922e1e Limit the number of transitions allowed per hidden class.
Each time a transition is added to a hidden class, the whole
transitions array must be copied, which causes poor performance
in some circumstances.  This change limits the maximum size of
the transition array, avoiding this behavior in the pathological
case.  For example, this improves the performance of the EtchMark
benchmark by nearly 60%.

BUG=v8:3616
LOG=
R=verwaest@chromium.org, svenpanne@chromium.org

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

Patch from Kevin M. McCormick <mckev@amazon.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24857 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-24 05:29:54 +00:00
adamk@chromium.org
5f1ae66d56 Narrow cases where Sparse/Smart versions of Array methods are used
Added a new %HasComplexElements runtime function (meaning elements that are
non-writable, non-configurable, or have getters and setters) and use it
in UseSparseVariant to filter out cases where the sparse optimizations
can cause V8 to fall out of spec compliance.

Renamed SmartMove/SmartSlice to SparseMove/SparseSlice and guarded them
with the new and improved UseSparseVariant.

These two changes combine let us pass nearly every test in bug-2615.js,
as well as fixing reverse and join on sparse arrays.

Note that there are various test changes in this patch that correct existing
tests to match the correct-by-spec behavior.

This patch depends on https://codereview.chromium.org/666883009, which
better-aligns the behavior of SmartMove with SimpleMove.

BUG=v8:2615,v8:3612,v8:3621
LOG=y
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24855 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 18:21:50 +00:00
ishell@chromium.org
209855a6b6 More details printed for Map, DescriptorArray and TransitionArray.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24837 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 11:31:33 +00:00
yangguo@chromium.org
7753ace135 Small fixes for the code serializer.
- assertions regarding max heap object size.
- ensure string table capacity upfront.

R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 08:25:42 +00:00
dcarney@chromium.org
887b3ca079 Cleanup ConsStringIteratorOp.
R=yangguo@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-23 05:57:01 +00:00
verwaest@chromium.org
37b7dde54d Remove unused IsDirty
BUG=
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 11:21:54 +00:00
verwaest@chromium.org
ce9f799d39 Remove unused GetConstructor
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 10:51:02 +00:00
ulan@chromium.org
e777fc4126 Use smi zero instead of undefine_value to zap dead weak cells.
It is faster to test for smi zero from generated code.

BUG=
R=erikcorry@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-21 09:42:16 +00:00
verwaest@chromium.org
4b5ca4f396 Remove dead GeneralizeFieldRepresentation
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24741 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 12:32:23 +00:00
mvstanton@chromium.org
c688ebd858 vector-based ICs did not update type feedback counts correctly.
BUG=v8:3605
LOG=N
R=jkummerow@chromium.org, ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 11:42:56 +00:00
yangguo@chromium.org
8cc5d418ee Special handling for inline caches in code serializer.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-20 08:46:11 +00:00
dslomov@chromium.org
e149f81eba Keyed stores to super with numeric keys.
R=verwaest@chromium.org, arv@chromium.org, ishell@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-17 13:19:45 +00:00
wingo@igalia.com
0841f7241b Track usage of "this" and "arguments" in Scope
This adds flags in Scope to track wheter a Scope uses "this" and,
"arguments". The information is exposed via Scope::uses_this(),
and Scope::uses_arguments(), respectively. Flags for tracking
usage on any inner scope uses are available as well via
Scope::inner_uses_this(), and Scope::inner_uses_arguments().

Knowing whether scopes use "this" and "arguments" will be handy
to generate the code needed to capture their values when generating
the code for arrow functions.

BUG=v8:2700
LOG=
R=rossberg@chromium.org

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

Patch from Adrian Perez de Castro <aperez@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 13:19:36 +00:00
mvstanton@chromium.org
ecac8b0877 Eliminate special keyed load string stub in favor of uniform handlers.
KeyedLoadIC installs a special case if the receiver is a string.
Although there are several maps for strings, in practice we seem to
be able to treat them individually because a given KeyedLoad site
only sees 1-2 string types.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-16 11:42:47 +00:00
verwaest@chromium.org
23868b419c Optimize Function.prototype.call
BUG=
R=verwaest@chromium.org, jarin@chromium.org, jkummerow@chromium.org

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

Patch from Petka Antonov <p.antonov@partner.samsung.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 12:22:15 +00:00
erikcorry@chromium.org
3727a10d20 Use WeakCell to handle the script wrapper cache
The script wrapper cache used the API weak handles to provide a weak link from Script to ScriptWrapper. We want to change the way API weakness works, and in this context it's best to get rid of users of the API that don't need to be users.

R=ulan@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-15 10:11:08 +00:00
yangguo@chromium.org
9a21ba499c Catch exceptions thrown when enqueuing change records.
R=ishell@chromium.org
BUG=chromium:417709
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24608 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 14:46:11 +00:00
ulan@chromium.org
dd49272c00 Weak Cells
Introduce an object that holds a weak reference.
Design document: http://goo.gl/9dSvvy.

BUG=
R=erik.corry@gmail.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 14:43:45 +00:00
ishell@chromium.org
f58558d910 Preserve order of fields when doing slow-to-fast object migration.
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-14 11:03:35 +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
jkummerow@chromium.org
ed585c083c Fix type feedback for name-keyed stores
BUG=chromium:422212
LOG=n
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 13:27:52 +00:00
yangguo@chromium.org
6ca8f782aa Reset code age when serializing code objects.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-10 10:51:34 +00:00
yangguo@chromium.org
8659e50723 Update unicode to 7.0.0.
And do not use code points with PATTERN_* property for identifier start.
Maintain that \u180E is a white space character.

BUG=v8:2892
LOG=Y
R=dpino@igalia.com, mathias@qiwi.be

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:55:03 +00:00
mstarzinger@chromium.org
f99fd3867b Remove premordial math functions from native context.
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-08 14:42:31 +00:00
svenpanne@chromium.org
d6eea5742d Endian changes, support 64bit big endian
These are some changes split off from https://codereview.chromium.org/422063005

frames-inl.h, frames.h
based on 05db7d2d71
On 64bit big endian systems, the integer value is in the second slot, thus we need a new offset.

objects-inl.h, objects.h
based on 09b680b2af
Similarly, the hash slot is an integer field and we need to do the right thing on 64bit big endian systems

objects.cc
based on: 065742b078
Prettier printing of constant pools

test-strings.cc
based on:  9889d60cd6
endian fixes

BUG=
R=svenpanne@chromium.org

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

Patch from Andrew Low <andrew_low@ca.ibm.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-01 13:14: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
yangguo@chromium.org
381616fb70 Split even more runtime functions into separate files.
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 08:23:02 +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
dslomov@chromium.org
7e44408fc6 Stores and compound assignments for named super properties.
R=ishell@chromium.org, arv@chromium.org, verwaest@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 08:16:24 +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
verwaest@chromium.org
42770b1b21 Remove switch-clause limit
BUG=
R=danno@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 12:44:23 +00:00
verwaest@chromium.org
40bbeef0ee Make Map::Create always use the Object function, and remove the unused inobject properties
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 14:59:14 +00:00
titzer@chromium.org
5881257344 Widen the intake valve for TurboFan.
R=danno@chromium.org, mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 12:50:50 +00:00
erik.corry@gmail.com
35eec7c7ca Reland sticky regexps https://codereview.chromium.org/567313003/
R=svenpanne@chromium.org, yangguo@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24065 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 07:36:05 +00:00
rossberg@chromium.org
cc960f8034 Revert "RegExp: Add support for the ES6-proposed sticky flag"
Causes a flaky failure on buildbots. Here is the (deterministic) repro step (thanks to Michael Stanton):

first go to flag-definitions.h and set this to false.

DEFINE_BOOL(enable_sse4_1, false,
            "enable use of SSE4.1 instructions if available")

Run the following and it should fail:

tools/run-tests.py --arch=ia32 --mode=release cctest/test-api/Regress2107

R=yangguo@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 14:53:00 +00:00
mvstanton@chromium.org
200095c3e7 Move state sentinels into TypeFeedbackVector.
These sentinels were in the wrong place, living in only tangentially related class TypeFeedbackInfo, but they codify state in the TypeFeedbackVector.

R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 12:31:31 +00:00
erik.corry@gmail.com
63b1c1900d RegExp: Add support for the ES6-proposed sticky flag
R=yangguo@chromium.org, rossberg@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 11:32:39 +00:00
mvstanton@chromium.org
134a89b11f Introduce TypeFeedbackVector, as FixedArray grew constrictive.
The TypeFeedbackVector is poised to host significant functionality. While it
remains a FixedArray under the covers, we need a place to hold logic and
definitions unique to its function.

BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 09:59:53 +00:00
machenbach@chromium.org
0fce2201b9 Revert "Don't use OwnPrototypeChainLength in GetOwnPropertyNames"
This reverts commit r23997 for causing check failures in
layout tests:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064%20%28dbg%29/builds/498

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24018 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 06:57:12 +00:00
verwaest@chromium.org
d0ad526359 Don't use OwnPrototypeChainLength in GetOwnPropertyNames
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 09:56:51 +00:00
arv@chromium.org
7efd2eb144 Class syntax parsing
This implements parsing for ClassExpression and ClassDeclaration.
The runtime is not yet implemented and the value is currently
hard coded to undefined.

BUG=v8:3330
LOG=Y
R=dslomov@chromium.org, marja@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23988 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 22:15:39 +00:00
yangguo@chromium.org
7cb82a76b4 Reland "Remove V8_HOST_CAN_READ_UNALIGNED and its uses."
BUG=chromium:412967
LOG=N
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 10:54:49 +00:00
yangguo@chromium.org
a5027daf1c Revert "Remove V8_HOST_CAN_READ_UNALIGNED and its uses."
This reverts r23915.

TBR=machenbach@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23925 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 21:11:09 +00:00
yangguo@chromium.org
a5b4beffd0 Remove V8_HOST_CAN_READ_UNALIGNED and its uses.
R=jkummerow@chromium.org
BUG=chromium:412967
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 12:42:02 +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
4e670fd05e Rename ascii to one-byte where applicable.
R=dcarney@chromium.org, marja@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 12:38:12 +00:00
hpayer@chromium.org
d12834206d Don't record slots of objects that may contain raw values.
BUG=
R=mstarzinger@chromium.org, yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-09 10:07:29 +00:00
titzer@chromium.org
e1a948a6f8 Convert Linkage to use MachineSignature.
This simplifies the handling of MachineTypes for parameters and returns
used in tests, and overall improves the regularity with which they
are handled in both tests and in CallDescriptor.

R=bmeurer@chromium.org, jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-03 10:13:21 +00:00
bmeurer@chromium.org
7d0d01005c First step to cleanup the power-of-2 mess.
TEST=base-unittests,cctest,mjsunit
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23617 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 13:36:35 +00:00
bmeurer@chromium.org
30f18f0f7d Use Chrome compatible naming for compiler specifics.
Less useless creativity is best creativity!

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 07:07:52 +00:00
verwaest@chromium.org
5164b9a473 Delete unused DescriptorArray::Append with whitenesswitness
BUG=
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 13:01:55 +00:00
vegorov@chromium.org
f42f4b6490 Move kGroupCount out of DependencyGroup enum.
BUG=
R=svenpanne@chromium.org, yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23366 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 15:41:09 +00:00
mvstanton@chromium.org
983aa69aa1 Introduce two new symbols for vector based ICs.
Vector based load ics need a premonomorphic and generic symbol.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 15:17:06 +00:00
verwaest@chromium.org
79b539877e Minor LookupIterator cleanups
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 11:31:38 +00:00
jarin@chromium.org
d8295050d2 Fix deoptimization address patching in Turbofan to use safepoints.
Since the deopt patch address needs to be available during GC to
resolve safepoints, we need to move it to the code object (instead of
the deoptimization input data) - accessing a separate fixed array
is not safe during GC. This CL adds a deoptimization_pc field to
each safepoint. The fields points to the deoptimization block.

The CL also fixes wrong register allocator constraints for
frame states on calls. These should always live on the stack
because registers are not preserved during a call.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23334 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 07:02:19 +00:00
verwaest@chromium.org
37bf29e7e2 Change return-type of SetDataProperty to Handle.
BUG=
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:48:52 +00:00
verwaest@chromium.org
3baab5e688 Rewrite StoreIC handling using the LookupIterator. Continued from patch 494153002
BUG=
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23305 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:38:21 +00:00
dslomov@chromium.org
22d5ceb1f2 Implement Function.prototype.toMethod.
R=arv@chromium.org, verwaest@chromium.org
BUG=v8:3330
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-21 12:39:33 +00:00
verwaest@chromium.org
b29040a3f6 Get rid of last non-JSReceiver::Lookup usage of LookupOwn
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23250 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-20 16:25:40 +00:00
verwaest@chromium.org
26d72d5024 Get rid of GetLazyValue and clients.
This breaks fetching name of the constructor property of "Object"-labeled values in the heap-snapshot-generator until that's handlified and can be moved over to the LookupIterator.
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-20 10:37:23 +00:00
verwaest@chromium.org
1a8bed477e Use LookupIterator to transition to accessors
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-19 17:02:04 +00:00
verwaest@chromium.org
f268f02092 Get rid of LookupRealNamedProperty and LookupRealNamedPropertyInPrototypes and update clients
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-19 14:58:41 +00:00
vegorov@chromium.org
948a0dea44 When marking dependent code for deoptimization print the group that is being deoptimized.
Otherwise it is impossible to figure out from the --trace-deoptimization output what is going on.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-19 10:56:49 +00:00
verwaest@chromium.org
5598348272 Revert "Get rid of dead version of GetNormalizedProperty"
(Doh, landed too early)

R=jkummerow@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-19 08:14:01 +00:00
verwaest@chromium.org
c70ca1344a Get rid of dead version of GetNormalizedProperty
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23178 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-19 07:09:41 +00:00
verwaest@chromium.org
84591db11a Use LookupIterator in SetAccessor / DefineAccessor and remove "search_hidden_prototypes" from LookupOwn
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23169 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 15:08:14 +00:00
verwaest@chromium.org
604031af8b Use LookupIterator for CompileLoadInterceptor and delete Object::Lookup
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23168 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 15:03:13 +00:00
verwaest@chromium.org
6867595ce7 Rewrite DeleteProperty using the LookupIterator
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 14:46:38 +00:00
verwaest@chromium.org
41a970c5e7 Always assume SetOwnPropertyIgnoreAttributes to be CERTAINLY_NOT_FROM_KEYED
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23165 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 14:38:44 +00:00
verwaest@chromium.org
e1575f8369 Remove the extensibility flag. Instead just rely on hidden_string as indication.
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23164 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 14:27:24 +00:00
verwaest@chromium.org
e61f727705 Rewriting SetOwnPropertyIgnoreAttributes using the LookupIterator
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 14:26:30 +00:00
dslomov@chromium.org
65ae6e92ab Parse 'super' keyword.
BUG=v8:3330
LOG=N
R=arv@chromium.org, marja@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23157 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-18 12:35:34 +00:00
dslomov@chromium.org
eebb61a3f9 Fix OrderedHashTabelIterator accessors.
They might be undefined for uninitialized iterators.
The rest of the code is ready for this eventuality.

R=arv@chromium.org, adamk@chromium.org
BUG=403292
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-14 10:24:19 +00:00
dslomov@chromium.org
d2fe3e68ea Add "own" symbols support.
"Own" symbols are symbols that can only denote own properties of
objects.

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

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-12 15:28:20 +00:00
dslomov@chromium.org
119a90b869 Fix presubmit error.
No idea why they suddenly started to appear.

TBR=machenbach@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-11 22:17:19 +00:00
dslomov@chromium.org
dc4c277589 Revert "Add "own" symbols support."
This reverts commit r23056 for breaking Mac x64 test.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23060 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-11 21:44:08 +00:00
dslomov@chromium.org
88f65f2c52 Add "own" symbols support.
"Own" symbols are symbols that can only denote own properties of
objects.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23056 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-11 18:59:38 +00:00
verwaest@chromium.org
d094d0fb44 Tag all prototypes as proto, except those set using __proto__
BUG=
R=ishell@chromium.org, yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-11 14:00:58 +00:00
verwaest@chromium.org
a1f3f02415 Mark as prototype only after instantiating the function
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22979 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 16:14:22 +00:00
mvstanton@chromium.org
7b9e24e3fb Clean up IC tracing for CallICs.
CallICs have had some confused tracing, because the IC state is not
entirely captured by the installed code stub - it lives in the type
vector.

Change tracing to be able to use the vector state changes instead.
Introduced a DEFAULT state to be used by all vector-based ICs.

R=verwaest@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-07 15:33:14 +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
jkummerow@chromium.org
99062ae949 Track number of generic ICs per function
and use it to disable optimization if too many ICs are generic.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 17:06:01 +00:00
bmeurer@chromium.org
11fb976bf4 Revert "Unbreak build with clang."
This reverts commit r22878 and fixes the actual bug instead.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 14:19:22 +00:00
verwaest@chromium.org
fafa02ea52 Don't insert transitions between maps for prototypes.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 15:12:01 +00:00
verwaest@chromium.org
1404664e34 Ensure prototypes always stay fast by turning them fast again after an operation that turned them slow
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 15:06:28 +00:00
verwaest@chromium.org
f947eff31d Keep function.prototype fast.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-04 15:02:07 +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
yangguo@chromium.org
b22724e48b Fix issue with storing 31-bit bitfield as Smi.
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-31 07:50:26 +00:00
danno@chromium.org
a1383e2250 Land the Fan (disabled)
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 13:54:45 +00:00
verwaest@chromium.org
d07de6ed59 Encapsulate type in the PropertyHandlerCompiler
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22700 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-30 10:09:10 +00:00
verwaest@chromium.org
f08d2690c6 Fix Object.freeze with field type tracking.
Keep the descriptor properly intact while update the field type.

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 13:30:29 +00:00
yangguo@chromium.org
a8a02a51f1 Inline Math.fround in optimized code.
R=svenpanne@chromium.org
BUG=v8:3469
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:34:08 +00:00
verwaest@chromium.org
4a956ab1c2 Change Has* and Get*Attributes to return Maybe<*>, indicating possible exceptions.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-25 18:32:11 +00:00
hpayer@chromium.org
a5b923eca9 Use heap iterator in store buffer when page was swept precisely.
BUG=
R=rmcilroy@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 10:45:37 +00:00
yangguo@chromium.org
88000d039f Fix debugger-related issues in the code serializer.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 08:27:04 +00:00
yangguo@chromium.org
ed04566cba Correctly hook up back references to internalized strings in code deserializer.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-23 07:16:32 +00:00
verwaest@chromium.org
3bba0204c0 Support setting named properties on non-JSObjects.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22518 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-22 08:28:49 +00:00
verwaest@chromium.org
85bc602912 Reduce usage of StoreMode.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 16:01:50 +00:00
verwaest@chromium.org
f9d631b4bf Rename CurrentMapForDeprecated to TryUpdate, and introduce Map::Update which potentially deprecates
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 15:59:05 +00:00
yangguo@chromium.org
3b9f5e86d4 Store both major and minor key on code stubs.
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 13:10:14 +00:00
rossberg@chromium.org
8023c9f564 Implement basic code generation for arrow functions
Implements code generation for arrow functions by desugaring them into
a FunctionLiteral. For the moment, a normal FUNCTION_SCOPE is used, so
"this" and "arguments" behave as in normal functions. Implementing the
correct scoping rules is to be done later on.

BUG=v8:2700
LOG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22495 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 09:58:01 +00:00
jkummerow@chromium.org
1211f606ae Cache IC handlers on the prototype's map if possible
instead of on the receiver's map. Lazily overwrite cached handler if it is
identical to the handler that just missed.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-18 13:50:21 +00:00
verwaest@chromium.org
7e29b64e27 Reimplement SetProperty using the LookupIterator
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22482 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-18 13:47:25 +00:00
jochen@chromium.org
fe558594b9 Remove JSReceiver::GetPrototype and replace it with PrototypeIterator calls
BUG=none
R=verwaest@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 09:44:37 +00:00
yangguo@chromium.org
d1333142e2 Ship ES6 Math functions.
R=rossberg@chromium.org
BUG=v8:2938
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-16 14:00:15 +00:00
yangguo@chromium.org
a211a52a6e Store builtin index on the builtin code object.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22429 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-16 09:55:34 +00:00
yangguo@chromium.org
ef734e2686 Verify that source string matches serialized code.
R=mvstanton@chromium.org, vogelheim@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22417 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-16 06:59:14 +00:00
mstarzinger@chromium.org
ee51510674 Unify the IsShortcutCandidate predicate.
R=yangguo@chromium.org
BUG=v8:2803
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-15 09:19:22 +00:00
yangguo@chromium.org
fd57811644 Fix up internalized strings after deserializing user code.
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-15 08:46:47 +00:00
verwaest@chromium.org
6466ff39fb Remove PropertyAttributes from SetProperty
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 14:52:24 +00:00
jochen@chromium.org
712957548d Unify LookupIterator::GetRoot and Objects::GetRootMap
BUG=none
R=verwaest@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22369 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 10:54:24 +00:00
jochen@chromium.org
168742b81a Introduce a PrototypeIterator class and use it for prototype access
The new pattern is that we first get the map of the root of the
prototype chain using Object::GetMapRoot() and then walk up the
prototype chain using Map::prototype().

BUG=???
R=verwaest@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22365 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 07:19:49 +00:00
hpayer@chromium.org
0b38ffaca8 Revert "Precisely sweeping of scan-on-scavenge pages."
BUG=
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22319 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 12:22:01 +00:00
yurys@chromium.org
3994880715 Support ES6 Map and Set in heap profiler
Added special handling for Map and Set in the heap snapshot generator.

Extracted common base type from JSMap/JSSet similar to JSWeakMap/JSWeakSet.

After handling collection specific properties all collections are processed as regular JSObject to make sure all regular properties set on them are present in the heap snapshot.

BUG=v8:3368
LOG=Y
R=alph@chromium.org, rossberg@chromium.org

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22316 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 10:54:47 +00:00
yurys@chromium.org
3b2511ed4a Revert "Support ES6 Map and Set in heap profiler"
This reverts commit 47f86e067f due to some weird (likely unrelated) compilation errors.

BUG=v8:3368
TBR=rossberg

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22312 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 08:45:45 +00:00
yurys@chromium.org
47f86e067f Support ES6 Map and Set in heap profiler
Added special handling for Map and Set in the heap snapshot generator.

Extracted common base type from JSMap/JSSet similar to JSWeakMap/JSWeakSet.

After handling collection specific properties all collections are processed as regular JSObject to make sure all regular properties set on them are present in the heap snapshot.

BUG=v8:3368
LOG=Y
R=alph@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22311 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-10 07:24:52 +00:00
adamk@chromium.org
05463c4906 Avoid unnecessary hashing in OrderedHashTable
Add an overload of OrderedHashTable::FindEntry that takes
a hash along with the key to allow callsites which need to
re-use the hash (such as Add()) to avoid recomputing it.

On my Macbook this results in improvements on the Collections
microbenchmarks:
  Map-Collections: +4%
  Set-Collections: +5%

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-09 16:19:53 +00:00
dusan.milosavljevic@rt-rk.com
a0f6878a06 Add mips64 port.
Summary:

- Changes in common code are mainly boilerplate changes,
gyp and test status files updates.

- On mips64 simulator all tests pass from all test units.

- Current issues: mjsunit JS debugger tests fail randomly on HW in release mode.
Corresponding tests are skipped on HW.

- Skipped tests on mips64: test-heap/ReleaseOverReservedPages, mjsunit/debug-*

TEST=
BUG=
R=danno@chromium.org, plind44@gmail.com, ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-09 11:08:26 +00:00
rmcilroy@chromium.org
ae6496e6ea [Arm]: Optimize ConstantPoolBuilder::Populate code by minimizing calls to OffsetOfElementAt
Calling OffsetOfElementAt becomes expensive when compiling functions with many
constant pool entries.  This was causing a regression in MandreelLatency due
to the time spent populating the constant pool array for large compiled
functions.

This change avoids calling OffsetOfElementAt for each entry, and instead keeps
track of the current offsets in ConstantPoolBuilder::Populate.  This gives the
following improvements on a Nexus 5:

                     Inline CP  |  OOL CP (before CL)  |  OOL CP (after CL)
Mandreel:               4305    |        3961          |       4120
MandreelLatency:        2298    |        1198          |       1994
Octane Score:           5197    |        4982          |       5152

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-09 09:08:37 +00:00
hpayer@chromium.org
ac8b636756 Reland "Precisely sweep scan on scavenge pages and use heap iterator to iterate over them."
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-08 08:44:45 +00:00
jkummerow@chromium.org
d7ecf0e428 Fix build (solve OBJECT_PRINT dependency)
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-08 08:43:20 +00:00
verwaest@chromium.org
cef7b20ec0 Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag.
TBR=dslomov@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 13:27:37 +00:00
dslomov@chromium.org
7050e6fa06 Revert "Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag."
This reverts commit r22240 for breaking tests on Linux.

Revert "Remove SetOwnPropertyIgnoreAttribute uses from the bootstrapper"

This reverts commit r22241 for breaking tests on Linux.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 13:12:29 +00:00
verwaest@chromium.org
1ef7582e7e Only create arguments-maps in the bootstrapper, remove now obsolete ValueType flag.
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22240 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 12:21:01 +00:00
svenpanne@chromium.org
018ef484b9 More OStreamsUse OStreams more often.
This is a mostly mechanical CL (more than 90% Emacs macros and
query-replace-regexp) moving FILE*/StringStream*-based APIs to
OStream-based APIs. There are a few places where this had to stop,
otherwise the CL would be even bigger, but this can easily and
incrementally cleaned up later.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-07 09:57:29 +00:00
rmcilroy@chromium.org
40af47d46a [Arm]: Enable use of extended out-of-line constant pool for Arm.
- Adds support to the Arm assembler to use extended constant pools.
 - Update (set_)target_address_at to support extended constant pool load
   updates.
 - Replace Operand::is_single_instruction with Operand::instructions_required
   Due to the fact that different constant pool load types require different
   numbers of instructions.
 - Various cleanups of ConstantPoolBuilder to cleaner integration of the
   extended constant pool building.
 - Update GetRelocatedValue such that offsets to both map_check and bool_load
   are explicitly provided, rather than location of bool_load being inferred
   based on map_check, since the code inbetween is no longer of a predictable
   size.
 - Update MacroAssembler::GetRelocatedValueLocation() to add support for
   getting a value from an extended constant pool entry.
 - Update Debug::SetAfterBreakTarget() to use target_address_from_return_address
   when checking for debug breaks at constant pool load points.
 - Change ConstantPoolIterateBody to iterate over both heap and code pointer in
   the small section before moving onto the extended section, to work around the
   requirement of the serializer that pointers are iterated in-order.
 - Increase old_pointer_space SizeOfFirstPage() to offset the fact that constant
   pools are now in the old pointer space (rather than code).

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 17:01:14 +00:00
jkummerow@chromium.org
dfa8df2fdd Fix deopt reason printing to print stub failure reason with --trace-stub-failures --code-comments
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22193 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-03 11:47:31 +00:00
ishell@chromium.org
2fba190240 One of the fast cases in JSObject::MigrateFastToFast() should not be taken if the number of fields did not change.
BUG=chromium:390918
LOG=N
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 19:10:19 +00:00
verwaest@chromium.org
a1dd1a262c Revert "Remove special ExecutableAccessorInfo handling based on flag"
Temporarily reverting until we figure out how to handle the API cases that use accessors to lazily compute values.
dataAttributeGetterCustom in V8MessageEventCustom (at least) overwrites itself with the computed value using ForceSet. We can either force such clients to first use ForceDelete before caching, use some other caching mechanism; or provide an API for lazily computed properties.

TBR=dcarney@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22173 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 16:59:04 +00:00
verwaest@chromium.org
2350d46146 Remove special ExecutableAccessorInfo handling based on flag
This additionally removes special "prototype" handling for O.o, since it's broken; and added test.

BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22171 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 15:28:29 +00:00
yangguo@chromium.org
a481d753d0 Stack traces exposed to Javascript should omit extensions.
R=marja@chromium.org
BUG=v8:311
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 13:36:29 +00:00
marja@chromium.org
7717f2366f Handle "//# sourceURL" comments in the Parser instead of the JS.
BUG=v8:2948
LOG=N
R=svenpanne@chromium.org, yurys@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 07:01:31 +00:00
ishell@chromium.org
2c94151e6e Reland r22082 "Replace HeapNumber as doublebox with an explicit MutableHeapNumber."
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 15:02:31 +00:00
verwaest@chromium.org
26eae0c429 Clean up the global object naming madness.
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 12:12:34 +00:00
verwaest@chromium.org
6ff2a77364 Wrap InitializeProperty around SetOwnPropertyIgnoreAttributes and switch over uses
This is a step in the direction of disentangling all uses of SetOwnPropertyIgnoreAttributes so we can provide a more specific implementation for those usecases, and reduce the capabilities of those clients, avoiding subtle bugs.

InitializeProperty only supports adding properties to extensible objects that do not contain the property yet. JSGlobalProxies cannot have properties themselves, so are not supported either.

BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 13:48:57 +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
ishell@chromium.org
d1190c503d Revert "Replace HeapNumber as doublebox with an explicit MutableHeapNumber."
This reverts commit r22082 for breaking arm64 build.

TBR=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 10:19:31 +00:00
ishell@chromium.org
cea1824f58 Replace HeapNumber as doublebox with an explicit MutableHeapNumber.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22082 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 09:44:43 +00:00
mstarzinger@chromium.org
b7d3d51a62 Remove kDontInline and simplify compiler hints.
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-30 08:59:23 +00:00
yangguo@chromium.org
a2d15ce518 Compile optimized code with active debugger but no break points.
R=ulan@chromium.org
BUG=386492
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22029 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-26 06:32:51 +00:00
danno@chromium.org
8313c523b3 Optimize Map/Set.prototype.forEach
Instead of using an iterator result object and an entries array
(for Map) we introduce a new runtime function that uses an array
as an out param.

On the Map ForEach perf test this leads to a 2.5x performance
improvement. On the overall Map and Set tests this leads to a 18%
and 13% improvement respectively.

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

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

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-26 00:40:45 +00:00
mstarzinger@chromium.org
8a35e9ce47 Drop obsolete dont_optimize compiler hint.
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-25 12:12:21 +00:00
ishell@chromium.org
80e1bf42e5 More Map methods moved to private part.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-24 15:56:36 +00:00
ishell@chromium.org
ae1aaf7c76 Making MigrateToMap() a single bottleneck for all migrations except slow-to-fast case.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-24 15:28:29 +00:00
svenpanne@chromium.org
52fa41c3df Make Object::IsFoo const.
Removed a few useless const_casts on the way.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-24 09:47:25 +00:00
yangguo@chromium.org
438f49a322 Do not eagerly update allow_osr_at_loop_nesting_level.
Having debug break points prevents OSR. That causes
allow_osr_at_loop_nesting_level and the actually patched state
to go out of sync.

R=jkummerow@chromium.org
BUG=387599
LOG=Y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21958 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-24 09:31:30 +00:00
ishell@chromium.org
f73e033be7 Map::MigrateToMap() now supports fast case (transition from a map that has run out of property space).
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 14:23:25 +00:00
ishell@chromium.org
d2f229bf9f Several methods moved from JSObject to Map.
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 13:46:49 +00:00
alph@chromium.org
f61854fe0a Support LiveEdit on Arm64
BUG=368580
LOG=Y
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21937 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 13:20:26 +00:00
rmcilroy@chromium.org
1b080a76c1 [Arm] Various cleanups to the Arm assembler backend.
A couple of cleanups to the Arm backend to enable support of extended
OOL constant pools in a following CL.

 - Remove instruction pattern extern const's and replace their use with IsXXX()
   functions.
 - Do calculation of the target address of a load from constant pool in one
   place.
 - A couple of other small cleanups.

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21932 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 11:27:24 +00:00
verwaest@chromium.org
bd5f13ebc3 Remove specialized access checks and overwrites altogether. They are already handled by GetOwnPropertyAttributes (and GetPropertyAttributesWithFailedAccessChecks)
BUG=
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 09:11:45 +00:00
verwaest@chromium.org
d06afb3ce0 Remove AccessControl from AccessorPairs, as it's an invalid usecase of AllCan*
BUG=
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21918 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 09:02:16 +00:00
svenpanne@chromium.org
996eed315e Make our FOO::cast methods const.
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21916 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 08:51:13 +00:00
plind44@gmail.com
b6b57605ed MIPS: Fix big-endian after r21774/r21803.
Fix big-endian ordering of InstanceType and BitField by always loading
the pair as a 16-bit value, even in the API accessor. Clean up some
assertions.

R=danno@chromium.org, mtbrandy@gmail.com

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-20 23:02:36 +00:00
palfia@homejinni.com
57d0b53eed MIPS: Support LiveEdit.
Port r21895 (210f7aa)

BUG=368580
LOG=Y
R=jkummerow@chromium.org, palfia@homejinni.com

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

Patch from Balazs Kilvady <kilvadyb@homejinni.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21905 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-20 20:52:57 +00:00
svenpanne@chromium.org
dda110fd77 Make object accessors more const-correct.
Getting closer to making our IsFOO and FOO::cast methods const-correct...

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21897 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-20 10:31:17 +00:00
alph@chromium.org
969759fd3f Support LiveEdit on ARM
BUG=368580
LOG=Y
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-20 09:41:14 +00:00
mstarzinger@chromium.org
fec6e62dfb Check alpha-sorting of includes during presubmit.
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-20 08:40:11 +00:00
dcarney@chromium.org
bd3f8a524e Revert "Optimize Function.prototype.call"
This reverts commit r21840.

R=danno@chromium.org
LOG=y
BUG=chromium:385565

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-18 14:04:41 +00:00
verwaest@chromium.org
7005abf03b Optimize Function.prototype.call
- May inline the function, or call it directly, instead of going through call
- Supports arguments object escaping when it escapes to builtins (preparation for slice.call(arguments, ...) optimization)
- Both .call and .apply now support inlining when calling builtins indirectly

BUG=
R=verwaest@chromium.org, rossberg@chromium.org

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

Patch from Petka Antonov <p.antonov@partner.samsung.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-13 12:52:23 +00:00
jkummerow@chromium.org
8334faa0e0 Allow all Names to be fast property names
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-13 09:59:39 +00:00
verwaest@chromium.org
fd80653a4c Rewrite GetPropertyAttribute to use the LookupIterator
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-12 15:08:33 +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
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
verwaest@chromium.org
bb2b08b194 Implement LookupIterator designed to replace LookupResult
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-11 09:59:14 +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
bmeurer@chromium.org
0fcd89161b Fix invalid attributes when generalizing because of incompatible map change.
BUG=382143
LOG=y
TEST=mjsunit/regress/regress-382143
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21743 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-10 12:24:54 +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
jochen@chromium.org
3d882db26a Drop unused Object::GetMarkerMap method
R=verwaest@chromium.org
BUG=none
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21719 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-06 13:54:08 +00:00
rmcilroy@chromium.org
97c962c255 Add support for extended constant pool arrays.
This CL adds support for ConstantPoolArrays which contain an extended section.
This will be used to enable larger constant pools than can be addressed by a
single ldr with immediate offset instruction (which has a limit of a 4KB range).
Extended constant pools will have a small section, which is addressable via a
single ldr instruction, and an extended section, which will require a multi-
instruction sequence to load from.

Currently, no code uses the extended ConstantPoolArray's - this change will
be made in a followup CL.

A number of changes are made to the ConstantPoolArray object in order to
support this:
  - Small section layout is now entirely defined by the small layout bitmaps.
  - The ConstantPoolArray no longer extends FixedArrayBase since the length
    field is not useful for extended layouts.
  - Enums are used to represent the type of an entry and the layout section.
  - An iterator can be used to iterate through all elements of a given type.
  - A number of tests were added for these features.

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21653 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 16:22:10 +00:00
ishell@chromium.org
55443af648 Fixed lint errors caused by "runtime/references" rule (Is this a non-const reference?) and the rule itself is restored.
BUG=v8:3326
LOG=N
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 15:45:38 +00:00
hpayer@chromium.org
5a1364a588 Deopt maybe tenure allocation sites when semi-space is maximum size.
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21635 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 11:59:47 +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
hpayer@chromium.org
b8c3ee40ab Tenure allocation sites only when semi-space is maximum size.
BUG=
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 07:55:38 +00:00
bmeurer@chromium.org
2a2874b9c3 Inline fast path for Array.indexOf() and Array.lastIndexOf().
TEST=mjsunit/array-indexing
R=mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21617 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 04:01:34 +00:00
adamk@chromium.org
2e2eb6a07e Split Put into Put and Remove
No longer treat the hole as a removal. This removes one branch in
Put and cleans up the API.

BUG=None
LOG=Y
R=adamk@chromium.org, mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 00:53:16 +00:00
adamk@chromium.org
509a1a405c ES6: Add support for values/keys/entries for Map and Set
This allows code like this:

  var map = new Map();
  map.set(1, 'One');
  ...
  var iter = map.values();
  var res;
  while (!(res = iter.next()).done) {
    print(res.value);
  }

BUG=v8:1793
LOG=Y
R=mstarzinger@chromium.org

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

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 00:34:01 +00:00
yangguo@chromium.org
19c71f9e47 Some more debugger-related refactorings.
R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21607 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 12:51:19 +00:00
verwaest@chromium.org
60a71d8a8c Remove PROHIBITS_OVERWRITING as it is subsumed by non-configurable properties.
v8::DontDelete is set for Unforgeable properties, so just not setting PROHIBITS_OVERWRITING should be enough.

The secondary "feature" of not allowing accessors to be installed in extending objects is incorrect and confusing, given that it only applies to accessors but not to regular properties:
Object.defineProperty({__proto__:window}, "location", { value: 10 })
works where
Object.defineProperty({__proto__:window}, "location", { get: function() {} })
doesn't work.

LOG=y
R=dcarney@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 11:02:06 +00:00
verwaest@chromium.org
92022c1175 Clean up (Get|Set)Property(Attributes)WithFailedAccessChecks
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-02 10:59:11 +00:00
danno@chromium.org
8669cce70a Fix lint complaints in objects.h
R=rossberg@chromium.org
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 12:03:40 +00:00
mvstanton@chromium.org
8c54a373dd Changing the attributes of a data property implemented with
ExecutableAccessorInfo turns the property into a field. Better
to keep it as a callback, and correctly deal with the changed
property attributes.

R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21558 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 09:58:27 +00:00
verwaest@chromium.org
6b712555dd Cleanup GetPropertyWithCallback / SetPropertyWithCallback API
BUG=
R=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21555 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-28 09:29:27 +00:00
danno@chromium.org
6fa616ad73 Convert String array index/length hash to BitField
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 14:55:29 +00:00
jochen@chromium.org
276adeda1a Replace STATIC_CHECK with STATIC_ASSERT.
It's just an alias, and STATIC_ASSERT is used way more often

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:43:29 +00:00
yangguo@chromium.org
1630b6d83c Fix PathTracer.
When tracing, we abuse the map for marking, thereby mutating it.
FixedTypedArrayBase::size() uses the object's map, which causes crash.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 13:05:11 +00:00
yangguo@chromium.org
620555b495 Do not break in native code (including non-builtin debugger code).
R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 12:21:40 +00:00
danno@chromium.org
621c7eb673 Convert ElementsKind into a BitField
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21515 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-27 09:38:01 +00:00
bmeurer@chromium.org
683bc694ad Skip write barriers in the fast case when setting up local context.
The FastNewContextStub always allocates in new space, so we don't
need to update the write barrier when copying the parameters to
the newly allocated context.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-26 08:13:09 +00:00
ishell@chromium.org
7c55f645d5 Cleanup after inobject slack tracking improvement.
1) %SetExpectedNumberOfProperties() function removed.
2) Obsolete SharedFunctionInfo::BeforeVisitingPointers() removed.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 12:55:57 +00:00
bmeurer@chromium.org
a56bbe9203 Avoid dynamic initial map check when inlining call-new.
This improves check elimination and removes a load plus
a map check for every inlined call-new.

R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21458 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 09:30:47 +00:00
ishell@chromium.org
4b9c03050a Reland r21442 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21457 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-23 08:52:05 +00:00
ishell@chromium.org
9f3183f76b Revert "Reland r21346 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis.""
This reverts r21442.

TBR=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 17:13:28 +00:00
ishell@chromium.org
00b8e6128f Reland r21346 "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21442 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 16:22:23 +00:00
rossberg@chromium.org
06f746a576 Consistently say 'own' property
R=yangguo@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 15:27:57 +00:00
ishell@chromium.org
58932c6c44 Revert "Inobject slack tracking is done on a per-closure basis instead of per-shared info basis."
This reverts r21436.

TBR=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 13:38:32 +00:00
ishell@chromium.org
4a47cc5f63 Inobject slack tracking is done on a per-closure basis instead of per-shared info basis.
This fixes inobject slack tracking for prototype inheritance pattern that uses closures.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 12:35:45 +00:00
ulan@chromium.org
e56594f10a Fix Array.prototype.push and Array.prototype.unshift for read-only length.
BUG=
R=mstarzinger@chromium.org, mvstanton@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 08:09:57 +00:00
yangguo@chromium.org
ab3afc5722 Reland "Prevent liveedit on or under generators with open activations"
The change relative to the previous CL is a logic change in
DropActivationsInActiveThreadImpl.  The previous CL skipped the matcher
unless the frame was a JS frame; this was correct for
MultipleFunctionTarget but not for SingleFrameTarget.

I have not been able to reproduce the original failures on either
architecture (ia32 or x64; stack frame dropping is unsupported on other
architectures).

R=yangguo@chromium.org
LOG=N
TEST=mjsunit/harmony/generators-debug-liveedit.js
BUG=

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

Patch from Andy Wingo <wingo@igalia.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-22 07:32:59 +00:00
adamk@chromium.org
9f86a91e76 Teach OrderedHashSet::Remove to report whether it actually removed anything
This avoids an unnecessary runtime call from Set.prototype.delete().

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21408 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-21 12:16:47 +00:00
adamk@chromium.org
50f5a79590 Use SameValueZero for Map and Set
Instead of normalizing the keys we use SameValueZero for the actual
comparison.

BUG=v8:1622
LOG=Y
R=mstarzinger@chromium.org

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

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21400 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-21 08:47:02 +00:00
adamk@chromium.org
70c3a714a1 ES6 Map/Set iterators/forEach improvements
This changes how Map/Set interacts with its iterators. When the
underlying table is rehashed or cleared, we create a new table (like
before) but we add a reference from the old table to the new table. We
also add an array describing how to transition the iterator from the
old table to the new table.

When Next is called on the iterator it checks if there is a newer table
that it should transition to. If there is, it updates the index based
on the previously recorded changes and finally changes itself to point
at the new table.

With these changes Map/Set no longer keeps the iterators alive. Also,
as before, the iterators keep the underlying table(s) alive but not the
actual Map/Set.

BUG=v8:1793
LOG=Y
R=mstarzinger@chromium.org, rossberg@chromium.org

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

Patch from Erik Arvidsson <arv@chromium.org>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 14:22:05 +00:00
jkummerow@chromium.org
a3a5642097 Harden more runtime functions
BUG=chromium:372239
LOG=n
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 15:30:00 +00:00