162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch// Copyright 2016 the V8 project authors. All rights reserved.
262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch// found in the LICENSE file.
462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#ifndef V8_DEBUG_INTERFACE_TYPES_H_
662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#define V8_DEBUG_INTERFACE_TYPES_H_
762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include <cstdint>
962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include <string>
1062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include <vector>
1162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
1262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include "src/globals.h"
1362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
1462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochnamespace v8 {
1562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochnamespace debug {
1662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
1762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch/**
1862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * Defines location inside script.
1962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * Lines and columns are 0-based.
2062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch */
2162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochclass V8_EXPORT_PRIVATE Location {
2262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch public:
2362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Location(int line_number, int column_number);
2462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  /**
2562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch   * Create empty location.
2662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch   */
2762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  Location();
2862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
2962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int GetLineNumber() const;
3062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int GetColumnNumber() const;
3162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  bool IsEmpty() const;
3262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
3362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch private:
3462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int line_number_;
3562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int column_number_;
3662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch};
3762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
3862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch/**
3962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * The result of disassembling a wasm function.
4062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * Consists of the disassembly string and an offset table mapping wasm byte
4162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * offsets to line and column in the disassembly.
4262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * The offset table entries are ordered by the byte_offset.
4362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch * All numbers are 0-based.
4462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch */
4562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochstruct WasmDisassemblyOffsetTableEntry {
4662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  WasmDisassemblyOffsetTableEntry(uint32_t byte_offset, int line, int column)
4762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch      : byte_offset(byte_offset), line(line), column(column) {}
4862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
4962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  uint32_t byte_offset;
5062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int line;
5162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  int column;
5262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch};
5362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochstruct WasmDisassembly {
5462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  using OffsetTable = std::vector<WasmDisassemblyOffsetTableEntry>;
5562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  WasmDisassembly() {}
5662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  WasmDisassembly(std::string disassembly, OffsetTable offset_table)
5762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch      : disassembly(std::move(disassembly)),
5862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch        offset_table(std::move(offset_table)) {}
5962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
6062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  std::string disassembly;
6162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  OffsetTable offset_table;
6262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch};
6362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
6462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochenum PromiseDebugActionType {
6562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugPromiseCreated,
6662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugEnqueueAsyncFunction,
6762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugEnqueuePromiseResolve,
6862ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugEnqueuePromiseReject,
6962ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugPromiseCollected,
7062ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugWillHandle,
7162ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch  kDebugDidHandle,
7262ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch};
7362ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
7462ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}  // namespace debug
7562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch}  // namespace v8
7662ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch
7762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#endif  // V8_DEBUG_INTERFACE_TYPES_H_
78