================ @@ -2595,6 +2604,37 @@ bool DWARFExpression::Evaluate( break; } + case DW_OP_WASM_location: { + uint8_t wasm_op = opcodes.GetU8(&offset); + uint32_t index; + + /* LLDB doesn't have an address space to represents WebAssembly locals, + * globals and operand stacks. + * We encode these elements into virtual registers: + * | tag: 2 bits | index: 30 bits | + * where tag is: + * 0: Not a WebAssembly location + * 1: Local + * 2: Global + * 3: Operand stack value ---------------- paolosevMSFT wrote:
It is better to keep the tag '0' to represent normal (non-Wasm-location) registers like PC, so I would keep the values like this. But for readability we can add a static function `WasmVirtualRegisterKinds WasmVirtualRegisterInfo::VirtualRegisterKindFromDWARFLocation(DWARFWasmLocation dwarf_location)` that does this conversion from the DWARF representation into the virtual register tag. https://github.com/llvm/llvm-project/pull/77949 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits