@@ -342,6 +342,10 @@ func PrimitiveSetup(vm *VirtualMachine) error {
342342 },
343343 {
344344 name : ">R" ,
345+ flag : Flag {
346+ isPure : true ,
347+ usesReturnStack : true ,
348+ },
345349 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
346350 c , err := vm .Stack .Pop ()
347351 if err != nil {
@@ -376,6 +380,10 @@ func PrimitiveSetup(vm *VirtualMachine) error {
376380 },
377381 {
378382 name : "R>" ,
383+ flag : Flag {
384+ isPure : true ,
385+ usesReturnStack : true ,
386+ },
379387 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
380388 c , err := vm .ReturnStack .Pop ()
381389 if err != nil {
@@ -881,6 +889,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
881889 },
882890 {
883891 name : "CHAR+" ,
892+ flag : Flag {
893+ isPure : true ,
894+ },
884895 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
885896 cell , err := vm .Stack .Pop ()
886897 if err != nil {
@@ -942,6 +953,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
942953 },
943954 {
944955 name : "ALIGNED" ,
956+ flag : Flag {
957+ isPure : true ,
958+ },
945959 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
946960 cell , err := vm .Stack .Pop ()
947961 if err != nil {
@@ -1109,6 +1123,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
11091123 },
11101124 {
11111125 name : "+" ,
1126+ flag : Flag {
1127+ isPure : true ,
1128+ },
11121129 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
11131130 right , err := vm .Stack .Pop ()
11141131 if err != nil {
@@ -1171,6 +1188,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
11711188 },
11721189 {
11731190 name : "-" ,
1191+ flag : Flag {
1192+ isPure : true ,
1193+ },
11741194 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
11751195 right , err := vm .Stack .Pop ()
11761196 if err != nil {
@@ -1236,6 +1256,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
12361256 },
12371257 {
12381258 name : "AND" ,
1259+ flag : Flag {
1260+ isPure : true ,
1261+ },
12391262 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
12401263 right , err := vm .Stack .PopNumber ()
12411264 if err != nil {
@@ -1271,6 +1294,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
12711294 },
12721295 {
12731296 name : "OR" ,
1297+ flag : Flag {
1298+ isPure : true ,
1299+ },
12741300 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
12751301 right , err := vm .Stack .PopNumber ()
12761302 if err != nil {
@@ -1306,6 +1332,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
13061332 },
13071333 {
13081334 name : "*" ,
1335+ flag : Flag {
1336+ isPure : true ,
1337+ },
13091338 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
13101339 right , err := vm .Stack .PopNumber ()
13111340 if err != nil {
@@ -1374,6 +1403,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
13741403 },
13751404 {
13761405 name : "U/MOD" ,
1406+ flag : Flag {
1407+ isPure : true ,
1408+ },
13771409 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
13781410 right , err := vm .Stack .PopNumber ()
13791411 if err != nil {
@@ -1472,6 +1504,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
14721504 },
14731505 {
14741506 name : "LSHIFT" ,
1507+ flag : Flag {
1508+ isPure : true ,
1509+ },
14751510 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
14761511 amount , err := vm .Stack .PopNumber ()
14771512 if err != nil {
@@ -1507,6 +1542,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
15071542 },
15081543 {
15091544 name : "RSHIFT" ,
1545+ flag : Flag {
1546+ isPure : true ,
1547+ },
15101548 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
15111549 amount , err := vm .Stack .PopNumber ()
15121550 if err != nil {
@@ -1542,6 +1580,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
15421580 },
15431581 {
15441582 name : "SWAP" ,
1583+ flag : Flag {
1584+ isPure : true ,
1585+ },
15451586 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
15461587 right , err := vm .Stack .Pop ()
15471588 if err != nil {
@@ -1579,6 +1620,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
15791620 },
15801621 {
15811622 name : "DUP" ,
1623+ flag : Flag {
1624+ isPure : true ,
1625+ },
15821626 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
15831627 c , err := vm .Stack .Pop ()
15841628 if err != nil {
@@ -1610,6 +1654,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
16101654 },
16111655 {
16121656 name : "PICK" ,
1657+ flag : Flag {
1658+ isPure : true ,
1659+ },
16131660 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
16141661 n , err := vm .Stack .PopNumber ()
16151662 if err != nil {
@@ -1644,6 +1691,10 @@ func PrimitiveSetup(vm *VirtualMachine) error {
16441691 },
16451692 {
16461693 name : "RPICK" ,
1694+ flag : Flag {
1695+ isPure : true ,
1696+ usesReturnStack : true ,
1697+ },
16471698 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
16481699 n , err := vm .Stack .PopNumber ()
16491700 if err != nil {
@@ -1681,6 +1732,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
16811732 },
16821733 {
16831734 name : "ROT" ,
1735+ flag : Flag {
1736+ isPure : true ,
1737+ },
16841738 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
16851739 c , err := vm .Stack .Pop ()
16861740 if err != nil {
@@ -1730,6 +1784,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
17301784 },
17311785 {
17321786 name : "DROP" ,
1787+ flag : Flag {
1788+ isPure : true ,
1789+ },
17331790 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
17341791 _ , err := vm .Stack .Pop ()
17351792 if err != nil {
@@ -1749,6 +1806,10 @@ func PrimitiveSetup(vm *VirtualMachine) error {
17491806 },
17501807 {
17511808 name : "LOOPCHECK" ,
1809+ flag : Flag {
1810+ isPure : true ,
1811+ usesReturnStack : true ,
1812+ },
17521813 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
17531814 index , err := vm .ReturnStack .PopNumber ()
17541815 if err != nil {
@@ -1849,6 +1910,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
18491910 },
18501911 {
18511912 name : "U<" ,
1913+ flag : Flag {
1914+ isPure : true ,
1915+ },
18521916 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
18531917 right , err := vm .Stack .PopNumber ()
18541918 if err != nil {
@@ -2069,6 +2133,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
20692133
20702134 {
20712135 name : "D-" , // ( xlow xhigh ylow yhigh -- zlow zhigh )
2136+ flag : Flag {
2137+ isPure : true ,
2138+ },
20722139 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
20732140 yHigh , err := vm .Stack .PopNumber ()
20742141 if err != nil {
@@ -2140,6 +2207,9 @@ func PrimitiveSetup(vm *VirtualMachine) error {
21402207 },
21412208 {
21422209 name : "D+" , // ( xlow xhigh ylow yhigh -- zlow zhigh )
2210+ flag : Flag {
2211+ isPure : true ,
2212+ },
21432213 goFunc : func (vm * VirtualMachine , entry * DictionaryEntry ) error {
21442214 yHigh , err := vm .Stack .PopNumber ()
21452215 if err != nil {
0 commit comments