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