return code_cut(c);
}
+char is_getlocal(code_t*c)
+{
+ if(!c) return 0;
+ if(c->opcode == OPCODE_GETLOCAL ||
+ c->opcode == OPCODE_GETLOCAL_0 ||
+ c->opcode == OPCODE_GETLOCAL_1 ||
+ c->opcode == OPCODE_GETLOCAL_2 ||
+ c->opcode == OPCODE_GETLOCAL_3) {
+ return 1;
+ }
+ return 0;
+}
+
code_t* cut_last_push(code_t*c)
{
assert(!c->next);
code_t* cut_last_push(code_t*_c);
+char is_getlocal(code_t*c);
+
#define code_new() (0)
#endif
} else if(s->kind == INFOTYPE_VAR) {
return "varinfo_t";
}
+ return "**ERROR**";
}
void write_slotinfo(FILE*fi, slotinfo_t*s, char*id, char*prefix);
fprintf(fi, " _Infinity_constant.f = __builtin_inf();\n");
fprintf(fi, " return d;\n");
fprintf(fi, "}\n");
-
+ return 0;
}
$$.c = code_append($$.c, paramcode);
$$.c = abc_constructprop2($$.c, name, $4.number);
multiname_destroy(name);
+ } else if(is_getlocal($$.c)) {
+ $$.c = code_append($$.c, paramcode);
+ $$.c = abc_construct($$.c, $4.number);
} else if(TYPE_IS_CLASS(v.t) && v.t->data) {
code_free($$.c);
classinfo_t*c = v.t->data;