| // Copyright 2017 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_WASM_MEMORY_TRACING_H_ |
| #define V8_WASM_MEMORY_TRACING_H_ |
| |
| #include <cstdint> |
| |
| #include "src/machine-type.h" |
| |
| namespace v8 { |
| namespace internal { |
| namespace wasm { |
| |
| enum class ExecutionEngine { kTurbofan, kLiftoff, kInterpreter }; |
| |
| // This struct is create in generated code, hence use low-level types. |
| struct MemoryTracingInfo { |
| uint32_t address; |
| uint8_t is_store; // 0 or 1 |
| uint8_t mem_rep; |
| static_assert( |
| std::is_same<decltype(mem_rep), |
| std::underlying_type<MachineRepresentation>::type>::value, |
| "MachineRepresentation uses uint8_t"); |
| |
| MemoryTracingInfo(uint32_t addr, bool is_store, MachineRepresentation rep) |
| : address(addr), is_store(is_store), mem_rep(static_cast<uint8_t>(rep)) {} |
| }; |
| |
| // Callback for tracing a memory operation for debugging. |
| // Triggered by --wasm-trace-memory. |
| void TraceMemoryOperation(ExecutionEngine, const MemoryTracingInfo* info, |
| int func_index, int position, uint8_t* mem_start); |
| |
| } // namespace wasm |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_WASM_MEMORY_TRACING_H_ |