summaryrefslogtreecommitdiff
path: root/deps/v8/include/v8-cppgc.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/include/v8-cppgc.h')
-rw-r--r--deps/v8/include/v8-cppgc.h146
1 files changed, 8 insertions, 138 deletions
diff --git a/deps/v8/include/v8-cppgc.h b/deps/v8/include/v8-cppgc.h
index 8ec826a595..201773f59d 100644
--- a/deps/v8/include/v8-cppgc.h
+++ b/deps/v8/include/v8-cppgc.h
@@ -12,7 +12,6 @@
#include "cppgc/common.h"
#include "cppgc/custom-space.h"
#include "cppgc/heap-statistics.h"
-#include "cppgc/internal/write-barrier.h"
#include "cppgc/visitor.h"
#include "v8-internal.h" // NOLINT(build/include_directory)
#include "v8-platform.h" // NOLINT(build/include_directory)
@@ -78,9 +77,6 @@ struct WrapperDescriptor final {
};
struct V8_EXPORT CppHeapCreateParams {
- CppHeapCreateParams(const CppHeapCreateParams&) = delete;
- CppHeapCreateParams& operator=(const CppHeapCreateParams&) = delete;
-
std::vector<std::unique_ptr<cppgc::CustomSpaceBase>> custom_spaces;
WrapperDescriptor wrapper_descriptor;
};
@@ -148,6 +144,14 @@ class V8_EXPORT CppHeap {
*/
void CollectGarbageForTesting(cppgc::EmbedderStackState stack_state);
+ /**
+ * Performs a stop-the-world minor garbage collection for testing purposes.
+ *
+ * \param stack_state The stack state to assume for the garbage collection.
+ */
+ void CollectGarbageInYoungGenerationForTesting(
+ cppgc::EmbedderStackState stack_state);
+
private:
CppHeap() = default;
@@ -170,140 +174,6 @@ class JSVisitor : public cppgc::Visitor {
};
/**
- * **DO NOT USE: Use the appropriate managed types.**
- *
- * Consistency helpers that aid in maintaining a consistent internal state of
- * the garbage collector.
- */
-class V8_EXPORT JSHeapConsistency final {
- public:
- using WriteBarrierParams = cppgc::internal::WriteBarrier::Params;
- using WriteBarrierType = cppgc::internal::WriteBarrier::Type;
-
- /**
- * Gets the required write barrier type for a specific write.
- *
- * Note: Handling for C++ to JS references.
- *
- * \param ref The reference being written to.
- * \param params Parameters that may be used for actual write barrier calls.
- * Only filled if return value indicates that a write barrier is needed. The
- * contents of the `params` are an implementation detail.
- * \param callback Callback returning the corresponding heap handle. The
- * callback is only invoked if the heap cannot otherwise be figured out. The
- * callback must not allocate.
- * \returns whether a write barrier is needed and which barrier to invoke.
- */
- template <typename HeapHandleCallback>
- V8_DEPRECATED("Write barriers automatically emitted by TracedReference.")
- static V8_INLINE WriteBarrierType
- GetWriteBarrierType(const TracedReferenceBase& ref,
- WriteBarrierParams& params,
- HeapHandleCallback callback) {
- if (ref.IsEmpty()) return WriteBarrierType::kNone;
-
- if (V8_LIKELY(!cppgc::internal::WriteBarrier::
- IsAnyIncrementalOrConcurrentMarking())) {
- return cppgc::internal::WriteBarrier::Type::kNone;
- }
- cppgc::HeapHandle& handle = callback();
- if (!cppgc::subtle::HeapState::IsMarking(handle)) {
- return cppgc::internal::WriteBarrier::Type::kNone;
- }
- params.heap = &handle;
-#if V8_ENABLE_CHECKS
- params.type = cppgc::internal::WriteBarrier::Type::kMarking;
-#endif // !V8_ENABLE_CHECKS
- return cppgc::internal::WriteBarrier::Type::kMarking;
- }
-
- /**
- * Gets the required write barrier type for a specific write.
- *
- * Note: Handling for JS to C++ references.
- *
- * \param wrapper The wrapper that has been written into.
- * \param wrapper_index The wrapper index in `wrapper` that has been written
- * into.
- * \param wrappable The value that was written.
- * \param params Parameters that may be used for actual write barrier calls.
- * Only filled if return value indicates that a write barrier is needed. The
- * contents of the `params` are an implementation detail.
- * \param callback Callback returning the corresponding heap handle. The
- * callback is only invoked if the heap cannot otherwise be figured out. The
- * callback must not allocate.
- * \returns whether a write barrier is needed and which barrier to invoke.
- */
- template <typename HeapHandleCallback>
- V8_DEPRECATE_SOON(
- "Write barriers automatically emitted when using "
- "`SetAlignedPointerInInternalFields()`.")
- static V8_INLINE WriteBarrierType
- GetWriteBarrierType(v8::Local<v8::Object>& wrapper, int wrapper_index,
- const void* wrappable, WriteBarrierParams& params,
- HeapHandleCallback callback) {
-#if V8_ENABLE_CHECKS
- CheckWrapper(wrapper, wrapper_index, wrappable);
-#endif // V8_ENABLE_CHECKS
- return cppgc::internal::WriteBarrier::
- GetWriteBarrierTypeForExternallyReferencedObject(wrappable, params,
- callback);
- }
-
- /**
- * Conservative Dijkstra-style write barrier that processes an object if it
- * has not yet been processed.
- *
- * \param params The parameters retrieved from `GetWriteBarrierType()`.
- * \param ref The reference being written to.
- */
- V8_DEPRECATED("Write barriers automatically emitted by TracedReference.")
- static V8_INLINE void DijkstraMarkingBarrier(const WriteBarrierParams& params,
- cppgc::HeapHandle& heap_handle,
- const TracedReferenceBase& ref) {
- cppgc::internal::WriteBarrier::CheckParams(WriteBarrierType::kMarking,
- params);
- DijkstraMarkingBarrierSlow(heap_handle, ref);
- }
-
- /**
- * Conservative Dijkstra-style write barrier that processes an object if it
- * has not yet been processed.
- *
- * \param params The parameters retrieved from `GetWriteBarrierType()`.
- * \param object The pointer to the object. May be an interior pointer to a
- * an interface of the actual object.
- */
- V8_DEPRECATE_SOON(
- "Write barriers automatically emitted when using "
- "`SetAlignedPointerInInternalFields()`.")
- static V8_INLINE void DijkstraMarkingBarrier(const WriteBarrierParams& params,
- cppgc::HeapHandle& heap_handle,
- const void* object) {
- cppgc::internal::WriteBarrier::DijkstraMarkingBarrier(params, object);
- }
-
- /**
- * Generational barrier for maintaining consistency when running with multiple
- * generations.
- *
- * \param params The parameters retrieved from `GetWriteBarrierType()`.
- * \param ref The reference being written to.
- */
- V8_DEPRECATED("Write barriers automatically emitted by TracedReference.")
- static V8_INLINE void GenerationalBarrier(const WriteBarrierParams& params,
- const TracedReferenceBase& ref) {}
-
- private:
- JSHeapConsistency() = delete;
-
- static void CheckWrapper(v8::Local<v8::Object>&, int, const void*);
-
- static void DijkstraMarkingBarrierSlow(cppgc::HeapHandle&,
- const TracedReferenceBase& ref);
-};
-
-/**
* Provided as input to `CppHeap::CollectCustomSpaceStatisticsAtLastGC()`.
*
* Its method is invoked with the results of the statistic collection.