Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }