5#ifndef V8_COMPILER_MEMORY_LOWERING_H_
6#define V8_COMPILER_MEMORY_LOWERING_H_
16class CommonOperatorBuilder;
20class MachineOperatorBuilder;
30 class AllocationGroup;
74 Node* node,
Node*
object,
const char* name,
Zone* temp_zone)>;
83 const char* function_debug_name =
nullptr);
85 const char*
reducer_name()
const override {
return "MemoryReducer"; }
93 AllocationState
const** state);
98 AllocationState
const* state =
nullptr);
100 AllocationState
const* state =
nullptr);
102 AllocationState
const* state =
nullptr);
109 AllocationState
const* state,
static AllocationState const * Open(AllocationGroup *group, intptr_t size, Node *top, Node *effect, Zone *zone)
bool IsYoungGenerationAllocation() const
AllocationState & operator=(const AllocationState &)=delete
AllocationGroup *const group_
static AllocationState const * Empty(Zone *zone)
static AllocationState const * Closed(AllocationGroup *group, Node *effect, Zone *zone)
AllocationGroup * group() const
AllocationState(const AllocationState &)=delete
Zone * graph_zone() const
const char * reducer_name() const override
Node * ComputeIndex(ElementAccess const &access, Node *node)
MachineOperatorBuilder * machine_
Reduction ReduceLoadField(Node *node)
SetOncePointer< const Operator > allocate_operator_
Isolate * isolate() const
AllocationFolding allocation_folding_
DISALLOW_IMPLICIT_CONSTRUCTORS(MemoryLowering)
Node * GetWasmInstanceNode()
Reduction ReduceLoadElement(Node *node)
Reduction ReduceStoreToObject(Node *node, AllocationState const *state=nullptr)
Node * AlignToAllocationAlignment(Node *address)
Reduction ReduceStoreElement(Node *node, AllocationState const *state=nullptr)
Reduction ReduceLoadFromObject(Node *node)
WriteBarrierKind ComputeWriteBarrierKind(Node *node, Node *object, Node *value, AllocationState const *state, WriteBarrierKind)
CommonOperatorBuilder * common_
MachineOperatorBuilder * machine() const
JSGraphAssembler * gasm() const
WriteBarrierAssertFailedCallback write_barrier_assert_failed_
const char * function_debug_name_
Reduction ReduceLoadMap(Node *node)
Reduction Reduce(Node *node) override
Reduction ReduceStoreField(Node *node, AllocationState const *state=nullptr)
JSGraphAssembler * graph_assembler_
Reduction ReduceAllocateRaw(Node *node, AllocationType allocation_type, AllocationState const **state)
Reduction ReduceLoadExternalPointerField(Node *node)
std::function< void( Node *node, Node *object, const char *name, Zone *temp_zone)> WriteBarrierAssertFailedCallback
void EnsureAllocateOperator()
CommonOperatorBuilder * common() const
MemoryLowering(JSGraph *jsgraph, Zone *zone, JSGraphAssembler *graph_assembler, bool is_wasm, AllocationFolding allocation_folding=AllocationFolding::kDontAllocationFolding, WriteBarrierAssertFailedCallback callback=[](Node *, Node *, const char *, Zone *) { UNREACHABLE();}, const char *function_debug_name=nullptr)
Reduction ReduceStore(Node *node, AllocationState const *state=nullptr)
SetOncePointer< Node > wasm_instance_node_
Reduction ReduceLoadBoundedSize(Node *node)