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