ulan
a6da98d86f
Introduce a new phantom weakness type without finalization callback.
...
Handles of this type are automatically reset by the garbage collector
when their objects are not longer reachable.
The motivation is to reduce pause time of external.weak_global_handles
phase of the garbage collector by not maintaing the list of pending
callbacks and not calling the callbacks.
Local testing on discourse page of the v8.inifinite_scroll benchmark
shows 7x improvement for this GC phase.
Before:
external.weak_global_handles
len: 21
min: 0.0
max: 4.5
avg: 0.757142857143
After:
external.weak_global_handles
len: 21
min: 0.0
max: 0.5
avg: 0.109523809524
A follow-up patch will enable the new phantom handles in Chromium.
BUG=chromium:608333
LOG=NO
Review-Url: https://codereview.chromium.org/1950963002
Cr-Commit-Position: refs/heads/master@{#36095}
2016-05-09 07:18:00 +00:00
ulan
82dcb2beee
[API] Remove deprecated WeakCallbackData and related functions.
...
This removes:
- PersistentBase::SetWeak that takes WeakCallbackData.
The embedders should use the version that takes WeakCallbackInfo.
- PersistentBase::SetPhantom.
The embedders should SetWeak that takes WeakCallbackInfo.
Functions in DefaultPersistentValueMapTraits are changed to accept
WeakCallbackInfo instead of WeakCallbackData.
BUG=chromium:609808
LOG=NO
Review-Url: https://codereview.chromium.org/1953263002
Cr-Commit-Position: refs/heads/master@{#36079}
2016-05-06 13:18:07 +00:00
jochen
00a589d9ff
[api] Bring back finalizers on global handles
...
Seems like node.js depends on it in many places. At least try to get rid
of WeakCallbackData vs WeakCallbackInfo
BUG=
R=hpayer@chromium.org
LOG=y
Review URL: https://codereview.chromium.org/1883173002
Cr-Commit-Position: refs/heads/master@{#35528}
2016-04-15 12:59:47 +00:00
hlopko
da934aba4a
Fix comment for GlobalHandles::MarkIndependent
...
BUG=
LOG=no
Review URL: https://codereview.chromium.org/1845843003
Cr-Commit-Position: refs/heads/master@{#35171}
2016-03-31 15:59:43 +00:00
hlopko
fd43661c50
Add flag to trace object groups
...
BUG=chromium:468240
LOG=no
Review URL: https://codereview.chromium.org/1773273002
Cr-Commit-Position: refs/heads/master@{#34634}
2016-03-09 17:56:19 +00:00
mythria
959e050c1d
Adds a scavenge GC pass to collect unmodified references
...
Adds a scavenge GC pass that collects unmodified references instead of
processing object groups. This mode can be controlled by setting
FLAG_scavenge_reclaim_unmodified_objects. By default this is turned off.
Also, modified a test case to suit the handle the new GC pass.
BUG=v8:4421
LOG=N
Review URL: https://codereview.chromium.org/1410593005
Cr-Commit-Position: refs/heads/master@{#31599}
2015-10-27 12:22:31 +00:00
machenbach
2e1dbae08b
Revert of Changed scavenge GC to collect unmodified references (patchset #9 id:160001 of https://codereview.chromium.org/1358703003/ )
...
Reason for revert:
[Sheriff] Speculative revert due to crbug.com/539814
Original issue's description:
> Changed scavenge GC to collect unmodified references
>
> Added a scavenge GC pass that collects unmodified references instead of
> processing object groups. This mode can be controlled by setting
> FLAG_scavenge_remove_unmodified_objects. By default this is turned off.
> Also, modified a test case to suit the handle the new GC pass.
>
> BUG=v8:4421
> LOG=N
>
> Committed: https://crrev.com/6254019238a853c9f3c09d615ba153043f6957c7
> Cr-Commit-Position: refs/heads/master@{#31102}
TBR=jochen@chromium.org ,rmcilroy@chromium.org,mythria@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4421,chromium:539814
Review URL: https://codereview.chromium.org/1388133002
Cr-Commit-Position: refs/heads/master@{#31130}
2015-10-06 17:39:51 +00:00
mythria
6254019238
Changed scavenge GC to collect unmodified references
...
Added a scavenge GC pass that collects unmodified references instead of
processing object groups. This mode can be controlled by setting
FLAG_scavenge_remove_unmodified_objects. By default this is turned off.
Also, modified a test case to suit the handle the new GC pass.
BUG=v8:4421
LOG=N
Review URL: https://codereview.chromium.org/1358703003
Cr-Commit-Position: refs/heads/master@{#31102}
2015-10-05 16:01:43 +00:00
mstarzinger
6a769ac1df
[presubmit] Enable readability/namespace linter checking.
...
This enables linter checking for "readability/namespace" violations
during presubmit and instead marks the few known exceptions that we
allow explicitly.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/1371083003
Cr-Commit-Position: refs/heads/master@{#31019}
2015-09-30 13:47:11 +00:00
epertoso
e6e53390cc
Let the second pass phantom callbacks run in a separate task on the foreground thread.
...
R=jochen@chromium.org
LOG=y
BUG=
Review URL: https://codereview.chromium.org/1209403005
Cr-Commit-Position: refs/heads/master@{#29680}
2015-07-15 12:26:11 +00:00
dcarney
b0f3074b36
collect phantom handle data before it gets overwritten
...
R=jochen@chromium.org , hpayer@chromium.org , erikcorry@chromium.org
BUG=
Review URL: https://codereview.chromium.org/1064713005
Cr-Commit-Position: refs/heads/master@{#27786}
2015-04-13 13:15:17 +00:00
dcarney
2455aadf7b
two pass phantom collection
...
R=jochen@chromium.org , erikcorry@chromium.org
BUG=
Review URL: https://codereview.chromium.org/998253006
Cr-Commit-Position: refs/heads/master@{#27475}
2015-03-26 11:50:28 +00:00
dcarney
60c1ad026d
remove phantom naming from the api
...
since the old style weakness is slated for removal, we might as well reuse the name to limit confusion. additionally I simplified the callback type to a enum to either get internal field values or not
this should be a non-breaking change with the exception of PhantomPersistentValueMap, which is unused.
R=jochen@chromium.org , erikcorry@chromium.org
BUG=
Review URL: https://codereview.chromium.org/989153003
Cr-Commit-Position: refs/heads/master@{#27084}
2015-03-09 21:48:09 +00:00
hpayer
9b60e89482
Collect phantom callback data only once during gc. For scavenges, just consider the young handles referenced by young generation.
...
BUG=
Review URL: https://codereview.chromium.org/885553005
Cr-Commit-Position: refs/heads/master@{#26344}
2015-01-30 08:23:07 +00:00
erikcorry
8c58ed1a0c
Support old and new weak handle API
...
R=dcarney@chromium.org
BUG=
Review URL: https://codereview.chromium.org/863443005
Cr-Commit-Position: refs/heads/master@{#26246}
2015-01-23 11:28:54 +00:00
erikcorry
7db1759b65
Unify phantom and internal fields weak handle callbacks
...
R=dcarney@chromium.org
BUG=
Review URL: https://codereview.chromium.org/842153004
Cr-Commit-Position: refs/heads/master@{#26022}
2015-01-12 12:12:10 +00:00
erikcorry
3ff951943f
Phantom references support internal fields
...
BUG=
Review URL: https://codereview.chromium.org/753553002
Cr-Commit-Position: refs/heads/master@{#25889}
2014-12-18 16:10:15 +00:00
erikcorry@chromium.org
3d62e24c5f
Introduce phantom weak handles in the API and use them internally for debug info
...
R=ulan@chromium.org , jochen@chromium.org
BUG=
Review URL: https://codereview.chromium.org/687003005
Cr-Commit-Position: refs/heads/master@{#25083}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-03 17:24:22 +00:00
erikcorry@chromium.org
716648065a
Revert 'Introduce phantom weak handles in the API and use them internally for debug info'
...
Revert of https://codereview.chromium.org/649563006/ due to layout test
failures.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/677403002
Cr-Commit-Position: refs/heads/master@{#24901}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 12:03:39 +00:00
erikcorry@chromium.org
891e289d0f
Introduce phantom weak handles in the API and use them internally for debug info
...
R=jochen@chromium.org , ulan@chromium.org
BUG=
Review URL: https://codereview.chromium.org/649563006
Cr-Commit-Position: refs/heads/master@{#24899}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-27 11:05:11 +00:00
loislo@chromium.org
7e6f653792
HeapProfiler: remove obsolete AddImplicitReferences
...
it hasn't been used since r149579. More than one year ago.
BUG=
R=marja@chromium.org , yurys@chromium.org
Review URL: https://codereview.chromium.org/505983002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23400 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-26 13:05:54 +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
ernstm@chromium.org
8451b97b8e
Move node statistics from GCTracer to Heap.
...
R=hpayer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/397953012
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-07-17 13:00:46 +00:00
ulan@chromium.org
6a5ab4b2d0
Grow heap slower if GC freed many global handles.
...
BUG=263503
LOG=Y
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/352763002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-25 09:36:45 +00:00
jochen@chromium.org
56a486c322
Use full include paths everywhere
...
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps
BUG=none
R=jkummerow@chromium.org , danno@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/304153016
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00
bmeurer@chromium.org
d4b533d41b
Bulk update of Google copyright headers in source files.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/259183002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 06:42:26 +00:00
jochen@chromium.org
8795d02bfd
Enter a description of the change.
...
Reland 20968 - "Merge v8utils.* and utils.*"
> BUG=none
> R=mstarzinger@chromium.org
> LOG=n
>
> Review URL: https://codereview.chromium.org/256753002
BUG=none
LOG=n
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/250733004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 13:47:01 +00:00
jochen@chromium.org
f2a1176f90
Revert 20968 - "Merge v8utils.* and utils.*"
...
> BUG=none
> R=mstarzinger@chromium.org
> LOG=n
>
> Review URL: https://codereview.chromium.org/256753002
BUG=none
LOG=n
TBR=danno@chromium.org
Review URL: https://codereview.chromium.org/250823003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20975 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 12:21:32 +00:00
jochen@chromium.org
c0380f6a56
Merge v8utils.* and utils.*
...
BUG=none
R=mstarzinger@chromium.org
LOG=n
Review URL: https://codereview.chromium.org/256753002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20968 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 10:57:34 +00:00
dcarney@chromium.org
75ad285860
Implement PersistentValueMap, a map that stores UniquePersistent values.
...
This is preparatory work to get rid of UnsafePersistent in blink.
The previous version had to be reverted due to timeouts in win32/Debug: https://codereview.chromium.org/197173002/
The timeouts happened because the STL version on that platform contains sanity checking code which opens a 'debug window' in the GUI, patiently waiting for the user to click ok/cancel/somethirdoption. It turns out, the cause for that debug window was totally valid and the test had a use-after-free issue.
The 1st patch set is the code as before. The 2nd patch set contains the fix.
Related blink changes are here: https://codereview.chromium.org/180363004/
This patch is largely based on https://codereview.chromium.org/175503003/ , with some methods added to support the blink change mentioned above.
BUG=
R=dcarney@chromium.org
Review URL: https://codereview.chromium.org/197263002
Patch from Daniel Vogelheim <vogelheim@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19873 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 07:10:59 +00:00
dslomov@chromium.org
79e817aac4
Revert "Implement PersistentValueMap, a map that stores UniquePersistent values."
...
and "Win64 fix for r19833."
This reverts commits r19833 and r19837 for breaking Windows tests
(test-api/PersistentValueMap).
TBR=vogelheim@chromium.org ,dcarney@chromium.org
Review URL: https://codereview.chromium.org/197173002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 11:40:40 +00:00
dcarney@chromium.org
25468478e3
Implement PersistentValueMap, a map that stores UniquePersistent values.
...
This is preparatory work to get rid of UnsafePersistent in blink.
Related blink changes are here: https://codereview.chromium.org/180363004/
This patch is largely based on https://codereview.chromium.org/175503003/ , with some methods added to support the blink change mentioned above.
BUG=
R=dcarney@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/189463019
Patch from Daniel Vogelheim <vogelheim@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19833 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 09:11:25 +00:00
jochen@chromium.org
00ba711658
Use a per-isolate cache for the date object JS bits
...
The old per-context cache made it difficult for the embedder to notify
v8 of date/time configuration changes. The embedder had to enter all
contexts for the isolate and notify v8 for each context.
With the new per-isolate cache, the embedder only needs to notify v8
once per isolate.
BUG=348856
LOG=y
R=dcarney@chromium.org , ulan@chromium.org
TEST=cctest/test-date
Review URL: https://codereview.chromium.org/189913023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 09:04:14 +00:00
svenpanne@chromium.org
402139f686
Remove all stuff marked as V8_DEPRECATED.
...
R=jochen@chromium.org , mstarzinger@chromium.org , yurys@chromium.org
Review URL: https://codereview.chromium.org/99193002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18333 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-18 08:09:37 +00:00
dcarney@chromium.org
66c8b527e8
new persistent semantics
...
adds copying and autodispose as traits
R=marja@chromium.org , mstarzinger@chromium.org , svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/23401003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-09 09:25:23 +00:00
dcarney@chromium.org
b1bc71a510
abstract eternal into class
...
R=rossberg@chromium.org , svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/22795004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16316 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-26 09:41:22 +00:00
jkummerow@chromium.org
1fcccc22ee
Revert "Make GlobalHandle::NodeBlock deletable"
...
This reverts r16040 due to OOM crashes.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/22970004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16186 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-14 12:40:44 +00:00
dcarney@chromium.org
207396101f
introduce eternal handles
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/21133006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-05 09:46:23 +00:00
dcarney@chromium.org
14ed15e7e1
Make GlobalHandle::NodeBlock deletable
...
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/21042004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16040 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-05 07:34:29 +00:00
yurys@chromium.org
6f09cb471b
Delete deprecated methods from v8-profiler.h
...
All these methods were already marked as V8_DEPRECATED in V8 Version 3.18.0 (see https://code.google.com/p/v8/source/browse/trunk/include/v8-profiler.h?r=14304 ) so it is time to delete them.
BUG=None
R=loislo@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/17524007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15260 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 07:56:22 +00:00
dcarney@chromium.org
595d0ea8b0
remove old MakeWeak
...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/16160010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-03 08:17:04 +00:00
dcarney@chromium.org
7b82ad9b98
de-isolate remaining persistent calls
...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/16153003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14868 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-29 08:32:45 +00:00
dcarney@chromium.org
366948840a
de-isolate Persistent::Dispose
...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/15648008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14764 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 08:19:27 +00:00
dcarney@chromium.org
42a8ff87ba
add weakcallback without persistent copying
...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/14908004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-07 10:44:30 +00:00
mstarzinger@chromium.org
e7c1f322a4
New GC APIs, try 2.
...
With these APIs, the embedder doesn't need to copy Persistent handles around.
BUG=
Review URL: https://codereview.chromium.org/14007008
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 15:59:23 +00:00
mstarzinger@chromium.org
091f0b7f35
Revert the commits adding new GC-related APIs.
...
We need to solve efficiency problems first.
This reverts the following revisions: 14283 14286 14221 14215
BUG=
Review URL: https://codereview.chromium.org/14294009
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-16 16:37:04 +00:00
mstarzinger@chromium.org
e8bc8d76ae
New GC related APIs: Implicit references.
...
When using these APIs, the embedder doesn't need to copy Persistent handles around.
BUG=NONE
Review URL: https://codereview.chromium.org/14175005
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14283 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-16 12:57:01 +00:00
jkummerow@chromium.org
586c4e74b6
Replace OS::MemCopy with OS::MemMove (just as fast but more flexible).
...
Review URL: https://codereview.chromium.org/13932006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-16 12:30:51 +00:00
mstarzinger@chromium.org
5de8e81c1f
Add tests for GlobalHandles::IterateObjectGroups.
...
BUG=none
TEST=cctest/test-global-handles
Review URL: https://codereview.chromium.org/13952005
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-12 09:54:51 +00:00
mstarzinger@chromium.org
45125e6480
New GC related APIs.
...
When using these APIs, the embedder doesn't need to copy Persistent handles around.
BUG=NONE
Review URL: https://codereview.chromium.org/13786002
Patch from Marja Hölttä <marja@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-10 14:53:03 +00:00