| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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_ |
| OLD | NEW |