yurys@chromium.org
e87fe7b71f
Simplify allocation tracker API
...
Deprecated separate methods for starting/stopping allocation tracking in favor of a bool param to Start/StopTrackingHeapObjects.
BUG=None
LOG=N
R=loislo@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/96933003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18197 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-02 14:27:24 +00:00
yurys@chromium.org
5567426483
Do not put allocated block into HeapObjectsMap
...
Heap allocation reported to AllocationTracker may be later divided into several objects so it is incorrect to put the block as a new HeapObject into the map. We will match allocated block with actual HeapObjects later when iterating Heap (will be addressed in another patch). Since the objects are not assigned an id immediately after creation we need to call FindOrAddEntry when finding id for SharedFunctionInfo during stack crawling.
Removed hooks for tracking creation of AllocationMemento. AllocationMemento is not a HeapObject and should be considered as implementation overhead.
Renamed NewObjectEvent to AllocationEvent which is more precise in case of folded allocations and when a part of the new block becomes AllocationMemento.
BUG=None
LOG=N
R=loislo@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/95283003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18151 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-29 09:54:38 +00:00
yurys@chromium.org
c7053c8a37
Move heap profiler state flags to HeapProfiler
...
- moved is_tracking_objects_ flag to HeapProfiler and renamed it to is_tracking_objects_moves_
- Removed redundant call to UpdateHeapObjectsMap
BUG=None
LOG=N
R=loislo@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/94993004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18149 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-29 09:47:32 +00:00
yurys@chromium.org
e7511b6234
Do not recompile existing functions when enabling allocation tracking
...
Now that we don't have special hooks for the allocations in the generated code there is no need to recompile existing functions when enabling allocation tracking.
BUG=chromium:27798
LOG=N
R=loislo@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/67743006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17932 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-20 14:57:39 +00:00
yangguo@chromium.org
e2563d7a8e
Make number of available threads isolate-dependent and expose it to ResourceConstraints.
...
R=svenpanne@chromium.org
BUG=v8:2991
LOG=Y
Review URL: https://codereview.chromium.org/68203029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-19 11:52:47 +00:00
mstarzinger@chromium.org
9f4591c368
Add ability to disable inline bump-pointer allocation.
...
R=ulan@chromium.org , yurys@chromium.org
TEST=cctest/test-heap/DisableInlineAllocation
Review URL: https://codereview.chromium.org/69953023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17752 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-14 15:14:37 +00:00
mstarzinger@chromium.org
8f611593a4
Simplify current inline allocation tracking mechanism.
...
R=yurys@chromium.org
Review URL: https://codereview.chromium.org/65043006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17626 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-11 18:00:52 +00:00
yurys@chromium.org
15db1d7c3a
Track JS allocations as they arrive with no affection on performance when tracking is switched off.
...
BUG=277984
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/22852024
Patch from Alexandra Mikhaylova <amikhaylova@google.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-10-14 12:41:28 +00:00
yangguo@chromium.org
02674ee414
Keep two empty lines between declarations for cpp files
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/18509003
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:52:11 +00:00
yurys@chromium.org
44981e4f5e
Remove deprecated heap profiler methods from V8 public API
...
v8::HeapProfiler::FindHeapSnapshot was already deprecated when 3.19 branch was created (https://code.google.com/p/v8/source/browse/branches/3.19/include/v8-profiler.h ).
BUG=None
R=loislo@chromium.org , yangguo@chromium.org
Review URL: https://codereview.chromium.org/18701002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15493 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 16:34:07 +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
yurys@chromium.org
04cb86899c
Deprecate HeapSnapshot type
...
Re-landing r14005 that was reverted in r14031
TBR=danno
BUG=None
Review URL: https://codereview.chromium.org/13430003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14107 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-02 08:09:59 +00:00
yurys@chromium.org
047f6f97d9
Isolatify HeapProfiler
...
Re-landing r13997 that was reverted in r14031
TBR=danno
BUG=None
Review URL: https://codereview.chromium.org/13458003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-02 08:03:01 +00:00
danno@chromium.org
ed3809c318
Maintain API compatibility with older versions of V8.
...
Revert "Allow recording individual samples in addition to the aggregated CPU profiles"
Revert "Isolatify CPU profiler"
Revert "Isolatify HeapProfiler"
Revert "Deprecate HeapSnapshot type"
Revert "Isolatify CPU profiler public API"
Revert "MSVS compilation fix after r14006"
Revert "Add methods to allow resuming execution after calling TerminateExecution()."
R=jkummerow@chromium.org ,mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/12475016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-21 14:42:17 +00:00
yurys@chromium.org
8204dfa186
Deprecate HeapSnapshot type
...
There is only one type of heap snapshot - kFull and we are not going to add any new types.
BUG=None
Review URL: https://codereview.chromium.org/12943004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14005 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-20 12:41:00 +00:00
yurys@chromium.org
d447716029
Isolatify HeapProfiler
...
Added instance method on v8::Isolate for retrieving instance of v8::HeapProfiler for that isolate. All static methods of v8::HeapProfiler are deprecated, corresponding instance methods are added to v8::HeapProfiler.
All static methods on v8::internal::HeapProfiler were converted into instance ones.
BUG=None
Review URL: https://codereview.chromium.org/12907006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13997 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-20 08:38:17 +00:00
loislo@chromium.org
ea0817c7d4
Split profile-generator
...
CPU profile code and Heap Snapshot code are completely unrelated to each other.
So we can extract heap snapshot part into separate file.
No functional changes.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/12314027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 12:10:40 +00:00
svenpanne@chromium.org
7b45ab9501
Don't use TLS for space iterators.
...
This is not only inherently slow, but it also forces the caller to enter an
Isolate before. Both is bad, so we have to do some heap plumbing.
BUG=v8:2531
Review URL: https://codereview.chromium.org/12217106
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-11 13:02:20 +00:00
yurys@chromium.org
cec0745aa2
Introduce callback for resolving global object name while taking heap snapshot
...
Heap profiler currently gets "document" of global objects while taking snapshot (to later retrieve its "URL"). This is unsafe as there may be no current v8 context when the property is requested while corresponding property accessor may make some assumptions about the context stack during its invokation. Several crashes were reported due to this problem:
https://bugs.webkit.org/show_bug.cgi?id=103076
https://crbug.com/162121
https://crbug.com/132727
This patch adds a callback for resolving global object names and avoid the crashes.
Review URL: https://codereview.chromium.org/11415203
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-12-04 17:17:55 +00:00
alexeif@chromium.org
c1944660f5
Implement heap profiler memory usage reporting.
...
Review URL: https://chromiumcodereview.appspot.com/10535096
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11793 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-13 11:02:24 +00:00
loislo@chromium.org
463a6ffdd4
Expose last seen heap object id via v8 public api.
...
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10444137
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-01 16:10:52 +00:00
yurys@chromium.org
4f5d3361a2
Remove extra whitespace added in r11339
...
TBR=mnaganov
Review URL: https://chromiumcodereview.appspot.com/9956167
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11346 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-17 08:59:43 +00:00
yurys@chromium.org
1ce7d5d0d4
Add method for resolving SnapshotObjectId by given object
...
Review URL: https://chromiumcodereview.appspot.com/10094011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-16 15:36:19 +00:00
loislo@chromium.org
d1f83dd95a
This patch is introducing a way to grab heap stats.
...
The idea is to monitor the heap regulary and track each object in the heap.
With this data we will be able do draw heap usage diagram.
Where X is time and Y is the number of objects.
BUG=none
TEST=HeapSnapshotObjectsStats
Review URL: https://chromiumcodereview.appspot.com/10049002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-13 08:52:25 +00:00
erik.corry@gmail.com
b3e0761e38
Cosmetic changes ("set up" is a verb, "setup" is a noun).
...
Review URL: http://codereview.chromium.org/9139051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10399 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-13 13:09:52 +00:00
vegorov@chromium.org
ac36cb4504
Merge experimental/gc branch to the bleeding_edge.
...
Review URL: http://codereview.chromium.org/7945009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-19 18:36:47 +00:00
sgjesse@chromium.org
8a6108de95
Remove the ability to compile without logging and profiling
...
The preprocessor defines ENABLE_LOGGING_AND_PROFILING and ENABLE_VMSTATE_TRACKING has been removed as these where required to be turned on for Crankshaft to work. To re-enable reducing the binary size by leaving out heap and CPU profiler a new set of defines needs to be created.
R=ager@chromium.org
BUG=v8:1271
TEST=all
Review URL: http://codereview.chromium.org//7350014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-13 09:09:04 +00:00
mikhail.naganov@gmail.com
f4bf8f8fee
Remove obsolete aggregating and non-working producers heap profilers.
...
2000 LOC are gone!
R=sgjesse@chromium.org
BUG=1481
Review URL: http://codereview.chromium.org/7247018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-24 11:38:47 +00:00
vitalyr@chromium.org
179702df03
Inline more zone stuff.
...
R=ager@chromium.org
Review URL: http://codereview.chromium.org/7066004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-23 22:23:50 +00:00
mikhail.naganov@gmail.com
b2b5d2777e
Add support for CPU and heap profiles deletion.
...
R=vitalyr@chromium.org
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6685084
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-22 16:10:01 +00:00
vitalyr@chromium.org
7976ca2cbc
Merge isolates to bleeding_edge.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 20:35:07 +00:00
vitalyr@chromium.org
76e226f832
Revert r7268: it borked the history.
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7269 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 19:41:05 +00:00
vitalyr@chromium.org
6ff7fdebd3
Merge isolates to bleeding_edge.
...
Review URL: http://codereview.chromium.org/6685088
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-18 18:49:56 +00:00
mikhail.naganov@gmail.com
ada15030e4
A follow-up to r7125: fix a couple of remaining comments.
...
Review URL: http://codereview.chromium.org/6626043/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-10 12:22:59 +00:00
mikhail.naganov@gmail.com
dee9c00267
Add an interface for an embedder to provide information about native
...
objects retained by object groups and global handles.
This information is then used during heap snapshot generation
to provide a more complete memory picture.
This patch will be needed to fix https://bugs.webkit.org/show_bug.cgi?id=53659 .
Review URL: http://codereview.chromium.org/6626043
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-10 12:05:31 +00:00
mikhail.naganov@gmail.com
60711c074f
Refactor heap profiler's code to make possible including
...
into heap snapshots non-HeapObjects. This is needed as a
preparation for adding DOM subtrees tracking.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6596073
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7004 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-01 17:38:49 +00:00
mikhail.naganov@gmail.com
2d9c65901b
Heap profiler: fix removed DOM wrappers reporting.
...
Aggregated snapshots: don't report unreachable objects.
Full snapshots: restore forcing GC prior to taking a snapshot.
I played with the repro page provided for the bug and found that GC
must be performed prior to taking a snapshot even if we only report
reachable objects. GC allows weak handles to finalize. Now heap
profiler produces aligned results for the repro page in both modes.
BUG=crbug/70434
TEST=none
Review URL: http://codereview.chromium.org/6410030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 08:45:38 +00:00
mikhail.naganov@gmail.com
a968ed0470
Implement HeapIterator that skips over unreachable objects.
...
I'm using it when creating heap snapshots. I decided that it will
be more convenient to have it as a separate piece of code, instead
of embedding into the snapshot generator.
Review URL: http://codereview.chromium.org/6014004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-21 10:49:40 +00:00
erik.corry@gmail.com
d25755eeea
Add some missing includes and other minor changes intended to keep
...
the distance between bleeding edge and the gc branch minimal.
Review URL: http://codereview.chromium.org/5788002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6016 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-15 08:07:27 +00:00
mikhail.naganov@gmail.com
5cf643aa42
New heap profiler: add support for progress reporting and control.
...
As taking a snapshot of a large heap takes noticeable time, it's
good to be able to monitor and control it.
The change itself is small, big code deletes and additions are in
fact moves. The only significant change is simplification of
approximated retained sizes calculation algorithm.
Review URL: http://codereview.chromium.org/5687003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5978 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-12-13 10:42:06 +00:00
yurys@chromium.org
9137e4a8c9
Expose a method for getting JSObject constructor name
...
Review URL: http://codereview.chromium.org/5256004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5890 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-25 08:04:12 +00:00
mikhail.naganov@gmail.com
0634c50950
New Heap profiler: fix JSON serialization of aggregated profiles.
...
Serialization was failing due to unset dominator pointers.
TEST=test-heap-snapshot/AggregatedHeapSnapshotJSONSerialization
Review URL: http://codereview.chromium.org/5314003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-24 10:47:18 +00:00
mikhail.naganov@gmail.com
051f314a99
New heap profiler: include all heap objects and refs into snapshot.
...
Otherwise, retaned memory sizes are not precise. This increases size
of heap snapshot, I will deal with this later. Heap objects and
references previously missing in snapshot are now marked as 'hidden'.
That means, they not shown to user, but participate in sizes
calculation.
Other small changes:
- added 'shortcut' graph edges: e.g. to pin global objects on top
level;
- meta-information in JSON snapshot is no more double encoded.
Review URL: http://codereview.chromium.org/5139002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5849 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-18 10:38:25 +00:00
mikhail.naganov@gmail.com
2a8eb35548
Provide more accurate results about used heap size via GetHeapStatistics.
...
I observed that used heap size provided by Heap::SizeOfObjects() is
usually about ~10% bigger than the number calculated by summing up
heap objects sizes.
This aligns DevTools Timeline stats with Heap profiler stats.
Review URL: http://codereview.chromium.org/4888001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-11-15 10:38:24 +00:00
mikhail.naganov@gmail.com
e839a1ca58
Heap profiler: allow returning aggregated snapshots via the new API.
...
This is intended for smoother migration to the new API in Chromium.
Also, aggregated heap snapshots can be used for cheaply obtaining
heap statistics, e.g. in tests.
Review URL: http://codereview.chromium.org/3124024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5297 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-18 08:19:29 +00:00
mikhail.naganov@gmail.com
5e28c3e620
Heap profiler: enforce compaction before taking a snapshot.
...
Review URL: http://codereview.chromium.org/3118007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 09:54:30 +00:00
mikhail.naganov@gmail.com
0765b6ea3e
Fix issue 822: handling of JSObject::elements in CalculateNetworkSize.
...
BUG=822
TEST=test-heap-profiler/Issue822
Review URL: http://codereview.chromium.org/3128004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-08-11 09:03:23 +00:00
mikhail.naganov@gmail.com
c98ac6e82c
Heap profiler: implement diffing of snapshots.
...
To trace objects between snapshots, an external map of object tags is
maintained. After the first heap snapshot has been taken, the map is
updated by reporting object moves from the GC. If no snapshots were
taken, there is no overhead (except for flag checking).
I considered graph comparison algorithms that doesn't require using
object tags, but they are all of a high computational complexity, and
will still fail to detect object moves properly, even for trivial
cases, so using tags looks like unavoidable.
Review URL: http://codereview.chromium.org/3020002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5078 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-07-15 13:21:50 +00:00
mikhail.naganov@gmail.com
b6e6ab6972
Heap profiler: perform a GC round before taking a snapshot
...
to get rid of global object loaded from a snapshot. This
eliminates the "double global object" issue. Thanks to Mads
for suggesting this!
Review URL: http://codereview.chromium.org/2865013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4917 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-22 14:58:08 +00:00
mikhail.naganov@gmail.com
e6ea484e1f
Fix issue 738: make compilable with profilingsupport=off
...
BUG=738
TBR=sgjesse@chromium.org
Review URL: http://codereview.chromium.org/2800009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4883 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2010-06-16 19:53:24 +00:00