1 #include <OOC/IR/ConstFold.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4
OOC_IR_ConstFold__InitConstFold(OOC_IR_ConstFold__ConstFold c)5 static void OOC_IR_ConstFold__InitConstFold(OOC_IR_ConstFold__ConstFold c) {
6 register OOC_INT64 i0;
7
8 i0 = (OOC_INT64)c;
9 OOC_IR__InitConstFold((OOC_IR__ConstFold)i0, (OOC_IR__Builder)(OOC_INT64)0);
10 return;
11 ;
12 }
13
OOC_IR_ConstFold__NewConstFold(void)14 OOC_IR_ConstFold__ConstFold OOC_IR_ConstFold__NewConstFold(void) {
15 register OOC_INT64 i0;
16
17 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_IR_ConstFold__ConstFold.baseTypes[0]);
18 OOC_IR_ConstFold__InitConstFold((OOC_IR_ConstFold__ConstFold)i0);
19 return (OOC_IR_ConstFold__ConstFold)i0;
20 ;
21 }
22
OOC_IR_ConstFold__SmallestType(Object_Boxed__Object value)23 static OOC_SymbolTable__Type OOC_IR_ConstFold__SmallestType(Object_Boxed__Object value) {
24 register OOC_INT64 i0,i1;
25
26 i0 = (OOC_INT64)value;
27 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 1697)))), &_td_Object_BigInt__BigIntDesc);
28 if (i1) goto l11;
29 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 1769)))), &_td_Object_Boxed__LongRealDesc);
30 if (i1) goto l9;
31 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 1893)))), &_td_Object_Boxed__SetDesc);
32 if (i1) goto l7;
33 _failed_with(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 1885)))), 1885);
34 goto l12;
35 l7:
36 i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(10);
37 return (OOC_SymbolTable__Type)i0;
38 goto l12;
39 l9:
40 i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(8);
41 return (OOC_SymbolTable__Type)i0;
42 goto l12;
43 l11:
44 i0 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i0);
45 return (OOC_SymbolTable__Type)i0;
46 l12:
47 _failed_function(1565); return 0;
48 ;
49 }
50
OOC_IR_ConstFold__ConstFoldDesc_ValueConst(OOC_IR_ConstFold__ConstFold c,Object_Boxed__Object value,OOC_IR__Operator op)51 OOC_IR__Const OOC_IR_ConstFold__ConstFoldDesc_ValueConst(OOC_IR_ConstFold__ConstFold c, Object_Boxed__Object value, OOC_IR__Operator op) {
52 register OOC_INT64 i0,i1,i2,i3,i4;
53 OOC_SymbolTable__Type type;
54
55 i0 = (OOC_INT64)value;
56 i1 = (OOC_INT64)OOC_IR_ConstFold__SmallestType((Object_Boxed__Object)i0);
57 type = (OOC_SymbolTable__Type)i1;
58 i2 = i1==(OOC_INT64)0;
59 if (i2) goto l3;
60 i2 = (OOC_INT64)op;
61 i3 = (OOC_INT64)c;
62 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 2273));
63 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 2273));
64 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 2293));
65 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 2281)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i3, (OOC_Scanner_SymList__Symbol)i2, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i0);
66 return (OOC_IR__Const)i0;
67 goto l4;
68 l3:
69 i0 = (OOC_INT64)op;
70 i1 = (OOC_INT64)c;
71 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 2199));
72 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 2199));
73 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 2232));
74 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 2207)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i1, 10, (OOC_Scanner_SymList__Symbol)i0);
75 return (OOC_IR__Const)(OOC_INT64)0;
76 l4:
77 _failed_function(2052); return 0;
78 ;
79 }
80
OOC_IR_ConstFold__ConstFoldDesc_BooleanConst(OOC_IR_ConstFold__ConstFold c,OOC_CHAR8 value,OOC_IR__Operator op)81 OOC_IR__Const OOC_IR_ConstFold__ConstFoldDesc_BooleanConst(OOC_IR_ConstFold__ConstFold c, OOC_CHAR8 value, OOC_IR__Operator op) {
82 register OOC_INT64 i0,i1,i2,i3,i4;
83
84 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
85 i1 = value;
86 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
87 i1 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(0);
88 i2 = (OOC_INT64)op;
89 i3 = (OOC_INT64)c;
90 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 2437));
91 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 2457));
92 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 2437));
93 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 2445)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i3, (OOC_Scanner_SymList__Symbol)i2, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i0);
94 return (OOC_IR__Const)i0;
95 ;
96 }
97
OOC_IR_ConstFold__ConstFoldDesc_ValidEval(OOC_IR_ConstFold__ConstFold c,OOC_IR__Expression expr,Object_Boxed__Object * result)98 OOC_CHAR8 OOC_IR_ConstFold__ConstFoldDesc_ValidEval(OOC_IR_ConstFold__ConstFold c, OOC_IR__Expression expr, Object_Boxed__Object *result) {
99 register OOC_INT64 i0,i1,i2;
100
101 i0 = (OOC_INT64)c;
102 *(OOC_INT64*)((_check_pointer(i0, 2648))+8) = (OOC_INT64)0;
103 i1 = (OOC_INT64)expr;
104 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 2670)))), OOC_IR__NodeDesc_Accept)),OOC_IR__NodeDesc_Accept)((OOC_IR__Node)i1, (OOC_IR__Visitor)i0);
105 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 2689))+8);
106 i1 = i1!=(OOC_INT64)0;
107 if (i1) goto l3;
108 i1=0u;
109 goto l5;
110 l3:
111 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 2719));
112 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 2727))+48);
113 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 2708))+8);
114 i1 = i2!=i1;
115
116 l5:
117 if (!i1) goto l7;
118 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 2759))+8);
119 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2770)))), &_td_OOC_IR__ConstDesc, 2770)), 2776))+16);
120 *result = (Object_Boxed__Object)i0;
121 return 1u;
122 l7:
123 return 0u;
124 ;
125 }
126
OOC_IR_ConstFold__ConstFoldDesc_VisitConst(OOC_IR_ConstFold__ConstFold c,OOC_IR__Const _const)127 void OOC_IR_ConstFold__ConstFoldDesc_VisitConst(OOC_IR_ConstFold__ConstFold c, OOC_IR__Const _const) {
128 register OOC_INT64 i0,i1;
129
130 i0 = (OOC_INT64)c;
131 i1 = (OOC_INT64)_const;
132 *(OOC_INT64*)((_check_pointer(i0, 2909))+8) = i1;
133 return;
134 ;
135 }
136
OOC_IR_ConstFold__ConstFoldDesc_VisitVar(OOC_IR_ConstFold__ConstFold c,OOC_IR__Var car)137 void OOC_IR_ConstFold__ConstFoldDesc_VisitVar(OOC_IR_ConstFold__ConstFold c, OOC_IR__Var car) {
138
139 return;
140 ;
141 }
142
OOC_IR_ConstFold__ConstFoldDesc_VisitPredefProc(OOC_IR_ConstFold__ConstFold c,OOC_IR__PredefProc pproc)143 void OOC_IR_ConstFold__ConstFoldDesc_VisitPredefProc(OOC_IR_ConstFold__ConstFold c, OOC_IR__PredefProc pproc) {
144
145 return;
146 ;
147 }
148
OOC_IR_ConstFold__ConstFoldDesc_VisitProcedureRef(OOC_IR_ConstFold__ConstFold c,OOC_IR__ProcedureRef procRef)149 void OOC_IR_ConstFold__ConstFoldDesc_VisitProcedureRef(OOC_IR_ConstFold__ConstFold c, OOC_IR__ProcedureRef procRef) {
150
151 return;
152 ;
153 }
154
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeRef(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeRef typeRef)155 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeRef(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeRef typeRef) {
156
157 return;
158 ;
159 }
160
OOC_IR_ConstFold__ConstFoldDesc_VisitModuleRef(OOC_IR_ConstFold__ConstFold c,OOC_IR__ModuleRef modRef)161 void OOC_IR_ConstFold__ConstFoldDesc_VisitModuleRef(OOC_IR_ConstFold__ConstFold c, OOC_IR__ModuleRef modRef) {
162
163 return;
164 ;
165 }
166
OOC_IR_ConstFold__ConstFoldDesc_VisitAdr(OOC_IR_ConstFold__ConstFold c,OOC_IR__Adr adr)167 void OOC_IR_ConstFold__ConstFoldDesc_VisitAdr(OOC_IR_ConstFold__ConstFold c, OOC_IR__Adr adr) {
168
169 return;
170 ;
171 }
172
OOC_IR_ConstFold__ConstFoldDesc_VisitLen(OOC_IR_ConstFold__ConstFold c,OOC_IR__Len len)173 void OOC_IR_ConstFold__ConstFoldDesc_VisitLen(OOC_IR_ConstFold__ConstFold c, OOC_IR__Len len) {
174 register OOC_INT64 i0,i1,i2,i3,i4,i5;
175 OOC_INT32 length;
176 OOC_SymbolTable__Type type;
177
178 i0 = (OOC_INT64)len;
179 i1 = *(OOC_INT8*)((_check_pointer(i0, 3621))+16);
180 switch (i1) {
181 case 16:
182 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3672))+24);
183 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 3682)))), &_td_OOC_IR__ConstDesc, 3682)), 3688))+16);
184 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 3695)))), &_td_Object_Boxed__StringDesc);
185 if (i1) goto l5;
186 length = 1;
187
188 goto l10;
189 l5:
190 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3738))+24);
191 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 3748)))), &_td_OOC_IR__ConstDesc, 3748)), 3754))+16);
192 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 3767)))), &_td_Object_Boxed__StringDesc, 3767)), 3774));
193 i1 = *(OOC_INT32*)(_check_pointer(i1, 3781));
194 length = (i1+1);
195
196 goto l10;
197 case 17:
198 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 3948))+40);
199 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 3963))+8);
200 i2 = *(OOC_INT32*)((_check_pointer(i0, 4004))+32);
201 i1 = (OOC_INT64)OOC_SymbolTable__ArrayDesc_GetNthElementType((OOC_SymbolTable__Array)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 3974)))), &_td_OOC_SymbolTable__ArrayDesc, 3974)), i2);
202 type = (OOC_SymbolTable__Type)i1;
203 i1 = *(OOC_INT32*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4036)))), &_td_OOC_SymbolTable__ArrayDesc, 4036)), 4042))+96);
204 length = i1;
205 goto l10;
206 case 18:
207 case 19:
208 i1 = (OOC_INT64)c;
209 *(OOC_INT64*)((_check_pointer(i1, 4114))+8) = (OOC_INT64)0;
210 return;
211 goto l10;
212 default:
213 _failed_case(i1, 3613);
214 goto l10;
215 }
216 l10:
217 i1 = (OOC_INT64)c;
218 i2 = length;
219 i2 = (OOC_INT64)Object_BigInt__NewInt(i2);
220 i3 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
221 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 4164));
222 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 4185));
223 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 4164));
224 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 4172)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i2);
225 *(OOC_INT64*)((_check_pointer(i1, 4152))+8) = i0;
226 return;
227 ;
228 }
229
OOC_IR_ConstFold__ConstFoldDesc_VisitConstructor(OOC_IR_ConstFold__ConstFold c,OOC_IR__Constructor cons)230 void OOC_IR_ConstFold__ConstFoldDesc_VisitConstructor(OOC_IR_ConstFold__ConstFold c, OOC_IR__Constructor cons) {
231
232 return;
233 ;
234 }
235
OOC_IR_ConstFold__ConstFoldDesc_VisitCurrentException(OOC_IR_ConstFold__ConstFold c,OOC_IR__CurrentException ce)236 void OOC_IR_ConstFold__ConstFoldDesc_VisitCurrentException(OOC_IR_ConstFold__ConstFold c, OOC_IR__CurrentException ce) {
237
238 return;
239 ;
240 }
241
OOC_IR_ConstFold__ConstFoldDesc_VisitDeref(OOC_IR_ConstFold__ConstFold c,OOC_IR__Deref deref)242 void OOC_IR_ConstFold__ConstFoldDesc_VisitDeref(OOC_IR_ConstFold__ConstFold c, OOC_IR__Deref deref) {
243
244 return;
245 ;
246 }
247
OOC_IR_ConstFold__ConstFoldDesc_VisitIndex(OOC_IR_ConstFold__ConstFold c,OOC_IR__Index index)248 void OOC_IR_ConstFold__ConstFoldDesc_VisitIndex(OOC_IR_ConstFold__ConstFold c, OOC_IR__Index index) {
249
250 return;
251 ;
252 }
253
OOC_IR_ConstFold__ConstFoldDesc_VisitSetMember(OOC_IR_ConstFold__ConstFold c,OOC_IR__SetMember op)254 void OOC_IR_ConstFold__ConstFoldDesc_VisitSetMember(OOC_IR_ConstFold__ConstFold c, OOC_IR__SetMember op) {
255 register OOC_INT64 i0,i1,i2,i3;
256 Object_Boxed__Object e;
257 Object_Boxed__Object s;
258 OOC_INT32 element;
259 OOC_UINT32 set;
260
261 i0 = (OOC_INT64)op;
262 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 4975))+16);
263 i2 = (OOC_INT64)c;
264 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&e);
265 if (i1) goto l3;
266 i1=0u;
267 goto l5;
268 l3:
269 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5004))+24);
270 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&s);
271
272 l5:
273 if (i1) goto l7;
274 *(OOC_INT64*)((_check_pointer(i2, 5168))+8) = (OOC_INT64)0;
275 goto l8;
276 l7:
277 i1 = (OOC_INT64)e;
278 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5044)))), &_td_Object_BigInt__BigIntDesc, 5044)));
279 element = i1;
280 i3 = (OOC_INT64)s;
281 i3 = *(OOC_UINT32*)(_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 5086)))), &_td_Object_Boxed__SetDesc, 5086)), 5090));
282 set = i3;
283 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_BooleanConst((OOC_IR_ConstFold__ConstFold)i2, (_in(i1,i3)), (OOC_IR__Operator)i0);
284 *(OOC_INT64*)((_check_pointer(i2, 5105))+8) = i0;
285 l8:
286 return;
287 ;
288 }
289
OOC_IR_ConstFold__ConstFoldDesc_VisitSetRange(OOC_IR_ConstFold__ConstFold c,OOC_IR__SetRange op)290 void OOC_IR_ConstFold__ConstFoldDesc_VisitSetRange(OOC_IR_ConstFold__ConstFold c, OOC_IR__SetRange op) {
291 register OOC_INT64 i0,i1,i2,i3,i4;
292 Object_Boxed__Object l;
293 Object_Boxed__Object r;
294 OOC_INT32 left;
295 OOC_INT32 right;
296
297 i0 = (OOC_INT64)op;
298 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5363))+16);
299 i2 = (OOC_INT64)c;
300 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&l);
301 if (i1) goto l3;
302 i1=0u;
303 goto l5;
304 l3:
305 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5389))+24);
306 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&r);
307
308 l5:
309 if (i1) goto l7;
310 *(OOC_INT64*)((_check_pointer(i2, 5574))+8) = (OOC_INT64)0;
311 goto l8;
312 l7:
313 i1 = (OOC_INT64)l;
314 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5425)))), &_td_Object_BigInt__BigIntDesc, 5425)));
315 left = i1;
316 i3 = (OOC_INT64)r;
317 i3 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 5470)))), &_td_Object_BigInt__BigIntDesc, 5470)));
318 right = i3;
319 i4 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Set.baseTypes[0]);
320 Object_Boxed__SetDesc_INIT((Object_Boxed__Set)i4, (_bit_range(i1,i3)));
321 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i4, (OOC_IR__Operator)i0);
322 *(OOC_INT64*)((_check_pointer(i2, 5498))+8) = i0;
323 l8:
324 return;
325 ;
326 }
327
OOC_IR_ConstFold__ConstFoldDesc_VisitSetOp(OOC_IR_ConstFold__ConstFold c,OOC_IR__SetOp op)328 void OOC_IR_ConstFold__ConstFoldDesc_VisitSetOp(OOC_IR_ConstFold__ConstFold c, OOC_IR__SetOp op) {
329 register OOC_INT64 i0,i1,i2,i3,i4;
330 Object_Boxed__Object l;
331 Object_Boxed__Object r;
332 OOC_UINT32 left;
333 OOC_UINT32 right;
334 OOC_UINT32 result;
335
336 i0 = (OOC_INT64)op;
337 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5778))+24);
338 i2 = (OOC_INT64)c;
339 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&l);
340 if (i1) goto l3;
341 i1=0u;
342 goto l5;
343 l3:
344 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 5804))+32);
345 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&r);
346
347 l5:
348 if (i1) goto l7;
349 *(OOC_INT64*)((_check_pointer(i2, 6295))+8) = (OOC_INT64)0;
350 goto l15;
351 l7:
352 i1 = (OOC_INT64)l;
353 i1 = *(OOC_UINT32*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5842)))), &_td_Object_Boxed__SetDesc, 5842)), 5846));
354 left = i1;
355 i3 = (OOC_INT64)r;
356 i3 = *(OOC_UINT32*)(_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 5878)))), &_td_Object_Boxed__SetDesc, 5878)), 5882));
357 right = i3;
358 i4 = *(OOC_INT8*)((_check_pointer(i0, 5908))+16);
359 switch (i4) {
360 case 6:
361 result = (i1|i3);
362 goto l14;
363 case 7:
364 result = (_logical_subtr(i1,i3));
365 goto l14;
366 case 8:
367 result = (i1&i3);
368 goto l14;
369 case 9:
370 result = (i1^i3);
371 goto l14;
372 default:
373 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 6136));
374 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 6168));
375 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 6136));
376 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 6144)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i4, 6, (OOC_Scanner_SymList__Symbol)i3);
377 *(OOC_INT64*)((_check_pointer(i2, 6185))+8) = (OOC_INT64)0;
378 return;
379 goto l14;
380 }
381 l14:
382 i1 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Set.baseTypes[0]);
383 i3 = result;
384 Object_Boxed__SetDesc_INIT((Object_Boxed__Set)i1, i3);
385 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
386 *(OOC_INT64*)((_check_pointer(i2, 6226))+8) = i0;
387 l15:
388 return;
389 ;
390 }
391
OOC_IR_ConstFold__ConstFoldDesc_VisitChangeElement(OOC_IR_ConstFold__ConstFold c,OOC_IR__ChangeElement op)392 void OOC_IR_ConstFold__ConstFoldDesc_VisitChangeElement(OOC_IR_ConstFold__ConstFold c, OOC_IR__ChangeElement op) {
393
394 return;
395 ;
396 }
397
OOC_IR_ConstFold__ConstFoldDesc_VisitSelectField(OOC_IR_ConstFold__ConstFold c,OOC_IR__SelectField sf)398 void OOC_IR_ConstFold__ConstFoldDesc_VisitSelectField(OOC_IR_ConstFold__ConstFold c, OOC_IR__SelectField sf) {
399
400 return;
401 ;
402 }
403
OOC_IR_ConstFold__ConstFoldDesc_VisitSelectProc(OOC_IR_ConstFold__ConstFold c,OOC_IR__SelectProc sp)404 void OOC_IR_ConstFold__ConstFoldDesc_VisitSelectProc(OOC_IR_ConstFold__ConstFold c, OOC_IR__SelectProc sp) {
405
406 return;
407 ;
408 }
409
OOC_IR_ConstFold__ConstFoldDesc_VisitNegate(OOC_IR_ConstFold__ConstFold c,OOC_IR__Negate op)410 void OOC_IR_ConstFold__ConstFoldDesc_VisitNegate(OOC_IR_ConstFold__ConstFold c, OOC_IR__Negate op) {
411 register OOC_INT64 i0,i1,i2,i3;
412 Object_Boxed__Object value;
413 OOC_INT16 id;
414
415 i0 = (OOC_INT64)op;
416 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 6766))+16);
417 i2 = (OOC_INT64)c;
418 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&value);
419 if (i1) goto l3;
420 *(OOC_INT64*)((_check_pointer(i2, 7329))+8) = (OOC_INT64)0;
421 goto l10;
422 l3:
423 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 6800))+16);
424 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 6808))+8);
425 i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 6818)))), &_td_OOC_SymbolTable__PredefTypeDesc, 6818)), 6829))+72);
426 id = i1;
427 switch (i1) {
428 case 4 ... 7:
429 i1 = (OOC_INT64)value;
430 i1 = (OOC_INT64)Object_BigInt__BigIntDesc_Neg((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 6933)))), &_td_Object_BigInt__BigIntDesc, 6933)));
431 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
432 *(OOC_INT64*)((_check_pointer(i2, 6896))+8) = i0;
433 goto l10;
434 case 10:
435 i1 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Set.baseTypes[0]);
436 i3 = (OOC_INT64)value;
437 i3 = *(OOC_UINT32*)(_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 7030)))), &_td_Object_Boxed__SetDesc, 7030)), 7034));
438 Object_Boxed__SetDesc_INIT((Object_Boxed__Set)i1, (~i3));
439 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
440 *(OOC_INT64*)((_check_pointer(i2, 6978))+8) = i0;
441 goto l10;
442 case 8:
443 case 9:
444 i1 = (OOC_INT64)value;
445 i1 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7153)))), &_td_Object_Boxed__LongRealDesc, 7153)), 7162)))), Object_Boxed__LongRealDesc_Neg)),Object_Boxed__LongRealDesc_Neg)((Object_Boxed__LongReal)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7153)))), &_td_Object_Boxed__LongRealDesc, 7153)));
446 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
447 *(OOC_INT64*)((_check_pointer(i2, 7117))+8) = i0;
448 goto l10;
449 default:
450 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 7238));
451 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 7278));
452 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 7238));
453 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7246)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i3, 7, (OOC_Scanner_SymList__Symbol)i0);
454 *(OOC_INT64*)((_check_pointer(i2, 7292))+8) = (OOC_INT64)0;
455 goto l10;
456 }
457 l10:
458 return;
459 ;
460 }
461
OOC_IR_ConstFold__ConstFoldDesc_VisitNewBlock(OOC_IR_ConstFold__ConstFold c,OOC_IR__NewBlock _new)462 void OOC_IR_ConstFold__ConstFoldDesc_VisitNewBlock(OOC_IR_ConstFold__ConstFold c, OOC_IR__NewBlock _new) {
463
464 return;
465 ;
466 }
467
OOC_IR_ConstFold__ConstFoldDesc_VisitNewObject(OOC_IR_ConstFold__ConstFold c,OOC_IR__NewObject _new)468 void OOC_IR_ConstFold__ConstFoldDesc_VisitNewObject(OOC_IR_ConstFold__ConstFold c, OOC_IR__NewObject _new) {
469
470 return;
471 ;
472 }
473
OOC_IR_ConstFold__ConstFoldDesc_VisitNot(OOC_IR_ConstFold__ConstFold c,OOC_IR__Not op)474 void OOC_IR_ConstFold__ConstFoldDesc_VisitNot(OOC_IR_ConstFold__ConstFold c, OOC_IR__Not op) {
475 register OOC_INT64 i0,i1,i2;
476 Object_Boxed__Object value;
477
478 i0 = (OOC_INT64)op;
479 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 7656))+16);
480 i2 = (OOC_INT64)c;
481 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&value);
482 if (i1) goto l3;
483 *(OOC_INT64*)((_check_pointer(i2, 7755))+8) = (OOC_INT64)0;
484 goto l4;
485 l3:
486 i1 = (OOC_INT64)value;
487 i1 = *(OOC_UINT8*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 7722)))), &_td_Object_Boxed__BooleanDesc, 7722)), 7730));
488 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_BooleanConst((OOC_IR_ConstFold__ConstFold)i2, (!i1), (OOC_IR__Operator)i0);
489 *(OOC_INT64*)((_check_pointer(i2, 7683))+8) = i0;
490 l4:
491 return;
492 ;
493 }
494
OOC_IR_ConstFold__ConstFoldDesc_VisitAbs(OOC_IR_ConstFold__ConstFold c,OOC_IR__Abs op)495 void OOC_IR_ConstFold__ConstFoldDesc_VisitAbs(OOC_IR_ConstFold__ConstFold c, OOC_IR__Abs op) {
496
497 return;
498 ;
499 }
500
OOC_IR_ConstFold__ConstFoldDesc_VisitAsh(OOC_IR_ConstFold__ConstFold c,OOC_IR__Ash op)501 void OOC_IR_ConstFold__ConstFoldDesc_VisitAsh(OOC_IR_ConstFold__ConstFold c, OOC_IR__Ash op) {
502 register OOC_INT64 i0,i1,i2,i3;
503 Object_Boxed__Object v;
504 Object_Boxed__Object e;
505 OOC_INT32 shift;
506
507 i0 = (OOC_INT64)op;
508 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8014))+16);
509 i2 = (OOC_INT64)c;
510 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&v);
511 if (i1) goto l3;
512 i1=0u;
513 goto l5;
514 l3:
515 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8041))+24);
516 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&e);
517
518 l5:
519 if (i1) goto l7;
520 *(OOC_INT64*)((_check_pointer(i2, 8313))+8) = (OOC_INT64)0;
521 goto l12;
522 l7:
523 i1 = (OOC_INT64)e;
524 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8079)))), &_td_Object_BigInt__BigIntDesc, 8079)));
525 shift = i1;
526 i3 = i1<0;
527 if (i3) goto l10;
528 i3 = (OOC_INT64)v;
529 i1 = (OOC_INT64)Object_BigInt__BigIntDesc_LShift((Object_BigInt__BigInt)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 8256)))), &_td_Object_BigInt__BigIntDesc, 8256)), i1);
530 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
531 *(OOC_INT64*)((_check_pointer(i2, 8221))+8) = i0;
532 goto l12;
533 l10:
534 i3 = (OOC_INT64)v;
535 i1 = (OOC_INT64)Object_BigInt__BigIntDesc_RShift((Object_BigInt__BigInt)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 8170)))), &_td_Object_BigInt__BigIntDesc, 8170)), (-i1));
536 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i2, (Object_Boxed__Object)i1, (OOC_IR__Operator)i0);
537 *(OOC_INT64*)((_check_pointer(i2, 8135))+8) = i0;
538 l12:
539 return;
540 ;
541 }
542
OOC_IR_ConstFold__ConstFoldDesc_VisitCap(OOC_IR_ConstFold__ConstFold c,OOC_IR__Cap op)543 void OOC_IR_ConstFold__ConstFoldDesc_VisitCap(OOC_IR_ConstFold__ConstFold c, OOC_IR__Cap op) {
544 register OOC_INT64 i0,i1,i2,i3,i4,i5;
545 Object_Boxed__Object value;
546 OOC_CHAR8 str[2];
547
548 i0 = (OOC_INT64)op;
549 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8482))+16);
550 i2 = (OOC_INT64)c;
551 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&value);
552 if (i1) goto l3;
553 *(OOC_INT64*)((_check_pointer(i2, 8755))+8) = (OOC_INT64)0;
554 goto l4;
555 l3:
556 i1 = (OOC_INT64)value;
557 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8546)))), &_td_Object_Boxed__StringDesc, 8546)), 8553));
558 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8546)))), &_td_Object_Boxed__StringDesc, 8546)), 8553));
559 i1 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 8559)))), Object__StringDesc_CharAt)),Object__StringDesc_CharAt)((Object__String)i1, 0);
560 *(OOC_UINT8*)((OOC_INT64)str+(_check_index(0, 2, OOC_UINT8, 8511))) = (_cap(i1));
561 *(OOC_UINT8*)((OOC_INT64)str+(_check_index(1, 2, OOC_UINT8, 8581))) = 0u;
562 i1 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__String.baseTypes[0]);
563 i3 = (OOC_INT64)Object__NewLatin1((void*)(OOC_INT64)str, 2);
564 Object_Boxed__StringDesc_INIT((Object_Boxed__String)i1, (Object__String)i3);
565 i3 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(1);
566 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 8609));
567 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 8629));
568 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 8609));
569 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 8617)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i1);
570 *(OOC_INT64*)((_check_pointer(i2, 8597))+8) = i0;
571 l4:
572 return;
573 ;
574 }
575
OOC_IR_ConstFold__ConstFoldDesc_VisitEntier(OOC_IR_ConstFold__ConstFold c,OOC_IR__Entier op)576 void OOC_IR_ConstFold__ConstFoldDesc_VisitEntier(OOC_IR_ConstFold__ConstFold c, OOC_IR__Entier op) {
577 register OOC_INT64 i0,i1,i2,i3,i4,i5;
578 register OOC_REAL64 d0;
579 Object_Boxed__Object value;
580 OOC_INT32 i;
581
582 i0 = (OOC_INT64)op;
583 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 8924))+16);
584 i2 = (OOC_INT64)c;
585 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&value);
586 if (i1) goto l3;
587 *(OOC_INT64*)((_check_pointer(i2, 9144))+8) = (OOC_INT64)0;
588 goto l4;
589 l3:
590 i1 = (OOC_INT64)value;
591 d0 = *(OOC_REAL64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 8976)))), &_td_Object_Boxed__LongRealDesc, 8976)), 8985));
592 i1 = _entier(d0);
593 i = i1;
594 i1 = (OOC_INT64)Object_BigInt__NewInt(i1);
595 i3 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(6);
596 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 9013));
597 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9033));
598 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 9013));
599 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 9021)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i1);
600 *(OOC_INT64*)((_check_pointer(i2, 9001))+8) = i0;
601 l4:
602 return;
603 ;
604 }
605
OOC_IR_ConstFold__ConstFoldDesc_VisitOdd(OOC_IR_ConstFold__ConstFold c,OOC_IR__Odd op)606 void OOC_IR_ConstFold__ConstFoldDesc_VisitOdd(OOC_IR_ConstFold__ConstFold c, OOC_IR__Odd op) {
607
608 return;
609 ;
610 }
611
OOC_IR_ConstFold__ConstFoldDesc_VisitShift(OOC_IR_ConstFold__ConstFold c,OOC_IR__Shift op)612 void OOC_IR_ConstFold__ConstFoldDesc_VisitShift(OOC_IR_ConstFold__ConstFold c, OOC_IR__Shift op) {
613
614 return;
615 ;
616 }
617
OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith(OOC_IR_ConstFold__ConstFold c,OOC_IR__BinaryArith op)618 void OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith(OOC_IR_ConstFold__ConstFold c, OOC_IR__BinaryArith op) {
619 register OOC_INT64 i0,i1,i2;
620 Object_Boxed__Object l;
621 Object_Boxed__Object r;
622 Object_Boxed__Object result;
623 auto Object_Boxed__Object OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_IntegerOp(void);
624 auto Object_Boxed__Object OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_RealOp(void);
625
626 Object_Boxed__Object OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_IntegerOp(void) {
627 register OOC_INT64 i0,i1,i2,i3;
628 Object_BigInt__BigInt left;
629 Object_BigInt__BigInt right;
630
631 i0 = (OOC_INT64)l;
632 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 9567)))), &_td_Object_BigInt__BigIntDesc, 9567);
633 left = (Object_BigInt__BigInt)i0;
634 i1 = (OOC_INT64)r;
635 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9598)))), &_td_Object_BigInt__BigIntDesc, 9598);
636 right = (Object_BigInt__BigInt)i1;
637 i2 = (OOC_INT64)op;
638 i3 = *(OOC_INT8*)((_check_pointer(i2, 9623))+16);
639 switch (i3) {
640 case 0:
641 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Add((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i1);
642 return (Object_Boxed__Object)i0;
643 goto l16;
644 case 1:
645 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Sub((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i1);
646 return (Object_Boxed__Object)i0;
647 goto l16;
648 case 4:
649 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Mul((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i1);
650 return (Object_Boxed__Object)i0;
651 goto l16;
652 case 2:
653 i3 = Object_BigInt__BigIntDesc_Sign((Object_BigInt__BigInt)i1);
654 i3 = i3==0;
655 if (i3) goto l8;
656 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Div((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i1);
657 return (Object_Boxed__Object)i0;
658 goto l16;
659 l8:
660 i0 = (OOC_INT64)c;
661 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9876));
662 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9876));
663 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 9911));
664 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 9884)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 8, (OOC_Scanner_SymList__Symbol)i2);
665 goto l16;
666 case 5:
667 i3 = Object_BigInt__BigIntDesc_Sign((Object_BigInt__BigInt)i1);
668 i3 = i3==0;
669 if (i3) goto l13;
670 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Mod((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i1);
671 return (Object_Boxed__Object)i0;
672 goto l16;
673 l13:
674 i0 = (OOC_INT64)c;
675 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10031));
676 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10031));
677 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 10066));
678 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10039)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 8, (OOC_Scanner_SymList__Symbol)i2);
679 goto l16;
680 default:
681 i0 = (OOC_INT64)c;
682 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10143));
683 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10143));
684 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 10175));
685 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10151)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
686 goto l16;
687 }
688 l16:
689 return (Object_Boxed__Object)(OOC_INT64)0;
690 ;
691 }
692
693
694 Object_Boxed__Object OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_RealOp(void) {
695 register OOC_INT64 i0,i1,i2,i3;
696 register OOC_REAL64 d0;
697 Object_Boxed__LongReal left;
698 Object_Boxed__LongReal right;
699
700 i0 = (OOC_INT64)l;
701 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10331)))), &_td_Object_Boxed__LongRealDesc, 10331);
702 left = (Object_Boxed__LongReal)i0;
703 i1 = (OOC_INT64)r;
704 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10363)))), &_td_Object_Boxed__LongRealDesc, 10363);
705 right = (Object_Boxed__LongReal)i1;
706 i2 = (OOC_INT64)op;
707 i3 = *(OOC_INT8*)((_check_pointer(i2, 10390))+16);
708 switch (i3) {
709 case 0:
710 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10433)))), Object_Boxed__LongRealDesc_Add)),Object_Boxed__LongRealDesc_Add)((Object_Boxed__LongReal)i0, (Object_Boxed__LongReal)i1);
711 return (Object_Boxed__Object)i0;
712 goto l11;
713 case 1:
714 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10477)))), Object_Boxed__LongRealDesc_Sub)),Object_Boxed__LongRealDesc_Sub)((Object_Boxed__LongReal)i0, (Object_Boxed__LongReal)i1);
715 return (Object_Boxed__Object)i0;
716 goto l11;
717 case 4:
718 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10521)))), Object_Boxed__LongRealDesc_Mul)),Object_Boxed__LongRealDesc_Mul)((Object_Boxed__LongReal)i0, (Object_Boxed__LongReal)i1);
719 return (Object_Boxed__Object)i0;
720 goto l11;
721 case 3:
722 d0 = *(OOC_REAL64*)(_check_pointer(i1, 10570));
723 i3 = d0==0.0000000000000000;
724 if (i3) goto l8;
725 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 10668)))), Object_Boxed__LongRealDesc_Div)),Object_Boxed__LongRealDesc_Div)((Object_Boxed__LongReal)i0, (Object_Boxed__LongReal)i1);
726 return (Object_Boxed__Object)i0;
727 goto l11;
728 l8:
729 i0 = (OOC_INT64)c;
730 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10596));
731 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10596));
732 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 10631));
733 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10604)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 8, (OOC_Scanner_SymList__Symbol)i2);
734 goto l11;
735 default:
736 i0 = (OOC_INT64)c;
737 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10708));
738 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 10708));
739 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 10740));
740 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 10716)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
741 goto l11;
742 }
743 l11:
744 return (Object_Boxed__Object)(OOC_INT64)0;
745 ;
746 }
747
748
749 i0 = (OOC_INT64)op;
750 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10876))+24);
751 i2 = (OOC_INT64)c;
752 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&l);
753 if (i1) goto l3;
754 i1=0u;
755 goto l5;
756 l3:
757 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10902))+32);
758 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&r);
759
760 l5:
761 if (!i1) goto l14;
762 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10944))+24);
763 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10949))+8);
764 i0 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i0);
765 if (i0) goto l9;
766 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_RealOp();
767 result = (Object_Boxed__Object)i0;
768
769 goto l10;
770 l9:
771 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitBinaryArith_IntegerOp();
772 result = (Object_Boxed__Object)i0;
773
774 l10:
775 i1 = i0!=(OOC_INT64)0;
776 if (!i1) goto l14;
777 i1 = (OOC_INT64)c;
778 i2 = (OOC_INT64)op;
779 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_ValueConst((OOC_IR_ConstFold__ConstFold)i1, (Object_Boxed__Object)i0, (OOC_IR__Operator)i2);
780 *(OOC_INT64*)((_check_pointer(i1, 11137))+8) = i0;
781 return;
782 l14:
783 i0 = (OOC_INT64)c;
784 *(OOC_INT64*)((_check_pointer(i0, 11206))+8) = (OOC_INT64)0;
785 return;
786 ;
787 }
788
OOC_IR_ConstFold__ConstFoldDesc_VisitBooleanOp(OOC_IR_ConstFold__ConstFold c,OOC_IR__BooleanOp op)789 void OOC_IR_ConstFold__ConstFoldDesc_VisitBooleanOp(OOC_IR_ConstFold__ConstFold c, OOC_IR__BooleanOp op) {
790 register OOC_INT64 i0,i1,i2,i3,i4;
791 Object_Boxed__Object l;
792 Object_Boxed__Object r;
793 OOC_CHAR8 left;
794 OOC_CHAR8 right;
795 OOC_CHAR8 result;
796
797 i0 = (OOC_INT64)op;
798 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11402))+24);
799 i2 = (OOC_INT64)c;
800 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&l);
801 if (i1) goto l3;
802 i1=0u;
803 goto l5;
804 l3:
805 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11428))+32);
806 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&r);
807
808 l5:
809 if (i1) goto l7;
810 *(OOC_INT64*)((_check_pointer(i2, 11702))+8) = (OOC_INT64)0;
811 goto l21;
812 l7:
813 i1 = (OOC_INT64)l;
814 i1 = *(OOC_UINT8*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 11466)))), &_td_Object_Boxed__BooleanDesc, 11466)), 11474));
815 left = i1;
816 i3 = (OOC_INT64)r;
817 i3 = *(OOC_UINT8*)(_check_pointer((_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 11505)))), &_td_Object_Boxed__BooleanDesc, 11505)), 11513));
818 right = i3;
819 i4 = *(OOC_INT8*)((_check_pointer(i0, 11534))+16);
820 switch (i4) {
821 case 20:
822 if (i1) goto l12;
823 i1=0u;
824 goto l13;
825 l12:
826 i1=i3;
827 l13:
828 result = i1;
829 goto l20;
830 case 21:
831 if (i1) goto l17;
832 i1=i3;
833 goto l18;
834 l17:
835 i1=1u;
836 l18:
837 result = i1;
838 goto l20;
839 default:
840 _failed_case(i4, 11527);
841 goto l20;
842 }
843 l20:
844 i1 = result;
845 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_BooleanConst((OOC_IR_ConstFold__ConstFold)i2, i1, (OOC_IR__Operator)i0);
846 *(OOC_INT64*)((_check_pointer(i2, 11647))+8) = i0;
847 l21:
848 return;
849 ;
850 }
851
OOC_IR_ConstFold__ConstFoldDesc_VisitConcat(OOC_IR_ConstFold__ConstFold c,OOC_IR__Concat op)852 void OOC_IR_ConstFold__ConstFoldDesc_VisitConcat(OOC_IR_ConstFold__ConstFold c, OOC_IR__Concat op) {
853 register OOC_INT64 i0,i1,i2,i3,i4,i5,i6;
854 Object__String s;
855 OOC_INT32 i;
856
857 i0 = (OOC_INT64)Object__emptyString;
858 s = (Object__String)i0;
859 i1 = (OOC_INT64)op;
860 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11903))+16);
861 i = 0;
862 i2 = OOC_ARRAY_LENGTH((_check_pointer(i2, 11911)), 0);
863 i3 = (OOC_INT64)c;
864 i4 = 0<i2;
865 if (!i4) goto l13;
866 i4=i0;i0=0;
867 l4_loop:
868 i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11931))+16);
869 i5 = _check_pointer(i5, 11939);
870 i6 = OOC_ARRAY_LENGTH(i5, 0);
871 i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i0, i6, OOC_UINT32, 11939))*8);
872 i5 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 11943)))), &_td_OOC_IR__ConstDesc);
873 if (i5) goto l7;
874 *(OOC_INT64*)((_check_pointer(i3, 12047))+8) = (OOC_INT64)0;
875 return;
876
877 goto l8;
878 l7:
879 i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11978))+16);
880 i5 = _check_pointer(i5, 11986);
881 i6 = OOC_ARRAY_LENGTH(i5, 0);
882 i5 = (OOC_INT64)*(OOC_INT64*)(i5+(_check_index(i0, i6, OOC_UINT32, 11986))*8);
883 i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i5, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 11993)))), &_td_OOC_IR__ConstDesc, 11993)), 11999))+16);
884 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i5, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i5, 12012)))), &_td_Object_Boxed__StringDesc, 12012)), 12019));
885 i4 = (OOC_INT64)Object__Concat2((void*)i4,(void*)i5);
886 s = (Object__String)i4;
887
888 l8:
889 i0 = i0+1;
890 i = i0;
891 i5 = i0<i2;
892 if (i5) goto l4_loop;
893 l12:
894 i0=i4;
895 l13:
896 i2 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__String.baseTypes[0]);
897 Object_Boxed__StringDesc_INIT((Object_Boxed__String)i2, (Object__String)i0);
898 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 12116));
899 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 12136));
900 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 12144))+8);
901 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 12116));
902 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12124)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i4, (OOC_SymbolTable__Type)i1, (Object_Boxed__Object)i2);
903 *(OOC_INT64*)((_check_pointer(i3, 12104))+8) = i0;
904 return;
905 ;
906 }
907
OOC_IR_ConstFold__ConstFoldDesc_VisitCompare(OOC_IR_ConstFold__ConstFold c,OOC_IR__Compare op)908 void OOC_IR_ConstFold__ConstFoldDesc_VisitCompare(OOC_IR_ConstFold__ConstFold c, OOC_IR__Compare op) {
909 register OOC_INT64 i0,i1,i2;
910 Object_Boxed__Object l;
911 Object_Boxed__Object r;
912 Object_Boxed__Boolean result;
913 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_StringOp(void);
914 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_IntegerOp(void);
915 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_RealOp(void);
916 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_CharOp(void);
917 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_BooleanOp(void);
918 auto Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_SetOp(void);
919
920 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_StringOp(void) {
921 register OOC_INT64 i0,i1,i2,i3;
922 Object_Boxed__String left;
923 Object_Boxed__String right;
924 OOC_CHAR8 result;
925
926 i0 = (OOC_INT64)l;
927 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12464)))), &_td_Object_Boxed__StringDesc, 12464);
928 left = (Object_Boxed__String)i0;
929 i1 = (OOC_INT64)r;
930 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 12494)))), &_td_Object_Boxed__StringDesc, 12494);
931 right = (Object_Boxed__String)i1;
932 i2 = (OOC_INT64)op;
933 i3 = *(OOC_INT8*)((_check_pointer(i2, 12514))+16);
934 switch (i3) {
935 case 10:
936 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12563)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
937 result = (i0==0);
938 goto l9;
939 case 11:
940 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12617)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
941 result = (i0!=0);
942 goto l9;
943 case 12:
944 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12671)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
945 result = (i0<0);
946 goto l9;
947 case 13:
948 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12725)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
949 result = (i0<=0);
950 goto l9;
951 case 14:
952 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12780)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
953 result = (i0>0);
954 goto l9;
955 case 15:
956 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12834)))), Object_Boxed__StringDesc_Cmp)),Object_Boxed__StringDesc_Cmp)((Object_Boxed__String)i0, (Object__Object)i1);
957 result = (i0>=0);
958 goto l9;
959 default:
960 i0 = (OOC_INT64)c;
961 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12868));
962 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 12900));
963 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12868));
964 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 12876)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
965 return (Object_Boxed__Boolean)(OOC_INT64)0;
966 goto l9;
967 }
968 l9:
969 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
970 i1 = result;
971 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
972 return (Object_Boxed__Boolean)i0;
973 ;
974 }
975
976
977 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_IntegerOp(void) {
978 register OOC_INT64 i0,i1,i2,i3;
979 Object_BigInt__BigInt left;
980 Object_BigInt__BigInt right;
981 OOC_CHAR8 result;
982
983 i0 = (OOC_INT64)l;
984 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13112)))), &_td_Object_BigInt__BigIntDesc, 13112);
985 left = (Object_BigInt__BigInt)i0;
986 i1 = (OOC_INT64)r;
987 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 13144)))), &_td_Object_BigInt__BigIntDesc, 13144);
988 right = (Object_BigInt__BigInt)i1;
989 i2 = (OOC_INT64)op;
990 i3 = *(OOC_INT8*)((_check_pointer(i2, 13169))+16);
991 switch (i3) {
992 case 10:
993 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
994 result = (i0==0);
995 goto l9;
996 case 11:
997 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
998 result = (i0!=0);
999 goto l9;
1000 case 12:
1001 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
1002 result = (i0<0);
1003 goto l9;
1004 case 13:
1005 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
1006 result = (i0<=0);
1007 goto l9;
1008 case 14:
1009 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
1010 result = (i0>0);
1011 goto l9;
1012 case 15:
1013 i0 = Object_BigInt__BigIntDesc_Cmp((Object_BigInt__BigInt)i0, (Object__Object)i1);
1014 result = (i0>=0);
1015 goto l9;
1016 default:
1017 i0 = (OOC_INT64)c;
1018 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 13523));
1019 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 13555));
1020 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 13523));
1021 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 13531)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
1022 return (Object_Boxed__Boolean)(OOC_INT64)0;
1023 goto l9;
1024 }
1025 l9:
1026 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
1027 i1 = result;
1028 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
1029 return (Object_Boxed__Boolean)i0;
1030 ;
1031 }
1032
1033
1034 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_RealOp(void) {
1035 register OOC_INT64 i0,i1,i2,i3;
1036 Object_Boxed__LongReal left;
1037 Object_Boxed__LongReal right;
1038 OOC_CHAR8 result;
1039
1040 i0 = (OOC_INT64)l;
1041 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13765)))), &_td_Object_Boxed__LongRealDesc, 13765);
1042 left = (Object_Boxed__LongReal)i0;
1043 i1 = (OOC_INT64)r;
1044 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 13798)))), &_td_Object_Boxed__LongRealDesc, 13798);
1045 right = (Object_Boxed__LongReal)i1;
1046 i2 = (OOC_INT64)op;
1047 i3 = *(OOC_INT8*)((_check_pointer(i2, 13825))+16);
1048 switch (i3) {
1049 case 10:
1050 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13874)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1051 result = (i0==0);
1052 goto l9;
1053 case 11:
1054 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13928)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1055 result = (i0!=0);
1056 goto l9;
1057 case 12:
1058 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 13982)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1059 result = (i0<0);
1060 goto l9;
1061 case 13:
1062 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14036)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1063 result = (i0<=0);
1064 goto l9;
1065 case 14:
1066 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14091)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1067 result = (i0>0);
1068 goto l9;
1069 case 15:
1070 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14145)))), Object_Boxed__LongRealDesc_Cmp)),Object_Boxed__LongRealDesc_Cmp)((Object_Boxed__LongReal)i0, (Object__Object)i1);
1071 result = (i0>=0);
1072 goto l9;
1073 default:
1074 i0 = (OOC_INT64)c;
1075 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 14179));
1076 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 14211));
1077 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 14179));
1078 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14187)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
1079 return (Object_Boxed__Boolean)(OOC_INT64)0;
1080 goto l9;
1081 }
1082 l9:
1083 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
1084 i1 = result;
1085 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
1086 return (Object_Boxed__Boolean)i0;
1087 ;
1088 }
1089
1090
1091 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_CharOp(void) {
1092 register OOC_INT64 i0,i1,i2,i3;
1093 OOC_CHAR32 left;
1094 OOC_CHAR32 right;
1095 OOC_CHAR8 result;
1096
1097 i0 = (OOC_INT64)l;
1098 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14412)))), &_td_Object_Boxed__StringDesc, 14412)), 14419));
1099 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 14412)))), &_td_Object_Boxed__StringDesc, 14412)), 14419));
1100 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14425)))), Object__StringDesc_CharAt)),Object__StringDesc_CharAt)((Object__String)i0, 0);
1101 left = i0;
1102 i1 = (OOC_INT64)r;
1103 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14458)))), &_td_Object_Boxed__StringDesc, 14458)), 14465));
1104 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14458)))), &_td_Object_Boxed__StringDesc, 14458)), 14465));
1105 i1 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i2, 14471)))), Object__StringDesc_CharAt)),Object__StringDesc_CharAt)((Object__String)i1, 0);
1106 right = i1;
1107 i2 = (OOC_INT64)op;
1108 i3 = *(OOC_INT8*)((_check_pointer(i2, 14499))+16);
1109 switch (i3) {
1110 case 10:
1111 result = (i0==i1);
1112 goto l9;
1113 case 11:
1114 result = (i0!=i1);
1115 goto l9;
1116 case 12:
1117 result = ((OOC_UINT32)i0<(OOC_UINT32)i1);
1118 goto l9;
1119 case 13:
1120 result = ((OOC_UINT32)i0<=(OOC_UINT32)i1);
1121 goto l9;
1122 case 14:
1123 result = ((OOC_UINT32)i0>(OOC_UINT32)i1);
1124 goto l9;
1125 case 15:
1126 result = ((OOC_UINT32)i0>=(OOC_UINT32)i1);
1127 goto l9;
1128 default:
1129 i0 = (OOC_INT64)c;
1130 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 14811));
1131 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 14843));
1132 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 14811));
1133 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 14819)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
1134 return (Object_Boxed__Boolean)(OOC_INT64)0;
1135 goto l9;
1136 }
1137 l9:
1138 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
1139 i1 = result;
1140 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
1141 return (Object_Boxed__Boolean)i0;
1142 ;
1143 }
1144
1145
1146 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_BooleanOp(void) {
1147 register OOC_INT64 i0,i1,i2,i3;
1148 OOC_CHAR8 left;
1149 OOC_CHAR8 right;
1150 OOC_CHAR8 result;
1151
1152 i0 = (OOC_INT64)l;
1153 i0 = *(OOC_UINT8*)(_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15046)))), &_td_Object_Boxed__BooleanDesc, 15046)), 15054));
1154 left = i0;
1155 i1 = (OOC_INT64)r;
1156 i1 = *(OOC_UINT8*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15083)))), &_td_Object_Boxed__BooleanDesc, 15083)), 15091));
1157 right = i1;
1158 i2 = (OOC_INT64)op;
1159 i3 = *(OOC_INT8*)((_check_pointer(i2, 15111))+16);
1160 switch (i3) {
1161 case 10:
1162 result = (i0==i1);
1163 goto l5;
1164 case 11:
1165 result = (i0!=i1);
1166 goto l5;
1167 default:
1168 i0 = (OOC_INT64)c;
1169 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15233));
1170 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 15265));
1171 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15233));
1172 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15241)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
1173 return (Object_Boxed__Boolean)(OOC_INT64)0;
1174 goto l5;
1175 }
1176 l5:
1177 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
1178 i1 = result;
1179 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
1180 return (Object_Boxed__Boolean)i0;
1181 ;
1182 }
1183
1184
1185 Object_Boxed__Boolean OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_SetOp(void) {
1186 register OOC_INT64 i0,i1,i2,i3;
1187 Object_Boxed__Set left;
1188 Object_Boxed__Set right;
1189 OOC_CHAR8 result;
1190
1191 i0 = (OOC_INT64)l;
1192 i0 = _type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15479)))), &_td_Object_Boxed__SetDesc, 15479);
1193 left = (Object_Boxed__Set)i0;
1194 i1 = (OOC_INT64)r;
1195 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15508)))), &_td_Object_Boxed__SetDesc, 15508);
1196 right = (Object_Boxed__Set)i1;
1197 i2 = (OOC_INT64)op;
1198 i3 = *(OOC_INT8*)((_check_pointer(i2, 15534))+16);
1199 switch (i3) {
1200 case 10:
1201 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15585)))), Object_Boxed__SetDesc_Equals)),Object_Boxed__SetDesc_Equals)((Object_Boxed__Set)i0, (Object__Object)i1);
1202 result = i0;
1203 goto l5;
1204 case 11:
1205 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15641)))), Object_Boxed__SetDesc_Equals)),Object_Boxed__SetDesc_Equals)((Object_Boxed__Set)i0, (Object__Object)i1);
1206 result = (!i0);
1207 goto l5;
1208 default:
1209 i0 = (OOC_INT64)c;
1210 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15677));
1211 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 15709));
1212 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15677));
1213 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 15685)))), OOC_IR__BuilderDesc_ErrSym)),OOC_IR__BuilderDesc_ErrSym)((OOC_IR__Builder)i0, 6, (OOC_Scanner_SymList__Symbol)i2);
1214 return (Object_Boxed__Boolean)(OOC_INT64)0;
1215 goto l5;
1216 }
1217 l5:
1218 i0 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__Boolean.baseTypes[0]);
1219 i1 = result;
1220 Object_Boxed__BooleanDesc_INIT((Object_Boxed__Boolean)i0, i1);
1221 return (Object_Boxed__Boolean)i0;
1222 ;
1223 }
1224
1225
1226 i0 = (OOC_INT64)op;
1227 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15825))+24);
1228 i2 = (OOC_INT64)c;
1229 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&l);
1230 if (i1) goto l3;
1231 i1=0u;
1232 goto l5;
1233 l3:
1234 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15851))+32);
1235 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&r);
1236
1237 l5:
1238 if (i1) goto l7;
1239 *(OOC_INT64*)((_check_pointer(i2, 16556))+8) = (OOC_INT64)0;
1240 goto l21;
1241 l7:
1242 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15880))+24);
1243 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15885))+8);
1244 i0 = *(OOC_INT16*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 15895)))), &_td_OOC_SymbolTable__PredefTypeDesc, 15895)), 15906))+72);
1245 switch (i0) {
1246 case 4:
1247 case 5:
1248 case 6:
1249 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_IntegerOp();
1250 result = (Object_Boxed__Boolean)i0;
1251 goto l16;
1252 case 8:
1253 case 9:
1254 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_RealOp();
1255 result = (Object_Boxed__Boolean)i0;
1256 goto l16;
1257 case 1:
1258 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_CharOp();
1259 result = (Object_Boxed__Boolean)i0;
1260 goto l16;
1261 case 13:
1262 case 14:
1263 case 15:
1264 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_StringOp();
1265 result = (Object_Boxed__Boolean)i0;
1266 goto l16;
1267 case 0:
1268 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_BooleanOp();
1269 result = (Object_Boxed__Boolean)i0;
1270 goto l16;
1271 case 10:
1272 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_VisitCompare_SetOp();
1273 result = (Object_Boxed__Boolean)i0;
1274 goto l16;
1275 default:
1276 _failed_case(i0, 15873);
1277 goto l16;
1278 }
1279 l16:
1280 i0 = (OOC_INT64)result;
1281 i1 = i0==(OOC_INT64)0;
1282 if (i1) goto l19;
1283 i1 = (OOC_INT64)c;
1284 i0 = *(OOC_UINT8*)(_check_pointer(i0, 16516));
1285 i2 = (OOC_INT64)op;
1286 i0 = (OOC_INT64)OOC_IR_ConstFold__ConstFoldDesc_BooleanConst((OOC_IR_ConstFold__ConstFold)i1, i0, (OOC_IR__Operator)i2);
1287 *(OOC_INT64*)((_check_pointer(i1, 16484))+8) = i0;
1288 goto l21;
1289 l19:
1290 i0 = (OOC_INT64)c;
1291 *(OOC_INT64*)((_check_pointer(i0, 16449))+8) = (OOC_INT64)0;
1292 l21:
1293 return;
1294 ;
1295 }
1296
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeCast(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeCast op)1297 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeCast(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeCast op) {
1298
1299 return;
1300 ;
1301 }
1302
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeConv(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeConv op)1303 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeConv(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeConv op) {
1304 register OOC_INT64 i0,i1,i2,i3,i4,i5;
1305 Object_Boxed__Object value;
1306 Object_Boxed__String str;
1307
1308 i0 = (OOC_INT64)op;
1309 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17230))+16);
1310 i2 = (OOC_INT64)c;
1311 i1 = OOC_IR_ConstFold__ConstFoldDesc_ValidEval((OOC_IR_ConstFold__ConstFold)i2, (OOC_IR__Expression)i1, (void*)(OOC_INT64)&value);
1312 if (i1) goto l3;
1313 *(OOC_INT64*)((_check_pointer(i2, 19253))+8) = (OOC_INT64)0;
1314 goto l54;
1315 l3:
1316 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17278))+8);
1317 i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
1318 if (i1) goto l6;
1319 i1=0u;
1320 goto l8;
1321 l6:
1322 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17314))+16);
1323 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17320))+8);
1324 i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
1325
1326 l8:
1327 if (i1) goto l52;
1328 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17582))+8);
1329 i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
1330 if (i1) goto l12;
1331 i1=0u;
1332 goto l14;
1333 l12:
1334 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17624))+16);
1335 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 17630))+8);
1336 i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
1337
1338 l14:
1339 if (i1) goto l44;
1340 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18293))+16);
1341 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18298))+8);
1342 i1 = OOC_SymbolTable_TypeRules__IsIntegerType((OOC_SymbolTable__Type)i1);
1343 if (i1) goto l18;
1344 i1=0u;
1345 goto l20;
1346 l18:
1347 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18323))+8);
1348 i1 = OOC_SymbolTable_TypeRules__IsRealType((OOC_SymbolTable__Type)i1);
1349
1350 l20:
1351 if (i1) goto l42;
1352 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18553))+8);
1353 i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
1354 if (i1) goto l24;
1355 i1=0u;
1356 goto l26;
1357 l24:
1358 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18578))+16);
1359 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18583))+8);
1360 i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
1361
1362 l26:
1363 if (i1) goto l40;
1364 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18776))+8);
1365 i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i1);
1366 if (i1) goto l30;
1367 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 19184));
1368 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19212))+8);
1369 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 19184));
1370 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 19204));
1371 i5 = (OOC_INT64)value;
1372 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 19192)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i4, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i5);
1373 *(OOC_INT64*)((_check_pointer(i2, 19172))+8) = i0;
1374 goto l54;
1375 l30:
1376 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18922))+16);
1377 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 18928))+8);
1378 i1 = OOC_SymbolTable_TypeRules__IsStringConst((OOC_SymbolTable__Type)i1);
1379 if (i1) goto l37;
1380 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18958))+16);
1381 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18965)))), &_td_OOC_IR__ConstDesc);
1382 if (i1) goto l35;
1383 i1=0u;
1384 goto l38;
1385 l35:
1386 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18997))+16);
1387 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19003))+8);
1388 i1 = OOC_SymbolTable_TypeRules__IsCharType((OOC_SymbolTable__Type)i1);
1389
1390 goto l38;
1391 l37:
1392 i1=1u;
1393 l38:
1394 _assert(i1, 127, 18894);
1395 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19030))+16);
1396 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 19040)))), &_td_OOC_IR__ConstDesc, 19040)), 19046))+16);
1397 i1 = _type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 19060)))), &_td_Object_Boxed__StringDesc, 19060);
1398 str = (Object_Boxed__String)i1;
1399 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19114))+16);
1400 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 19091));
1401 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 19129))+8);
1402 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 19091));
1403 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i3, 19120));
1404 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i4, 19100)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i3, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i1);
1405 *(OOC_INT64*)((_check_pointer(i2, 19078))+8) = i0;
1406 goto l54;
1407 l40:
1408 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18704))+16);
1409 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18681));
1410 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18719))+8);
1411 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18681));
1412 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 18710));
1413 i5 = (OOC_INT64)value;
1414 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 18690)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i4, (OOC_Scanner_SymList__Symbol)i1, (OOC_SymbolTable__Type)i0, (Object_Boxed__Object)i5);
1415 *(OOC_INT64*)((_check_pointer(i2, 18668))+8) = i0;
1416 goto l54;
1417 l42:
1418 i1 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__LongReal.baseTypes[0]);
1419 i3 = (OOC_INT64)value;
1420 i3 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i3, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 18431)))), &_td_Object_BigInt__BigIntDesc, 18431)));
1421 Object_Boxed__LongRealDesc_INIT((Object_Boxed__LongReal)i1, ((OOC_REAL64)i3));
1422 value = (Object_Boxed__Object)i1;
1423 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18474));
1424 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18502))+8);
1425 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18474));
1426 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 18494));
1427 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 18482)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i4, (Object_Boxed__Object)i1);
1428 *(OOC_INT64*)((_check_pointer(i2, 18462))+8) = i0;
1429 goto l54;
1430 l44:
1431 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17756))+8);
1432 i1 = *(OOC_INT16*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17767)))), &_td_OOC_SymbolTable__PredefTypeDesc, 17767)), 17778))+72);
1433 switch (i1) {
1434 case 1:
1435 i1 = (OOC_INT64)value;
1436 i3 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__String.baseTypes[0]);
1437 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17885)))), &_td_Object_BigInt__BigIntDesc, 17885)));
1438 i1 = (OOC_INT64)Object__NewLatin1Char(i1);
1439 Object_Boxed__StringDesc_INIT((Object_Boxed__String)i3, (Object__String)i1);
1440 value = (Object_Boxed__Object)i3;
1441 goto l50;
1442 case 2:
1443 i1 = (OOC_INT64)value;
1444 i3 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__String.baseTypes[0]);
1445 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18016)))), &_td_Object_BigInt__BigIntDesc, 18016)));
1446 i1 = (OOC_INT64)Object__NewUTF16Char(i1);
1447 Object_Boxed__StringDesc_INIT((Object_Boxed__String)i3, (Object__String)i1);
1448 value = (Object_Boxed__Object)i3;
1449 goto l50;
1450 case 3:
1451 i1 = (OOC_INT64)value;
1452 i3 = (OOC_INT64)RT0__NewObject(_td_Object_Boxed__String.baseTypes[0]);
1453 i1 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18146)))), &_td_Object_BigInt__BigIntDesc, 18146)));
1454 i1 = (OOC_INT64)Object__NewUCS4Char(i1);
1455 Object_Boxed__StringDesc_INIT((Object_Boxed__String)i3, (Object__String)i1);
1456 value = (Object_Boxed__Object)i3;
1457 goto l50;
1458 default:
1459 _failed_case(i1, 17749);
1460 goto l50;
1461 }
1462 l50:
1463 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18205));
1464 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 18237))+8);
1465 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 18205));
1466 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 18228));
1467 i5 = (OOC_INT64)value;
1468 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18214)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i4, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i3, (Object_Boxed__Object)i5);
1469 *(OOC_INT64*)((_check_pointer(i2, 18193))+8) = i0;
1470 goto l54;
1471 l52:
1472 i1 = (OOC_INT64)value;
1473 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17448)))), &_td_Object_Boxed__StringDesc, 17448)), 17455));
1474 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17448)))), &_td_Object_Boxed__StringDesc, 17448)), 17455));
1475 i1 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 17461)))), Object__StringDesc_CharAt)),Object__StringDesc_CharAt)((Object__String)i1, 0);
1476 i1 = (OOC_INT64)Object_BigInt__NewInt(i1);
1477 value = (Object_Boxed__Object)i1;
1478 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 17496));
1479 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17528))+8);
1480 i5 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 17496));
1481 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 17519));
1482 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i3, 17505)))), OOC_IR__BuilderDesc_NewConst)),OOC_IR__BuilderDesc_NewConst)((OOC_IR__Builder)i5, (OOC_Scanner_SymList__Symbol)i0, (OOC_SymbolTable__Type)i4, (Object_Boxed__Object)i1);
1483 *(OOC_INT64*)((_check_pointer(i2, 17484))+8) = i0;
1484 l54:
1485 return;
1486 ;
1487 }
1488
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeGuard(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeGuard op)1489 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeGuard(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeGuard op) {
1490
1491 return;
1492 ;
1493 }
1494
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeTag(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeTag op)1495 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeTag(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeTag op) {
1496
1497 return;
1498 ;
1499 }
1500
OOC_IR_ConstFold__ConstFoldDesc_VisitTypeTest(OOC_IR_ConstFold__ConstFold c,OOC_IR__TypeTest op)1501 void OOC_IR_ConstFold__ConstFoldDesc_VisitTypeTest(OOC_IR_ConstFold__ConstFold c, OOC_IR__TypeTest op) {
1502
1503 return;
1504 ;
1505 }
1506
OOC_IR_ConstFold__ConstFoldDesc_VisitCall(OOC_IR_ConstFold__ConstFold c,OOC_IR__Call call)1507 void OOC_IR_ConstFold__ConstFoldDesc_VisitCall(OOC_IR_ConstFold__ConstFold c, OOC_IR__Call call) {
1508
1509 return;
1510 ;
1511 }
1512
OOC_IR_ConstFold__ConstFoldDesc_VisitAssert(OOC_IR_ConstFold__ConstFold c,OOC_IR__Assert assert)1513 void OOC_IR_ConstFold__ConstFoldDesc_VisitAssert(OOC_IR_ConstFold__ConstFold c, OOC_IR__Assert assert) {
1514
1515 return;
1516 ;
1517 }
1518
OOC_IR_ConstFold__ConstFoldDesc_VisitReturn(OOC_IR_ConstFold__ConstFold c,OOC_IR__Return _return)1519 void OOC_IR_ConstFold__ConstFoldDesc_VisitReturn(OOC_IR_ConstFold__ConstFold c, OOC_IR__Return _return) {
1520
1521 return;
1522 ;
1523 }
1524
OOC_IR_ConstFold__ConstFoldDesc_VisitAssignment(OOC_IR_ConstFold__ConstFold c,OOC_IR__Assignment assignment)1525 void OOC_IR_ConstFold__ConstFoldDesc_VisitAssignment(OOC_IR_ConstFold__ConstFold c, OOC_IR__Assignment assignment) {
1526
1527 return;
1528 ;
1529 }
1530
OOC_IR_ConstFold__ConstFoldDesc_VisitAssignOp(OOC_IR_ConstFold__ConstFold c,OOC_IR__AssignOp assignOp)1531 void OOC_IR_ConstFold__ConstFoldDesc_VisitAssignOp(OOC_IR_ConstFold__ConstFold c, OOC_IR__AssignOp assignOp) {
1532
1533 return;
1534 ;
1535 }
1536
OOC_IR_ConstFold__ConstFoldDesc_VisitExit(OOC_IR_ConstFold__ConstFold c,OOC_IR__Exit exit)1537 void OOC_IR_ConstFold__ConstFoldDesc_VisitExit(OOC_IR_ConstFold__ConstFold c, OOC_IR__Exit exit) {
1538
1539 return;
1540 ;
1541 }
1542
OOC_IR_ConstFold__ConstFoldDesc_VisitForStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__ForStatm forStatm)1543 void OOC_IR_ConstFold__ConstFoldDesc_VisitForStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__ForStatm forStatm) {
1544
1545 return;
1546 ;
1547 }
1548
OOC_IR_ConstFold__ConstFoldDesc_VisitIterateArrayStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__IterateArrayStatm iterStatm)1549 void OOC_IR_ConstFold__ConstFoldDesc_VisitIterateArrayStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__IterateArrayStatm iterStatm) {
1550
1551 return;
1552 ;
1553 }
1554
OOC_IR_ConstFold__ConstFoldDesc_VisitIterateObjectStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__IterateObjectStatm iterStatm)1555 void OOC_IR_ConstFold__ConstFoldDesc_VisitIterateObjectStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__IterateObjectStatm iterStatm) {
1556
1557 return;
1558 ;
1559 }
1560
OOC_IR_ConstFold__ConstFoldDesc_VisitIfStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__IfStatm ifStatm)1561 void OOC_IR_ConstFold__ConstFoldDesc_VisitIfStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__IfStatm ifStatm) {
1562
1563 return;
1564 ;
1565 }
1566
OOC_IR_ConstFold__ConstFoldDesc_VisitCase(OOC_IR_ConstFold__ConstFold c,OOC_IR__Case _case)1567 void OOC_IR_ConstFold__ConstFoldDesc_VisitCase(OOC_IR_ConstFold__ConstFold c, OOC_IR__Case _case) {
1568
1569 return;
1570 ;
1571 }
1572
OOC_IR_ConstFold__ConstFoldDesc_VisitCaseStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__CaseStatm caseStatm)1573 void OOC_IR_ConstFold__ConstFoldDesc_VisitCaseStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__CaseStatm caseStatm) {
1574
1575 return;
1576 ;
1577 }
1578
OOC_IR_ConstFold__ConstFoldDesc_VisitLoopStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__LoopStatm loopStatm)1579 void OOC_IR_ConstFold__ConstFoldDesc_VisitLoopStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__LoopStatm loopStatm) {
1580
1581 return;
1582 ;
1583 }
1584
OOC_IR_ConstFold__ConstFoldDesc_VisitMoveBlock(OOC_IR_ConstFold__ConstFold c,OOC_IR__MoveBlock move)1585 void OOC_IR_ConstFold__ConstFoldDesc_VisitMoveBlock(OOC_IR_ConstFold__ConstFold c, OOC_IR__MoveBlock move) {
1586
1587 return;
1588 ;
1589 }
1590
OOC_IR_ConstFold__ConstFoldDesc_VisitRaise(OOC_IR_ConstFold__ConstFold c,OOC_IR__Raise raise)1591 void OOC_IR_ConstFold__ConstFoldDesc_VisitRaise(OOC_IR_ConstFold__ConstFold c, OOC_IR__Raise raise) {
1592
1593 return;
1594 ;
1595 }
1596
OOC_IR_ConstFold__ConstFoldDesc_VisitRepeatStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__RepeatStatm repeatStatm)1597 void OOC_IR_ConstFold__ConstFoldDesc_VisitRepeatStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__RepeatStatm repeatStatm) {
1598
1599 return;
1600 ;
1601 }
1602
OOC_IR_ConstFold__ConstFoldDesc_VisitCatchClause(OOC_IR_ConstFold__ConstFold c,OOC_IR__CatchClause _catch)1603 void OOC_IR_ConstFold__ConstFoldDesc_VisitCatchClause(OOC_IR_ConstFold__ConstFold c, OOC_IR__CatchClause _catch) {
1604
1605 return;
1606 ;
1607 }
1608
OOC_IR_ConstFold__ConstFoldDesc_VisitTryStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__TryStatm tryStatm)1609 void OOC_IR_ConstFold__ConstFoldDesc_VisitTryStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__TryStatm tryStatm) {
1610
1611 return;
1612 ;
1613 }
1614
OOC_IR_ConstFold__ConstFoldDesc_VisitWhileStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__WhileStatm whileStatm)1615 void OOC_IR_ConstFold__ConstFoldDesc_VisitWhileStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__WhileStatm whileStatm) {
1616
1617 return;
1618 ;
1619 }
1620
OOC_IR_ConstFold__ConstFoldDesc_VisitWithStatm(OOC_IR_ConstFold__ConstFold c,OOC_IR__WithStatm withStatm)1621 void OOC_IR_ConstFold__ConstFoldDesc_VisitWithStatm(OOC_IR_ConstFold__ConstFold c, OOC_IR__WithStatm withStatm) {
1622
1623 return;
1624 ;
1625 }
1626
OOC_IR_ConstFold__ConstFoldDesc_VisitCopy(OOC_IR_ConstFold__ConstFold c,OOC_IR__Copy cp)1627 void OOC_IR_ConstFold__ConstFoldDesc_VisitCopy(OOC_IR_ConstFold__ConstFold c, OOC_IR__Copy cp) {
1628
1629 return;
1630 ;
1631 }
1632
OOC_IR_ConstFold__ConstFoldDesc_VisitCopyParameter(OOC_IR_ConstFold__ConstFold c,OOC_IR__CopyParameter cp)1633 void OOC_IR_ConstFold__ConstFoldDesc_VisitCopyParameter(OOC_IR_ConstFold__ConstFold c, OOC_IR__CopyParameter cp) {
1634
1635 return;
1636 ;
1637 }
1638
OOC_IR_ConstFold__ConstFoldDesc_VisitCopyString(OOC_IR_ConstFold__ConstFold c,OOC_IR__CopyString cp)1639 void OOC_IR_ConstFold__ConstFoldDesc_VisitCopyString(OOC_IR_ConstFold__ConstFold c, OOC_IR__CopyString cp) {
1640
1641 return;
1642 ;
1643 }
1644
OOC_IR_ConstFold__ConstFoldDesc_VisitProcedure(OOC_IR_ConstFold__ConstFold c,OOC_IR__Procedure procedure)1645 void OOC_IR_ConstFold__ConstFoldDesc_VisitProcedure(OOC_IR_ConstFold__ConstFold c, OOC_IR__Procedure procedure) {
1646
1647 return;
1648 ;
1649 }
1650
OOC_IR_ConstFold__ConstFoldDesc_VisitModule(OOC_IR_ConstFold__ConstFold c,OOC_IR__Module module)1651 void OOC_IR_ConstFold__ConstFoldDesc_VisitModule(OOC_IR_ConstFold__ConstFold c, OOC_IR__Module module) {
1652
1653 return;
1654 ;
1655 }
1656
OOC_OOC_IR_ConstFold_init(void)1657 void OOC_OOC_IR_ConstFold_init(void) {
1658
1659 return;
1660 ;
1661 }
1662
OOC_OOC_IR_ConstFold_destroy(void)1663 void OOC_OOC_IR_ConstFold_destroy(void) {
1664 }
1665
1666 /* --- */
1667