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.

prevent prototype enumeration

+181 -175
+6
include/internal.h
··· 432 432 return lookup_prop_meta(js, cur_obj, PROP_META_STRING, key, klen, 0, out); 433 433 } 434 434 435 + static inline ant_value_t defmethod(ant_t *js, ant_value_t obj, const char *name, size_t len, ant_value_t fn) { 436 + ant_value_t k = js_mkstr(js, name, len); 437 + if (is_err(k)) return k; 438 + return mkprop(js, obj, k, fn, ANT_PROP_ATTR_WRITABLE | ANT_PROP_ATTR_CONFIGURABLE); 439 + } 440 + 435 441 static inline void js_set_module_default(ant_t *js, ant_value_t lib, ant_value_t ctor_fn, const char *name) { 436 442 js_set(js, ctor_fn, name, ctor_fn); 437 443 js_set(js, lib, name, ctor_fn);
+153 -152
src/ant.c
··· 12361 12361 ant_value_t object_proto = js_mkobj(js); 12362 12362 set_proto(js, object_proto, js_mknull()); 12363 12363 12364 - js_setprop(js, object_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_object_toString)); 12365 - js_set_descriptor(js, object_proto, "toString", 8, JS_DESC_W | JS_DESC_C); 12366 - 12367 - js_setprop(js, object_proto, js_mkstr(js, "valueOf", 7), js_mkfun(builtin_object_valueOf)); 12368 - js_set_descriptor(js, object_proto, "valueOf", 7, JS_DESC_W | JS_DESC_C); 12369 - 12370 - js_setprop(js, object_proto, js_mkstr(js, "toLocaleString", 14), js_mkfun(builtin_object_toLocaleString)); 12371 - js_set_descriptor(js, object_proto, "toLocaleString", 14, JS_DESC_W | JS_DESC_C); 12372 - 12373 - js_setprop(js, object_proto, js_mkstr(js, "hasOwnProperty", 14), js_mkfun(builtin_object_hasOwnProperty)); 12374 - js_set_descriptor(js, object_proto, "hasOwnProperty", 14, JS_DESC_W | JS_DESC_C); 12375 - 12376 - js_setprop(js, object_proto, js_mkstr(js, "isPrototypeOf", 13), js_mkfun(builtin_object_isPrototypeOf)); 12377 - js_set_descriptor(js, object_proto, "isPrototypeOf", 13, JS_DESC_W | JS_DESC_C); 12378 - 12379 - js_setprop(js, object_proto, js_mkstr(js, "propertyIsEnumerable", 20), js_mkfun(builtin_object_propertyIsEnumerable)); 12380 - js_set_descriptor(js, object_proto, "propertyIsEnumerable", 20, JS_DESC_W | JS_DESC_C); 12364 + defmethod(js, object_proto, "toString", 8, js_mkfun(builtin_object_toString)); 12365 + defmethod(js, object_proto, "valueOf", 7, js_mkfun(builtin_object_valueOf)); 12366 + defmethod(js, object_proto, "toLocaleString", 14, js_mkfun(builtin_object_toLocaleString)); 12367 + defmethod(js, object_proto, "hasOwnProperty", 14, js_mkfun(builtin_object_hasOwnProperty)); 12368 + defmethod(js, object_proto, "isPrototypeOf", 13, js_mkfun(builtin_object_isPrototypeOf)); 12369 + defmethod(js, object_proto, "propertyIsEnumerable", 20, js_mkfun(builtin_object_propertyIsEnumerable)); 12381 12370 12382 12371 ant_value_t proto_getter = js_mkfun(builtin_proto_getter); 12383 12372 ant_value_t proto_setter = js_mkfun(builtin_proto_setter); ··· 12386 12375 ant_value_t function_proto_obj = js_mkobj(js); 12387 12376 set_proto(js, function_proto_obj, object_proto); 12388 12377 set_slot(function_proto_obj, SLOT_CFUNC, js_mkfun(builtin_function_empty)); 12389 - js_setprop(js, function_proto_obj, ANT_STRING("call"), js_mkfun(builtin_function_call)); 12390 - js_setprop(js, function_proto_obj, ANT_STRING("apply"), js_mkfun(builtin_function_apply)); 12391 - js_setprop(js, function_proto_obj, ANT_STRING("bind"), js_mkfun(builtin_function_bind)); 12392 - js_setprop(js, function_proto_obj, ANT_STRING("toString"), js_mkfun(builtin_function_toString)); 12378 + 12379 + defmethod(js, function_proto_obj, "call", 4, js_mkfun(builtin_function_call)); 12380 + defmethod(js, function_proto_obj, "apply", 5, js_mkfun(builtin_function_apply)); 12381 + defmethod(js, function_proto_obj, "bind", 4, js_mkfun(builtin_function_bind)); 12382 + defmethod(js, function_proto_obj, "toString", 8, js_mkfun(builtin_function_toString)); 12383 + 12393 12384 ant_value_t function_proto = js_obj_to_func(function_proto_obj); 12394 12385 set_slot(glob, SLOT_FUNC_PROTO, function_proto); 12395 12386 12396 12387 ant_value_t array_proto = js_mkobj(js); 12397 12388 set_proto(js, array_proto, object_proto); 12398 - js_setprop(js, array_proto, js_mkstr(js, "push", 4), js_mkfun(builtin_array_push)); 12399 - js_setprop(js, array_proto, js_mkstr(js, "pop", 3), js_mkfun(builtin_array_pop)); 12400 - js_setprop(js, array_proto, js_mkstr(js, "slice", 5), js_mkfun(builtin_array_slice)); 12401 - js_setprop(js, array_proto, js_mkstr(js, "join", 4), js_mkfun(builtin_array_join)); 12402 - js_setprop(js, array_proto, js_mkstr(js, "includes", 8), js_mkfun(builtin_array_includes)); 12403 - js_setprop(js, array_proto, js_mkstr(js, "every", 5), js_mkfun(builtin_array_every)); 12404 - js_setprop(js, array_proto, js_mkstr(js, "reverse", 7), js_mkfun(builtin_array_reverse)); 12405 - js_setprop(js, array_proto, js_mkstr(js, "map", 3), js_mkfun(builtin_array_map)); 12406 - js_setprop(js, array_proto, js_mkstr(js, "filter", 6), js_mkfun(builtin_array_filter)); 12407 - js_setprop(js, array_proto, js_mkstr(js, "reduce", 6), js_mkfun(builtin_array_reduce)); 12408 - js_setprop(js, array_proto, js_mkstr(js, "flat", 4), js_mkfun(builtin_array_flat)); 12409 - js_setprop(js, array_proto, js_mkstr(js, "concat", 6), js_mkfun(builtin_array_concat)); 12410 - js_setprop(js, array_proto, js_mkstr(js, "at", 2), js_mkfun(builtin_array_at)); 12411 - js_setprop(js, array_proto, js_mkstr(js, "fill", 4), js_mkfun(builtin_array_fill)); 12412 - js_setprop(js, array_proto, js_mkstr(js, "find", 4), js_mkfun(builtin_array_find)); 12413 - js_setprop(js, array_proto, js_mkstr(js, "findIndex", 9), js_mkfun(builtin_array_findIndex)); 12414 - js_setprop(js, array_proto, js_mkstr(js, "findLast", 8), js_mkfun(builtin_array_findLast)); 12415 - js_setprop(js, array_proto, js_mkstr(js, "findLastIndex", 13), js_mkfun(builtin_array_findLastIndex)); 12416 - js_setprop(js, array_proto, js_mkstr(js, "flatMap", 7), js_mkfun(builtin_array_flatMap)); 12417 - js_setprop(js, array_proto, js_mkstr(js, "forEach", 7), js_mkfun(builtin_array_forEach)); 12418 - js_setprop(js, array_proto, js_mkstr(js, "indexOf", 7), js_mkfun(builtin_array_indexOf)); 12419 - js_setprop(js, array_proto, js_mkstr(js, "lastIndexOf", 11), js_mkfun(builtin_array_lastIndexOf)); 12420 - js_setprop(js, array_proto, js_mkstr(js, "reduceRight", 11), js_mkfun(builtin_array_reduceRight)); 12421 - js_setprop(js, array_proto, js_mkstr(js, "shift", 5), js_mkfun(builtin_array_shift)); 12422 - js_setprop(js, array_proto, js_mkstr(js, "unshift", 7), js_mkfun(builtin_array_unshift)); 12423 - js_setprop(js, array_proto, js_mkstr(js, "some", 4), js_mkfun(builtin_array_some)); 12424 - js_setprop(js, array_proto, js_mkstr(js, "sort", 4), js_mkfun(builtin_array_sort)); 12425 - js_setprop(js, array_proto, js_mkstr(js, "splice", 6), js_mkfun(builtin_array_splice)); 12426 - js_setprop(js, array_proto, js_mkstr(js, "copyWithin", 10), js_mkfun(builtin_array_copyWithin)); 12427 - js_setprop(js, array_proto, js_mkstr(js, "toReversed", 10), js_mkfun(builtin_array_toReversed)); 12428 - js_setprop(js, array_proto, js_mkstr(js, "toSorted", 8), js_mkfun(builtin_array_toSorted)); 12429 - js_setprop(js, array_proto, js_mkstr(js, "toSpliced", 9), js_mkfun(builtin_array_toSpliced)); 12430 - js_setprop(js, array_proto, js_mkstr(js, "with", 4), js_mkfun(builtin_array_with)); 12431 - js_setprop(js, array_proto, js_mkstr(js, "keys", 4), js_mkfun(builtin_array_keys)); 12432 - js_setprop(js, array_proto, js_mkstr(js, "values", 6), js_mkfun(builtin_array_values)); 12433 - js_setprop(js, array_proto, js_mkstr(js, "entries", 7), js_mkfun(builtin_array_entries)); 12434 - js_setprop(js, array_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_array_toString)); 12435 - js_setprop(js, array_proto, js_mkstr(js, "toLocaleString", 14), js_mkfun(builtin_array_toLocaleString)); 12389 + 12390 + defmethod(js, array_proto, "push", 4, js_mkfun(builtin_array_push)); 12391 + defmethod(js, array_proto, "pop", 3, js_mkfun(builtin_array_pop)); 12392 + defmethod(js, array_proto, "slice", 5, js_mkfun(builtin_array_slice)); 12393 + defmethod(js, array_proto, "join", 4, js_mkfun(builtin_array_join)); 12394 + defmethod(js, array_proto, "includes", 8, js_mkfun(builtin_array_includes)); 12395 + defmethod(js, array_proto, "every", 5, js_mkfun(builtin_array_every)); 12396 + defmethod(js, array_proto, "reverse", 7, js_mkfun(builtin_array_reverse)); 12397 + defmethod(js, array_proto, "map", 3, js_mkfun(builtin_array_map)); 12398 + defmethod(js, array_proto, "filter", 6, js_mkfun(builtin_array_filter)); 12399 + defmethod(js, array_proto, "reduce", 6, js_mkfun(builtin_array_reduce)); 12400 + defmethod(js, array_proto, "flat", 4, js_mkfun(builtin_array_flat)); 12401 + defmethod(js, array_proto, "concat", 6, js_mkfun(builtin_array_concat)); 12402 + defmethod(js, array_proto, "at", 2, js_mkfun(builtin_array_at)); 12403 + defmethod(js, array_proto, "fill", 4, js_mkfun(builtin_array_fill)); 12404 + defmethod(js, array_proto, "find", 4, js_mkfun(builtin_array_find)); 12405 + defmethod(js, array_proto, "findIndex", 9, js_mkfun(builtin_array_findIndex)); 12406 + defmethod(js, array_proto, "findLast", 8, js_mkfun(builtin_array_findLast)); 12407 + defmethod(js, array_proto, "findLastIndex", 13, js_mkfun(builtin_array_findLastIndex)); 12408 + defmethod(js, array_proto, "flatMap", 7, js_mkfun(builtin_array_flatMap)); 12409 + defmethod(js, array_proto, "forEach", 7, js_mkfun(builtin_array_forEach)); 12410 + defmethod(js, array_proto, "indexOf", 7, js_mkfun(builtin_array_indexOf)); 12411 + defmethod(js, array_proto, "lastIndexOf", 11, js_mkfun(builtin_array_lastIndexOf)); 12412 + defmethod(js, array_proto, "reduceRight", 11, js_mkfun(builtin_array_reduceRight)); 12413 + defmethod(js, array_proto, "shift", 5, js_mkfun(builtin_array_shift)); 12414 + defmethod(js, array_proto, "unshift", 7, js_mkfun(builtin_array_unshift)); 12415 + defmethod(js, array_proto, "some", 4, js_mkfun(builtin_array_some)); 12416 + defmethod(js, array_proto, "sort", 4, js_mkfun(builtin_array_sort)); 12417 + defmethod(js, array_proto, "splice", 6, js_mkfun(builtin_array_splice)); 12418 + defmethod(js, array_proto, "copyWithin", 10, js_mkfun(builtin_array_copyWithin)); 12419 + defmethod(js, array_proto, "toReversed", 10, js_mkfun(builtin_array_toReversed)); 12420 + defmethod(js, array_proto, "toSorted", 8, js_mkfun(builtin_array_toSorted)); 12421 + defmethod(js, array_proto, "toSpliced", 9, js_mkfun(builtin_array_toSpliced)); 12422 + defmethod(js, array_proto, "with", 4, js_mkfun(builtin_array_with)); 12423 + defmethod(js, array_proto, "keys", 4, js_mkfun(builtin_array_keys)); 12424 + defmethod(js, array_proto, "values", 6, js_mkfun(builtin_array_values)); 12425 + defmethod(js, array_proto, "entries", 7, js_mkfun(builtin_array_entries)); 12426 + defmethod(js, array_proto, "toString", 8, js_mkfun(builtin_array_toString)); 12427 + defmethod(js, array_proto, "toLocaleString", 14, js_mkfun(builtin_array_toLocaleString)); 12436 12428 12437 12429 ant_value_t string_proto = js_mkobj(js); 12438 12430 set_proto(js, string_proto, object_proto); 12439 - js_setprop(js, string_proto, js_mkstr(js, "indexOf", 7), js_mkfun(builtin_string_indexOf)); 12440 - js_setprop(js, string_proto, js_mkstr(js, "substring", 9), js_mkfun(builtin_string_substring)); 12441 - js_setprop(js, string_proto, js_mkstr(js, "substr", 6), js_mkfun(builtin_string_substr)); 12442 - js_setprop(js, string_proto, js_mkstr(js, "split", 5), js_mkfun(builtin_string_split)); 12443 - js_setprop(js, string_proto, js_mkstr(js, "slice", 5), js_mkfun(builtin_string_slice)); 12444 - js_setprop(js, string_proto, js_mkstr(js, "includes", 8), js_mkfun(builtin_string_includes)); 12445 - js_setprop(js, string_proto, js_mkstr(js, "startsWith", 10), js_mkfun(builtin_string_startsWith)); 12446 - js_setprop(js, string_proto, js_mkstr(js, "endsWith", 8), js_mkfun(builtin_string_endsWith)); 12447 - js_setprop(js, string_proto, js_mkstr(js, "template", 8), js_mkfun(builtin_string_template)); 12448 - js_setprop(js, string_proto, js_mkstr(js, "charCodeAt", 10), js_mkfun(builtin_string_charCodeAt)); 12449 - js_setprop(js, string_proto, js_mkstr(js, "codePointAt", 11), js_mkfun(builtin_string_codePointAt)); 12450 - js_setprop(js, string_proto, js_mkstr(js, "toLowerCase", 11), js_mkfun(builtin_string_toLowerCase)); 12451 - js_setprop(js, string_proto, js_mkstr(js, "toUpperCase", 11), js_mkfun(builtin_string_toUpperCase)); 12452 - js_setprop(js, string_proto, js_mkstr(js, "toLocaleLowerCase", 17), js_mkfun(builtin_string_toLowerCase)); 12453 - js_setprop(js, string_proto, js_mkstr(js, "toLocaleUpperCase", 17), js_mkfun(builtin_string_toUpperCase)); 12454 - js_setprop(js, string_proto, js_mkstr(js, "trim", 4), js_mkfun(builtin_string_trim)); 12455 - js_setprop(js, string_proto, js_mkstr(js, "trimStart", 9), js_mkfun(builtin_string_trimStart)); 12456 - js_setprop(js, string_proto, js_mkstr(js, "trimEnd", 7), js_mkfun(builtin_string_trimEnd)); 12457 - js_setprop(js, string_proto, js_mkstr(js, "repeat", 6), js_mkfun(builtin_string_repeat)); 12458 - js_setprop(js, string_proto, js_mkstr(js, "padStart", 8), js_mkfun(builtin_string_padStart)); 12459 - js_setprop(js, string_proto, js_mkstr(js, "padEnd", 6), js_mkfun(builtin_string_padEnd)); 12460 - js_setprop(js, string_proto, js_mkstr(js, "charAt", 6), js_mkfun(builtin_string_charAt)); 12461 - js_setprop(js, string_proto, js_mkstr(js, "at", 2), js_mkfun(builtin_string_at)); 12462 - js_setprop(js, string_proto, js_mkstr(js, "lastIndexOf", 11), js_mkfun(builtin_string_lastIndexOf)); 12463 - js_setprop(js, string_proto, js_mkstr(js, "concat", 6), js_mkfun(builtin_string_concat)); 12464 - js_setprop(js, string_proto, js_mkstr(js, "localeCompare", 13), js_mkfun(builtin_string_localeCompare)); 12465 - js_setprop(js, string_proto, js_mkstr(js, "normalize", 9), js_mkfun(builtin_string_normalize)); 12466 - js_setprop(js, string_proto, js_mkstr(js, "valueOf", 7), js_mkfun(builtin_string_valueOf)); 12467 - js_setprop(js, string_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_string_toString)); 12431 + 12432 + defmethod(js, string_proto, "indexOf", 7, js_mkfun(builtin_string_indexOf)); 12433 + defmethod(js, string_proto, "substring", 9, js_mkfun(builtin_string_substring)); 12434 + defmethod(js, string_proto, "substr", 6, js_mkfun(builtin_string_substr)); 12435 + defmethod(js, string_proto, "split", 5, js_mkfun(builtin_string_split)); 12436 + defmethod(js, string_proto, "slice", 5, js_mkfun(builtin_string_slice)); 12437 + defmethod(js, string_proto, "includes", 8, js_mkfun(builtin_string_includes)); 12438 + defmethod(js, string_proto, "startsWith", 10, js_mkfun(builtin_string_startsWith)); 12439 + defmethod(js, string_proto, "endsWith", 8, js_mkfun(builtin_string_endsWith)); 12440 + defmethod(js, string_proto, "template", 8, js_mkfun(builtin_string_template)); 12441 + defmethod(js, string_proto, "charCodeAt", 10, js_mkfun(builtin_string_charCodeAt)); 12442 + defmethod(js, string_proto, "codePointAt", 11, js_mkfun(builtin_string_codePointAt)); 12443 + defmethod(js, string_proto, "toLowerCase", 11, js_mkfun(builtin_string_toLowerCase)); 12444 + defmethod(js, string_proto, "toUpperCase", 11, js_mkfun(builtin_string_toUpperCase)); 12445 + defmethod(js, string_proto, "toLocaleLowerCase", 17, js_mkfun(builtin_string_toLowerCase)); 12446 + defmethod(js, string_proto, "toLocaleUpperCase", 17, js_mkfun(builtin_string_toUpperCase)); 12447 + defmethod(js, string_proto, "trim", 4, js_mkfun(builtin_string_trim)); 12448 + defmethod(js, string_proto, "trimStart", 9, js_mkfun(builtin_string_trimStart)); 12449 + defmethod(js, string_proto, "trimEnd", 7, js_mkfun(builtin_string_trimEnd)); 12450 + defmethod(js, string_proto, "repeat", 6, js_mkfun(builtin_string_repeat)); 12451 + defmethod(js, string_proto, "padStart", 8, js_mkfun(builtin_string_padStart)); 12452 + defmethod(js, string_proto, "padEnd", 6, js_mkfun(builtin_string_padEnd)); 12453 + defmethod(js, string_proto, "charAt", 6, js_mkfun(builtin_string_charAt)); 12454 + defmethod(js, string_proto, "at", 2, js_mkfun(builtin_string_at)); 12455 + defmethod(js, string_proto, "lastIndexOf", 11, js_mkfun(builtin_string_lastIndexOf)); 12456 + defmethod(js, string_proto, "concat", 6, js_mkfun(builtin_string_concat)); 12457 + defmethod(js, string_proto, "localeCompare", 13, js_mkfun(builtin_string_localeCompare)); 12458 + defmethod(js, string_proto, "normalize", 9, js_mkfun(builtin_string_normalize)); 12459 + defmethod(js, string_proto, "valueOf", 7, js_mkfun(builtin_string_valueOf)); 12460 + defmethod(js, string_proto, "toString", 8, js_mkfun(builtin_string_toString)); 12468 12461 12469 12462 ant_value_t number_proto = js_mkobj(js); 12470 12463 set_proto(js, number_proto, object_proto); 12471 - js_setprop(js, number_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_number_toString)); 12472 - js_setprop(js, number_proto, js_mkstr(js, "toFixed", 7), js_mkfun(builtin_number_toFixed)); 12473 - js_setprop(js, number_proto, js_mkstr(js, "toPrecision", 11), js_mkfun(builtin_number_toPrecision)); 12474 - js_setprop(js, number_proto, js_mkstr(js, "toExponential", 13), js_mkfun(builtin_number_toExponential)); 12475 - js_setprop(js, number_proto, js_mkstr(js, "valueOf", 7), js_mkfun(builtin_number_valueOf)); 12476 - js_setprop(js, number_proto, js_mkstr(js, "toLocaleString", 14), js_mkfun(builtin_number_toLocaleString)); 12464 + 12465 + defmethod(js, number_proto, "toString", 8, js_mkfun(builtin_number_toString)); 12466 + defmethod(js, number_proto, "toFixed", 7, js_mkfun(builtin_number_toFixed)); 12467 + defmethod(js, number_proto, "toPrecision", 11, js_mkfun(builtin_number_toPrecision)); 12468 + defmethod(js, number_proto, "toExponential", 13, js_mkfun(builtin_number_toExponential)); 12469 + defmethod(js, number_proto, "valueOf", 7, js_mkfun(builtin_number_valueOf)); 12470 + defmethod(js, number_proto, "toLocaleString", 14, js_mkfun(builtin_number_toLocaleString)); 12477 12471 12478 12472 ant_value_t boolean_proto = js_mkobj(js); 12479 12473 set_proto(js, boolean_proto, object_proto); 12480 - js_setprop(js, boolean_proto, js_mkstr(js, "valueOf", 7), js_mkfun(builtin_boolean_valueOf)); 12481 - js_setprop(js, boolean_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_boolean_toString)); 12474 + 12475 + defmethod(js, boolean_proto, "valueOf", 7, js_mkfun(builtin_boolean_valueOf)); 12476 + defmethod(js, boolean_proto, "toString", 8, js_mkfun(builtin_boolean_toString)); 12482 12477 12483 12478 ant_value_t error_proto = js_mkobj(js); 12484 12479 set_proto(js, error_proto, object_proto); 12480 + 12485 12481 js_setprop(js, error_proto, ANT_STRING("name"), ANT_STRING("Error")); 12486 12482 js_setprop(js, error_proto, ANT_STRING("message"), js_mkstr(js, "", 0)); 12487 - js_setprop(js, error_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_Error_toString)); 12483 + defmethod(js, error_proto, "toString", 8, js_mkfun(builtin_Error_toString)); 12488 12484 12489 12485 ant_value_t err_ctor_obj = mkobj(js, 0); 12490 12486 set_proto(js, err_ctor_obj, function_proto); ··· 12496 12492 js_setprop(js, glob, ANT_STRING("Error"), err_ctor_func); 12497 12493 js_setprop(js, error_proto, js_mkstr(js, "constructor", 11), err_ctor_func); 12498 12494 js_set_descriptor(js, error_proto, "constructor", 11, JS_DESC_W | JS_DESC_C); 12499 - js_setprop(js, err_ctor_func, ANT_STRING("isError"), js_mkfun(builtin_error_isError)); 12500 - js_setprop(js, err_ctor_func, ANT_STRING("captureStackTrace"), js_mkfun(builtin_error_captureStackTrace)); 12495 + defmethod(js, err_ctor_func, "isError", 7, js_mkfun(builtin_error_isError)); 12496 + defmethod(js, err_ctor_func, "captureStackTrace", 17, js_mkfun(builtin_error_captureStackTrace)); 12501 12497 js_setprop(js, err_ctor_func, ANT_STRING("stackTraceLimit"), js_mknum(10)); 12502 12498 12503 12499 #define REGISTER_ERROR_SUBTYPE(name_str) do { \ ··· 12539 12535 12540 12536 ant_value_t promise_proto = js_mkobj(js); 12541 12537 set_proto(js, promise_proto, object_proto); 12542 - js_setprop(js, promise_proto, js_mkstr(js, "then", 4), js_mkfun(builtin_promise_then)); 12543 - js_setprop(js, promise_proto, js_mkstr(js, "catch", 5), js_mkfun(builtin_promise_catch)); 12544 - js_setprop(js, promise_proto, js_mkstr(js, "finally", 7), js_mkfun(builtin_promise_finally)); 12538 + defmethod(js, promise_proto, "then", 4, js_mkfun(builtin_promise_then)); 12539 + defmethod(js, promise_proto, "catch", 5, js_mkfun(builtin_promise_catch)); 12540 + defmethod(js, promise_proto, "finally", 7, js_mkfun(builtin_promise_finally)); 12545 12541 12546 12542 ant_value_t obj_func_obj = mkobj(js, 0); 12547 12543 set_proto(js, obj_func_obj, function_proto); 12548 12544 set_slot(obj_func_obj, SLOT_BUILTIN, tov(BUILTIN_OBJECT)); 12549 12545 js_mark_constructor(obj_func_obj, true); 12550 - js_setprop(js, obj_func_obj, js_mkstr(js, "keys", 4), js_mkfun(builtin_object_keys)); 12551 - js_setprop(js, obj_func_obj, js_mkstr(js, "values", 6), js_mkfun(builtin_object_values)); 12552 - js_setprop(js, obj_func_obj, js_mkstr(js, "entries", 7), js_mkfun(builtin_object_entries)); 12553 - js_setprop(js, obj_func_obj, js_mkstr(js, "is", 2), js_mkfun(builtin_object_is)); 12554 - js_setprop(js, obj_func_obj, js_mkstr(js, "getPrototypeOf", 14), js_mkfun(builtin_object_getPrototypeOf)); 12555 - js_setprop(js, obj_func_obj, js_mkstr(js, "setPrototypeOf", 14), js_mkfun(builtin_object_setPrototypeOf)); 12556 - js_setprop(js, obj_func_obj, js_mkstr(js, "create", 6), js_mkfun(builtin_object_create)); 12557 - js_setprop(js, obj_func_obj, js_mkstr(js, "hasOwn", 6), js_mkfun(builtin_object_hasOwn)); 12558 - js_setprop(js, obj_func_obj, js_mkstr(js, "groupBy", 7), js_mkfun(builtin_object_groupBy)); 12559 - js_setprop(js, obj_func_obj, js_mkstr(js, "defineProperty", 14), js_mkfun(builtin_object_defineProperty)); 12560 - js_setprop(js, obj_func_obj, js_mkstr(js, "defineProperties", 16), js_mkfun(builtin_object_defineProperties)); 12561 - js_setprop(js, obj_func_obj, js_mkstr(js, "assign", 6), js_mkfun(builtin_object_assign)); 12562 - js_setprop(js, obj_func_obj, js_mkstr(js, "freeze", 6), js_mkfun(builtin_object_freeze)); 12563 - js_setprop(js, obj_func_obj, js_mkstr(js, "isFrozen", 8), js_mkfun(builtin_object_isFrozen)); 12564 - js_setprop(js, obj_func_obj, js_mkstr(js, "seal", 4), js_mkfun(builtin_object_seal)); 12565 - js_setprop(js, obj_func_obj, js_mkstr(js, "isSealed", 8), js_mkfun(builtin_object_isSealed)); 12566 - js_setprop(js, obj_func_obj, js_mkstr(js, "fromEntries", 11), js_mkfun(builtin_object_fromEntries)); 12567 - js_setprop(js, obj_func_obj, js_mkstr(js, "getOwnPropertyDescriptor", 24), js_mkfun(builtin_object_getOwnPropertyDescriptor)); 12568 - js_setprop(js, obj_func_obj, js_mkstr(js, "getOwnPropertyNames", 19), js_mkfun(builtin_object_getOwnPropertyNames)); 12569 - js_setprop(js, obj_func_obj, js_mkstr(js, "getOwnPropertySymbols", 21), js_mkfun(builtin_object_getOwnPropertySymbols)); 12570 - js_setprop(js, obj_func_obj, js_mkstr(js, "isExtensible", 12), js_mkfun(builtin_object_isExtensible)); 12571 - js_setprop(js, obj_func_obj, js_mkstr(js, "preventExtensions", 17), js_mkfun(builtin_object_preventExtensions)); 12546 + 12547 + defmethod(js, obj_func_obj, "keys", 4, js_mkfun(builtin_object_keys)); 12548 + defmethod(js, obj_func_obj, "values", 6, js_mkfun(builtin_object_values)); 12549 + defmethod(js, obj_func_obj, "entries", 7, js_mkfun(builtin_object_entries)); 12550 + defmethod(js, obj_func_obj, "is", 2, js_mkfun(builtin_object_is)); 12551 + defmethod(js, obj_func_obj, "getPrototypeOf", 14, js_mkfun(builtin_object_getPrototypeOf)); 12552 + defmethod(js, obj_func_obj, "setPrototypeOf", 14, js_mkfun(builtin_object_setPrototypeOf)); 12553 + defmethod(js, obj_func_obj, "create", 6, js_mkfun(builtin_object_create)); 12554 + defmethod(js, obj_func_obj, "hasOwn", 6, js_mkfun(builtin_object_hasOwn)); 12555 + defmethod(js, obj_func_obj, "groupBy", 7, js_mkfun(builtin_object_groupBy)); 12556 + defmethod(js, obj_func_obj, "defineProperty", 14, js_mkfun(builtin_object_defineProperty)); 12557 + defmethod(js, obj_func_obj, "defineProperties", 16, js_mkfun(builtin_object_defineProperties)); 12558 + defmethod(js, obj_func_obj, "assign", 6, js_mkfun(builtin_object_assign)); 12559 + defmethod(js, obj_func_obj, "freeze", 6, js_mkfun(builtin_object_freeze)); 12560 + defmethod(js, obj_func_obj, "isFrozen", 8, js_mkfun(builtin_object_isFrozen)); 12561 + defmethod(js, obj_func_obj, "seal", 4, js_mkfun(builtin_object_seal)); 12562 + defmethod(js, obj_func_obj, "isSealed", 8, js_mkfun(builtin_object_isSealed)); 12563 + defmethod(js, obj_func_obj, "fromEntries", 11, js_mkfun(builtin_object_fromEntries)); 12564 + defmethod(js, obj_func_obj, "getOwnPropertyDescriptor", 24, js_mkfun(builtin_object_getOwnPropertyDescriptor)); 12565 + defmethod(js, obj_func_obj, "getOwnPropertyNames", 19, js_mkfun(builtin_object_getOwnPropertyNames)); 12566 + defmethod(js, obj_func_obj, "getOwnPropertySymbols", 21, js_mkfun(builtin_object_getOwnPropertySymbols)); 12567 + defmethod(js, obj_func_obj, "isExtensible", 12, js_mkfun(builtin_object_isExtensible)); 12568 + defmethod(js, obj_func_obj, "preventExtensions", 17, js_mkfun(builtin_object_preventExtensions)); 12569 + 12572 12570 js_setprop(js, obj_func_obj, ANT_STRING("name"), ANT_STRING("Object")); 12573 12571 js_setprop_nonconfigurable(js, obj_func_obj, "prototype", 9, object_proto); 12574 12572 ant_value_t obj_func = js_obj_to_func(obj_func_obj); ··· 12606 12604 set_proto(js, str_ctor_obj, function_proto); 12607 12605 set_slot(str_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_String)); 12608 12606 js_setprop_nonconfigurable(js, str_ctor_obj, "prototype", 9, string_proto); 12609 - js_setprop(js, str_ctor_obj, js_mkstr(js, "fromCharCode", 12), js_mkfun(builtin_string_fromCharCode)); 12610 - js_setprop(js, str_ctor_obj, js_mkstr(js, "fromCodePoint", 13), js_mkfun(builtin_string_fromCodePoint)); 12611 - js_setprop(js, str_ctor_obj, js_mkstr(js, "raw", 3), js_mkfun(builtin_string_raw)); 12607 + defmethod(js, str_ctor_obj, "fromCharCode", 12, js_mkfun(builtin_string_fromCharCode)); 12608 + defmethod(js, str_ctor_obj, "fromCodePoint", 13, js_mkfun(builtin_string_fromCodePoint)); 12609 + defmethod(js, str_ctor_obj, "raw", 3, js_mkfun(builtin_string_raw)); 12612 12610 js_setprop(js, str_ctor_obj, ANT_STRING("name"), ANT_STRING("String")); 12613 12611 ant_value_t str_ctor_func = js_obj_to_func(str_ctor_obj); 12614 12612 js_setprop(js, glob, js_mkstr(js, "String", 6), str_ctor_func); ··· 12617 12615 set_proto(js, number_ctor_obj, function_proto); 12618 12616 12619 12617 set_slot(number_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_Number)); 12620 - js_setprop(js, number_ctor_obj, js_mkstr(js, "isNaN", 5), js_mkfun(builtin_Number_isNaN)); 12621 - js_setprop(js, number_ctor_obj, js_mkstr(js, "isFinite", 8), js_mkfun(builtin_Number_isFinite)); 12622 - js_setprop(js, number_ctor_obj, js_mkstr(js, "isInteger", 9), js_mkfun(builtin_Number_isInteger)); 12623 - js_setprop(js, number_ctor_obj, js_mkstr(js, "isSafeInteger", 13), js_mkfun(builtin_Number_isSafeInteger)); 12624 - js_setprop(js, number_ctor_obj, js_mkstr(js, "parseInt", 8), js_mkfun(builtin_parseInt)); 12625 - js_setprop(js, number_ctor_obj, js_mkstr(js, "parseFloat", 10), js_mkfun(builtin_parseFloat)); 12618 + defmethod(js, number_ctor_obj, "isNaN", 5, js_mkfun(builtin_Number_isNaN)); 12619 + defmethod(js, number_ctor_obj, "isFinite", 8, js_mkfun(builtin_Number_isFinite)); 12620 + defmethod(js, number_ctor_obj, "isInteger", 9, js_mkfun(builtin_Number_isInteger)); 12621 + defmethod(js, number_ctor_obj, "isSafeInteger", 13, js_mkfun(builtin_Number_isSafeInteger)); 12622 + defmethod(js, number_ctor_obj, "parseInt", 8, js_mkfun(builtin_parseInt)); 12623 + defmethod(js, number_ctor_obj, "parseFloat", 10, js_mkfun(builtin_parseFloat)); 12626 12624 12627 12625 js_setprop(js, number_ctor_obj, js_mkstr(js, "MAX_VALUE", 9), tov(1.7976931348623157e+308)); 12628 12626 js_setprop(js, number_ctor_obj, js_mkstr(js, "MIN_VALUE", 9), tov(5e-324)); ··· 12650 12648 set_proto(js, arr_ctor_obj, function_proto); 12651 12649 set_slot(arr_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_Array)); 12652 12650 js_setprop_nonconfigurable(js, arr_ctor_obj, "prototype", 9, array_proto); 12653 - js_setprop(js, arr_ctor_obj, js_mkstr(js, "isArray", 7), js_mkfun(builtin_Array_isArray)); 12654 - js_setprop(js, arr_ctor_obj, js_mkstr(js, "from", 4), js_mkfun(builtin_Array_from)); 12655 - js_setprop(js, arr_ctor_obj, js_mkstr(js, "of", 2), js_mkfun(builtin_Array_of)); 12651 + defmethod(js, arr_ctor_obj, "isArray", 7, js_mkfun(builtin_Array_isArray)); 12652 + defmethod(js, arr_ctor_obj, "from", 4, js_mkfun(builtin_Array_from)); 12653 + defmethod(js, arr_ctor_obj, "of", 2, js_mkfun(builtin_Array_of)); 12656 12654 js_setprop(js, arr_ctor_obj, js->length_str, tov(1.0)); 12657 12655 js_set_descriptor(js, arr_ctor_obj, "length", 6, JS_DESC_C); 12658 12656 js_setprop(js, arr_ctor_obj, ANT_STRING("name"), ANT_STRING("Array")); ··· 12663 12661 set_proto(js, proxy_ctor_obj, function_proto); 12664 12662 set_slot(proxy_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_Proxy)); 12665 12663 js_mark_constructor(proxy_ctor_obj, true); 12666 - js_setprop(js, proxy_ctor_obj, js_mkstr(js, "revocable", 9), js_mkfun(builtin_Proxy_revocable)); 12664 + defmethod(js, proxy_ctor_obj, "revocable", 9, js_mkfun(builtin_Proxy_revocable)); 12667 12665 js_setprop(js, proxy_ctor_obj, ANT_STRING("name"), ANT_STRING("Proxy")); 12668 12666 js_setprop(js, glob, js_mkstr(js, "Proxy", 5), js_obj_to_func(proxy_ctor_obj)); 12669 12667 12670 12668 ant_value_t p_ctor_obj = mkobj(js, 0); 12671 12669 set_proto(js, p_ctor_obj, function_proto); 12672 12670 set_slot(p_ctor_obj, SLOT_CFUNC, js_mkfun(builtin_Promise)); 12673 - js_setprop(js, p_ctor_obj, js_mkstr(js, "resolve", 7), js_mkfun(builtin_Promise_resolve)); 12674 - js_setprop(js, p_ctor_obj, js_mkstr(js, "reject", 6), js_mkfun(builtin_Promise_reject)); 12675 - js_setprop(js, p_ctor_obj, js_mkstr(js, "try", 3), js_mkfun(builtin_Promise_try)); 12676 - js_setprop(js, p_ctor_obj, js_mkstr(js, "withResolvers", 13), js_mkfun(builtin_Promise_withResolvers)); 12677 - js_setprop(js, p_ctor_obj, js_mkstr(js, "all", 3), js_mkfun(builtin_Promise_all)); 12678 - js_setprop(js, p_ctor_obj, js_mkstr(js, "allSettled", 10), js_mkfun(builtin_Promise_allSettled)); 12679 - js_setprop(js, p_ctor_obj, js_mkstr(js, "race", 4), js_mkfun(builtin_Promise_race)); 12680 - js_setprop(js, p_ctor_obj, js_mkstr(js, "any", 3), js_mkfun(builtin_Promise_any)); 12671 + 12672 + defmethod(js, p_ctor_obj, "resolve", 7, js_mkfun(builtin_Promise_resolve)); 12673 + defmethod(js, p_ctor_obj, "reject", 6, js_mkfun(builtin_Promise_reject)); 12674 + defmethod(js, p_ctor_obj, "try", 3, js_mkfun(builtin_Promise_try)); 12675 + defmethod(js, p_ctor_obj, "withResolvers", 13, js_mkfun(builtin_Promise_withResolvers)); 12676 + defmethod(js, p_ctor_obj, "all", 3, js_mkfun(builtin_Promise_all)); 12677 + defmethod(js, p_ctor_obj, "allSettled", 10, js_mkfun(builtin_Promise_allSettled)); 12678 + defmethod(js, p_ctor_obj, "race", 4, js_mkfun(builtin_Promise_race)); 12679 + defmethod(js, p_ctor_obj, "any", 3, js_mkfun(builtin_Promise_any)); 12680 + 12681 12681 js_setprop_nonconfigurable(js, p_ctor_obj, "prototype", 9, promise_proto); 12682 12682 js_setprop(js, p_ctor_obj, ANT_STRING("name"), ANT_STRING("Promise")); 12683 12683 js_setprop(js, glob, js_mkstr(js, "Promise", 7), js_obj_to_func(p_ctor_obj)); 12684 12684 12685 - js_setprop(js, glob, js_mkstr(js, "parseInt", 8), js_mkfun(builtin_parseInt)); 12686 - js_setprop(js, glob, js_mkstr(js, "parseFloat", 10), js_mkfun(builtin_parseFloat)); 12687 - js_setprop(js, glob, js_mkstr(js, "eval", 4), js_mkfun(builtin_eval)); 12688 - js_setprop(js, glob, js_mkstr(js, "isNaN", 5), js_mkfun(builtin_global_isNaN)); 12689 - js_setprop(js, glob, js_mkstr(js, "isFinite", 8), js_mkfun(builtin_global_isFinite)); 12690 - js_setprop(js, glob, js_mkstr(js, "btoa", 4), js_mkfun(builtin_btoa)); 12691 - js_setprop(js, glob, js_mkstr(js, "atob", 4), js_mkfun(builtin_atob)); 12685 + defmethod(js, glob, "parseInt", 8, js_mkfun(builtin_parseInt)); 12686 + defmethod(js, glob, "parseFloat", 10, js_mkfun(builtin_parseFloat)); 12687 + defmethod(js, glob, "eval", 4, js_mkfun(builtin_eval)); 12688 + defmethod(js, glob, "isNaN", 5, js_mkfun(builtin_global_isNaN)); 12689 + defmethod(js, glob, "isFinite", 8, js_mkfun(builtin_global_isFinite)); 12690 + defmethod(js, glob, "btoa", 4, js_mkfun(builtin_btoa)); 12691 + defmethod(js, glob, "atob", 4, js_mkfun(builtin_atob)); 12692 + 12692 12693 js_setprop(js, glob, js_mkstr(js, "NaN", 3), tov(JS_NAN)); 12693 12694 js_set_descriptor(js, glob, "NaN", 3, 0); 12694 12695 js_setprop(js, glob, js_mkstr(js, "Infinity", 8), tov(JS_INF));
+1 -1
src/modules/bigint.c
··· 1476 1476 1477 1477 ant_value_t bigint_proto = js_mkobj(js); 1478 1478 js_set_proto_init(bigint_proto, object_proto); 1479 - js_setprop(js, bigint_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_bigint_toString)); 1479 + defmethod(js, bigint_proto, "toString", 8, js_mkfun(builtin_bigint_toString)); 1480 1480 1481 1481 ant_value_t bigint_ctor_obj = mkobj(js, 0); 1482 1482 js_set_proto_init(bigint_ctor_obj, function_proto);
+21 -22
src/modules/regex.c
··· 1703 1703 1704 1704 ant_offset_t flags_off = lkp(js, pattern, "flags", 5); 1705 1705 if (flags_off != 0) { 1706 - ant_value_t flags_val = js_propref_load(js, flags_off); 1707 - if (vtype(flags_val) == T_STR) { 1708 - ant_offset_t flen, foff = vstr(js, flags_val, &flen); 1709 - const char *flags_str = (char *)(uintptr_t)(foff); 1710 - for (ant_offset_t i = 0; i < flen; i++) { 1711 - if (flags_str[i] == 'g') global_flag = true; 1712 - if (flags_str[i] == 'i') ignore_case = true; 1713 - if (flags_str[i] == 'm') multiline = true; 1714 - } 1715 - } 1706 + ant_value_t flags_val = js_propref_load(js, flags_off); 1707 + if (vtype(flags_val) == T_STR) { 1708 + ant_offset_t flen, foff = vstr(js, flags_val, &flen); 1709 + const char *flags_str = (char *)(uintptr_t)(foff); 1710 + for (ant_offset_t i = 0; i < flen; i++) { 1711 + if (flags_str[i] == 'g') global_flag = true; 1712 + if (flags_str[i] == 'i') ignore_case = true; 1713 + if (flags_str[i] == 'm') multiline = true; 1714 + }} 1716 1715 } 1717 1716 } else if (vtype(pattern) == T_STR) { 1718 1717 ant_offset_t poff; 1719 1718 poff = vstr(js, pattern, &pattern_len); 1720 1719 pattern_ptr = (char *)(uintptr_t)(poff); 1721 - } else { 1722 - return js_mknull(); 1723 - } 1720 + } else return js_mknull(); 1724 1721 1725 1722 ant_offset_t str_len, str_off = vstr(js, str, &str_len); 1726 1723 const char *str_ptr = (char *)(uintptr_t)(str_off); ··· 1745 1742 1746 1743 ant_value_t regexp_proto = js_mkobj(js); 1747 1744 js_set_proto_init(regexp_proto, object_proto); 1748 - js_setprop(js, regexp_proto, js_mkstr(js, "test", 4), js_mkfun(builtin_regexp_test)); 1749 - js_setprop(js, regexp_proto, js_mkstr(js, "exec", 4), js_mkfun(builtin_regexp_exec)); 1750 - js_setprop(js, regexp_proto, js_mkstr(js, "toString", 8), js_mkfun(builtin_regexp_toString)); 1745 + 1746 + defmethod(js, regexp_proto, "test", 4, js_mkfun(builtin_regexp_test)); 1747 + defmethod(js, regexp_proto, "exec", 4, js_mkfun(builtin_regexp_exec)); 1748 + defmethod(js, regexp_proto, "toString", 8, js_mkfun(builtin_regexp_toString)); 1751 1749 1752 1750 js_mkprop_fast(js, regexp_proto, "global", 6, js_false); 1753 1751 js_mkprop_fast(js, regexp_proto, "ignoreCase", 10, js_false); ··· 1764 1762 js_set_sym(js, regexp_proto, get_search_sym(), js_mkfun(builtin_regexp_symbol_search)); 1765 1763 js_set_sym(js, regexp_proto, get_toStringTag_sym(), js_mkstr(js, "RegExp", 6)); 1766 1764 js_set_getter_desc(js, regexp_proto, "flags", 5, js_mkfun(builtin_regexp_flags_getter), JS_DESC_C); 1767 - js_setprop(js, regexp_proto, js_mkstr(js, "compile", 7), js_mkfun(builtin_regexp_compile)); 1765 + defmethod(js, regexp_proto, "compile", 7, js_mkfun(builtin_regexp_compile)); 1768 1766 1769 1767 ant_value_t regexp_ctor = js_mkobj(js); 1770 1768 js_set_slot(regexp_ctor, SLOT_CFUNC, js_mkfun(builtin_RegExp)); ··· 1784 1782 char key[3] = {'$', (char)('0' + i), '\0'}; 1785 1783 js_set(js, regexp_ctor, key, empty); 1786 1784 } 1785 + 1787 1786 js_set(js, regexp_ctor, "lastMatch", empty); 1788 1787 js_set(js, regexp_ctor, "$&", empty); 1789 - 1790 1788 js_set(js, glob, "RegExp", regexp_func); 1791 1789 1792 1790 ant_value_t string_ctor = js_get(js, glob, "String"); 1793 1791 ant_value_t string_proto = js_get(js, string_ctor, "prototype"); 1794 - js_setprop(js, string_proto, js_mkstr(js, "search", 6), js_mkfun(builtin_string_search)); 1795 - js_setprop(js, string_proto, js_mkstr(js, "match", 5), js_mkfun(builtin_string_match)); 1796 - js_setprop(js, string_proto, js_mkstr(js, "replace", 7), js_mkfun(builtin_string_replace)); 1797 - js_setprop(js, string_proto, js_mkstr(js, "replaceAll", 10), js_mkfun(builtin_string_replaceAll)); 1792 + 1793 + defmethod(js, string_proto, "search", 6, js_mkfun(builtin_string_search)); 1794 + defmethod(js, string_proto, "match", 5, js_mkfun(builtin_string_match)); 1795 + defmethod(js, string_proto, "replace", 7, js_mkfun(builtin_string_replace)); 1796 + defmethod(js, string_proto, "replaceAll", 10, js_mkfun(builtin_string_replaceAll)); 1798 1797 } 1799 1798 1800 1799 void gc_sweep_regex_cache(void) {