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

Side by Side Diff: include/v8.h

Issue 2291613002: [api] Add NumberOfWrappersToTrace to EmbedderHeapTracer. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** \mainpage V8 API Reference Guide 5 /** \mainpage V8 API Reference Guide
6 * 6 *
7 * V8 is Google's open source JavaScript engine. 7 * V8 is Google's open source JavaScript engine.
8 * 8 *
9 * This set of documents provides reference material generated from the 9 * This set of documents provides reference material generated from the
10 * V8 header file, include/v8.h. 10 * V8 header file, include/v8.h.
(...skipping 5737 matching lines...) Expand 10 before | Expand all | Expand 10 after
5748 * trace through its heap and call PersistentBase::RegisterExternalReference on 5748 * trace through its heap and call PersistentBase::RegisterExternalReference on
5749 * each js object reachable from any of the given wrappers. 5749 * each js object reachable from any of the given wrappers.
5750 * 5750 *
5751 * Before the first call to the TraceWrappersFrom function TracePrologue will be 5751 * Before the first call to the TraceWrappersFrom function TracePrologue will be
5752 * called. When the garbage collection cycle is finished, TraceEpilogue will be 5752 * called. When the garbage collection cycle is finished, TraceEpilogue will be
5753 * called. 5753 * called.
5754 */ 5754 */
5755 class V8_EXPORT EmbedderHeapTracer { 5755 class V8_EXPORT EmbedderHeapTracer {
5756 public: 5756 public:
5757 enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION }; 5757 enum ForceCompletionAction { FORCE_COMPLETION, DO_NOT_FORCE_COMPLETION };
5758
5758 struct AdvanceTracingActions { 5759 struct AdvanceTracingActions {
5759 explicit AdvanceTracingActions(ForceCompletionAction force_completion_) 5760 explicit AdvanceTracingActions(ForceCompletionAction force_completion_)
5760 : force_completion(force_completion_) {} 5761 : force_completion(force_completion_) {}
5761 5762
5762 ForceCompletionAction force_completion; 5763 ForceCompletionAction force_completion;
5763 }; 5764 };
5765
5764 /** 5766 /**
5765 * V8 will call this method with internal fields of found wrappers. 5767 * V8 will call this method with internal fields of found wrappers. The
5766 * Embedder is expected to store them in it's marking deque and trace 5768 * embedder is expected to store them in its marking deque and trace
5767 * reachable wrappers from them when asked by AdvanceTracing method. 5769 * reachable wrappers from them when called through |AdvanceTracing|.
5768 */ 5770 */
5769 virtual void RegisterV8References( 5771 virtual void RegisterV8References(
5770 const std::vector<std::pair<void*, void*> >& internal_fields) = 0; 5772 const std::vector<std::pair<void*, void*> >& internal_fields) = 0;
5773
5771 /** 5774 /**
5772 * V8 will call this method at the beginning of the gc cycle. 5775 * V8 will call this method at the beginning of a GC cycle.
5773 */ 5776 */
5774 virtual void TracePrologue() = 0; 5777 virtual void TracePrologue() = 0;
5778
5775 /** 5779 /**
5776 * Embedder is expected to trace its heap starting from wrappers reported by 5780 * Embedder is expected to trace its heap starting from wrappers reported by
5777 * RegisterV8References method, and call 5781 * RegisterV8References method, and call
5778 * PersistentBase::RegisterExternalReference() on all reachable wrappers. 5782 * PersistentBase::RegisterExternalReference() on all reachable wrappers.
5779 * Embedder is expected to stop tracing by the given deadline. 5783 * Embedder is expected to stop tracing by the given deadline.
5780 * 5784 *
5781 * Returns true if there is still work to do. 5785 * Returns true if there is still work to do.
5782 */ 5786 */
5783 virtual bool AdvanceTracing(double deadline_in_ms, 5787 virtual bool AdvanceTracing(double deadline_in_ms,
5784 AdvanceTracingActions actions) = 0; 5788 AdvanceTracingActions actions) = 0;
5789
5785 /** 5790 /**
5786 * V8 will call this method at the end of the gc cycle. Allocation is *not* 5791 * V8 will call this method at the end of a GC cycle.
5787 * allowed in the TraceEpilogue. 5792 *
5793 * Note that allocation is *not* allowed within |TraceEpilogue|.
5788 */ 5794 */
5789 virtual void TraceEpilogue() = 0; 5795 virtual void TraceEpilogue() = 0;
5790 5796
5791 /** 5797 /**
5792 * Let embedder know v8 entered final marking pause (no more incremental steps 5798 * Let embedder know v8 entered final marking pause (no more incremental steps
5793 * will follow). 5799 * will follow).
5794 */ 5800 */
5795 virtual void EnterFinalPause() {} 5801 virtual void EnterFinalPause() {}
5796 5802
5797 /** 5803 /**
5798 * Throw away all intermediate data and reset to the initial state. 5804 * Throw away all intermediate data and reset to the initial state.
5799 */ 5805 */
5800 virtual void AbortTracing() {} 5806 virtual void AbortTracing() {}
5801 5807
5808 /**
5809 * Returns the number of wrappers that are still to be traced by the embedder.
5810 */
5811 virtual size_t NumberOfWrappersToTrace() { return 0; }
5812
5802 protected: 5813 protected:
5803 virtual ~EmbedderHeapTracer() = default; 5814 virtual ~EmbedderHeapTracer() = default;
5804 }; 5815 };
5805 5816
5806 /** 5817 /**
5807 * Isolate represents an isolated instance of the V8 engine. V8 isolates have 5818 * Isolate represents an isolated instance of the V8 engine. V8 isolates have
5808 * completely separate states. Objects from one isolate must not be used in 5819 * completely separate states. Objects from one isolate must not be used in
5809 * other isolates. The embedder can create multiple isolates and use them in 5820 * other isolates. The embedder can create multiple isolates and use them in
5810 * parallel in multiple threads. An isolate can be entered by at most one 5821 * parallel in multiple threads. An isolate can be entered by at most one
5811 * thread at any given time. The Locker/Unlocker API must be used to 5822 * thread at any given time. The Locker/Unlocker API must be used to
(...skipping 3421 matching lines...) Expand 10 before | Expand all | Expand 10 after
9233 */ 9244 */
9234 9245
9235 9246
9236 } // namespace v8 9247 } // namespace v8
9237 9248
9238 9249
9239 #undef TYPE_CHECK 9250 #undef TYPE_CHECK
9240 9251
9241 9252
9242 #endif // INCLUDE_V8_H_ 9253 #endif // INCLUDE_V8_H_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698