RML_END_LABEL /* misc_tick.c */ RML_BEGIN_LABEL(RML__tick) { static rml_sint_t counter; rmlA0 = RML_IMMEDIATE(RML_TAGFIXNUM(counter)); ++counter; RML_TAILCALLK(rmlSC); }
RML_END_LABEL RML_BEGIN_LABEL(External__strcmp) { char *str1 = RML_STRINGDATA(rmlA0); char *str2 = RML_STRINGDATA(rmlA1); int result = strcmp(str1, str2); rmlA0 = RML_IMMEDIATE(RML_TAGFIXNUM(result)); RML_TAILCALLK(rmlSC); }
RML_END_LABEL /* list_length.c */ RML_BEGIN_LABEL(RML__list_5flength) { void *lst = rmlA0; rml_uint_t len = 0; for(; RML_GETHDR(lst) == RML_CONSHDR; ++len, lst = RML_CDR(lst)) ; rmlA0 = RML_IMMEDIATE(RML_TAGFIXNUM(len)); RML_TAILCALLK(rmlSC); }
void *mk_icon(int i) { return RML_IMMEDIATE(RML_TAGFIXNUM((rml_sint_t)i)); }