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.

prune unused static functions

-76
-76
src/ant.c
··· 436 436 [TOK_EXP] = 14, 437 437 }; 438 438 439 - static const uint8_t unary_table[TOK_MAX] = { 440 - [TOK_POSTINC] = 1, [TOK_POSTDEC] = 1, 441 - [TOK_NOT] = 1, [TOK_TILDA] = 1, [TOK_TYPEOF] = 1, 442 - [TOK_UPLUS] = 1, [TOK_UMINUS] = 1, [TOK_VOID] = 1, 443 - }; 444 - 445 439 static const uint8_t body_end_tok[TOK_MAX] = { 446 440 [TOK_RPAREN] = 1, [TOK_RBRACE] = 1, [TOK_RBRACKET] = 1, 447 441 [TOK_SEMICOLON] = 1, [TOK_COMMA] = 1, [TOK_EOF] = 1, ··· 663 657 664 658 static inline uint8_t unhex(uint8_t c) { 665 659 return (c & 0xF) + (c >> 6) * 9; 666 - } 667 - 668 - static inline bool is_unary(uint8_t tok) { 669 - return unary_table[tok]; 670 660 } 671 661 672 662 static inline int is_body_end_tok(int tok) { ··· 2056 2046 return true; 2057 2047 } 2058 2048 2059 - static bool is_hidden_func_prop(const char *key, jsoff_t koff, jsoff_t klen) { 2060 - if (klen == 4 && memcmp(key, "name", 4) == 0) return true; 2061 - if (key[0] == '_' && key[1] == '_') return true; 2062 - 2063 - const char *interned = intern_string(key, klen); 2064 - if (interned == INTERN_PROTOTYPE || interned == INTERN_CONSTRUCTOR) return true; 2065 - if (interned == get_toStringTag_sym_key()) return true; 2066 - 2067 - return false; 2068 - } 2069 - 2070 2049 static size_t strfunc(struct js *js, jsval_t value, char *buf, size_t len) { 2071 2050 jsval_t func_obj = mkval(T_OBJ, vdata(value)); 2072 2051 jsval_t code_slot = get_slot(js, func_obj, SLOT_CODE); ··· 3101 3080 return mkentity(js, prop_header, buf, sizeof(buf)); 3102 3081 } 3103 3082 3104 - static inline jsval_t mkprop_new(struct js *js, jsval_t obj, jsoff_t koff, jsval_t v) { 3105 - jsoff_t b = loadoff(js, (jsoff_t)vdata(obj)); 3106 - jsoff_t brk = js->brk | T_OBJ; 3107 - 3108 - if (b & ARRMASK) brk |= ARRMASK; 3109 - memcpy(&js->mem[(jsoff_t)vdata(obj)], &brk, sizeof(brk)); 3110 - 3111 - char buf[sizeof(koff) + sizeof(v)]; 3112 - memcpy(buf, &koff, sizeof(koff)); 3113 - memcpy(buf + sizeof(koff), &v, sizeof(v)); 3114 - 3115 - jsoff_t prop_header = (b & ~(3U | FLAGMASK)) | T_PROP; 3116 - return mkentity(js, prop_header, buf, sizeof(buf)); 3117 - } 3118 - 3119 3083 static jsval_t mkslot(struct js *js, jsval_t obj, internal_slot_t slot, jsval_t v) { 3120 3084 jsoff_t b, head = (jsoff_t) vdata(obj); 3121 3085 char buf[sizeof(jsoff_t) + sizeof(v)]; ··· 3399 3363 return js_setprop(js, obj, k, v); 3400 3364 } 3401 3365 3402 - static jsval_t setprop_const(struct js *js, jsval_t obj, const char *key, size_t len, jsval_t v) { 3403 - jsval_t k = js_mkstr(js, key, len); 3404 - if (is_err(k)) return k; 3405 - return mkprop(js, obj, k, v, CONSTMASK); 3406 - } 3407 - 3408 3366 static inline jsval_t setprop_fast(struct js *js, jsval_t obj, const char *key, size_t len, jsval_t v) { 3409 3367 jsval_t k = js_mkstr(js, key, len); 3410 3368 if (is_err(k)) return k; ··· 3436 3394 } 3437 3395 uint64_t payload = ((id & PROPREF_PAYLOAD) << 24) | (desc_off & PROPREF_PAYLOAD); 3438 3396 return mkval(T_SYMBOL, payload); 3439 - } 3440 - 3441 - static bool is_symbol(struct js *js, jsval_t v) { 3442 - (void)js; 3443 - return vtype(v) == T_SYMBOL; 3444 3397 } 3445 3398 3446 3399 static uint64_t sym_get_id(jsval_t v) { ··· 4556 4509 return false; 4557 4510 } 4558 4511 4559 - static inline bool might_have_function_decl(const char *code, size_t len) { 4560 - return memmem(code, len, "function", 8) != NULL; 4561 - } 4562 - 4563 4512 static void hoist_function_declarations(struct js *js) { 4564 4513 if (js->flags & F_NOEXEC) return; 4565 4514 if (js->is_hoisting) return; ··· 5136 5085 } 5137 5086 if (vtype(v) != T_PROP) return v; 5138 5087 return resolveprop(js, loadval(js, (jsoff_t) (vdata(v) + sizeof(jsoff_t) * 2))); 5139 - } 5140 - 5141 - static int check_prop_writable(struct js *js, jsval_t owner, const char *key, jsoff_t klen) { 5142 - jsoff_t obj_off = (jsoff_t)vdata(owner); 5143 - descriptor_entry_t *desc = lookup_descriptor(obj_off, key, klen); 5144 - if (!desc) return -1; 5145 - return desc->writable ? 1 : 0; 5146 5088 } 5147 5089 5148 5090 static bool try_accessor_setter(struct js *js, jsval_t obj, const char *key, size_t key_len, jsval_t val, jsval_t *out) { ··· 10781 10723 return false; 10782 10724 } 10783 10725 return true; 10784 - } 10785 - } 10786 - return false; 10787 - } 10788 - 10789 - static bool continue_targets_innermost_loop(void) { 10790 - if (!(label_flags & F_CONTINUE_LABEL)) return false; 10791 - if (!label_stack || !continue_target_label) return false; 10792 - 10793 - int depth = utarray_len(label_stack); 10794 - for (int i = depth - 1; i >= 0; i--) { 10795 - label_entry_t *entry = (label_entry_t *)utarray_eltptr(label_stack, i); 10796 - if (entry && entry->is_loop) { 10797 - if (entry->name_len == continue_target_label_len && 10798 - memcmp(entry->name, continue_target_label, continue_target_label_len) == 0) { 10799 - return true; 10800 - } 10801 - return false; 10802 10726 } 10803 10727 } 10804 10728 return false;