summaryrefslogtreecommitdiff
path: root/deps/v8/include/v8-embedder-heap.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/include/v8-embedder-heap.h')
-rw-r--r--deps/v8/include/v8-embedder-heap.h169
1 files changed, 0 insertions, 169 deletions
diff --git a/deps/v8/include/v8-embedder-heap.h b/deps/v8/include/v8-embedder-heap.h
index f994cdfdf3..9e2e3ef58c 100644
--- a/deps/v8/include/v8-embedder-heap.h
+++ b/deps/v8/include/v8-embedder-heap.h
@@ -5,27 +5,14 @@
#ifndef INCLUDE_V8_EMBEDDER_HEAP_H_
#define INCLUDE_V8_EMBEDDER_HEAP_H_
-#include <stddef.h>
-#include <stdint.h>
-
-#include <utility>
-#include <vector>
-
-#include "cppgc/common.h"
-#include "v8-local-handle.h" // NOLINT(build/include_directory)
#include "v8-traced-handle.h" // NOLINT(build/include_directory)
#include "v8config.h" // NOLINT(build/include_directory)
namespace v8 {
-class Data;
class Isolate;
class Value;
-namespace internal {
-class LocalEmbedderHeapTracer;
-} // namespace internal
-
/**
* Handler for embedder roots on non-unified heap garbage collections.
*/
@@ -62,162 +49,6 @@ class V8_EXPORT EmbedderRootsHandler {
virtual void ResetRoot(const v8::TracedReference<v8::Value>& handle) = 0;
};
-/**
- * Interface for tracing through the embedder heap. During a V8 garbage
- * collection, V8 collects hidden fields of all potential wrappers, and at the
- * end of its marking phase iterates the collection and asks the embedder to
- * trace through its heap and use reporter to report each JavaScript object
- * reachable from any of the given wrappers.
- */
-class V8_EXPORT
-// GCC doesn't like combining __attribute__(()) with [[deprecated]].
-#ifdef __clang__
-V8_DEPRECATED("Use CppHeap when working with v8::TracedReference.")
-#endif // __clang__
- EmbedderHeapTracer {
- public:
- using EmbedderStackState = cppgc::EmbedderStackState;
-
- enum TraceFlags : uint64_t {
- kNoFlags = 0,
- kReduceMemory = 1 << 0,
- kForced = 1 << 2,
- };
-
- /**
- * Interface for iterating through |TracedReference| handles.
- */
- class V8_EXPORT TracedGlobalHandleVisitor {
- public:
- virtual ~TracedGlobalHandleVisitor() = default;
- virtual void VisitTracedReference(const TracedReference<Value>& handle) {}
- };
-
- /**
- * Summary of a garbage collection cycle. See |TraceEpilogue| on how the
- * summary is reported.
- */
- struct TraceSummary {
- /**
- * Time spent managing the retained memory in milliseconds. This can e.g.
- * include the time tracing through objects in the embedder.
- */
- double time = 0.0;
-
- /**
- * Memory retained by the embedder through the |EmbedderHeapTracer|
- * mechanism in bytes.
- */
- size_t allocated_size = 0;
- };
-
- virtual ~EmbedderHeapTracer() = default;
-
- /**
- * Iterates all |TracedReference| handles created for the |v8::Isolate| the
- * tracer is attached to.
- */
- void IterateTracedGlobalHandles(TracedGlobalHandleVisitor* visitor);
-
- /**
- * Called by the embedder to set the start of the stack which is e.g. used by
- * V8 to determine whether handles are used from stack or heap.
- */
- void SetStackStart(void* stack_start);
-
- /**
- * Called by v8 to register internal fields of found wrappers.
- *
- * The embedder is expected to store them somewhere and trace reachable
- * wrappers from them when called through |AdvanceTracing|.
- */
- virtual void RegisterV8References(
- const std::vector<std::pair<void*, void*>>& embedder_fields) = 0;
-
- void RegisterEmbedderReference(const BasicTracedReference<v8::Data>& ref);
-
- /**
- * Called at the beginning of a GC cycle.
- */
- virtual void TracePrologue(TraceFlags flags) {}
-
- /**
- * Called to advance tracing in the embedder.
- *
- * The embedder is expected to trace its heap starting from wrappers reported
- * by RegisterV8References method, and report back all reachable wrappers.
- * Furthermore, the embedder is expected to stop tracing by the given
- * deadline. A deadline of infinity means that tracing should be finished.
- *
- * Returns |true| if tracing is done, and false otherwise.
- */
- virtual bool AdvanceTracing(double deadline_in_ms) = 0;
-
- /*
- * Returns true if there no more tracing work to be done (see AdvanceTracing)
- * and false otherwise.
- */
- virtual bool IsTracingDone() = 0;
-
- /**
- * Called at the end of a GC cycle.
- *
- * Note that allocation is *not* allowed within |TraceEpilogue|. Can be
- * overriden to fill a |TraceSummary| that is used by V8 to schedule future
- * garbage collections.
- */
- virtual void TraceEpilogue(TraceSummary* trace_summary) {}
-
- /**
- * Called upon entering the final marking pause. No more incremental marking
- * steps will follow this call.
- */
- virtual void EnterFinalPause(EmbedderStackState stack_state) = 0;
-
- /*
- * Called by the embedder to request immediate finalization of the currently
- * running tracing phase that has been started with TracePrologue and not
- * yet finished with TraceEpilogue.
- *
- * Will be a noop when currently not in tracing.
- *
- * This is an experimental feature.
- */
- void FinalizeTracing();
-
- /**
- * See documentation on EmbedderRootsHandler.
- */
- virtual bool IsRootForNonTracingGC(
- const v8::TracedReference<v8::Value>& handle);
-
- /**
- * See documentation on EmbedderRootsHandler.
- */
- virtual void ResetHandleInNonTracingGC(
- const v8::TracedReference<v8::Value>& handle);
-
- /*
- * Called by the embedder to signal newly allocated or freed memory. Not bound
- * to tracing phases. Embedders should trade off when increments are reported
- * as V8 may consult global heuristics on whether to trigger garbage
- * collection on this change.
- */
- void IncreaseAllocatedSize(size_t bytes);
- void DecreaseAllocatedSize(size_t bytes);
-
- /*
- * Returns the v8::Isolate this tracer is attached too and |nullptr| if it
- * is not attached to any v8::Isolate.
- */
- v8::Isolate* isolate() const { return v8_isolate_; }
-
- protected:
- v8::Isolate* v8_isolate_ = nullptr;
-
- friend class internal::LocalEmbedderHeapTracer;
-};
-
} // namespace v8
#endif // INCLUDE_V8_EMBEDDER_HEAP_H_