// Copyright 2019 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_OBJECTS_BACKING_STORE_H_ #define V8_OBJECTS_BACKING_STORE_H_ #include <memory> #include <optional> #include "include/v8-array-buffer.h" #include "include/v8-internal.h" #include "src/handles/handles.h" namespace v8::internal { class Isolate; class WasmMemoryObject; // Whether this is Wasm memory, and if 32 or 64 bit. enum class WasmMemoryFlag : uint8_t { … }; // Whether the backing store is shared or not. enum class SharedFlag : uint8_t { … }; // Whether the backing store is resizable or not. enum class ResizableFlag : uint8_t { … }; // Whether the backing store memory is initialied to zero or not. enum class InitializedFlag : uint8_t { … }; // Internal information for shared wasm memories. E.g. contains // a list of all memory objects (across all isolates) that share this // backing store. struct SharedWasmMemoryData; // The {BackingStore} data structure stores all the low-level details about the // backing store of an array buffer or Wasm memory, including its base address // and length, whether it is shared, provided by the embedder, has guard // regions, etc. Instances of this classes *own* the underlying memory // when they are created through one of the {Allocate()} methods below, // and the destructor frees the memory (and page allocation if necessary). class V8_EXPORT_PRIVATE BackingStore : public BackingStoreBase { … }; // A global, per-process mapping from buffer addresses to backing stores // of wasm memory objects. class GlobalBackingStoreRegistry { … }; } // namespace v8::internal #endif // V8_OBJECTS_BACKING_STORE_H_