Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: include/v8-profiler.h

Issue 12907006: Isolatify HeapProfiler (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Prohibited construction and destruction of v8::HeapProfiler Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « include/v8.h ('k') | src/api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 * Nodes reference strings, other nodes, and edges by their indexes 378 * Nodes reference strings, other nodes, and edges by their indexes
379 * in corresponding arrays. 379 * in corresponding arrays.
380 */ 380 */
381 void Serialize(OutputStream* stream, SerializationFormat format) const; 381 void Serialize(OutputStream* stream, SerializationFormat format) const;
382 }; 382 };
383 383
384 384
385 class RetainedObjectInfo; 385 class RetainedObjectInfo;
386 386
387 /** 387 /**
388 * Interface for controlling heap profiling. 388 * Interface for controlling heap profiling. Instance of the
389 * profiler can be retrieved using v8::Isolate::GetHeapProfiler.
389 */ 390 */
390 class V8EXPORT HeapProfiler { 391 class V8EXPORT HeapProfiler {
391 public: 392 public:
392 /** 393 /**
393 * Callback function invoked for obtaining RetainedObjectInfo for 394 * Callback function invoked for obtaining RetainedObjectInfo for
394 * the given JavaScript wrapper object. It is prohibited to enter V8 395 * the given JavaScript wrapper object. It is prohibited to enter V8
395 * while the callback is running: only getters on the handle and 396 * while the callback is running: only getters on the handle and
396 * GetPointerFromInternalField on the objects are allowed. 397 * GetPointerFromInternalField on the objects are allowed.
397 */ 398 */
398 typedef RetainedObjectInfo* (*WrapperInfoCallback) 399 typedef RetainedObjectInfo* (*WrapperInfoCallback)
399 (uint16_t class_id, Handle<Value> wrapper); 400 (uint16_t class_id, Handle<Value> wrapper);
400 401
402 /** Deprecated. Use GetSnapshotCount instead. */
403 static int GetSnapshotsCount();
401 /** Returns the number of snapshots taken. */ 404 /** Returns the number of snapshots taken. */
402 static int GetSnapshotsCount(); 405 int GetSnapshotCount();
403 406
407 /** Deprecated. Use GetHeapSnapshot instead. */
408 static const HeapSnapshot* GetSnapshot(int index);
404 /** Returns a snapshot by index. */ 409 /** Returns a snapshot by index. */
405 static const HeapSnapshot* GetSnapshot(int index); 410 const HeapSnapshot* GetHeapSnapshot(int index);
406 411
412 /** Deprecated. Use FindHeapSnapshot instead. */
413 static const HeapSnapshot* FindSnapshot(unsigned uid);
407 /** Returns a profile by uid. */ 414 /** Returns a profile by uid. */
408 static const HeapSnapshot* FindSnapshot(unsigned uid); 415 const HeapSnapshot* FindHeapSnapshot(unsigned uid);
409 416
417 /** Deprecated. Use GetObjectId instead. */
418 static SnapshotObjectId GetSnapshotObjectId(Handle<Value> value);
410 /** 419 /**
411 * Returns SnapshotObjectId for a heap object referenced by |value| if 420 * Returns SnapshotObjectId for a heap object referenced by |value| if
412 * it has been seen by the heap profiler, kUnknownObjectId otherwise. 421 * it has been seen by the heap profiler, kUnknownObjectId otherwise.
413 */ 422 */
414 static SnapshotObjectId GetSnapshotObjectId(Handle<Value> value); 423 SnapshotObjectId GetObjectId(Handle<Value> value);
415 424
416 /** 425 /**
417 * A constant for invalid SnapshotObjectId. GetSnapshotObjectId will return 426 * A constant for invalid SnapshotObjectId. GetSnapshotObjectId will return
418 * it in case heap profiler cannot find id for the object passed as 427 * it in case heap profiler cannot find id for the object passed as
419 * parameter. HeapSnapshot::GetNodeById will always return NULL for such id. 428 * parameter. HeapSnapshot::GetNodeById will always return NULL for such id.
420 */ 429 */
421 static const SnapshotObjectId kUnknownObjectId = 0; 430 static const SnapshotObjectId kUnknownObjectId = 0;
422 431
423 /** 432 /**
424 * Callback interface for retrieving user friendly names of global objects. 433 * Callback interface for retrieving user friendly names of global objects.
425 */ 434 */
426 class ObjectNameResolver { 435 class ObjectNameResolver {
427 public: 436 public:
428 /** 437 /**
429 * Returns name to be used in the heap snapshot for given node. Returned 438 * Returns name to be used in the heap snapshot for given node. Returned
430 * string must stay alive until snapshot collection is completed. 439 * string must stay alive until snapshot collection is completed.
431 */ 440 */
432 virtual const char* GetName(Handle<Object> object) = 0; 441 virtual const char* GetName(Handle<Object> object) = 0;
433 protected: 442 protected:
434 virtual ~ObjectNameResolver() {} 443 virtual ~ObjectNameResolver() {}
435 }; 444 };
436 445
437 /** 446 /** Deprecated. Use TakeHeapSnapshot instead. */
438 * Takes a heap snapshot and returns it. Title may be an empty string.
439 * See HeapSnapshot::Type for types description.
440 */
441 static const HeapSnapshot* TakeSnapshot( 447 static const HeapSnapshot* TakeSnapshot(
442 Handle<String> title, 448 Handle<String> title,
443 HeapSnapshot::Type type = HeapSnapshot::kFull, 449 HeapSnapshot::Type type = HeapSnapshot::kFull,
444 ActivityControl* control = NULL, 450 ActivityControl* control = NULL,
445 ObjectNameResolver* global_object_name_resolver = NULL); 451 ObjectNameResolver* global_object_name_resolver = NULL);
452 /**
453 * Takes a heap snapshot and returns it. Title may be an empty string.
454 * See HeapSnapshot::Type for types description.
455 */
456 const HeapSnapshot* TakeHeapSnapshot(
457 Handle<String> title,
458 ActivityControl* control = NULL,
459 ObjectNameResolver* global_object_name_resolver = NULL);
446 460
461
462 /** Deprecated. Use StartTrackingHeapObjects instead. */
463 static void StartHeapObjectsTracking();
447 /** 464 /**
448 * Starts tracking of heap objects population statistics. After calling 465 * Starts tracking of heap objects population statistics. After calling
449 * this method, all heap objects relocations done by the garbage collector 466 * this method, all heap objects relocations done by the garbage collector
450 * are being registered. 467 * are being registered.
451 */ 468 */
452 static void StartHeapObjectsTracking(); 469 void StartTrackingHeapObjects();
453 470
471 /** Deprecated. Use GetHeapStats instead. */
472 static SnapshotObjectId PushHeapObjectsStats(OutputStream* stream);
454 /** 473 /**
455 * Adds a new time interval entry to the aggregated statistics array. The 474 * Adds a new time interval entry to the aggregated statistics array. The
456 * time interval entry contains information on the current heap objects 475 * time interval entry contains information on the current heap objects
457 * population size. The method also updates aggregated statistics and 476 * population size. The method also updates aggregated statistics and
458 * reports updates for all previous time intervals via the OutputStream 477 * reports updates for all previous time intervals via the OutputStream
459 * object. Updates on each time interval are provided as a stream of the 478 * object. Updates on each time interval are provided as a stream of the
460 * HeapStatsUpdate structure instances. 479 * HeapStatsUpdate structure instances.
461 * The return value of the function is the last seen heap object Id. 480 * The return value of the function is the last seen heap object Id.
462 * 481 *
463 * StartHeapObjectsTracking must be called before the first call to this 482 * StartTrackingHeapObjects must be called before the first call to this
464 * method. 483 * method.
465 */ 484 */
466 static SnapshotObjectId PushHeapObjectsStats(OutputStream* stream); 485 SnapshotObjectId GetHeapStats(OutputStream* stream);
467 486
487 /** Deprecated. Use StopTrackingHeapObjects instead. */
488 static void StopHeapObjectsTracking();
468 /** 489 /**
469 * Stops tracking of heap objects population statistics, cleans up all 490 * Stops tracking of heap objects population statistics, cleans up all
470 * collected data. StartHeapObjectsTracking must be called again prior to 491 * collected data. StartHeapObjectsTracking must be called again prior to
471 * calling PushHeapObjectsStats next time. 492 * calling PushHeapObjectsStats next time.
472 */ 493 */
473 static void StopHeapObjectsTracking(); 494 void StopTrackingHeapObjects();
474 495
496 /** Deprecated. Use DeleteAllHeapSnapshots instead. */
497 static void DeleteAllSnapshots();
475 /** 498 /**
476 * Deletes all snapshots taken. All previously returned pointers to 499 * Deletes all snapshots taken. All previously returned pointers to
477 * snapshots and their contents become invalid after this call. 500 * snapshots and their contents become invalid after this call.
478 */ 501 */
479 static void DeleteAllSnapshots(); 502 void DeleteAllHeapSnapshots();
480 503
504 /** Deprecated. Use SetWrapperClassInfoProvider instead. */
505 static void DefineWrapperClass(
506 uint16_t class_id,
507 WrapperInfoCallback callback);
481 /** Binds a callback to embedder's class ID. */ 508 /** Binds a callback to embedder's class ID. */
482 static void DefineWrapperClass( 509 void SetWrapperClassInfoProvider(
483 uint16_t class_id, 510 uint16_t class_id,
484 WrapperInfoCallback callback); 511 WrapperInfoCallback callback);
485 512
486 /** 513 /**
487 * Default value of persistent handle class ID. Must not be used to 514 * Default value of persistent handle class ID. Must not be used to
488 * define a class. Can be used to reset a class of a persistent 515 * define a class. Can be used to reset a class of a persistent
489 * handle. 516 * handle.
490 */ 517 */
491 static const uint16_t kPersistentHandleNoClassId = 0; 518 static const uint16_t kPersistentHandleNoClassId = 0;
492 519
493 /** Returns the number of currently existing persistent handles. */ 520 /**
521 * Deprecated. Returns the number of currently existing persistent handles.
522 */
494 static int GetPersistentHandleCount(); 523 static int GetPersistentHandleCount();
495 524
525 /** Deprecated. Use GetHeapProfilerMemorySize instead. */
526 static size_t GetMemorySizeUsedByProfiler();
496 /** Returns memory used for profiler internal data and snapshots. */ 527 /** Returns memory used for profiler internal data and snapshots. */
497 static size_t GetMemorySizeUsedByProfiler(); 528 size_t GetProfilerMemorySize();
529
530 private:
531 HeapProfiler();
532 ~HeapProfiler();
533 HeapProfiler(const HeapProfiler&);
534 HeapProfiler& operator=(const HeapProfiler&);
498 }; 535 };
499 536
500 537
501 /** 538 /**
502 * Interface for providing information about embedder's objects 539 * Interface for providing information about embedder's objects
503 * held by global handles. This information is reported in two ways: 540 * held by global handles. This information is reported in two ways:
504 * 541 *
505 * 1. When calling AddObjectGroup, an embedder may pass 542 * 1. When calling AddObjectGroup, an embedder may pass
506 * RetainedObjectInfo instance describing the group. To collect 543 * RetainedObjectInfo instance describing the group. To collect
507 * this information while taking a heap snapshot, V8 calls GC 544 * this information while taking a heap snapshot, V8 calls GC
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 virtual ~RetainedObjectInfo() {} 604 virtual ~RetainedObjectInfo() {}
568 605
569 private: 606 private:
570 RetainedObjectInfo(const RetainedObjectInfo&); 607 RetainedObjectInfo(const RetainedObjectInfo&);
571 RetainedObjectInfo& operator=(const RetainedObjectInfo&); 608 RetainedObjectInfo& operator=(const RetainedObjectInfo&);
572 }; 609 };
573 610
574 611
575 /** 612 /**
576 * A struct for exporting HeapStats data from V8, using "push" model. 613 * A struct for exporting HeapStats data from V8, using "push" model.
577 * See HeapProfiler::PushHeapObjectsStats. 614 * See HeapProfiler::GetHeapStats.
578 */ 615 */
579 struct HeapStatsUpdate { 616 struct HeapStatsUpdate {
580 HeapStatsUpdate(uint32_t index, uint32_t count, uint32_t size) 617 HeapStatsUpdate(uint32_t index, uint32_t count, uint32_t size)
581 : index(index), count(count), size(size) { } 618 : index(index), count(count), size(size) { }
582 uint32_t index; // Index of the time interval that was changed. 619 uint32_t index; // Index of the time interval that was changed.
583 uint32_t count; // New value of count field for the interval with this index. 620 uint32_t count; // New value of count field for the interval with this index.
584 uint32_t size; // New value of size field for the interval with this index. 621 uint32_t size; // New value of size field for the interval with this index.
585 }; 622 };
586 623
587 624
588 } // namespace v8 625 } // namespace v8
589 626
590 627
591 #undef V8EXPORT 628 #undef V8EXPORT
592 629
593 630
594 #endif // V8_V8_PROFILER_H_ 631 #endif // V8_V8_PROFILER_H_
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698