5 #include "src/wasm/memory-tracing.h" 8 #include "src/v8memory.h" 14 void TraceMemoryOperation(ExecutionTier tier,
const MemoryTracingInfo* info,
15 int func_index,
int position, uint8_t* mem_start) {
16 EmbeddedVector<char, 64> value;
17 auto mem_rep =
static_cast<MachineRepresentation
>(info->mem_rep);
19 #define TRACE_TYPE(rep, str, format, ctype1, ctype2) \ 20 case MachineRepresentation::rep: \ 21 SNPrintF(value, str ":" format, \ 22 ReadLittleEndianValue<ctype1>( \ 23 reinterpret_cast<Address>(mem_start) + info->address), \ 24 ReadLittleEndianValue<ctype2>( \ 25 reinterpret_cast<Address>(mem_start) + info->address)); \ 27 TRACE_TYPE(kWord8,
" i8",
"%d / %02x", uint8_t, uint8_t)
28 TRACE_TYPE(kWord16,
"i16",
"%d / %04x", uint16_t, uint16_t)
30 TRACE_TYPE(kWord64,
"i64",
"%" PRId64
" / %016" PRIx64, uint64_t, uint64_t)
31 TRACE_TYPE(kFloat32,
"f32",
"%f / %08x",
float,
uint32_t)
32 TRACE_TYPE(kFloat64,
"f64",
"%f / %016" PRIx64,
double, uint64_t)
35 SNPrintF(value,
"???");
37 const char* eng =
"?";
39 case ExecutionTier::kOptimized:
42 case ExecutionTier::kBaseline:
45 case ExecutionTier::kInterpreter:
49 printf(
"%-11s func:%6d+0x%-6x%s %08x val: %s\n", eng, func_index, position,
50 info->is_store ?
" store to" :
"load from", info->address,