#if !V8_ENABLE_WEBASSEMBLY
#error This header should only be included if WebAssembly is enabled.
#endif
#ifndef V8_COMPILER_WASM_COMPILER_DEFINITIONS_H_
#define V8_COMPILER_WASM_COMPILER_DEFINITIONS_H_
#include <ostream>
#include "src/base/functional.h"
#include "src/base/vector.h"
#include "src/codegen/linkage-location.h"
#include "src/codegen/register.h"
#include "src/codegen/signature.h"
#include "src/wasm/signature-hashing.h"
#include "src/wasm/value-type.h"
#include "src/zone/zone.h"
namespace v8 {
namespace internal {
namespace wasm {
struct WasmModule;
class WireBytesStorage;
struct ModuleWireBytes;
}
namespace compiler {
class CallDescriptor;
struct WasmTypeCheckConfig { … };
V8_INLINE std::ostream& operator<<(std::ostream& os,
WasmTypeCheckConfig const& p) { … }
V8_INLINE size_t hash_value(WasmTypeCheckConfig const& p) { … }
V8_INLINE bool operator==(const WasmTypeCheckConfig& p1,
const WasmTypeCheckConfig& p2) { … }
static constexpr int kCharWidthBailoutSentinel = …;
enum class NullCheckStrategy { … };
enum class EnforceBoundsCheck : bool { … };
enum class AlignmentCheck : bool { … };
enum class BoundsCheckResult { … };
enum CheckForNull : bool { … };
std::ostream& operator<<(std::ostream& os, CheckForNull null_check);
base::Vector<const char> GetDebugName(Zone* zone,
const wasm::WasmModule* module,
const wasm::WireBytesStorage* wire_bytes,
int index);
enum WasmCallKind { … };
V8_EXPORT_PRIVATE CallDescriptor* GetWasmCallDescriptor(
Zone* zone, const wasm::FunctionSig* signature,
WasmCallKind kind = kWasmFunction, bool need_frame_state = false);
template <typename T>
LocationSignature* BuildLocations(Zone* zone, const Signature<T>* sig,
bool extra_callable_param,
int* parameter_slots, int* return_slots) { … }
}
}
}
#endif