#ifndef V8_COMPILER_FRAME_STATES_H_
#define V8_COMPILER_FRAME_STATES_H_
#include "src/builtins/builtins.h"
#include "src/compiler/node.h"
#include "src/handles/handles.h"
#include "src/objects/shared-function-info.h"
#include "src/utils/utils.h"
namespace v8 {
namespace internal {
namespace wasm {
class ValueType;
FunctionSig;
}
namespace compiler {
class JSGraph;
class Node;
class SharedFunctionInfoRef;
class OutputFrameStateCombine { … };
enum class FrameStateType { … };
class FrameStateFunctionInfo { … };
#if V8_ENABLE_WEBASSEMBLY
class JSToWasmFrameStateFunctionInfo : public FrameStateFunctionInfo { … };
#endif
class FrameStateInfo final { … };
bool operator==(FrameStateInfo const&, FrameStateInfo const&);
bool operator!=(FrameStateInfo const&, FrameStateInfo const&);
size_t hash_value(FrameStateInfo const&);
std::ostream& operator<<(std::ostream&, FrameStateInfo const&);
enum class ContinuationFrameStateMode { … };
class FrameState;
FrameState CreateStubBuiltinContinuationFrameState(
JSGraph* graph, Builtin name, Node* context, Node* const* parameters,
int parameter_count, Node* outer_frame_state,
ContinuationFrameStateMode mode,
const wasm::FunctionSig* signature = nullptr);
#if V8_ENABLE_WEBASSEMBLY
FrameState CreateJSWasmCallBuiltinContinuationFrameState(
JSGraph* jsgraph, Node* context, Node* outer_frame_state,
const wasm::FunctionSig* signature);
#endif
FrameState CreateJavaScriptBuiltinContinuationFrameState(
JSGraph* graph, SharedFunctionInfoRef shared, Builtin name, Node* target,
Node* context, Node* const* stack_parameters, int stack_parameter_count,
Node* outer_frame_state, ContinuationFrameStateMode mode);
FrameState CreateGenericLazyDeoptContinuationFrameState(
JSGraph* graph, SharedFunctionInfoRef shared, Node* target, Node* context,
Node* receiver, Node* outer_frame_state);
Node* CreateInlinedApiFunctionFrameState(JSGraph* graph,
SharedFunctionInfoRef shared,
Node* target, Node* context,
Node* receiver,
Node* outer_frame_state);
FrameState CloneFrameState(JSGraph* jsgraph, FrameState frame_state,
OutputFrameStateCombine changed_state_combine);
}
}
}
#endif