| @@ -91,7 +91,7 @@ sl_exit(const char *status) · 90 unmodified lines |
| 91 | 91 | _ctx.osp = sl.sp - sl.stack; _ctx.frame = sl.curr_frame; \ |
| 92 | 92 | _ctx.rdst = sl.readstate; _ctx.prev = sl.exctx; \ |
| 93 | 93 | _ctx.ngchnd = slvm.ngchandles; sl.exctx = &_ctx; \ |
| 94 | | − if(!sl_setjmp(_ctx.buf)) \ |
| 94 | + if(sl_likely(!sl_setjmp(_ctx.buf))) \ |
| 95 | 95 | for(l__tr = 1; l__tr; l__tr = 0, (void)(sl.exctx = sl.exctx->prev)) |
| 96 | 96 | |
| 97 | 97 | #define SL_CATCH_INC \ |
| @@ -1004,7 +1004,7 @@ BUILTIN("fn", fn) · 906 unmodified lines |
| 1004 | 1004 | }else if(!valsset && isvec(v)){ |
| 1005 | 1005 | valsset = true; |
| 1006 | 1006 | fn->vals = v; |
| 1007 | | − }else if(v == sl_t){ |
| 1007 | + }else if(sl_unlikely(v == sl_t)){ |
| 1008 | 1008 | raw = true; |
| 1009 | 1009 | }else if(!nameset && issym(v)){ |
| 1010 | 1010 | if(sl_unlikely(isgensym(v))) |
| @@ -1031,7 +1031,7 @@ BUILTIN("fn", fn) · 20 unmodified lines |
| 1031 | 1031 | bthrow(error(sl_errarg, "no code")); |
| 1032 | 1032 | if(sl_unlikely(!maxstackset)) |
| 1033 | 1033 | bthrow(error(sl_errarg, "no max stack")); |
| 1034 | | − if(!raw){ |
| 1034 | + if(sl_likely(!raw)){ |
| 1035 | 1035 | // read syntax, shifted 48 for compact text representation |
| 1036 | 1036 | for(usize j = 0; j < sz; j++) |
| 1037 | 1037 | data[j] -= 48; |
| @@ -1280,7 +1280,8 @@ map_seq(sl_v rt, sl_v *args, int nargs) · 242 unmodified lines |
| 1280 | 1280 | bthrow(type_error(nil, "sequence", v)); |
| 1281 | 1281 | POPN(pargs+1); |
| 1282 | 1282 | switch(rtype){ |
| 1283 | | − default: |
| 1283 | + case RT_NIL: |
| 1284 | + sl.stack[k+1] = sl_nil; |
| 1284 | 1285 | break; |
| 1285 | 1286 | case RT_VEC: |
| 1286 | 1287 | sl.stack[k+1] = alloc_vec(n, 0); |
| @@ -1303,8 +1304,7 @@ map_seq(sl_v rt, sl_v *args, int nargs) · 16 unmodified lines |
| 1303 | 1304 | sl.stack[k+1] = applyn(2*n); |
| 1304 | 1305 | POPN(2*n); |
| 1305 | 1306 | break; |
| 1306 | | − case RT_NIL: |
| 1307 | | − sl.stack[k+1] = sl_nil; |
| 1307 | + default: |
| 1308 | 1308 | break; |
| 1309 | 1309 | } |
| 1310 | 1310 | sl_v res = sl.stack[k+1]; |
| @@ -1314,15 +1314,6 @@ map_seq(sl_v rt, sl_v *args, int nargs) · 3 unmodified lines |
| 1314 | 1314 | sl_v c, v = applyn(pargs); |
| 1315 | 1315 | POPN(pargs+1); |
| 1316 | 1316 | switch(rtype){ |
| 1317 | | − default: |
| 1318 | | − PUSH(v); |
| 1319 | | − break; |
| 1320 | | − case RT_NIL: |
| 1321 | | − break; |
| 1322 | | − case RT_TBL: |
| 1323 | | − PUSH(car(v)); |
| 1324 | | − PUSH(cdr(v)); |
| 1325 | | − break; |
| 1326 | 1317 | case RT_LIST: |
| 1327 | 1318 | sl_gc_handle(&v); |
| 1328 | 1319 | c = alloc_cons(); |
| @@ -1335,6 +1326,15 @@ map_seq(sl_v rt, sl_v *args, int nargs) · 6 unmodified lines |
| 1335 | 1326 | cdr_(sl.stack[k+0]) = c; |
| 1336 | 1327 | sl.stack[k+0] = c; |
| 1337 | 1328 | break; |
| 1329 | + case RT_NIL: |
| 1330 | + break; |
| 1331 | + case RT_TBL: |
| 1332 | + PUSH(car(v)); |
| 1333 | + PUSH(cdr(v)); |
| 1334 | + break; |
| 1335 | + default: |
| 1336 | + PUSH(v); |
| 1337 | + break; |
| 1338 | 1338 | } |
| 1339 | 1339 | } |
| 1340 | 1340 | } |
| @@ -1575,7 +1575,7 @@ sl_load_system_image(sl_v sys_image_io) · 234 unmodified lines |
| 1575 | 1575 | sl_v s = car_(e); |
| 1576 | 1576 | sl_sym *sym = tosym(s); |
| 1577 | 1577 | e = cdr_(e); |
| 1578 | | − if(sym->binding != sl_unbound) |
| 1578 | + if(sl_unlikely(sym->binding != sl_unbound)) |
| 1579 | 1579 | ios_printf(ios_stderr, "%s redefined on boot\n", sym->name); |
| 1580 | 1580 | sym->binding = car_(e); |
| 1581 | 1581 | if(isfn(sym->binding) && !isbuiltin(sym->binding) && fn_name(sym->binding)) |