// Copyright 2018 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_HEAP_HEAP_WRITE_BARRIER_H_ #define V8_HEAP_HEAP_WRITE_BARRIER_H_ #include "include/v8-internal.h" #include "src/common/globals.h" namespace v8 { namespace internal { class Code; class FixedArray; class Heap; class RelocInfo; class EphemeronHashTable; // Note: In general it is preferred to use the macros defined in // object-macros.h. // Combined write barriers. void WriteBarrierForCode(Code host, RelocInfo* rinfo, Object value); void WriteBarrierForCode(Code host); // Generational write barrier. void GenerationalBarrier(HeapObject object, ObjectSlot slot, Object value); void GenerationalBarrier(HeapObject object, MaybeObjectSlot slot, MaybeObject value); 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, MaybeObjectSlot slot, MaybeObject value); void MarkingBarrierForCode(Code host, RelocInfo* rinfo, HeapObject object); void MarkingBarrierForDescriptorArray(Heap* heap, HeapObject host, HeapObject descriptor_array, int number_of_own_descriptors); inline bool IsReadOnlyHeapObject(HeapObject object); } // namespace internal } // namespace v8 #endif // V8_HEAP_HEAP_WRITE_BARRIER_H_