diff options
author | Michaël Zasso <targos@protonmail.com> | 2020-10-15 20:17:08 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2020-10-18 20:16:47 +0200 |
commit | a1d639ba5de4ff34e34fb575fbb6cc1d41ec3cce (patch) | |
tree | abc7d41c12f1495b1208fa4449cb2508c92c5e85 /deps/v8/src/heap/heap-write-barrier.h | |
parent | 089d654dd85f8e548597329f60a41d6029260caa (diff) | |
download | node-new-a1d639ba5de4ff34e34fb575fbb6cc1d41ec3cce.tar.gz |
deps: update V8 to 8.6.395
PR-URL: https://github.com/nodejs/node/pull/35415
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/heap/heap-write-barrier.h')
-rw-r--r-- | deps/v8/src/heap/heap-write-barrier.h | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/deps/v8/src/heap/heap-write-barrier.h b/deps/v8/src/heap/heap-write-barrier.h index 14cd51a0bb..d56757b538 100644 --- a/deps/v8/src/heap/heap-write-barrier.h +++ b/deps/v8/src/heap/heap-write-barrier.h @@ -6,6 +6,7 @@ #define V8_HEAP_HEAP_WRITE_BARRIER_H_ #include "include/v8-internal.h" +#include "src/base/optional.h" #include "src/common/globals.h" namespace v8 { @@ -13,10 +14,14 @@ namespace internal { class ArrayBufferExtension; class Code; +class DescriptorArray; +class EphemeronHashTable; class FixedArray; class Heap; +class JSArrayBuffer; +class Map; +class MarkCompactCollector; class RelocInfo; -class EphemeronHashTable; // Note: In general it is preferred to use the macros defined in // object-macros.h. @@ -35,20 +40,31 @@ void GenerationalEphemeronKeyBarrier(EphemeronHashTable table, ObjectSlot slot, Object value); void GenerationalBarrierForCode(Code host, RelocInfo* rinfo, HeapObject object); -// Marking write barrier. -void MarkingBarrier(HeapObject object, ObjectSlot slot, Object value); -void MarkingBarrier(HeapObject object, ObjectSlot slot, HeapObject value); -void MarkingBarrier(HeapObject object, MaybeObjectSlot slot, MaybeObject value); -void MarkingBarrierForCode(Code host, RelocInfo* rinfo, HeapObject object); - -void MarkingBarrierForArrayBufferExtension(HeapObject object, - ArrayBufferExtension* extension); +inline bool IsReadOnlyHeapObject(HeapObject object); -void MarkingBarrierForDescriptorArray(Heap* heap, HeapObject host, - HeapObject descriptor_array, - int number_of_own_descriptors); +class V8_EXPORT_PRIVATE WriteBarrier { + public: + static inline void Marking(HeapObject host, ObjectSlot, Object value); + static inline void Marking(HeapObject host, HeapObjectSlot, HeapObject value); + static inline void Marking(HeapObject host, MaybeObjectSlot, + MaybeObject value); + static inline void Marking(Code host, RelocInfo*, HeapObject value); + static inline void Marking(JSArrayBuffer host, ArrayBufferExtension*); + static inline void Marking(Map host, DescriptorArray, + int number_of_own_descriptors); + // It is invoked from generated code and has to take raw addresses. + static int MarkingFromCode(Address raw_host, Address raw_slot); -inline bool IsReadOnlyHeapObject(HeapObject object); + private: + static void MarkingSlow(Heap* heap, HeapObject host, HeapObjectSlot, + HeapObject value); + static void MarkingSlow(Heap* heap, Code host, RelocInfo*, HeapObject value); + static void MarkingSlow(Heap* heap, JSArrayBuffer host, + ArrayBufferExtension*); + static void MarkingSlow(Heap* heap, Map host, DescriptorArray, + int number_of_own_descriptors); + static inline base::Optional<Heap*> GetHeapIfMarking(HeapObject object); +}; } // namespace internal } // namespace v8 |