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.

enable LTO option and update setprop function

+40 -17
+5 -2
meson.build
··· 43 43 tlsuv_dep = cmake.subproject('tlsuv', options: tlsuv_opts).dependency('tlsuv') 44 44 45 45 pcre2_dep = subproject('pcre2').get_variable('libpcre2_8') 46 - zlib_dep = subproject('zlib-ng').get_variable('zlib_ng_dep') 47 46 bdwgc_dep = subproject('bdwgc').get_variable('bdwgc_dep') 48 47 uthash_dep = subproject('uthash').get_variable('uthash_dep') 49 48 yyjson_dep = subproject('yyjson').get_variable('yyjson_dep') 50 49 uuidv7_dep = subproject('uuidv7').get_variable('uuidv7_dep') 51 50 argtable3_dep = subproject('argtable3').get_variable('argtable3_dep') 52 51 minicoro_dep = subproject('minicoro').get_variable('minicoro_dep') 52 + 53 + zlib_dep = subproject('zlib-ng', 54 + default_options: ['b_lto=false'] 55 + ).get_variable('zlib_ng_dep') 53 56 54 57 libffi_dep = subproject('libffi', default_options: [ 55 58 'warning_level=0', ··· 76 79 build_date = run_command('date', '+%Y-%m-%d', check: true).stdout().strip() 77 80 78 81 version_conf = configuration_data() 79 - version_conf.set('ANT_VERSION', '0.2.2.3') 82 + version_conf.set('ANT_VERSION', '0.2.2.4') 80 83 version_conf.set('ANT_GIT_HASH', git_hash) 81 84 version_conf.set('ANT_BUILD_DATE', build_date) 82 85
+35 -15
src/ant.c
··· 3212 3212 return mkprop(js, obj, k, v, true); 3213 3213 } 3214 3214 3215 + static inline jsval_t setprop_fast(struct js *js, jsval_t obj, const char *key, size_t len, jsval_t v) { 3216 + jsval_t k = js_mkstr(js, key, len); 3217 + if (is_err(k)) return k; 3218 + return mkprop(js, obj, k, v, false); 3219 + } 3220 + 3215 3221 static jsval_t setprop_interned(struct js *js, jsval_t obj, const char *key, size_t len, jsval_t v) { 3216 3222 jsval_t k = js_mkstr(js, key, len); 3217 3223 if (is_err(k)) return k; ··· 3627 3633 static jsoff_t skiptonext(const char *code, jsoff_t len, jsoff_t n, bool *had_newline) { 3628 3634 if (had_newline) *had_newline = false; 3629 3635 while (n < len) { 3630 - if (is_space(code[n])) { 3631 - if (had_newline && code[n] == '\n') *had_newline = true; 3632 - n++; 3636 + unsigned char c = (unsigned char)code[n]; 3637 + if (c <= 0x7F) { 3638 + if (c == ' ' || c == '\t' || c == '\r' || c == '\f' || c == '\v') { 3639 + n++; 3640 + } else if (c == '\n') { 3641 + if (had_newline) *had_newline = true; 3642 + n++; 3643 + } else if (c == '/' && n + 1 < len) { 3644 + if (code[n + 1] == '/') { 3645 + for (n += 2; n < len && code[n] != '\n';) n++; 3646 + if (had_newline && n < len && code[n] == '\n') *had_newline = true; 3647 + } else if (code[n + 1] == '*' && n + 3 < len) { 3648 + for (n += 4; n < len && (code[n - 2] != '*' || code[n - 1] != '/');) { 3649 + if (had_newline && code[n] == '\n') *had_newline = true; 3650 + n++; 3651 + } 3652 + } else { 3653 + break; 3654 + } 3655 + } else { 3656 + break; 3657 + } 3633 3658 } else { 3634 3659 bool is_line_term = false; 3635 3660 int ulen = is_unicode_space((const unsigned char *)&code[n], len - n, &is_line_term); 3636 3661 if (ulen > 0) { 3637 3662 if (had_newline && is_line_term) *had_newline = true; 3638 3663 n += ulen; 3639 - } else if (n + 1 < len && code[n] == '/' && code[n + 1] == '/') { 3640 - for (n += 2; n < len && code[n] != '\n';) n++; 3641 - if (had_newline && n < len && code[n] == '\n') *had_newline = true; 3642 - } else if (n + 3 < len && code[n] == '/' && code[n + 1] == '*') { 3643 - for (n += 4; n < len && (code[n - 2] != '*' || code[n - 1] != '/');) { 3644 - if (had_newline && code[n] == '\n') *had_newline = true; 3645 - n++; 3646 - } 3647 3664 } else { 3648 3665 break; 3649 3666 } ··· 4398 4415 key_str = decoded; 4399 4416 } 4400 4417 4418 + const char *key_intern = intern_string(key_str, key_len); 4419 + 4401 4420 for (jsval_t scope = js->scope;;) { 4421 + jsoff_t off = lkp_interned(js, scope, key_intern, key_len); 4422 + if (off != 0) return mkval(T_PROP, off); 4423 + 4402 4424 jsoff_t with_marker_off = lkp(js, scope, "__with_object__", 15); 4403 4425 if (with_marker_off != 0) { 4404 4426 jsval_t with_obj_val = resolveprop(js, mkval(T_PROP, with_marker_off)); ··· 4410 4432 with_obj_val : mkval(T_OBJ, vdata(with_obj_val) 4411 4433 ); 4412 4434 4413 - jsoff_t prop_off = lkp(js, with_obj, key_str, key_len); 4435 + jsoff_t prop_off = lkp_interned(js, with_obj, key_intern, key_len); 4414 4436 if (prop_off != 0) { 4415 4437 jsval_t key = js_mkstr(js, key_str, key_len); 4416 4438 if (is_err(key)) return key; ··· 4418 4440 } 4419 4441 } 4420 4442 4421 - jsoff_t off = lkp(js, scope, key_str, key_len); 4422 - if (off != 0) return mkval(T_PROP, off); 4423 4443 if (vdata(scope) == 0) break; 4424 4444 scope = upper(js, scope); 4425 4445 } ··· 5346 5366 } else { 5347 5367 v = js_mkundef(); 5348 5368 } 5349 - setprop(js, function_scope, js_mkstr(js, &fn[pp->name_off], pp->name_len), v); 5369 + setprop_fast(js, function_scope, &fn[pp->name_off], pp->name_len, v); 5350 5370 } 5351 5371 } 5352 5372