@@ -572,6 +572,7 @@ The `*_local` instructions are defined here.
572
572
rule <instrs> #local.get(I) => .K ... </instrs>
573
573
<valstack> VALSTACK => {LOCALS [ I ]}:>Val : VALSTACK </valstack>
574
574
<locals> LOCALS </locals>
575
+ requires isVal(LOCALS [ I ])
575
576
576
577
rule <instrs> #local.set(I) => .K ... </instrs>
577
578
<valstack> VALUE : VALSTACK => VALSTACK </valstack>
@@ -623,7 +624,7 @@ The importing and exporting parts of specifications are dealt with in the respec
623
624
...
624
625
</globals>
625
626
requires #typeMatches(TYP, VAL)
626
-
627
+
627
628
```
628
629
629
630
The ` get ` and ` set ` instructions read and write globals.
@@ -704,7 +705,7 @@ The `get` and `set` instructions read and write globals.
704
705
</tabInst>
705
706
requires 0 <=Int I
706
707
andBool I <Int size(TDATA)
707
-
708
+
708
709
rule [tableGet-trap]:
709
710
<instrs> #tableGet( TADDR, I) => trap ... </instrs>
710
711
<tabInst>
@@ -732,7 +733,7 @@ The `get` and `set` instructions read and write globals.
732
733
<tabAddrs> ... TID |-> TADDR ... </tabAddrs>
733
734
...
734
735
</moduleInst>
735
-
736
+
736
737
rule [tableSet-oob]:
737
738
<instrs> #tableSet(TADDR, _VAL, I) => trap ... </instrs>
738
739
<tabInst>
@@ -840,7 +841,7 @@ The `get` and `set` instructions read and write globals.
840
841
// ------------------------------------------------------
841
842
rule [tableFill-zero]:
842
843
<instrs> #tableFill(_, 0, _, _) => .K ... </instrs>
843
-
844
+
844
845
rule [tableFill-loop]:
845
846
<instrs> #tableFill(TID, N, RVAL, I)
846
847
=> <i32> I
@@ -1617,7 +1618,7 @@ Element Segments
1617
1618
syntax Alloc ::= allocelem(RefValType, ListRef, OptionalId)
1618
1619
// -----------------------------------------------------
1619
1620
rule [elem-active]:
1620
- <instrs> #elem(TYPE:RefValType, INIT:ListRef, MODE:ElemMode, OID:OptionalId)
1621
+ <instrs> #elem(TYPE:RefValType, INIT:ListRef, MODE:ElemMode, OID:OptionalId)
1621
1622
=> allocelem(TYPE, INIT, OID)
1622
1623
~> #elemAux(size(INIT), MODE)
1623
1624
...
@@ -1668,11 +1669,11 @@ Element Segments
1668
1669
syntax ListRef ::= resolveAddrs(ListInt, ListRef) [function]
1669
1670
// -----------------------------------------------------------
1670
1671
rule resolveAddrs(_, .ListRef) => .ListRef
1671
- rule resolveAddrs(FADDRS, ListItem(<TYP> I) IS)
1672
- => ListItem(<TYP> FADDRS {{ I }} orDefault -1) resolveAddrs(FADDRS, IS)
1673
- rule resolveAddrs(FADDRS, ListItem(<TYP> null) IS)
1674
- => ListItem(<TYP> null) resolveAddrs(FADDRS, IS)
1675
-
1672
+ rule resolveAddrs(FADDRS, ListItem(<TYP> I) IS)
1673
+ => ListItem(<TYP> FADDRS {{ I }} orDefault -1) resolveAddrs(FADDRS, IS)
1674
+ rule resolveAddrs(FADDRS, ListItem(<TYP> null) IS)
1675
+ => ListItem(<TYP> null) resolveAddrs(FADDRS, IS)
1676
+
1676
1677
```
1677
1678
1678
1679
Data Segments
0 commit comments