WasmNodeResult IWasmOpcodeVisitor <WasmNodeArg, WasmNodeResult> .Visit(BrTableOpcode opcode, WasmNodeArg arg) { var operand = arg.Pop(); var node = new BrTableNode(operand); foreach (var target in opcode.Targets) { var label = arg.ResolveLabel(target); node.Targets.Add(label); } node.DefaultTarget = arg.ResolveLabel(opcode.DefaultTarget); arg.Push(node); return(null); }
WasmNodeResult IWasmOpcodeVisitor <WasmNodeArg, WasmNodeResult> .Visit(BrOpcode opcode, WasmNodeArg arg) { var label = arg.ResolveLabel(opcode.RelativeDepth); var node = new BrNode(label); arg.Push(node); return(null); }
WasmNodeResult IWasmOpcodeVisitor <WasmNodeArg, WasmNodeResult> .Visit(BrIfOpcode opcode, WasmNodeArg arg) { var label = arg.ResolveLabel(opcode.RelativeDepth); var condition = arg.Pop(); var node = new BrIfNode(condition, label); arg.Push(node); return(null); }