diff --git a/examples/embed/embed.c b/examples/embed/embed.c
index 6d17532..609a740 100644
--- a/examples/embed/embed.c
+++ b/examples/embed/embed.c
@@ -137,7 +137,7 @@ static void example_objects_arrays(void) {
jsval_t global = js_glob(js);
jsval_t config = js_mkobj(js);
- js_set(js, config, "debug", js_mktrue());
+ js_set(js, config, "debug", js_true);
js_set(js, config, "version", js_mknum(1.0));
js_set(js, config, "name", js_mkstr(js, "MyApp", 5));
js_set(js, global, "config", config);
@@ -153,7 +153,10 @@ static void example_objects_arrays(void) {
printf(" Result: %s\n", js_str(js, result));
jsval_t name_val = js_get(js, config, "name");
- printf(" config.name from C: %s\n", js_str(js, name_val));
+ printf(" config.name: %s\n", js_str(js, name_val));
+
+ jsval_t debug_val = js_get(js, config, "debug");
+ printf(" config.debug: %s\n", js_str(js, debug_val));
js_destroy(js);
}
@@ -421,7 +424,7 @@ static void example_global_this(void) {
jsval_t global = js_glob(js);
js_set(js, global, "myNumber", js_mknum(42));
js_set(js, global, "myString", js_mkstr(js, "hello from C", 12));
- js_set(js, global, "myBool", js_mktrue());
+ js_set(js, global, "myBool", js_true);
jsval_t myObj = js_mkobj(js);
js_set(js, myObj, "a", js_mknum(1));
diff --git a/include/ant.h b/include/ant.h
index 5c84373..96b8b8d 100644
--- a/include/ant.h
+++ b/include/ant.h
@@ -17,6 +17,8 @@
#define STR_PROTO "__proto__"
#define STR_PROTO_LEN 9
+#define ANT_LIMIT_SIZE_CACHE 16384
+
#define ANT_STRING(s) js_mkstr(js, s, sizeof(s) - 1)
#define ANT_PTR(ptr) js_mknum((double)(uintptr_t)(ptr))
#define ANT_COPY(buf, len, s) cpy(buf, len, s, sizeof(s) - 1)
@@ -27,7 +29,9 @@
#define JS_INF ((double)INFINITY)
#define JS_NEG_INF ((double)(-INFINITY))
-#define ANT_LIMIT_SIZE_CACHE 16384
+#define js_true (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT) | 1)
+#define js_false (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT))
+#define js_bool(x) (js_false | (jsval_t)!!(x))
#define JS_DESC_W (1 << 0)
#define JS_DESC_E (1 << 1)
@@ -63,8 +67,6 @@ void js_root_update(ant_t *, jshdl_t, jsval_t);
jsval_t js_mkundef(void);
jsval_t js_mknull(void);
-jsval_t js_mktrue(void);
-jsval_t js_mkfalse(void);
jsval_t js_mknum(double);
jsval_t js_getthis(ant_t *);
diff --git a/include/internal.h b/include/internal.h
index 51e1548..e6ad0f3 100644
--- a/include/internal.h
+++ b/include/internal.h
@@ -139,7 +139,4 @@ static inline bool is_undefined(jsval_t v) {
return vtype(v) == T_UNDEF;
}
-#define js_true (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT) | 1)
-#define js_false (NANBOX_PREFIX | ((jsval_t)T_BOOL << NANBOX_TYPE_SHIFT))
-
#endif
diff --git a/src/ant.c b/src/ant.c
index 912e8c3..fc409ef 100644
--- a/src/ant.c
+++ b/src/ant.c
@@ -2792,10 +2792,9 @@ static void set_func_code_ptr(struct js *js, jsval_t func_obj, const char *code,
static void set_func_code(struct js *js, jsval_t func_obj, const char *code, size_t len) {
const char *arena_code = code_arena_alloc(code, len);
if (!arena_code) return;
-
set_func_code_ptr(js, func_obj, arena_code, len);
- if (!code_has_function_decl(code, len)) set_slot(js, func_obj, SLOT_NO_FUNC_DECLS, js_mktrue());
+ if (!code_has_function_decl(code, len)) set_slot(js, func_obj, SLOT_NO_FUNC_DECLS, js_true);
if (!memmem(code, len, "var", 3)) return;
size_t vars_buf_len;
@@ -6372,7 +6371,7 @@ static jsval_t do_call_op(struct js *js, jsval_t func, jsval_t args) {
jsval_t closure_scope = get_slot(js, func_obj, SLOT_SCOPE);
jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC);
- bool is_async = vtype(async_slot) == T_BOOL && vdata(async_slot) == 1;
+ bool is_async = (async_slot == js_true);
jsval_t captured_this = js_mkundef();
bool is_arrow = false;
@@ -7858,7 +7857,7 @@ static jsval_t js_func_literal(struct js *js, bool is_async) {
js_set_descriptor(js, func_obj, "length", 6, JS_DESC_C);
if (is_async) {
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
} else {
@@ -7880,7 +7879,7 @@ static jsval_t js_func_literal(struct js *js, bool is_async) {
jsval_t closure_scope = for_let_capture_scope(js);
if (is_err(closure_scope)) return closure_scope;
set_slot(js, func_obj, SLOT_SCOPE, closure_scope);
- if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_mktrue());
+ if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_true);
}
jsval_t func = mkval(T_FUNC, (unsigned long) vdata(func_obj));
@@ -8009,8 +8008,8 @@ static jsval_t js_literal(struct js *js) {
if (is_err(func_obj)) { free(fn_str); return func_obj; }
set_func_code(js, func_obj, fn_str, fn_pos);
free(fn_str);
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
- set_slot(js, func_obj, SLOT_ARROW, tov(1));
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
+ set_slot(js, func_obj, SLOT_ARROW, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
if (!(flags & F_NOEXEC)) {
@@ -8079,10 +8078,11 @@ static jsval_t js_literal(struct js *js) {
return super_ctor;
}
+ case TOK_TRUE: return js_true;
+ case TOK_FALSE: return js_false;
+
case TOK_NULL: return js_mknull();
case TOK_UNDEF: return js_mkundef();
- case TOK_TRUE: return js_mktrue();
- case TOK_FALSE: return js_mkfalse();
case TOK_THIS: return js->this_val;
default:
@@ -8161,7 +8161,7 @@ static jsval_t js_arrow_func(struct js *js, jsoff_t params_start, jsoff_t params
free(fn_str);
if (is_async) {
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
} else {
@@ -8176,7 +8176,7 @@ static jsval_t js_arrow_func(struct js *js, jsoff_t params_start, jsoff_t params
set_slot(js, func_obj, SLOT_THIS, js->this_val);
}
- set_slot(js, func_obj, SLOT_ARROW, tov(1));
+ set_slot(js, func_obj, SLOT_ARROW, js_true);
return mkval(T_FUNC, (unsigned long) vdata(func_obj));
}
@@ -8473,11 +8473,11 @@ static void unlink_prop(struct js *js, jsoff_t obj_off, jsoff_t prop_off, jsoff_
static jsval_t check_frozen_sealed(struct js *js, jsval_t obj, const char *action) {
if (js_truthy(js, get_slot(js, obj, SLOT_FROZEN))) {
if (js->flags & F_STRICT) return js_mkerr(js, "cannot %s property of frozen object", action);
- return js_mkfalse();
+ return js_false;
}
if (js_truthy(js, get_slot(js, obj, SLOT_SEALED))) {
if (js->flags & F_STRICT) return js_mkerr(js, "cannot %s property of sealed object", action);
- return js_mkfalse();
+ return js_false;
}
return js_mkundef();
}
@@ -8633,9 +8633,9 @@ static jsval_t js_unary(struct js *js) {
js->flags = (saved_flags & ~F_THROW) | F_NOEXEC;
js_postfix(js);
js->flags = saved_flags;
- return js_mktrue();
+ return js_true;
}
- if (js->flags & F_NOEXEC) return js_mktrue();
+ if (js->flags & F_NOEXEC) return js_true;
if (vtype(operand) == T_PROPREF) {
jsoff_t obj_off = propref_obj(operand);
@@ -8647,48 +8647,48 @@ static jsval_t js_unary(struct js *js) {
if (is_proxy(js, obj)) {
jsval_t result = proxy_delete(js, obj, key_str, len);
- return is_err(result) ? result : (js_truthy(js, result) ? js_mktrue() : js_mkfalse());
+ return is_err(result) ? result : js_bool(js_truthy(js, result));
}
jsval_t err = check_frozen_sealed(js, obj, "delete");
if (vtype(err) != T_UNDEF) return err;
jsoff_t prop_off = lkp(js, obj, key_str, len);
- if (prop_off == 0) return js_mktrue();
+ if (prop_off == 0) return js_true;
if (is_nonconfig_prop(js, prop_off)) {
if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property");
- return js_mkfalse();
+ return js_false;
}
descriptor_entry_t *desc = lookup_descriptor(obj_off, key_str, len);
if (desc && !desc->configurable) {
if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property");
- return js_mkfalse();
+ return js_false;
}
jsoff_t first_prop = loadoff(js, obj_off) & ~(3U | FLAGMASK);
if (first_prop == prop_off) {
unlink_prop(js, obj_off, prop_off, 0);
- return js_mktrue();
+ return js_true;
}
for (jsoff_t prev = first_prop; prev != 0; ) {
jsoff_t next_prop = loadoff(js, prev) & ~(3U | FLAGMASK);
if (next_prop == prop_off) {
unlink_prop(js, obj_off, prop_off, prev);
- return js_mktrue();
+ return js_true;
}
prev = next_prop;
}
- return js_mktrue();
+ return js_true;
}
- if (vtype(operand) != T_PROP) return js_mktrue();
+ if (vtype(operand) != T_PROP) return js_true;
jsoff_t prop_off = (jsoff_t)vdata(operand);
if (is_nonconfig_prop(js, prop_off)) {
if (js->flags & F_STRICT) return js_mkerr(js, "cannot delete non-configurable property");
- return js_mkfalse();
+ return js_false;
}
jsoff_t owner_obj_off = 0, prev_prop_off = 0;
@@ -8721,11 +8721,11 @@ static jsval_t js_unary(struct js *js) {
descriptor_entry_t *desc = lookup_descriptor(owner_obj_off, key_str, key_len);
if (desc && !desc->configurable) {
if (js->flags & F_STRICT) return js_mkerr_typed(js, JS_ERR_TYPE, "cannot delete non-configurable property");
- return js_mkfalse();
+ return js_false;
}
unlink_prop(js, owner_obj_off, prop_off, is_first_prop ? 0 : prev_prop_off);
}
- return js_mktrue();
+ return js_true;
}
do_await: {
@@ -9617,7 +9617,7 @@ static jsval_t js_func_decl(struct js *js) {
if (is_err(closure_scope)) return closure_scope;
set_slot(js, func_obj, SLOT_SCOPE, closure_scope);
if (flags & F_STRICT) {
- set_slot(js, func_obj, SLOT_STRICT, js_mktrue());
+ set_slot(js, func_obj, SLOT_STRICT, js_true);
}
}
@@ -9665,7 +9665,7 @@ static jsval_t js_func_decl_async(struct js *js) {
jsval_t func_obj = mkobj(js, 0);
if (is_err(func_obj)) return func_obj;
set_func_code(js, func_obj, &js->code[pos], js->pos - pos);
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
jsval_t len_key = js_mkstr(js, "length", 6);
@@ -9684,7 +9684,7 @@ static jsval_t js_func_decl_async(struct js *js) {
jsval_t closure_scope = for_let_capture_scope(js);
if (is_err(closure_scope)) return closure_scope;
set_slot(js, func_obj, SLOT_SCOPE, closure_scope);
- if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_mktrue());
+ if (flags & F_STRICT) set_slot(js, func_obj, SLOT_STRICT, js_true);
}
jsval_t func = mkval(T_FUNC, (unsigned long) vdata(func_obj));
@@ -11497,7 +11497,7 @@ static jsval_t js_class_expr(struct js *js, bool is_expression) {
set_slot(js, method_obj, SLOT_SCOPE, func_scope);
if (m->is_async) {
- set_slot(js, method_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, method_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, method_obj, async_proto);
} else {
@@ -11531,7 +11531,7 @@ static jsval_t js_class_expr(struct js *js, bool is_expression) {
set_func_code(js, func_obj, &js->code[constructor_params_start], code_len);
} else {
set_func_code_ptr(js, func_obj, "(){}", 4);
- if (super_len > 0) set_slot(js, func_obj, SLOT_DEFAULT_CTOR, js_mktrue());
+ if (super_len > 0) set_slot(js, func_obj, SLOT_DEFAULT_CTOR, js_true);
}
int instance_field_count = 0;
@@ -12196,7 +12196,7 @@ static jsval_t builtin_AsyncFunction(struct js *js, jsval_t *args, int nargs) {
set_func_code_ptr(js, func_obj, "(){}", 4);
set_slot(js, func_obj, SLOT_SCOPE, js_glob(js));
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
@@ -12259,7 +12259,7 @@ static jsval_t builtin_AsyncFunction(struct js *js, jsval_t *args, int nargs) {
set_func_code(js, func_obj, code_buf, pos);
free(code_buf);
set_slot(js, func_obj, SLOT_SCOPE, js_glob(js));
- set_slot(js, func_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, func_obj, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, func_obj, async_proto);
@@ -12346,9 +12346,10 @@ static jsval_t builtin_function_toString(struct js *js, jsval_t *args, int nargs
if (code && code_len > 0) {
jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC);
+ jsval_t arrow_slot = get_slot(js, func_obj, SLOT_ARROW);
bool is_async = (async_slot == js_true);
- bool is_arrow = vtype(get_slot(js, func_obj, SLOT_ARROW)) != T_UNDEF;
+ bool is_arrow = (arrow_slot == js_true);
if (is_arrow) {
const char *brace = memchr(code, '{', code_len);
@@ -12522,7 +12523,7 @@ static jsval_t builtin_function_bind(struct js *js, jsval_t *args, int nargs) {
jsval_t async_slot = get_slot(js, func_obj, SLOT_ASYNC);
if (vtype(async_slot) == T_BOOL && vdata(async_slot) == 1) {
- set_slot(js, bound_func, SLOT_ASYNC, js_mktrue());
+ set_slot(js, bound_func, SLOT_ASYNC, js_true);
jsval_t async_proto = get_slot(js, js_glob(js), SLOT_ASYNC_PROTO);
if (vtype(async_proto) == T_FUNC) set_proto(js, bound_func, async_proto);
} else {
@@ -14242,7 +14243,7 @@ static jsval_t builtin_object_defineProperty(struct js *js, jsval_t *args, int n
return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str);
if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED)))
return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str);
- if (get_slot(js, as_obj, SLOT_EXTENSIBLE) == js_mkfalse())
+ if (get_slot(js, as_obj, SLOT_EXTENSIBLE) == js_false)
return js_mkerr(js, "Cannot define property %.*s, object is not extensible", (int)prop_len, prop_str);
}
@@ -14447,20 +14448,20 @@ static jsval_t builtin_object_freeze(struct js *js, jsval_t *args, int nargs) {
js_set_descriptor(js, as_obj, key, klen, JS_DESC_E);
}
- set_slot(js, as_obj, SLOT_FROZEN, js_mktrue());
+ set_slot(js, as_obj, SLOT_FROZEN, js_true);
return obj;
}
static jsval_t builtin_object_isFrozen(struct js *js, jsval_t *args, int nargs) {
- if (nargs == 0) return js_mktrue();
+ if (nargs == 0) return js_true;
jsval_t obj = args[0];
uint8_t t = vtype(obj);
- if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue();
+ if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true;
jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj));
- return js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN)) ? js_mktrue() : js_mkfalse();
+ return js_bool(js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN)));
}
static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) {
@@ -14472,7 +14473,7 @@ static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) {
if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj;
jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj));
- set_slot(js, as_obj, SLOT_SEALED, js_mktrue());
+ set_slot(js, as_obj, SLOT_SEALED, js_true);
jsoff_t next = loadoff(js, (jsoff_t) vdata(as_obj)) & ~(3U | FLAGMASK);
while (next < js->brk && next != 0) {
@@ -14504,18 +14505,18 @@ static jsval_t builtin_object_seal(struct js *js, jsval_t *args, int nargs) {
}
static jsval_t builtin_object_isSealed(struct js *js, jsval_t *args, int nargs) {
- if (nargs == 0) return js_mktrue();
+ if (nargs == 0) return js_true;
jsval_t obj = args[0];
uint8_t t = vtype(obj);
- if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue();
+ if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true;
jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj));
- if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mktrue();
- if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mktrue();
+ if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_true;
+ if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_true;
- return js_mkfalse();
+ return js_false;
}
static jsval_t builtin_object_fromEntries(struct js *js, jsval_t *args, int nargs) {
@@ -14601,16 +14602,16 @@ static jsval_t builtin_object_getOwnPropertyDescriptor(struct js *js, jsval_t *a
if (desc->has_setter) {
setprop(js, result, js_mkstr(js, "set", 3), desc->setter);
}
- setprop(js, result, js_mkstr(js, "enumerable", 10), desc->enumerable ? js_mktrue() : js_mkfalse());
- setprop(js, result, js_mkstr(js, "configurable", 12), desc->configurable ? js_mktrue() : js_mkfalse());
+ setprop(js, result, js_mkstr(js, "enumerable", 10), js_bool(desc->enumerable));
+ setprop(js, result, js_mkstr(js, "configurable", 12), js_bool(desc->configurable));
} else {
if (prop_off != 0) {
jsval_t prop_val = resolveprop(js, mkval(T_PROP, prop_off));
setprop(js, result, js_mkstr(js, "value", 5), prop_val);
}
- setprop(js, result, js_mkstr(js, "writable", 8), desc ? (desc->writable ? js_mktrue() : js_mkfalse()) : js_mktrue());
- setprop(js, result, js_mkstr(js, "enumerable", 10), desc ? (desc->enumerable ? js_mktrue() : js_mkfalse()) : js_mktrue());
- setprop(js, result, js_mkstr(js, "configurable", 12), desc ? (desc->configurable ? js_mktrue() : js_mkfalse()) : js_mktrue());
+ setprop(js, result, js_mkstr(js, "writable", 8), desc ? (js_bool(desc->writable)) : js_true);
+ setprop(js, result, js_mkstr(js, "enumerable", 10), desc ? (js_bool(desc->enumerable)) : js_true);
+ setprop(js, result, js_mkstr(js, "configurable", 12), desc ? (js_bool(desc->configurable)) : js_true);
}
return result;
@@ -14676,23 +14677,21 @@ static jsval_t builtin_object_getOwnPropertyNames(struct js *js, jsval_t *args,
}
static jsval_t builtin_object_isExtensible(struct js *js, jsval_t *args, int nargs) {
- if (nargs == 0) return js_mktrue();
+ if (nargs == 0) return js_true;
jsval_t obj = args[0];
uint8_t t = vtype(obj);
- if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_mktrue();
+ if (t != T_OBJ && t != T_ARR && t != T_FUNC) return js_true;
jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj));
- if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_mkfalse();
- if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_mkfalse();
+ if (js_truthy(js, get_slot(js, as_obj, SLOT_FROZEN))) return js_false;
+ if (js_truthy(js, get_slot(js, as_obj, SLOT_SEALED))) return js_false;
jsval_t ext_slot = get_slot(js, as_obj, SLOT_EXTENSIBLE);
- if (vtype(ext_slot) != T_UNDEF) {
- return js_truthy(js, ext_slot) ? js_mktrue() : js_mkfalse();
- }
+ if (vtype(ext_slot) != T_UNDEF) return js_bool(js_truthy(js, ext_slot));
- return js_mktrue();
+ return js_true;
}
static jsval_t builtin_object_preventExtensions(struct js *js, jsval_t *args, int nargs) {
@@ -14704,7 +14703,7 @@ static jsval_t builtin_object_preventExtensions(struct js *js, jsval_t *args, in
if (t != T_OBJ && t != T_ARR && t != T_FUNC) return obj;
jsval_t as_obj = (t == T_OBJ) ? obj : mkval(T_OBJ, vdata(obj));
- set_slot(js, as_obj, SLOT_EXTENSIBLE, js_mkfalse());
+ set_slot(js, as_obj, SLOT_EXTENSIBLE, js_false);
return obj;
}
@@ -19286,7 +19285,7 @@ static jsval_t mk_aggregate_error(struct js *js, jsval_t errors) {
static bool promise_any_try_resolve(struct js *js, jsval_t tracker, jsval_t value) {
if (js_truthy(js, js_get(js, tracker, "resolved"))) return false;
- js_set(js, tracker, "resolved", js_mktrue());
+ js_set(js, tracker, "resolved", js_true);
resolve_promise(js, get_slot(js, tracker, SLOT_DATA), value);
return true;
}
@@ -19340,7 +19339,7 @@ static jsval_t builtin_Promise_any(struct js *js, jsval_t *args, int nargs) {
setprop(js, tracker, js_mkstr(js, "remaining", 9), tov((double)len));
setprop(js, tracker, js_mkstr(js, "errors", 6), errors);
- setprop(js, tracker, js_mkstr(js, "resolved", 8), js_mkfalse());
+ setprop(js, tracker, js_mkstr(js, "resolved", 8), js_false);
setprop(js, errors, js_mkstr(js, "length", 6), tov((double)len));
for (int i = 0; i < len; i++) {
@@ -19470,7 +19469,7 @@ static jsval_t do_in(struct js *js, jsval_t l, jsval_t r) {
if (is_proxy(js, r)) {
jsval_t result = proxy_has(js, r, prop_name, prop_len);
if (is_err(result)) return result;
- return js_truthy(js, result) ? js_mktrue() : js_mkfalse();
+ return js_bool(js_truthy(js, result));
}
jsoff_t found = lkp_proto(js, r, prop_name, prop_len);
@@ -20036,7 +20035,7 @@ void js_setup_import_meta(struct js *js, const char *filename) {
}
}
- setprop(js, import_meta, js_mkstr(js, "main", 4), js_mktrue());
+ setprop(js, import_meta, js_mkstr(js, "main", 4), js_true);
jsval_t resolve_fn = js_mkfun(builtin_import_meta_resolve);
setprop(js, import_meta, js_mkstr(js, "resolve", 7), resolve_fn);
@@ -20689,7 +20688,7 @@ static jsval_t map_iter_next(struct js *js, jsval_t *args, int nargs) {
jsval_t result = js_mkobj(js);
if (idx >= len) {
- js_set(js, result, "done", js_mktrue());
+ js_set(js, result, "done", js_true);
js_set(js, result, "value", js_mkundef());
} else {
char idxstr[16];
@@ -20700,7 +20699,7 @@ static jsval_t map_iter_next(struct js *js, jsval_t *args, int nargs) {
js_arr_push(js, entry, k);
js_arr_push(js, entry, v);
js_set(js, result, "value", entry);
- js_set(js, result, "done", js_mkfalse());
+ js_set(js, result, "done", js_false);
js_set(js, this_val, "__idx", js_mknum(idx + 1));
}
return result;
@@ -20745,14 +20744,14 @@ static jsval_t set_iter_next(struct js *js, jsval_t *args, int nargs) {
jsval_t result = js_mkobj(js);
if (idx >= len) {
- js_set(js, result, "done", js_mktrue());
+ js_set(js, result, "done", js_true);
js_set(js, result, "value", js_mkundef());
} else {
char idxstr[16];
uint_to_str(idxstr, sizeof(idxstr), (unsigned)idx);
jsval_t v = js_get(js, vals, idxstr);
js_set(js, result, "value", v);
- js_set(js, result, "done", js_mkfalse());
+ js_set(js, result, "done", js_false);
js_set(js, this_val, "__idx", js_mknum(idx + 1));
}
return result;
@@ -21029,7 +21028,7 @@ static jsval_t finreg_register(struct js *js, jsval_t *args, int nargs) {
static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) {
jsval_t this_val = js->this_val;
- if (vtype(this_val) != T_OBJ) return js_mkfalse();
+ if (vtype(this_val) != T_OBJ) return js_false;
if (nargs < 1 || vtype(args[0]) != T_OBJ) {
return js_mkerr(js, "FinalizationRegistry.unregister token must be an object");
@@ -21037,7 +21036,7 @@ static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) {
jsval_t token = args[0];
jsval_t registrations = get_slot(js, this_val, SLOT_MAP);
- if (vtype(registrations) != T_ARR) return js_mkfalse();
+ if (vtype(registrations) != T_ARR) return js_false;
jsoff_t len = js_arr_len(js, registrations);
bool removed = false;
@@ -21053,7 +21052,7 @@ static jsval_t finreg_unregister(struct js *js, jsval_t *args, int nargs) {
}
}
- return removed ? js_mktrue() : js_mkfalse();
+ return js_bool(removed);
}
static proxy_data_t *get_proxy_data(jsval_t obj) {
@@ -21124,18 +21123,18 @@ static jsval_t proxy_set(struct js *js, jsval_t proxy, const char *key, size_t k
jsval_t args[4] = { target, key_val, value, proxy };
jsval_t result = js_call(js, set_trap, args, 4);
if (is_err(result)) return result;
- return js_mktrue();
+ return js_true;
}
}
jsval_t key_str = js_mkstr(js, key, key_len);
setprop(js, target, key_str, value);
- return js_mktrue();
+ return js_true;
}
static jsval_t proxy_has(struct js *js, jsval_t proxy, const char *key, size_t key_len) {
proxy_data_t *data = get_proxy_data(proxy);
- if (!data) return js_mkfalse();
+ if (!data) return js_false;
if (data->revoked) return throw_proxy_error(js, "Cannot perform 'has' on a proxy that has been revoked");
jsval_t target = data->target;
@@ -21157,12 +21156,12 @@ static jsval_t proxy_has(struct js *js, jsval_t proxy, const char *key, size_t k
key_buf[len] = '\0';
jsoff_t off = lkp_proto(js, target, key_buf, len);
- return off != 0 ? js_mktrue() : js_mkfalse();
+ return js_bool(off != 0);
}
static jsval_t proxy_delete(struct js *js, jsval_t proxy, const char *key, size_t key_len) {
proxy_data_t *data = get_proxy_data(proxy);
- if (!data) return js_mktrue();
+ if (!data) return js_true;
if (data->revoked) return throw_proxy_error(js, "Cannot perform 'deleteProperty' on a proxy that has been revoked");
jsval_t target = data->target;
@@ -21180,7 +21179,7 @@ static jsval_t proxy_delete(struct js *js, jsval_t proxy, const char *key, size_
jsval_t key_str = js_mkstr(js, key, key_len);
setprop(js, target, key_str, js_mkundef());
- return js_mktrue();
+ return js_true;
}
static jsval_t mkproxy(struct js *js, jsval_t target, jsval_t handler) {
@@ -21762,7 +21761,7 @@ ant_t *js_create(void *buf, size_t len) {
jsval_t async_func_proto_obj = js_mkobj(js);
set_proto(js, async_func_proto_obj, function_proto);
- set_slot(js, async_func_proto_obj, SLOT_ASYNC, js_mktrue());
+ set_slot(js, async_func_proto_obj, SLOT_ASYNC, js_true);
jsval_t async_func_proto = mkval(T_FUNC, vdata(async_func_proto_obj));
set_slot(js, glob, SLOT_ASYNC_PROTO, async_func_proto);
@@ -22079,8 +22078,6 @@ inline void js_setstacklimit(struct js *js, size_t max) { js->stack_limit = max;
inline void js_setstackbase(struct js *js, void *base) { js->cstk = base; }
inline void js_set_filename(struct js *js, const char *filename) { js->filename = filename; }
-inline jsval_t js_mktrue(void) { return mkval(T_BOOL, 1); }
-inline jsval_t js_mkfalse(void) { return mkval(T_BOOL, 0); }
inline jsval_t js_mkundef(void) { return mkval(T_UNDEF, 0); }
inline jsval_t js_mknull(void) { return mkval(T_NULL, 0); }
inline jsval_t js_mknum(double value) { return tov(value); }
diff --git a/src/core/ant.ts b/src/core/ant.ts
index c35871c..6967de3 100644
--- a/src/core/ant.ts
+++ b/src/core/ant.ts
@@ -32,3 +32,5 @@ Ant.typeof = function (t) {
const names = Object.values(types);
return value < names.length ? names[value] : '??';
};
+
+Ant.inspect = (...args) => console.inspect(...args);
diff --git a/src/modules/atomics.c b/src/modules/atomics.c
index 5940c74..a8562f2 100644
--- a/src/modules/atomics.c
+++ b/src/modules/atomics.c
@@ -360,7 +360,7 @@ static jsval_t js_atomics_isLockFree(struct js *js, jsval_t *args, int nargs) {
is_lock_free = false;
}
- return is_lock_free ? js_mktrue() : js_mkfalse();
+ return js_bool(is_lock_free);
}
// Atomics.load(typedArray, index)
@@ -785,13 +785,13 @@ static jsval_t js_atomics_waitAsync(struct js *js, jsval_t *args, int nargs) {
jsval_t result_obj = js_mkobj(js);
if (current_value != expected_value) {
- js_set(js, result_obj, "async", js_mkfalse());
+ js_set(js, result_obj, "async", js_false);
js_set(js, result_obj, "value", js_mkstr(js, "not-equal", 9));
return result_obj;
}
jsval_t promise = js_mkpromise(js);
- js_set(js, result_obj, "async", js_mktrue());
+ js_set(js, result_obj, "async", js_true);
js_set(js, result_obj, "value", promise);
js_resolve_promise(js, promise, js_mkstr(js, "ok", 2));
diff --git a/src/modules/buffer.c b/src/modules/buffer.c
index 0b2e2d1..e41979a 100644
--- a/src/modules/buffer.c
+++ b/src/modules/buffer.c
@@ -340,15 +340,12 @@ static jsval_t js_arraybuffer_transferToFixedLength(struct js *js, jsval_t *args
static jsval_t js_arraybuffer_detached_getter(struct js *js, jsval_t *args, int nargs) {
jsval_t this_val = js_getthis(js);
jsval_t data_val = js_get_slot(js, this_val, SLOT_BUFFER);
-
- if (vtype(data_val) != T_NUM) {
- return js_mkfalse();
- }
+ if (vtype(data_val) != T_NUM) return js_false;
ArrayBufferData *data = (ArrayBufferData *)(uintptr_t)js_getnum(data_val);
- if (!data) return js_mktrue();
+ if (!data) return js_true;
- return data->is_detached ? js_mktrue() : js_mkfalse();
+ return js_bool(data->is_detached);
}
static jsval_t typedarray_index_getter(struct js *js, jsval_t obj, const char *key, size_t key_len) {
@@ -1503,18 +1500,18 @@ static jsval_t js_buffer_write(struct js *js, jsval_t *args, int nargs) {
// Buffer.isBuffer(obj)
static jsval_t js_buffer_isBuffer(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
- if (!is_special_object(args[0])) return js_mkfalse();
+ if (nargs < 1) return js_false;
+ if (!is_special_object(args[0])) return js_false;
jsval_t proto = js_get_proto(js, args[0]);
jsval_t buffer_proto = js_get_ctor_proto(js, "Buffer", 6);
- return (proto == buffer_proto) ? js_mktrue() : js_mkfalse();
+ return js_bool(proto == buffer_proto);
}
// Buffer.isEncoding(encoding)
static jsval_t js_buffer_isEncoding(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 1 || vtype(args[0]) != T_STR) return js_mkfalse();
+ if (nargs < 1 || vtype(args[0]) != T_STR) return js_false;
size_t len;
char *enc = js_getstr(js, args[0], &len);
@@ -1530,10 +1527,10 @@ static jsval_t js_buffer_isEncoding(struct js *js, jsval_t *args, int nargs) {
(len == 5 && strncasecmp(enc, "ucs-2", 5) == 0) ||
(len == 7 && strncasecmp(enc, "utf16le", 7) == 0) ||
(len == 8 && strncasecmp(enc, "utf-16le", 8) == 0)) {
- return js_mktrue();
+ return js_true;
}
- return js_mkfalse();
+ return js_false;
}
// Buffer.byteLength(string, encoding)
diff --git a/src/modules/child_process.c b/src/modules/child_process.c
index 3059c0e..b86e966 100644
--- a/src/modules/child_process.c
+++ b/src/modules/child_process.c
@@ -209,7 +209,7 @@ static void on_process_exit(uv_process_t *proc, int64_t exit_status, int term_si
js_set(cp->js, cp->child_obj, "exitCode", js_mknum((double)exit_status));
if (term_signal) {
js_set(cp->js, cp->child_obj, "signalCode", js_mknum((double)term_signal));
- js_set(cp->js, cp->child_obj, "killed", js_mktrue());
+ js_set(cp->js, cp->child_obj, "killed", js_true);
}
jsval_t exit_args[2] = { js_mknum((double)exit_status), term_signal ? js_mknum((double)term_signal) : js_mknull() };
@@ -377,10 +377,10 @@ static jsval_t child_kill(struct js *js, jsval_t *args, int nargs) {
jsval_t this_obj = js_getthis(js);
jsval_t cp_ptr = js_get_slot(js, this_obj, SLOT_DATA);
- if (vtype(cp_ptr) == T_UNDEF) return js_mkfalse();
+ if (vtype(cp_ptr) == T_UNDEF) return js_false;
child_process_t *cp = (child_process_t *)(uintptr_t)js_getnum(cp_ptr);
- if (cp->exited) return js_mkfalse();
+ if (cp->exited) return js_false;
int sig = SIGTERM;
if (nargs > 0) {
@@ -398,7 +398,7 @@ static jsval_t child_kill(struct js *js, jsval_t *args, int nargs) {
}
int result = uv_process_kill(&cp->process, sig);
- return result == 0 ? js_mktrue() : js_mkfalse();
+ return js_bool(result == 0);
}
static jsval_t child_write(struct js *js, jsval_t *args, int nargs) {
@@ -409,7 +409,7 @@ static jsval_t child_write(struct js *js, jsval_t *args, int nargs) {
if (vtype(cp_ptr) == T_UNDEF) return js_mkerr(js, "Invalid child process object");
child_process_t *cp = (child_process_t *)(uintptr_t)js_getnum(cp_ptr);
- if (cp->stdin_closed) return js_mkfalse();
+ if (cp->stdin_closed) return js_false;
size_t data_len;
char *data = js_getstr(js, args[0], &data_len);
@@ -426,10 +426,10 @@ static jsval_t child_write(struct js *js, jsval_t *args, int nargs) {
if (result < 0) {
free(buf_data);
free(write_req);
- return js_mkfalse();
+ return js_false;
}
- return js_mktrue();
+ return js_true;
}
static jsval_t child_end(struct js *js, jsval_t *args, int nargs) {
@@ -455,8 +455,8 @@ static jsval_t create_child_object(struct js *js, child_process_t *cp) {
js_set(js, obj, "pid", js_mknum((double)cp->process.pid));
js_set(js, obj, "exitCode", js_mknull());
js_set(js, obj, "signalCode", js_mknull());
- js_set(js, obj, "killed", js_mkfalse());
- js_set(js, obj, "connected", js_mktrue());
+ js_set(js, obj, "killed", js_false);
+ js_set(js, obj, "connected", js_true);
js_set(js, obj, "on", js_mkfun(child_on));
js_set(js, obj, "once", js_mkfun(child_once));
diff --git a/src/modules/events.c b/src/modules/events.c
index 9dbf8a9..30e8c96 100644
--- a/src/modules/events.c
+++ b/src/modules/events.c
@@ -228,7 +228,7 @@ static jsval_t js_dispatch_event_method(struct js *js, jsval_t *args, int nargs)
if (event_type == NULL) return js_mkerr(js, "eventType must be a string");
EventType *evt = find_emitter_event_type(js, this_obj, event_type);
- if (evt == NULL || evt->listener_count == 0) return js_mktrue();
+ if (evt == NULL || evt->listener_count == 0) return js_true;
jsval_t event_obj = js_mkobj(js);
js_set(js, event_obj, "type", args[0]);
@@ -254,7 +254,7 @@ static jsval_t js_dispatch_event_method(struct js *js, jsval_t *args, int nargs)
} else i++;
}
- return js_mktrue();
+ return js_true;
}
// dispatchEvent(eventType, eventData)
@@ -268,7 +268,7 @@ static jsval_t js_dispatch_event(struct js *js, jsval_t *args, int nargs) {
EventType *evt = find_global_event_type(event_type);
if (evt == NULL || evt->listener_count == 0) {
- return js_mktrue();
+ return js_true;
}
jsval_t event_obj = js_mkobj(js);
@@ -294,7 +294,7 @@ static jsval_t js_dispatch_event(struct js *js, jsval_t *args, int nargs) {
} else i++;
}
- return js_mktrue();
+ return js_true;
}
static jsval_t js_get_event_listeners(struct js *js, jsval_t *args, int nargs) {
@@ -312,7 +312,7 @@ static jsval_t js_get_event_listeners(struct js *js, jsval_t *args, int nargs) {
jsval_t listener_info = js_mkobj(js);
js_set(js, listener_info, "listener", evt->listeners[j].listener);
- js_set(js, listener_info, "once", evt->listeners[j].once ? js_mktrue() : js_mkfalse());
+ js_set(js, listener_info, "once", js_bool(evt->listeners[j].once));
js_set(js, listeners_array, key, listener_info);
}
@@ -432,7 +432,7 @@ static jsval_t js_eventemitter_emit(struct js *js, jsval_t *args, int nargs) {
EventType *evt = find_emitter_event_type(js, this_obj, event_type);
if (evt == NULL || evt->listener_count == 0) {
- return js_mkfalse();
+ return js_false;
}
int listener_nargs = nargs - 1;
@@ -452,7 +452,7 @@ static jsval_t js_eventemitter_emit(struct js *js, jsval_t *args, int nargs) {
} else i++;
}
- return js_mktrue();
+ return js_true;
}
// EventEmitter.prototype.removeAllListeners(event)
diff --git a/src/modules/fetch.c b/src/modules/fetch.c
index d348800..614b363 100644
--- a/src/modules/fetch.c
+++ b/src/modules/fetch.c
@@ -101,7 +101,7 @@ static jsval_t create_response(struct js *js, int status, const char *body, size
jsval_t response_obj = js_mkobj(js);
jsval_t body_str = js_mkstr(js, body, body_len);
- js_set(js, response_obj, "ok", status >= 200 && status < 300 ? js_mktrue() : js_mkfalse());
+ js_set(js, response_obj, "ok", js_bool(status >= 200 && status < 300));
js_set(js, response_obj, "status", js_mknum(status));
js_set_slot(js, response_obj, SLOT_DATA, body_str);
diff --git a/src/modules/ffi.c b/src/modules/ffi.c
index 765015b..c35bc71 100644
--- a/src/modules/ffi.c
+++ b/src/modules/ffi.c
@@ -571,7 +571,7 @@ static jsval_t ffi_get_pointer(struct js *js, jsval_t *args, int nargs) {
bool exists = ffi_ptr != NULL;
pthread_mutex_unlock(&ffi_pointers_mutex);
- return exists ? js_mktrue() : js_mkfalse();
+ return js_bool(exists);
}
static jsval_t ffi_read_ptr(struct js *js, jsval_t *args, int nargs) {
diff --git a/src/modules/fs.c b/src/modules/fs.c
index 6a1a37e..344f76b 100644
--- a/src/modules/fs.c
+++ b/src/modules/fs.c
@@ -292,7 +292,7 @@ static void on_stat_complete(uv_fs_t *uv_req) {
static void on_exists_complete(uv_fs_t *uv_req) {
fs_request_t *req = (fs_request_t *)uv_req->data;
- jsval_t result = (uv_req->result >= 0) ? js_mktrue() : js_mkfalse();
+ jsval_t result = js_bool(uv_req->result >= 0);
req->completed = 1;
js_resolve_promise(req->js, req->promise, result);
@@ -938,30 +938,30 @@ static jsval_t stat_isFile(struct js *js, jsval_t *args, int nargs) {
jsval_t this = js_getthis(js);
jsval_t mode_val = js_get_slot(js, this, SLOT_DATA);
- if (vtype(mode_val) != T_NUM) return js_mkfalse();
+ if (vtype(mode_val) != T_NUM) return js_false;
mode_t mode = (mode_t)js_getnum(mode_val);
- return S_ISREG(mode) ? js_mktrue() : js_mkfalse();
+ return js_bool(S_ISREG(mode));
}
static jsval_t stat_isDirectory(struct js *js, jsval_t *args, int nargs) {
jsval_t this = js_getthis(js);
jsval_t mode_val = js_get_slot(js, this, SLOT_DATA);
- if (vtype(mode_val) != T_NUM) return js_mkfalse();
+ if (vtype(mode_val) != T_NUM) return js_false;
mode_t mode = (mode_t)js_getnum(mode_val);
- return S_ISDIR(mode) ? js_mktrue() : js_mkfalse();
+ return js_bool(S_ISDIR(mode));
}
static jsval_t stat_isSymbolicLink(struct js *js, jsval_t *args, int nargs) {
jsval_t this = js_getthis(js);
jsval_t mode_val = js_get_slot(js, this, SLOT_DATA);
- if (vtype(mode_val) != T_NUM) return js_mkfalse();
+ if (vtype(mode_val) != T_NUM) return js_false;
mode_t mode = (mode_t)js_getnum(mode_val);
- return S_ISLNK(mode) ? js_mktrue() : js_mkfalse();
+ return js_bool(S_ISLNK(mode));
}
static jsval_t create_stats_object(struct js *js, struct stat *st) {
@@ -1073,7 +1073,7 @@ static jsval_t builtin_fs_existsSync(struct js *js, jsval_t *args, int nargs) {
int result = stat(path_cstr, &st);
free(path_cstr);
- return (result == 0) ? js_mktrue() : js_mkfalse();
+ return js_bool(result == 0);
}
static jsval_t builtin_fs_exists(struct js *js, jsval_t *args, int nargs) {
@@ -1101,7 +1101,7 @@ static jsval_t builtin_fs_exists(struct js *js, jsval_t *args, int nargs) {
if (result < 0) {
req->completed = 1;
- js_resolve_promise(req->js, req->promise, js_mkfalse());
+ js_resolve_promise(req->js, req->promise, js_false);
remove_pending_request(req);
free_fs_request(req);
}
diff --git a/src/modules/json.c b/src/modules/json.c
index d575c30..5e404f3 100644
--- a/src/modules/json.c
+++ b/src/modules/json.c
@@ -24,7 +24,7 @@ static jsval_t yyjson_to_jsval(struct js *js, yyjson_val *val) {
switch (yyjson_get_type(val)) {
case YYJSON_TYPE_NULL: return js_mknull();
- case YYJSON_TYPE_BOOL: return yyjson_get_bool(val) ? js_mktrue() : js_mkfalse();
+ case YYJSON_TYPE_BOOL: return js_bool(yyjson_get_bool(val));
case YYJSON_TYPE_STR: return js_mkstr(js, yyjson_get_str(val), yyjson_get_len(val));
case YYJSON_TYPE_NUM: {
diff --git a/src/modules/observable.c b/src/modules/observable.c
index 46187ba..d6baeec 100644
--- a/src/modules/observable.c
+++ b/src/modules/observable.c
@@ -45,7 +45,7 @@ static jsval_t js_subscription_get_closed(struct js *js, jsval_t *args, int narg
if (!is_special_object(subscription)) {
return js_mkerr_typed(js, JS_ERR_TYPE, "Subscription.closed getter called on non-object");
}
- return subscription_closed(js, subscription) ? js_mktrue() : js_mkfalse();
+ return js_bool(subscription_closed(js, subscription));
}
static jsval_t js_subscription_unsubscribe(struct js *js, jsval_t *args, int nargs) {
@@ -83,7 +83,7 @@ static jsval_t js_subobs_get_closed(struct js *js, jsval_t *args, int nargs) {
return js_mkerr_typed(js, JS_ERR_TYPE, "Invalid SubscriptionObserver");
}
- return subscription_closed(js, subscription) ? js_mktrue() : js_mkfalse();
+ return js_bool(subscription_closed(js, subscription));
}
static jsval_t js_subobs_next(struct js *js, jsval_t *args, int nargs) {
diff --git a/src/modules/os.c b/src/modules/os.c
index fd10fd3..09d3edd 100644
--- a/src/modules/os.c
+++ b/src/modules/os.c
@@ -541,7 +541,7 @@ static jsval_t os_networkInterfaces(struct js *js, jsval_t *args, int nargs) {
for (pUnicast = pCurrAddresses->FirstUnicastAddress; pUnicast; pUnicast = pUnicast->Next) {
jsval_t entry = js_mkobj(js);
js_set(js, entry, "mac", js_mkstr(js, mac_str, strlen(mac_str)));
- js_set(js, entry, "internal", internal ? js_mktrue() : js_mkfalse());
+ js_set(js, entry, "internal", js_bool(internal));
char addr_str[INET6_ADDRSTRLEN] = "";
struct sockaddr *sa = pUnicast->Address.lpSockaddr;
@@ -641,7 +641,7 @@ static void add_iface_entry(struct js *js, jsval_t iface_arr, struct ifaddrs *if
jsval_t entry = js_mkobj(js);
js_set(js, entry, "mac", js_mkstr(js, "00:00:00:00:00:00", 17));
- js_set(js, entry, "internal", internal ? js_mktrue() : js_mkfalse());
+ js_set(js, entry, "internal", js_bool(internal));
if (family == AF_INET) {
struct sockaddr_in *sa = (struct sockaddr_in *)ifa->ifa_addr;
diff --git a/src/modules/path.c b/src/modules/path.c
index 23503ba..4972bf1 100644
--- a/src/modules/path.c
+++ b/src/modules/path.c
@@ -343,14 +343,14 @@ static jsval_t builtin_path_isAbsolute(struct js *js, jsval_t *args, int nargs)
size_t path_len;
char *path = js_getstr(js, args[0], &path_len);
- if (!path || path_len == 0) return js_mkfalse();
+ if (!path || path_len == 0) return js_false;
#ifdef _WIN32
- if (path_len >= 2 && path[1] == ':') return js_mktrue();
- if (path_len >= 2 && path[0] == '\\' && path[1] == '\\') return js_mktrue();
- return js_mkfalse();
+ if (path_len >= 2 && path[1] == ':') return js_true;
+ if (path_len >= 2 && path[0] == '\\' && path[1] == '\\') return js_true;
+ return js_false;
#else
- return path[0] == '/' ? js_mktrue() : js_mkfalse();
+ return js_bool(path[0] == '/');
#endif
}
diff --git a/src/modules/process.c b/src/modules/process.c
index d3265d0..eb39039 100644
--- a/src/modules/process.c
+++ b/src/modules/process.c
@@ -425,9 +425,9 @@ static void emit_keypress_event(
js_set(js, key_obj, "name", js_mkundef());
}
- js_set(js, key_obj, "ctrl", ctrl ? js_mktrue() : js_mkfalse());
- js_set(js, key_obj, "meta", meta ? js_mktrue() : js_mkfalse());
- js_set(js, key_obj, "shift", shift ? js_mktrue() : js_mkfalse());
+ js_set(js, key_obj, "ctrl", js_bool(ctrl));
+ js_set(js, key_obj, "meta", js_bool(meta));
+ js_set(js, key_obj, "shift", js_bool(shift));
if (sequence) {
js_set(js, key_obj, "sequence", js_mkstr(js, sequence, sequence_len));
@@ -665,7 +665,7 @@ static void start_sigwinch_handler(void) {
static jsval_t js_stdin_set_raw_mode(ant_t *js, jsval_t *args, int nargs) {
bool enable = nargs > 0 ? js_truthy(js, args[0]) : true;
- return stdin_set_raw_mode(enable) ? js_mktrue() : js_mkfalse();
+ return js_bool(stdin_set_raw_mode(enable));
}
static jsval_t js_stdin_resume(ant_t *js, jsval_t *args, int nargs) {
@@ -736,13 +736,13 @@ static jsval_t js_stdin_remove_listener(ant_t *js, jsval_t *args, int nargs) {
}
static jsval_t js_stdout_write(ant_t *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
size_t len = 0;
char *data = js_getstr(js, args[0], &len);
- if (!data) return js_mkfalse();
+ if (!data) return js_false;
fwrite(data, 1, len, stdout);
fflush(stdout);
- return js_mktrue();
+ return js_true;
}
static jsval_t js_stdout_on(ant_t *js, jsval_t *args, int nargs) {
@@ -854,13 +854,13 @@ static ProcessEventType *find_or_create_stderr_event(const char *event_type) {
}
static jsval_t js_stderr_write(ant_t *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
size_t len = 0;
char *data = js_getstr(js, args[0], &len);
- if (!data) return js_mkfalse();
+ if (!data) return js_false;
fwrite(data, 1, len, stderr);
fflush(stderr);
- return js_mktrue();
+ return js_true;
}
static jsval_t js_stderr_on(ant_t *js, jsval_t *args, int nargs) {
@@ -1055,7 +1055,7 @@ static jsval_t process_kill(ant_t *js, jsval_t *args, int nargs) {
int result = uv_kill(pid, sig);
if (result != 0) return js_mkerr(js, "Failed to send signal");
- return js_mktrue();
+ return js_true;
}
static jsval_t process_abort(ant_t *js, jsval_t *args, int nargs) {
@@ -1478,13 +1478,13 @@ static jsval_t process_remove_all_listeners(ant_t *js, jsval_t *args, int nargs)
}
static jsval_t process_emit(ant_t *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
char *event = js_getstr(js, args[0], NULL);
- if (!event) return js_mkfalse();
+ if (!event) return js_false;
emit_process_event(event, nargs > 1 ? &args[1] : NULL, nargs - 1);
- return js_mktrue();
+ return js_true;
}
static jsval_t process_listener_count(ant_t *js, jsval_t *args, int nargs) {
@@ -1639,7 +1639,7 @@ void init_process_module() {
jsval_t stdin_obj = js_mkobj(js);
js_set_proto(js, stdin_obj, stdin_proto);
- js_set(js, stdin_obj, "isTTY", stdin_is_tty() ? js_mktrue() : js_mkfalse());
+ js_set(js, stdin_obj, "isTTY", js_bool(stdin_is_tty()));
js_set(js, process_obj, "stdin", stdin_obj);
jsval_t stdout_proto = js_mkobj(js);
@@ -1654,7 +1654,7 @@ void init_process_module() {
jsval_t stdout_obj = js_mkobj(js);
js_set_proto(js, stdout_obj, stdout_proto);
- js_set(js, stdout_obj, "isTTY", stdout_is_tty() ? js_mktrue() : js_mkfalse());
+ js_set(js, stdout_obj, "isTTY", js_bool(stdout_is_tty()));
js_set_getter_desc(js, stdout_obj, "rows", 4, js_mkfun(js_stdout_rows_getter), JS_DESC_E | JS_DESC_C);
js_set_getter_desc(js, stdout_obj, "columns", 7, js_mkfun(js_stdout_columns_getter), JS_DESC_E | JS_DESC_C);
js_set(js, process_obj, "stdout", stdout_obj);
@@ -1670,7 +1670,7 @@ void init_process_module() {
jsval_t stderr_obj = js_mkobj(js);
js_set_proto(js, stderr_obj, stderr_proto);
- js_set(js, stderr_obj, "isTTY", stderr_is_tty() ? js_mktrue() : js_mkfalse());
+ js_set(js, stderr_obj, "isTTY", js_bool(stderr_is_tty()));
js_set(js, process_obj, "stderr", stderr_obj);
js_set(js, global, "process", process_obj);
diff --git a/src/modules/readline.c b/src/modules/readline.c
index 391b934..28d0e40 100644
--- a/src/modules/readline.c
+++ b/src/modules/readline.c
@@ -699,13 +699,13 @@ static jsval_t rl_interface_emit(struct js *js, jsval_t *args, int nargs) {
rl_interface_t *iface = get_interface(js, this_obj);
if (!iface) return js_mkerr(js, "Invalid Interface");
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
char *event = js_getstr(js, args[0], NULL);
- if (!event) return js_mkfalse();
+ if (!event) return js_false;
emit_event(js, iface, event, nargs > 1 ? &args[1] : NULL, nargs - 1);
- return js_mktrue();
+ return js_true;
}
static jsval_t rl_interface_close(struct js *js, jsval_t *args, int nargs) {
@@ -1028,8 +1028,8 @@ static jsval_t rl_interface_closed_getter(struct js *js, jsval_t *args, int narg
jsval_t this_obj = js_getthis(js);
rl_interface_t *iface = get_interface(js, this_obj);
- if (!iface) return js_mktrue();
- return iface->closed ? js_mktrue() : js_mkfalse();
+ if (!iface) return js_true;
+ return js_bool(iface->closed);
}
static jsval_t rl_interface_async_iterator(struct js *js, jsval_t *args, int nargs) {
@@ -1042,7 +1042,7 @@ static jsval_t rl_interface_async_iterator(struct js *js, jsval_t *args, int nar
jsval_t iterator = js_mkobj(js);
js_set(js, iterator, "_rl_id", js_mknum((double)iface->id));
js_set(js, iterator, "_lines", js_mkarr(js));
- js_set(js, iterator, "_done", js_mkfalse());
+ js_set(js, iterator, "_done", js_false);
return iterator;
}
@@ -1174,7 +1174,7 @@ static jsval_t rl_create_interface(struct js *js, jsval_t *args, int nargs) {
js_set_getter_desc(js, obj, "cursor", 6, js_mkfun(rl_interface_cursor_getter), JS_DESC_E | JS_DESC_C);
js_set_getter_desc(js, obj, "closed", 6, js_mkfun(rl_interface_closed_getter), JS_DESC_E | JS_DESC_C);
- js_set(js, obj, "terminal", iface->terminal ? js_mktrue() : js_mkfalse());
+ js_set(js, obj, "terminal", js_bool(iface->terminal));
js_set(js, obj, get_asyncIterator_sym_key(), js_mkfun(rl_interface_async_iterator));
js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "Interface", 9));
@@ -1190,7 +1190,7 @@ static jsval_t rl_create_interface_promises(struct js *js, jsval_t *args, int na
}
static jsval_t rl_clear_line(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 2) return js_mkfalse();
+ if (nargs < 2) return js_false;
int dir = (int)js_getnum(args[1]);
const char *seq;
@@ -1204,7 +1204,7 @@ static jsval_t rl_clear_line(struct js *js, jsval_t *args, int nargs) {
printf("%s", seq);
fflush(stdout);
- return js_mktrue();
+ return js_true;
}
static jsval_t rl_clear_screen_down(struct js *js, jsval_t *args, int nargs) {
@@ -1213,11 +1213,11 @@ static jsval_t rl_clear_screen_down(struct js *js, jsval_t *args, int nargs) {
printf("\033[J");
fflush(stdout);
- return js_mktrue();
+ return js_true;
}
static jsval_t rl_cursor_to(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 2) return js_mkfalse();
+ if (nargs < 2) return js_false;
int x = (int)js_getnum(args[1]);
if (nargs >= 3 && vtype(args[2]) == T_NUM) {
@@ -1228,11 +1228,11 @@ static jsval_t rl_cursor_to(struct js *js, jsval_t *args, int nargs) {
}
fflush(stdout);
- return js_mktrue();
+ return js_true;
}
static jsval_t rl_move_cursor(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 3) return js_mkfalse();
+ if (nargs < 3) return js_false;
int dx = (int)js_getnum(args[1]);
int dy = (int)js_getnum(args[2]);
@@ -1244,7 +1244,7 @@ static jsval_t rl_move_cursor(struct js *js, jsval_t *args, int nargs) {
else if (dy < 0) printf("\033[%dA", -dy);
fflush(stdout);
- return js_mktrue();
+ return js_true;
}
static jsval_t rl_emit_keypress_events(struct js *js, jsval_t *args, int nargs) {
diff --git a/src/modules/reflect.c b/src/modules/reflect.c
index 036607f..454db6b 100644
--- a/src/modules/reflect.c
+++ b/src/modules/reflect.c
@@ -27,59 +27,59 @@ static jsval_t reflect_get(struct js *js, jsval_t *args, int nargs) {
}
static jsval_t reflect_set(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 3) return js_mkfalse();
+ if (nargs < 3) return js_false;
jsval_t target = args[0];
jsval_t key = args[1];
jsval_t value = args[2];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
- if (vtype(key) != T_STR) return js_mkfalse();
+ if (vtype(key) != T_STR) return js_false;
char *key_str = js_getstr(js, key, NULL);
- if (!key_str) return js_mkfalse();
+ if (!key_str) return js_false;
js_set(js, target, key_str, value);
- return js_mktrue();
+ return js_true;
}
static jsval_t reflect_has(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 2) return js_mkfalse();
+ if (nargs < 2) return js_false;
jsval_t target = args[0];
jsval_t key = args[1];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
- if (vtype(key) != T_STR) return js_mkfalse();
+ if (vtype(key) != T_STR) return js_false;
size_t key_len;
char *key_str = js_getstr(js, key, &key_len);
- if (!key_str) return js_mkfalse();
+ if (!key_str) return js_false;
jsoff_t off = lkp_proto(js, target, key_str, key_len);
- return off > 0 ? js_mktrue() : js_mkfalse();
+ return js_bool(off > 0);
}
static jsval_t reflect_delete_property(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 2) return js_mkfalse();
+ if (nargs < 2) return js_false;
jsval_t target = args[0];
jsval_t key = args[1];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
- if (vtype(key) != T_STR) return js_mkfalse();
+ if (vtype(key) != T_STR) return js_false;
char *key_str = js_getstr(js, key, NULL);
- if (!key_str) return js_mkfalse();
+ if (!key_str) return js_false;
bool deleted = js_del(js, target, key_str);
- return deleted ? js_mktrue() : js_mkfalse();
+ return js_bool(deleted);
}
static jsval_t reflect_own_keys(struct js *js, jsval_t *args, int nargs) {
@@ -206,33 +206,33 @@ static jsval_t reflect_get_own_property_descriptor(struct js *js, jsval_t *args,
jsval_t value = js_get(js, target, key_str);
jsval_t desc = js_mkobj(js);
js_set(js, desc, "value", value);
- js_set(js, desc, "writable", js_mktrue());
- js_set(js, desc, "enumerable", js_mktrue());
- js_set(js, desc, "configurable", js_mktrue());
+ js_set(js, desc, "writable", js_true);
+ js_set(js, desc, "enumerable", js_true);
+ js_set(js, desc, "configurable", js_true);
return desc;
}
static jsval_t reflect_define_property(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 3) return js_mkfalse();
+ if (nargs < 3) return js_false;
jsval_t target = args[0];
jsval_t key = args[1];
jsval_t descriptor = args[2];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
- if (vtype(key) != T_STR) return js_mkfalse();
- if (!is_special_object(descriptor)) return js_mkfalse();
+ if (vtype(key) != T_STR) return js_false;
+ if (!is_special_object(descriptor)) return js_false;
char *key_str = js_getstr(js, key, NULL);
- if (!key_str) return js_mkfalse();
+ if (!key_str) return js_false;
jsval_t value = js_get(js, descriptor, "value");
js_set(js, target, key_str, value);
- return js_mktrue();
+ return js_true;
}
static jsval_t reflect_get_prototype_of(struct js *js, jsval_t *args, int nargs) {
@@ -250,46 +250,46 @@ static jsval_t reflect_get_prototype_of(struct js *js, jsval_t *args, int nargs)
}
static jsval_t reflect_set_prototype_of(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 2) return js_mkfalse();
+ if (nargs < 2) return js_false;
jsval_t target = args[0];
jsval_t proto = args[1];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
int pt = vtype(proto);
- if (pt != T_OBJ && pt != T_FUNC && pt != T_NULL) return js_mkfalse();
+ if (pt != T_OBJ && pt != T_FUNC && pt != T_NULL) return js_false;
js_set_proto(js, target, proto);
- return js_mktrue();
+ return js_true;
}
static jsval_t reflect_is_extensible(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
jsval_t target = args[0];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
if (js_get_slot(js, target, SLOT_EXTENSIBLE) == js_false) return js_false;
if (js_get_slot(js, target, SLOT_FROZEN) == js_true) return js_false;
if (js_get_slot(js, target, SLOT_SEALED) == js_true) return js_false;
- return js_mktrue();
+ return js_true;
}
static jsval_t reflect_prevent_extensions(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
jsval_t target = args[0];
int t = vtype(target);
- if (t != T_OBJ && t != T_FUNC) return js_mkfalse();
+ if (t != T_OBJ && t != T_FUNC) return js_false;
- js_set_slot(js, target, SLOT_EXTENSIBLE, js_mkfalse());
- return js_mktrue();
+ js_set_slot(js, target, SLOT_EXTENSIBLE, js_false);
+ return js_true;
}
void init_reflect_module(void) {
diff --git a/src/modules/symbol.c b/src/modules/symbol.c
index b60442d..6456e74 100644
--- a/src/modules/symbol.c
+++ b/src/modules/symbol.c
@@ -72,14 +72,14 @@ static jsval_t iterator_next(struct js *js, jsval_t *args, int nargs) {
jsval_t result = js_mkobj(js);
if (idx >= len) {
- js_set(js, result, "done", js_mktrue());
+ js_set(js, result, "done", js_true);
js_set(js, result, "value", js_mkundef());
} else {
char idxstr[16];
snprintf(idxstr, sizeof(idxstr), "%d", idx);
jsval_t value = js_get(js, arr, idxstr);
js_set(js, result, "value", value);
- js_set(js, result, "done", js_mkfalse());
+ js_set(js, result, "done", js_false);
js_set(js, this_val, "__idx", js_mknum(idx + 1));
}
@@ -116,13 +116,13 @@ static jsval_t string_iterator_next(struct js *js, jsval_t *args, int nargs) {
jsval_t result = js_mkobj(js);
if (idx >= len) {
- js_set(js, result, "done", js_mktrue());
+ js_set(js, result, "done", js_true);
js_set(js, result, "value", js_mkundef());
} else {
char *s = js_getstr(js, str, NULL);
char ch[2] = {s[idx], 0};
js_set(js, result, "value", js_mkstr(js, ch, 1));
- js_set(js, result, "done", js_mkfalse());
+ js_set(js, result, "done", js_false);
js_set(js, this_val, "__idx", js_mknum(idx + 1));
}
diff --git a/src/modules/textcodec.c b/src/modules/textcodec.c
index a791282..69e9b30 100644
--- a/src/modules/textcodec.c
+++ b/src/modules/textcodec.c
@@ -127,8 +127,8 @@ static jsval_t js_textdecoder_constructor(struct js *js, jsval_t *args, int narg
jsval_t obj = js_mkobj(js);
js_set(js, obj, "encoding", js_mkstr(js, encoding, encoding_len));
- js_set(js, obj, "fatal", js_mkfalse());
- js_set(js, obj, "ignoreBOM", js_mkfalse());
+ js_set(js, obj, "fatal", js_false);
+ js_set(js, obj, "ignoreBOM", js_false);
js_set(js, obj, "decode", js_mkfun(js_textdecoder_decode));
js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "TextDecoder", 11));
@@ -153,8 +153,8 @@ void init_textcodec_module(void) {
js_set(js, textdecoder_proto, "decode", js_mkfun(js_textdecoder_decode));
js_set(js, textdecoder_proto, "encoding", js_mkstr(js, "utf-8", 5));
- js_set(js, textdecoder_proto, "fatal", js_mkfalse());
- js_set(js, textdecoder_proto, "ignoreBOM", js_mkfalse());
+ js_set(js, textdecoder_proto, "fatal", js_false);
+ js_set(js, textdecoder_proto, "ignoreBOM", js_false);
js_set(js, textdecoder_constructor, "prototype", textdecoder_proto);
js_set(js, glob, "TextDecoder", textdecoder_constructor);
}
diff --git a/src/modules/url.c b/src/modules/url.c
index b9460f5..3801989 100644
--- a/src/modules/url.c
+++ b/src/modules/url.c
@@ -399,13 +399,13 @@ static jsval_t usp_getAll(struct js *js, jsval_t *args, int nargs) {
}
static jsval_t usp_has(struct js *js, jsval_t *args, int nargs) {
- if (nargs < 1) return js_mkfalse();
+ if (nargs < 1) return js_false;
jsval_t this_val = js_getthis(js);
char *key = js_getstr(js, args[0], NULL);
- if (!key) return js_mkfalse();
+ if (!key) return js_false;
jsval_t entries = js_get(js, this_val, "_entries");
- if (!is_special_object(entries)) return js_mkfalse();
+ if (!is_special_object(entries)) return js_false;
jsval_t len_val = js_get(js, entries, "length");
int len = (vtype(len_val) == T_NUM) ? (int)js_getnum(len_val) : 0;
@@ -416,9 +416,9 @@ static jsval_t usp_has(struct js *js, jsval_t *args, int nargs) {
jsval_t entry = js_get(js, entries, idx);
jsval_t k = js_get(js, entry, "0");
char *ks = js_getstr(js, k, NULL);
- if (ks && strcmp(ks, key) == 0) return js_mktrue();
+ if (ks && strcmp(ks, key) == 0) return js_true;
}
- return js_mkfalse();
+ return js_false;
}
static void usp_sync_url(struct js *js, jsval_t this_val) {
diff --git a/src/snapshot.c b/src/snapshot.c
index 512f592..3d41940 100644
--- a/src/snapshot.c
+++ b/src/snapshot.c
@@ -10,7 +10,7 @@ jsval_t ant_load_snapshot(ant_t *js) {
jsval_t result = js_eval(js, (const char *)ant_snapshot_source, ant_snapshot_source_len);
if (vtype(result) == T_ERR) return result;
- return js_mktrue();
+ return js_true;
}
const uint8_t *ant_get_snapshot_source(size_t *len) {
diff --git a/src/types/ant.d.ts b/src/types/ant.d.ts
index 8109668..9aab94d 100644
--- a/src/types/ant.d.ts
+++ b/src/types/ant.d.ts
@@ -93,6 +93,7 @@ interface AntStatic {
buildDate: string;
host: AntHost;
+ inspect(...args: unknown[]): void;
typeof(t: unknown): AntType | '??';
raw: AntRaw;
diff --git a/src/types/index.d.ts b/src/types/index.d.ts
index 3b1778a..d7140ef 100644
--- a/src/types/index.d.ts
+++ b/src/types/index.d.ts
@@ -2,13 +2,15 @@
///
///
///
-///
+///
+///
///
///
///
///
///
+///
///
///
///
diff --git a/src/types/modules/console.d.ts b/src/types/modules/console.d.ts
new file mode 100644
index 0000000..1a4c8f1
--- /dev/null
+++ b/src/types/modules/console.d.ts
@@ -0,0 +1,3 @@
+interface Console {
+ inspect(...data: unknown[]): void;
+}