v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
heap.h File Reference
#include <atomic>
#include <cmath>
#include <memory>
#include <optional>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include "include/v8-callbacks.h"
#include "include/v8-embedder-heap.h"
#include "include/v8-internal.h"
#include "include/v8-isolate.h"
#include "src/base/atomic-utils.h"
#include "src/base/enum-set.h"
#include "src/base/platform/condition-variable.h"
#include "src/base/platform/mutex.h"
#include "src/base/small-vector.h"
#include "src/builtins/accessors.h"
#include "src/common/assert-scope.h"
#include "src/common/code-memory-access.h"
#include "src/common/globals.h"
#include "src/heap/allocation-observer.h"
#include "src/heap/allocation-result.h"
#include "src/heap/gc-callbacks.h"
#include "src/heap/heap-allocator.h"
#include "src/heap/marking-state.h"
#include "src/heap/minor-gc-job.h"
#include "src/heap/pretenuring-handler.h"
#include "src/heap/sweeper.h"
#include "src/init/heap-symbols.h"
#include "src/objects/allocation-site.h"
#include "src/objects/fixed-array.h"
#include "src/objects/hash-table.h"
#include "src/objects/heap-object.h"
#include "src/objects/js-array-buffer.h"
#include "src/objects/objects.h"
#include "src/objects/smi.h"
#include "src/objects/visitors.h"
#include "src/roots/roots.h"
#include "src/sandbox/code-pointer-table.h"
#include "src/sandbox/external-pointer-table.h"
#include "src/sandbox/js-dispatch-table.h"
#include "src/sandbox/trusted-pointer-table.h"
#include "src/utils/allocation.h"
#include "testing/gtest/include/gtest/gtest_prod.h"
Include dependency graph for heap.h:

Go to the source code of this file.

Classes

class  v8::internal::StrongRootsEntry
 
class  v8::internal::Heap
 
class  v8::internal::Heap::DevToolsTraceEventScope
 
class  v8::internal::Heap::ExternalMemoryAccounting
 
struct  v8::internal::Heap::Chunk
 
class  v8::internal::Heap::ExternalStringTable
 
struct  v8::internal::Heap::LimitsCompuatationResult
 
class  v8::internal::HeapStats
 
class  v8::internal::AlwaysAllocateScope
 
class  v8::internal::GCCallbacksScope
 
class  v8::internal::AlwaysAllocateScopeForTesting
 
class  v8::internal::CodePageMemoryModificationScopeForDebugging
 
class  v8::internal::IgnoreLocalGCRequests
 
class  v8::internal::PagedSpaceIterator
 
class  v8::internal::HeapObjectIterator
 
class  v8::internal::WeakObjectRetainer
 
class  v8::internal::HeapObjectAllocationTracker
 
class  v8::internal::StrongRootAllocator< Address >
 
class  v8::internal::EmbedderStackStateScope
 
class  v8::internal::DisableConservativeStackScanningScopeForTesting
 
class  v8::internal::CppClassNamesAsHeapObjectNameScope
 
class  v8::internal::ClearStaleLeftTrimmedPointerVisitor
 

Namespaces

namespace  cppgc
 
namespace  cppgc::internal
 
namespace  heap
 
namespace  heap::base
 
namespace  v8
 
namespace  v8::debug
 
namespace  v8::internal
 
namespace  v8::internal::heap
 

Macros

#define RIGHT_TRIMMABLE_ARRAY_LIST(V)
 
#define ROOT_ACCESSOR(type, name, CamelName)
 
#define ROOT_ACCESSOR(type, name, CamelName)
 
#define DECL_RIGHT_TRIM(T)
 

Typedefs

using v8::debug::OutOfMemoryCallback = void (*)(void* data)
 
template<typename T >
using v8::internal::UnorderedHeapObjectMap
 
using v8::internal::GCFlags = base::Flags<GCFlag, uint8_t>
 

Enumerations

enum class  v8::internal::ClearRecordedSlots { v8::internal::kYes , v8::internal::kNo }
 
enum class  v8::internal::InvalidateRecordedSlots { v8::internal::kYes , v8::internal::kNo }
 
enum class  v8::internal::InvalidateExternalPointerSlots { v8::internal::kYes , v8::internal::kNo }
 
enum class  v8::internal::ClearFreedMemoryMode { v8::internal::kClearFreedMemory , v8::internal::kDontClearFreedMemory }
 
enum class  v8::internal::SkipRoot {
  v8::internal::kExternalStringTable , v8::internal::kGlobalHandles , v8::internal::kTracedHandles , v8::internal::kOldGeneration ,
  v8::internal::kStack , v8::internal::kMainThreadHandles , v8::internal::kUnserializable , v8::internal::kWeak ,
  v8::internal::kConservativeStack , v8::internal::kReadOnlyBuiltins
}
 
enum class  v8::internal::EmbedderStackStateOrigin { v8::internal::kImplicitThroughTask , v8::internal::kExplicitInvocation }
 
enum class  v8::internal::GCFlag : uint8_t { v8::internal::kNoFlags = 0 , v8::internal::kReduceMemoryFootprint = 1 << 0 , v8::internal::kForced = 1 << 1 , v8::internal::kLastResort = 1 << 2 }
 

Functions

template<typename T >
Tagged< Tv8::internal::ForwardingAddress (Tagged< T > heap_obj)
 

Macro Definition Documentation

◆ DECL_RIGHT_TRIM

#define DECL_RIGHT_TRIM ( T)
Value:
Heap::RightTrimArray<T>(Tagged<T> object, int new_capacity, \
int old_capacity);
#define EXPORT_TEMPLATE_DECLARE(export)
#define V8_EXPORT_PRIVATE
Definition macros.h:460

Definition at line 2483 of file heap.h.

◆ RIGHT_TRIMMABLE_ARRAY_LIST

#define RIGHT_TRIMMABLE_ARRAY_LIST ( V)
Value:
V(ArrayList) \
V(ByteArray) \
V(FixedArray) \
V(FixedDoubleArray) \
V(TransitionArray) \
V(WeakFixedArray)
#define V(Name)

Definition at line 438 of file heap.h.

◆ ROOT_ACCESSOR [1/2]

#define ROOT_ACCESSOR ( type,
name,
CamelName )
Value:
inline Tagged<type> name();
const char * name
Definition builtins.cc:39

Definition at line 854 of file heap.h.

◆ ROOT_ACCESSOR [2/2]

#define ROOT_ACCESSOR ( type,
name,
CamelName )
Value:
inline void set_##name(Tagged<type> value);
ZoneVector< InstructionOperand > * set_

Definition at line 854 of file heap.h.