]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/registers/registers.factor
scryfall: make decks better, import from moxfield
[factor.git] / basis / compiler / cfg / registers / registers.factor
1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: assocs kernel math namespaces parser sequences ;
4 IN: compiler.cfg.registers
5
6 SYMBOL: vreg-counter
7
8 : next-vreg ( -- vreg )
9     vreg-counter counter ;
10
11 : reset-vreg-counter ( -- )
12     0 vreg-counter set-global ;
13
14 SYMBOL: representations
15
16 ERROR: bad-vreg vreg ;
17
18 : rep-of ( vreg -- rep )
19     representations get ?at [ bad-vreg ] unless ;
20
21 : set-rep-of ( rep vreg -- )
22     representations get set-at ;
23
24 : next-vreg-rep ( rep -- vreg )
25     next-vreg [ set-rep-of ] keep ;
26
27 TUPLE: loc { n integer } ;
28
29 TUPLE: ds-loc < loc ;
30 C: <ds-loc> ds-loc
31
32 TUPLE: rs-loc < loc ;
33 C: <rs-loc> rs-loc
34
35 SYNTAX: D: scan-number <ds-loc> suffix! ;
36 SYNTAX: R: scan-number <rs-loc> suffix! ;