1bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// Copyright 2016 the V8 project authors. All rights reserved.
2bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// found in the LICENSE file.
4bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
5bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#ifndef V8_WASM_SWITCH_LOGIC_H
6bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define V8_WASM_SWITCH_LOGIC_H
7bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
8c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#include "src/globals.h"
9f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/zone/zone-containers.h"
10f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#include "src/zone/zone.h"
11bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
12bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochnamespace v8 {
13bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochnamespace internal {
14bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochnamespace wasm {
15bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
16bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochstruct CaseNode : public ZoneObject {
17bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  const int begin;
18bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  const int end;
19bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  CaseNode* left;
20bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  CaseNode* right;
21bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  CaseNode(int begin, int end) : begin(begin), end(end) {
22bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    left = nullptr;
23bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    right = nullptr;
24bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  }
25bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch};
26bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
27c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen MurdochV8_EXPORT_PRIVATE CaseNode* OrderCases(ZoneVector<int>* cases, Zone* zone);
28bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}  // namespace wasm
29bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}  // namespace internal
30bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}  // namespace v8
31bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
32bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#endif
33