0
|
1
|
|
2 /* Digital Mars DMDScript source code.
|
|
3 * Copyright (c) 2000-2002 by Chromium Communications
|
|
4 * D version Copyright (c) 2004-2005 by Digital Mars
|
|
5 * All Rights Reserved
|
|
6 * written by Walter Bright
|
|
7 * www.digitalmars.com
|
|
8 * Use at your own risk. There is no warranty, express or implied.
|
|
9 * License for redistribution is by the GNU General Public License in gpl.txt.
|
|
10 *
|
|
11 * A binary, non-exclusive license for commercial use can be
|
|
12 * purchased from www.digitalmars.com/dscript/buy.html.
|
|
13 *
|
|
14 * DMDScript is implemented in the D Programming Language,
|
|
15 * www.digitalmars.com/d/
|
|
16 *
|
|
17 * For a C++ implementation of DMDScript, including COM support,
|
|
18 * see www.digitalmars.com/dscript/cppscript.html.
|
|
19 */
|
|
20
|
|
21
|
|
22 // Opcodes for our Intermediate Representation (IR)
|
|
23
|
3
|
24 module dmdscript_tango.ir;
|
0
|
25
|
|
26 enum
|
|
27 {
|
|
28 IRerror,
|
|
29 IRnop, // no operation
|
|
30 IRend, // end of function
|
|
31 IRstring,
|
|
32 IRthisget,
|
|
33 IRnumber,
|
|
34 IRobject,
|
|
35 IRthis,
|
|
36 IRnull,
|
|
37 IRundefined,
|
|
38 IRboolean,
|
|
39 IRcall,
|
|
40 IRcalls = IRcall + 1,
|
|
41 IRcallscope = IRcalls + 1,
|
|
42 IRcallv = IRcallscope + 1,
|
|
43 IRputcall,
|
|
44 IRputcalls = IRputcall + 1,
|
|
45 IRputcallscope = IRputcalls + 1,
|
|
46 IRputcallv = IRputcallscope + 1,
|
|
47 IRget,
|
|
48 IRgets = IRget + 1, // 's' versions must be original + 1
|
|
49 IRgetscope = IRgets + 1,
|
|
50 IRput,
|
|
51 IRputs = IRput + 1,
|
|
52 IRputscope = IRputs + 1,
|
|
53 IRdel,
|
|
54 IRdels = IRdel + 1,
|
|
55 IRdelscope = IRdels + 1,
|
|
56 IRnext,
|
|
57 IRnexts = IRnext + 1,
|
|
58 IRnextscope = IRnexts + 1,
|
|
59 IRaddass,
|
|
60 IRaddasss = IRaddass + 1,
|
|
61 IRaddassscope = IRaddasss + 1,
|
|
62 IRputthis,
|
|
63 IRputdefault,
|
|
64 IRmov,
|
|
65 IRret,
|
|
66 IRretexp,
|
|
67 IRimpret,
|
|
68 IRneg,
|
|
69 IRpos,
|
|
70 IRcom,
|
|
71 IRnot,
|
|
72 IRadd,
|
|
73 IRsub,
|
|
74 IRmul,
|
|
75 IRdiv,
|
|
76 IRmod,
|
|
77 IRshl,
|
|
78 IRshr,
|
|
79 IRushr,
|
|
80 IRand,
|
|
81 IRor,
|
|
82 IRxor,
|
|
83
|
|
84 IRpreinc,
|
|
85 IRpreincs = IRpreinc + 1,
|
|
86 IRpreincscope = IRpreincs + 1,
|
|
87
|
|
88 IRpredec,
|
|
89 IRpredecs = IRpredec + 1,
|
|
90 IRpredecscope = IRpredecs + 1,
|
|
91
|
|
92 IRpostinc,
|
|
93 IRpostincs = IRpostinc + 1,
|
|
94 IRpostincscope = IRpostincs + 1,
|
|
95
|
|
96 IRpostdec,
|
|
97 IRpostdecs = IRpostdec + 1,
|
|
98 IRpostdecscope = IRpostdecs + 1,
|
|
99
|
|
100 IRnew,
|
|
101
|
|
102 IRclt,
|
|
103 IRcle,
|
|
104 IRcgt,
|
|
105 IRcge,
|
|
106 IRceq,
|
|
107 IRcne,
|
|
108 IRcid,
|
|
109 IRcnid,
|
|
110
|
|
111 IRjt,
|
|
112 IRjf,
|
|
113 IRjtb,
|
|
114 IRjfb,
|
|
115 IRjmp,
|
|
116
|
|
117 IRjlt, // commonly appears as loop control
|
|
118 IRjle, // commonly appears as loop control
|
|
119
|
|
120 IRjltc, // commonly appears as loop control
|
|
121 IRjlec, // commonly appears as loop control
|
|
122
|
|
123 IRtypeof,
|
|
124 IRinstance,
|
|
125
|
|
126 IRpush,
|
|
127 IRpop,
|
|
128
|
|
129 IRiter,
|
|
130 IRassert,
|
|
131
|
|
132 IRthrow,
|
|
133 IRtrycatch,
|
|
134 IRtryfinally,
|
|
135 IRfinallyret,
|
|
136
|
|
137 IRMAX
|
|
138 }
|
|
139
|
|
140
|