1 /* This C file is generated by NIT to compile module metamodel___virtualtype. */
2 #include "metamodel___virtualtype._sep.h"
3 val_t
metamodel___virtualtype___MMGlobalProperty___is_virtual_type(val_t p0
){
4 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
10 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMGlobalProperty___is_virtual_type
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
15 fra
.me
.REG
[1] = NIT_NULL
;
17 /* metamodel/virtualtype.nit:25 */
18 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
19 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
22 stack_frame_head
= fra
.me
.prev
;
25 val_t
metamodel___virtualtype___MMTypeProperty___stype_for(val_t p0
, val_t p1
){
26 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
29 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
30 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
32 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMTypeProperty___stype_for
;
35 fra
.me
.nitni_local_ref_head
= NULL
;
36 fra
.me
.REG
[0] = NIT_NULL
;
37 fra
.me
.REG
[1] = NIT_NULL
;
38 fra
.me
.REG
[2] = NIT_NULL
;
39 fra
.me
.REG
[3] = NIT_NULL
;
42 /* metamodel/virtualtype.nit:34 */
43 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
44 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
45 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
46 /* metamodel/virtualtype.nit:35 */
47 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[3], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
48 if (UNTAG_Bool(REGB0
)) {
50 nit_abort("Assert failed", NULL
, LOCATE_metamodel___virtualtype
, 35);
52 /* metamodel/virtualtype.nit:36 */
53 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMTypeProperty___real_stype_for(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
56 stack_frame_head
= fra
.me
.prev
;
59 val_t
metamodel___virtualtype___MMTypeProperty___real_stype_for(val_t p0
, val_t p1
){
60 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
64 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
65 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
67 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMTypeProperty___real_stype_for
;
70 fra
.me
.nitni_local_ref_head
= NULL
;
71 fra
.me
.REG
[0] = NIT_NULL
;
72 fra
.me
.REG
[1] = NIT_NULL
;
73 fra
.me
.REG
[2] = NIT_NULL
;
74 fra
.me
.REG
[3] = NIT_NULL
;
77 /* metamodel/virtualtype.nit:45 */
78 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
79 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
80 if (UNTAG_Bool(REGB0
)) {
82 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
83 if (UNTAG_Bool(REGB1
)) {
84 REGB1
= TAG_Bool(false);
87 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
91 if (UNTAG_Bool(REGB0
)) {
92 fra
.me
.REG
[2] = NIT_NULL
;
95 /* metamodel/virtualtype.nit:47 */
96 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
97 if (UNTAG_Bool(REGB0
)) {
99 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 47);
101 fra
.me
.REG
[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
102 REGB0
= CALL_standard___collection___abstract_collection___MapRead___has_key(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
103 if (UNTAG_Bool(REGB0
)) {
104 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
105 if (UNTAG_Bool(REGB0
)) {
107 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 47);
109 fra
.me
.REG
[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
110 fra
.me
.REG
[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
111 fra
.me
.REG
[2] = fra
.me
.REG
[3];
114 /* metamodel/virtualtype.nit:49 */
115 fra
.me
.REG
[3] = NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(fra
.me
.REG
[0], fra
.me
.REG
[1]);
116 /* metamodel/virtualtype.nit:50 */
117 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
118 if (UNTAG_Bool(REGB0
)) {
120 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 50);
122 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
123 CALL_standard___collection___abstract_collection___Map_____braeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[3]);
124 /* metamodel/virtualtype.nit:52 */
125 fra
.me
.REG
[2] = fra
.me
.REG
[3];
128 stack_frame_head
= fra
.me
.prev
;
129 return fra
.me
.REG
[2];
131 val_t
metamodel___virtualtype___MMVirtualType___property(val_t p0
){
132 struct {struct stack_frame_t me
;} fra
;
135 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
136 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
138 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___property
;
139 fra
.me
.has_broke
= 0;
141 fra
.me
.nitni_local_ref_head
= NULL
;
142 fra
.me
.REG
[0] = NIT_NULL
;
144 /* metamodel/virtualtype.nit:58 */
145 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[0])!=NIT_NULL
);
146 if (UNTAG_Bool(REGB0
)) {
148 nit_abort("Uninitialized attribute %s", "_property", LOCATE_metamodel___virtualtype
, 58);
150 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[0]);
151 stack_frame_head
= fra
.me
.prev
;
152 return fra
.me
.REG
[0];
154 val_t
metamodel___virtualtype___MMVirtualType___recv(val_t p0
){
155 struct {struct stack_frame_t me
;} fra
;
158 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
159 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
161 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___recv
;
162 fra
.me
.has_broke
= 0;
164 fra
.me
.nitni_local_ref_head
= NULL
;
165 fra
.me
.REG
[0] = NIT_NULL
;
167 /* metamodel/virtualtype.nit:61 */
168 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
169 if (UNTAG_Bool(REGB0
)) {
171 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype
, 61);
173 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
174 stack_frame_head
= fra
.me
.prev
;
175 return fra
.me
.REG
[0];
177 void metamodel___virtualtype___MMVirtualType___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
178 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_metamodel___virtualtype___MMVirtualType
].i
;
179 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
181 if (init_table
[itpos0
]) return;
182 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
183 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
185 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___init
;
186 fra
.me
.has_broke
= 0;
188 fra
.me
.nitni_local_ref_head
= NULL
;
189 fra
.me
.REG
[0] = NIT_NULL
;
190 fra
.me
.REG
[1] = NIT_NULL
;
191 fra
.me
.REG
[2] = NIT_NULL
;
192 fra
.me
.REG
[3] = NIT_NULL
;
193 fra
.me
.REG
[4] = NIT_NULL
;
194 fra
.me
.REG
[5] = NIT_NULL
;
198 /* metamodel/virtualtype.nit:64 */
199 fra
.me
.REG
[3] = fra
.me
.REG
[0];
200 /* metamodel/virtualtype.nit:66 */
201 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
202 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
203 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
204 CALL_metamodel___type_formal___MMTypeFormal___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[4], fra
.me
.REG
[5], init_table
);
205 /* metamodel/virtualtype.nit:67 */
206 ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[3]) = fra
.me
.REG
[1];
207 /* metamodel/virtualtype.nit:68 */
208 ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
209 stack_frame_head
= fra
.me
.prev
;
210 init_table
[itpos0
] = 1;
213 val_t
metamodel___virtualtype___MMVirtualType___mmmodule(val_t p0
){
214 struct {struct stack_frame_t me
;} fra
;
217 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
218 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
220 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___mmmodule
;
221 fra
.me
.has_broke
= 0;
223 fra
.me
.nitni_local_ref_head
= NULL
;
224 fra
.me
.REG
[0] = NIT_NULL
;
226 /* metamodel/virtualtype.nit:71 */
227 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
228 if (UNTAG_Bool(REGB0
)) {
230 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype
, 71);
232 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
233 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
236 stack_frame_head
= fra
.me
.prev
;
237 return fra
.me
.REG
[0];
239 val_t
metamodel___virtualtype___MMVirtualType___for_module(val_t p0
, val_t p1
){
240 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
244 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
245 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
247 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___for_module
;
248 fra
.me
.has_broke
= 0;
250 fra
.me
.nitni_local_ref_head
= NULL
;
251 fra
.me
.REG
[0] = NIT_NULL
;
252 fra
.me
.REG
[1] = NIT_NULL
;
253 fra
.me
.REG
[2] = NIT_NULL
;
254 fra
.me
.REG
[3] = NIT_NULL
;
257 /* metamodel/virtualtype.nit:75 */
258 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
259 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],fra
.me
.REG
[2]));
260 if (UNTAG_Bool(REGB0
)) {
262 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
265 if (UNTAG_Bool(REGB0
)) {
266 fra
.me
.REG
[2] = fra
.me
.REG
[0];
269 /* metamodel/virtualtype.nit:76 */
270 fra
.me
.REG
[3] = CALL_metamodel___virtualtype___MMVirtualType___recv(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
271 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
272 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMType___adapt_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
273 fra
.me
.REG
[2] = fra
.me
.REG
[1];
276 stack_frame_head
= fra
.me
.prev
;
277 return fra
.me
.REG
[2];
279 val_t
metamodel___virtualtype___MMVirtualType___not_for_self(val_t p0
){
280 struct {struct stack_frame_t me
;} fra
;
282 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
283 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
285 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___not_for_self
;
286 fra
.me
.has_broke
= 0;
288 fra
.me
.nitni_local_ref_head
= NULL
;
289 fra
.me
.REG
[0] = NIT_NULL
;
291 /* metamodel/virtualtype.nit:81 */
292 fra
.me
.REG
[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
293 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMType___not_for_self(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
296 stack_frame_head
= fra
.me
.prev
;
297 return fra
.me
.REG
[0];
299 val_t
metamodel___virtualtype___MMVirtualType___adapt_to(val_t p0
, val_t p1
){
300 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
303 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
304 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
306 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___adapt_to
;
307 fra
.me
.has_broke
= 0;
309 fra
.me
.nitni_local_ref_head
= NULL
;
310 fra
.me
.REG
[0] = NIT_NULL
;
311 fra
.me
.REG
[1] = NIT_NULL
;
312 fra
.me
.REG
[2] = NIT_NULL
;
315 /* metamodel/virtualtype.nit:84 */
316 fra
.me
.REG
[2] = fra
.me
.REG
[0];
317 /* metamodel/virtualtype.nit:86 */
318 fra
.me
.REG
[2] = CALL_metamodel___virtualtype___MMVirtualType___property(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
319 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMTypeProperty___stype_for(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
320 REGB0
= TAG_Bool(fra
.me
.REG
[1]!=NIT_NULL
);
321 if (UNTAG_Bool(REGB0
)) {
323 nit_abort("Cast failed", NULL
, LOCATE_metamodel___virtualtype
, 86);
327 stack_frame_head
= fra
.me
.prev
;
328 return fra
.me
.REG
[1];
330 val_t
metamodel___virtualtype___MMLocalClass___virtual_type(val_t p0
, val_t p1
){
331 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
334 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
335 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
337 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMLocalClass___virtual_type
;
338 fra
.me
.has_broke
= 0;
340 fra
.me
.nitni_local_ref_head
= NULL
;
341 fra
.me
.REG
[0] = NIT_NULL
;
342 fra
.me
.REG
[1] = NIT_NULL
;
345 /* metamodel/virtualtype.nit:93 */
346 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
347 /* metamodel/virtualtype.nit:94 */
348 REGB0
= CALL_metamodel___virtualtype___MMGlobalProperty___is_virtual_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
349 if (UNTAG_Bool(REGB0
)) {
350 /* metamodel/virtualtype.nit:95 */
353 /* metamodel/virtualtype.nit:97 */
354 nit_abort("Aborted", NULL
, LOCATE_metamodel___virtualtype
, 97);
356 stack_frame_head
= fra
.me
.prev
;
357 return fra
.me
.REG
[1];
359 val_t
metamodel___virtualtype___MMLocalClass___select_virtual_type(val_t p0
, val_t p1
){
360 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
363 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
364 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
366 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMLocalClass___select_virtual_type
;
367 fra
.me
.has_broke
= 0;
369 fra
.me
.nitni_local_ref_head
= NULL
;
370 fra
.me
.REG
[0] = NIT_NULL
;
371 fra
.me
.REG
[1] = NIT_NULL
;
374 /* metamodel/virtualtype.nit:103 */
375 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMLocalClass___virtual_type(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
376 /* metamodel/virtualtype.nit:104 */
377 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
378 /* metamodel/virtualtype.nit:105 */
379 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
380 if (UNTAG_Bool(REGB0
)) {
382 nit_abort("Assert failed", NULL
, LOCATE_metamodel___virtualtype
, 105);
384 /* metamodel/virtualtype.nit:106 */
387 stack_frame_head
= fra
.me
.prev
;
388 return fra
.me
.REG
[1];