Commit Graph

425 Commits

Author SHA1 Message Date
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
ulan@chromium.org
de672226c7 Clear old backing store of WeakCollection on updates.
Not clearing can lead to a crash under following conditions:
1. Backing store of a weak map is allocated in large object space.
2. The backing store is marked incrementaly via the weak map.
3. The weak map is updated and gets a new backing store.
4. The store buffer overflows and marks the chunk of the old backing store as
"scan on scavenge."
5. Mark-compact collection kills some elements of the weak map. Note that the
old backing store survives because it was marked incrementally, but its dead
elements are not cleared.
6. Scavenger iterates over the old backing store, tries to move a dead object
and crashes.

BUG=v8:3631
LOG=N
TEST=cctest/test-heap/Regress3631
R=jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#25032}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25032 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-31 13:11:44 +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
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
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
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
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
hpayer@chromium.org
c7149e50a3 Fix IdleNotificationFinishMarking test on slow devices.
BUG=
TBR=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 18:54:20 +00:00
hpayer@chromium.org
d1e693a43a Check if there is still time before finalizing an incremental collection.
BUG=
R=erik.corry@gmail.com, ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-13 16:27:55 +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
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
verwaest@chromium.org
2d3b7f20b1 Fix test: manually call GC since 0 allocations will not cause GC
BUG=
R=jkummerow@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 14:19:26 +00:00
erik.corry@gmail.com
f1e82cc169 The --optimize-for-size flag should imply a small semi-space
R=hpayer@chromium.org, mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24069 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 09:15:47 +00:00
jochen@chromium.org
a66600f09e Fix leak in cctest/test-heap/ReleaseStackTraceData
TBR=svenpanne@chromium.org
BUG=none
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24068 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 08:25:56 +00:00
jochen@chromium.org
6a14d7d50f Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created
> We also initialize the Isolate on creation.
>
> This should allow for getting rid of the last remaining default isolate
> traces. Also, it'll speed up several isolate related operations that no
> longer require locks.
>
> Embedders that relied on v8::Isolate to return an uninitialized Isolate
> (so they can set ResourceConstraints for example, or set flags that
> modify the way the isolate is created) should either do the setup before
> creating the isolate, or use the recently added CreateParams to pass e.g.
> ResourceConstraints.
>
> BUG=none
> LOG=y
> R=svenpanne@chromium.org
>
> Review URL: https://codereview.chromium.org/469783002

BUG=none
LOG=y
TBR=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 08:01:35 +00:00
jochen@chromium.org
525ed1130e Revert "Require V8 to be explicitly initialized before an Isolate is created"
LOG=n
TBR=svenpanne@chromium.org
BUG=none

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 21:57:10 +00:00
jochen@chromium.org
27f3cc1b9c Require V8 to be explicitly initialized before an Isolate is created
We also initialize the Isolate on creation.

This should allow for getting rid of the last remaining default isolate
traces. Also, it'll speed up several isolate related operations that no
longer require locks.

Embedders that relied on v8::Isolate to return an uninitialized Isolate
(so they can set ResourceConstraints for example, or set flags that
modify the way the isolate is created) should either do the setup before
creating the isolate, or use the recently added CreateParams to pass e.g.
ResourceConstraints.

BUG=none
LOG=y
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24052 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 21:07:50 +00:00
hpayer@chromium.org
1373784d83 Capacity returns allocatable memory and TotalCapacity returns allocatable plus non-allocatable memory for the new space.
BUG=
R=ulan@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 12:52:12 +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
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
mstarzinger@chromium.org
bf71b5ab69 Enable TurboFan deopts for test-heap/NextCodeLinkIsWeak.
R=jarin@chromium.org
TEST=cctest/test-heap/NextCodeLinkIsWeak

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23370 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-25 16:39:25 +00:00
verwaest@chromium.org
30c3981c2c Move IC code into a subdir and move ic-compilation related code from stub-cache into ic-compiler
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-22 11:43:39 +00:00
jarin@chromium.org
0caf06dbd2 Remove the flaky store buffer test for maps.
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-14 11:31:42 +00:00
jarin@chromium.org
18a10e3482 Fix pointer iteration for maps.
BUG=
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23114 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-14 07:41:33 +00:00
adamk@chromium.org
bcf8b05072 Enable ES6 Map and Set by default
In doing so also remove all references to the --harmony-collections flag.
Due to the way context snapshotting works, it's not possible to simply
enable the flag by default.

Depends on ES6 Symbols: https://codereview.chromium.org/421313004

BUG=v8:1622
LOG=Y
R=arv@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22889 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 19:37:32 +00:00
hpayer@chromium.org
2083600aee Remove all encountered weak maps from the list of weak collections when incremental marking is aborted.
BUG=399527
LOG=n
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22844 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-05 07:29:13 +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
mstarzinger@chromium.org
947740a6d8 Revert "Make --always-opt also optimize toplevel code."
TBR=ishell@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22670 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 13:08:51 +00:00
mstarzinger@chromium.org
34f5edd500 Make --always-opt also optimize toplevel code.
R=jacob.bramley@arm.com, titzer@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-29 11:41:42 +00:00
ishell@chromium.org
f2e5395a32 Regression test for chromium:388880 added.
BUG=chromium:388880
LOG=N
R=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22652 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-28 15:33:24 +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
jochen@chromium.org
cb8105e223 Move gc notifications from V8 to Isolate and make idle hint mandatory
Embedders should use e.g. isolate->IdleNotification(1000) instead
of v8::V8::IdleNotification()

BUG=397026
R=hpayer@chromium.org, ernstm@chromium.org
LOG=y

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-24 08:28:02 +00:00
mvstanton@chromium.org
6d3fc8a322 Introduce FLAG_vector_ics.
When FLAG_vector_ics is true, then AST nodes that use Load and KeyedLoad ICs
will allocate a type vector slot to store feedback information. Full codegen
will emit a load of the slot into a register if the flag is on.

Support is incomplete, right now the IC doesn't know how to use the feedback
slot.

R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-21 11:19:56 +00:00
hpayer@chromium.org
6067ca6a62 Concurrent/parallel precise sweeping.
BUG=
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22471 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-18 11:04:20 +00:00
hpayer@chromium.org
9180b1a319 Remove sequential sweeping mode and perform lazy sweeping when no sweeper threads are active.
BUG=
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-15 08:24:44 +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
titzer@chromium.org
f28f6102f8 Revert "Remove sequential sweeping mode and perform lazy sweeping when no sweeper threads are active."
Reason: broke win64 build

This reverts commit 221bfdd2da2b6f3c1cbe77c5d197f1ea626b0bd2.

TBR=hpayer@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22374 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 13:02:36 +00:00
hpayer@chromium.org
030df48ced Remove sequential sweeping mode and perform lazy sweeping when no sweeper threads are active.
BUG=
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22372 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-14 11:31:22 +00:00
dslomov@chromium.org
1b5958382a Revert "Remove sequential sweeping mode and perform lazy sweeping when no sweeper threads are active."
This reverts commit r22346 for breaking GC stress tests.

TBR=hpayer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22349 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 11:33:57 +00:00
hpayer@chromium.org
6d022494ec Remove sequential sweeping mode and perform lazy sweeping when no sweeper threads are active.
BUG=
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-11 09:51:34 +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
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
yangguo@chromium.org
44d6ef37ab Reland "Fix stack trace accessor behavior."
BUG=v8:3404
LOG=N
R=verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-02 14:18:10 +00:00
hpayer@chromium.org
9bc3d1a8fe Added a promotion queue unit test that test promotion queue memory corruption
by semi-space evacuation.

BUG=
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-01 18:48:02 +00:00
hpayer@chromium.org
100b9d836f An object should only be promoted to the old generation if it survived a scavenge operation.
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-23 08:50:54 +00:00
jochen@chromium.org
9c2019b25c Remove dependency on Vector from platform files
Add wrappers to utils.h instead.

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

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

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

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

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

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

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

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21720 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-06 14:05:10 +00:00
ishell@chromium.org
b58a08d998 Fix PathTracer.
When tracing, we abuse the map for marking, thereby mutating it.
HeapObject::map() takes care of recovering unabused value.

R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:28:38 +00:00