MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

migrate props to slots

+43 -89
+3
include/config.h
··· 35 35 SLOT_CFUNC, 36 36 SLOT_CORO, 37 37 SLOT_PROTO, 38 + SLOT_FROZEN, 39 + SLOT_SEALED, 40 + SLOT_EXTENSIBLE, 38 41 SLOT_MAX = 255 39 42 } internal_slot_t; 40 43
+3
include/config.h.in
··· 27 27 SLOT_CFUNC, 28 28 SLOT_CORO, 29 29 SLOT_PROTO, 30 + SLOT_FROZEN, 31 + SLOT_SEALED, 32 + SLOT_EXTENSIBLE, 30 33 SLOT_MAX = 255 31 34 } internal_slot_t; 32 35
+1 -1
meson.build
··· 79 79 build_date = run_command('date', '+%Y-%m-%d', check: true).stdout().strip() 80 80 81 81 version_conf = configuration_data() 82 - version_conf.set('ANT_VERSION', '0.2.2.35') 82 + version_conf.set('ANT_VERSION', '0.2.2.36') 83 83 version_conf.set('ANT_GIT_HASH', git_hash) 84 84 version_conf.set('ANT_BUILD_DATE', build_date) 85 85
+33 -85
src/ant.c
··· 3191 3191 return mkval(T_PROP, existing); 3192 3192 3193 3193 create_new: 3194 - jsoff_t frozen_off = lkp(js, obj, "__frozen__", 10); 3195 - if (frozen_off != 0) { 3196 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 3197 - if (js_truthy(js, frozen_val)) { 3198 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to frozen object"); 3199 - return js_mkundef(); 3200 - } 3194 + if (js_truthy(js, get_slot(js, obj, SLOT_FROZEN))) { 3195 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to frozen object"); 3196 + return js_mkundef(); 3201 3197 } 3202 3198 3203 - jsoff_t sealed_off = lkp(js, obj, "__sealed__", 10); 3204 - if (sealed_off != 0) { 3205 - jsval_t sealed_val = resolveprop(js, mkval(T_PROP, sealed_off)); 3206 - if (js_truthy(js, sealed_val)) { 3207 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to sealed object"); 3208 - return js_mkundef(); 3209 - } 3199 + if (js_truthy(js, get_slot(js, obj, SLOT_SEALED))) { 3200 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to sealed object"); 3201 + return js_mkundef(); 3210 3202 } 3211 3203 3212 - jsoff_t ext_off = lkp(js, obj, "__extensible__", 14); 3213 - if (ext_off != 0) { 3214 - jsval_t ext_val = resolveprop(js, mkval(T_PROP, ext_off)); 3215 - if (!js_truthy(js, ext_val)) { 3216 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to non-extensible object"); 3217 - return js_mkundef(); 3218 - } 3204 + jsval_t ext_slot = get_slot(js, obj, SLOT_EXTENSIBLE); 3205 + if (vtype(ext_slot) != T_UNDEF && !js_truthy(js, ext_slot)) { 3206 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot add property to non-extensible object"); 3207 + return js_mkundef(); 3219 3208 } 3220 3209 3221 3210 int need_length_update = 0; ··· 7786 7775 return js_truthy(js, result) ? js_mktrue() : js_mkfalse(); 7787 7776 } 7788 7777 7789 - jsoff_t frozen_off = lkp(js, obj, "__frozen__", 10); 7790 - if (frozen_off != 0) { 7791 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 7792 - if (js_truthy(js, frozen_val)) { 7793 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of frozen object"); 7794 - return js_mkfalse(); 7795 - } 7778 + if (js_truthy(js, get_slot(js, obj, SLOT_FROZEN))) { 7779 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of frozen object"); 7780 + return js_mkfalse(); 7796 7781 } 7797 7782 7798 - jsoff_t sealed_off = lkp(js, obj, "__sealed__", 10); 7799 - if (sealed_off != 0) { 7800 - jsval_t sealed_val = resolveprop(js, mkval(T_PROP, sealed_off)); 7801 - if (js_truthy(js, sealed_val)) { 7802 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of sealed object"); 7803 - return js_mkfalse(); 7804 - } 7783 + if (js_truthy(js, get_slot(js, obj, SLOT_SEALED))) { 7784 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of sealed object"); 7785 + return js_mkfalse(); 7805 7786 } 7806 7787 7807 7788 jsoff_t prop_off = lkp(js, obj, key_str, len); ··· 7881 7862 if (owner_obj_off != 0) { 7882 7863 jsval_t owner_obj = mkval(T_OBJ, owner_obj_off); 7883 7864 7884 - jsoff_t frozen_off = lkp(js, owner_obj, "__frozen__", 10); 7885 - if (frozen_off != 0) { 7886 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 7887 - if (js_truthy(js, frozen_val)) { 7888 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of frozen object"); 7889 - return js_mkfalse(); 7890 - } 7865 + if (js_truthy(js, get_slot(js, owner_obj, SLOT_FROZEN))) { 7866 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of frozen object"); 7867 + return js_mkfalse(); 7891 7868 } 7892 7869 7893 - jsoff_t sealed_off = lkp(js, owner_obj, "__sealed__", 10); 7894 - if (sealed_off != 0) { 7895 - jsval_t sealed_val = resolveprop(js, mkval(T_PROP, sealed_off)); 7896 - if (js_truthy(js, sealed_val)) { 7897 - if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of sealed object"); 7898 - return js_mkfalse(); 7899 - } 7870 + if (js_truthy(js, get_slot(js, owner_obj, SLOT_SEALED))) { 7871 + if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete property of sealed object"); 7872 + return js_mkfalse(); 7900 7873 } 7901 7874 7902 7875 jsoff_t key_str_off = loadoff(js, (jsoff_t)(prop_off + sizeof(jsoff_t))); ··· 13471 13444 js_set_descriptor(js, as_obj, key, klen, JS_DESC_E); 13472 13445 } 13473 13446 13474 - setprop(js, as_obj, js_mkstr(js, "__frozen__", 10), js_mktrue()); 13447 + set_slot(js, as_obj, SLOT_FROZEN, js_mktrue()); 13475 13448 return obj; 13476 13449 } 13477 13450 ··· 13484 13457 if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); 13485 13458 jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); 13486 13459 13487 - jsoff_t frozen_off = lkp(js, as_obj, "__frozen__", 10); 13488 - if (frozen_off != 0) { 13489 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 13490 - if (js_truthy(js, frozen_val)) return js_mktrue(); 13491 - } 13492 - 13493 - return js_mkfalse(); 13460 + return js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN)) ? js_mktrue() : js_mkfalse(); 13494 13461 } 13495 13462 13496 13463 static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) { ··· 13502 13469 if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj; 13503 13470 jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); 13504 13471 13505 - setprop(js, as_obj, js_mkstr(js, "__sealed__", 10), js_mktrue()); 13472 + set_slot(js, as_obj, SLOT_SEALED, js_mktrue()); 13506 13473 jsoff_t next = loadoff(js, (jsoff_t) vdata(as_obj)) & ~(3U | CONSTMASK | ARRMASK | SLOTMASK); 13507 13474 13508 13475 while (next < js->brk && next != 0) { ··· 13532 13499 if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); 13533 13500 jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); 13534 13501 13535 - jsoff_t sealed_off = lkp(js, as_obj, "__sealed__", 10); 13536 - if (sealed_off != 0) { 13537 - jsval_t sealed_val = resolveprop(js, mkval(T_PROP, sealed_off)); 13538 - if (js_truthy(js, sealed_val)) return js_mktrue(); 13539 - } 13540 - 13541 - jsoff_t frozen_off = lkp(js, as_obj, "__frozen__", 10); 13542 - if (frozen_off != 0) { 13543 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 13544 - if (js_truthy(js, frozen_val)) return js_mktrue(); 13545 - } 13502 + if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mktrue(); 13503 + if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mktrue(); 13546 13504 13547 13505 return js_mkfalse(); 13548 13506 } ··· 13705 13663 if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue(); 13706 13664 jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); 13707 13665 13708 - jsoff_t frozen_off = lkp(js, as_obj, "__frozen__", 10); 13709 - if (frozen_off != 0) { 13710 - jsval_t frozen_val = resolveprop(js, mkval(T_PROP, frozen_off)); 13711 - if (js_truthy(js, frozen_val)) return js_mkfalse(); 13712 - } 13713 - 13714 - jsoff_t sealed_off = lkp(js, as_obj, "__sealed__", 10); 13715 - if (sealed_off != 0) { 13716 - jsval_t sealed_val = resolveprop(js, mkval(T_PROP, sealed_off)); 13717 - if (js_truthy(js, sealed_val)) return js_mkfalse(); 13718 - } 13666 + if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mkfalse(); 13667 + if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mkfalse(); 13719 13668 13720 - jsoff_t ext_off = lkp(js, as_obj, "__extensible__", 14); 13721 - if (ext_off != 0) { 13722 - jsval_t ext_val = resolveprop(js, mkval(T_PROP, ext_off)); 13723 - return mkval(T_BOOL, js_truthy(js, ext_val) ? 1 : 0); 13669 + jsval_t ext_slot = get_slot(js, as_obj, SLOT_EXTENSIBLE); 13670 + if (vtype(ext_slot) != T_UNDEF) { 13671 + return js_truthy(js, ext_slot) ? js_mktrue() : js_mkfalse(); 13724 13672 } 13725 13673 13726 13674 return js_mktrue(); ··· 13735 13683 if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj; 13736 13684 jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj)); 13737 13685 13738 - setprop(js, as_obj, js_mkstr(js, "__extensible__", 14), js_mkfalse()); 13686 + set_slot(js, as_obj, SLOT_EXTENSIBLE, js_mkfalse()); 13739 13687 return obj; 13740 13688 } 13741 13689
+3 -3
src/modules/reflect.c
··· 280 280 281 281 if (t != JS_OBJ && t != JS_FUNC) return js_mkfalse(); 282 282 283 - jsval_t frozen = js_get(js, target, "__frozen__"); 283 + jsval_t frozen = js_get_slot(js, target, SLOT_FROZEN); 284 284 if (js_type(frozen) == JS_TRUE) return js_mkfalse(); 285 285 286 - jsval_t sealed = js_get(js, target, "__sealed__"); 286 + jsval_t sealed = js_get_slot(js, target, SLOT_SEALED); 287 287 if (js_type(sealed) == JS_TRUE) return js_mkfalse(); 288 288 289 289 return js_mktrue(); ··· 297 297 298 298 if (t != JS_OBJ && t != JS_FUNC) return js_mkfalse(); 299 299 300 - js_set(js, target, "__sealed__", js_mktrue()); 300 + js_set_slot(js, target, SLOT_EXTENSIBLE, js_mkfalse()); 301 301 return js_mktrue(); 302 302 } 303 303