1// Copyright 2017 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/builtins/builtins-utils.h"
6#include "src/code-stub-assembler.h"
7#include "src/objects-inl.h"
8#include "src/wasm/wasm-opcodes.h"
9
10namespace v8 {
11namespace internal {
12
13typedef compiler::Node Node;
14
15TF_BUILTIN(WasmStackGuard, CodeStubAssembler) {
16  Node* context = SmiConstant(Smi::kZero);
17  TailCallRuntime(Runtime::kWasmStackGuard, context);
18}
19
20#define DECLARE_ENUM(name)                                                    \
21  TF_BUILTIN(ThrowWasm##name, CodeStubAssembler) {                            \
22    int message_id = wasm::WasmOpcodes::TrapReasonToMessageId(wasm::k##name); \
23    TailCallRuntime(Runtime::kThrowWasmErrorFromTrapIf,                       \
24                    SmiConstant(Smi::kZero), SmiConstant(message_id));        \
25  }
26FOREACH_WASM_TRAPREASON(DECLARE_ENUM)
27#undef DECLARE_ENUM
28
29}  // namespace internal
30}  // namespace v8
31