commit 779b20d2aefbbcb34420617c7a2a707e03ec89f1
parent f3c3204032262c74841c432184e89f8e14f93d86
Author: Charlie Gordon <github@chqrlie.org>
Date: Sat, 23 Mar 2024 09:52:23 +0100
Use more explicit magic values for array methods
Diffstat:
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/quickjs/quickjs.c b/quickjs/quickjs.c
@@ -39954,10 +39954,10 @@ static JSValue js_array_lastIndexOf(JSContext *ctx, JSValueConst this_val,
}
enum {
- special_find,
- special_findIndex,
- special_findLast,
- special_findLastIndex,
+ ArrayFind,
+ ArrayFindIndex,
+ ArrayFindLast,
+ ArrayFindLastIndex,
};
static JSValue js_array_find(JSContext *ctx, JSValueConst this_val,
@@ -39983,14 +39983,13 @@ static JSValue js_array_find(JSContext *ctx, JSValueConst this_val,
if (argc > 1)
this_arg = argv[1];
- if (mode == special_findLast || mode == special_findLastIndex) {
+ k = 0;
+ dir = 1;
+ end = len;
+ if (mode == ArrayFindLast || mode == ArrayFindLastIndex) {
k = len - 1;
dir = -1;
end = -1;
- } else {
- k = 0;
- dir = 1;
- end = len;
}
// TODO(bnoordhuis) add fast path for fast arrays
@@ -40008,7 +40007,7 @@ static JSValue js_array_find(JSContext *ctx, JSValueConst this_val,
if (JS_IsException(res))
goto exception;
if (JS_ToBoolFree(ctx, res)) {
- if (mode == special_findIndex || mode == special_findLastIndex) {
+ if (mode == ArrayFindIndex || mode == ArrayFindLastIndex) {
JS_FreeValue(ctx, val);
JS_FreeValue(ctx, obj);
return index_val;
@@ -40022,7 +40021,7 @@ static JSValue js_array_find(JSContext *ctx, JSValueConst this_val,
JS_FreeValue(ctx, index_val);
}
JS_FreeValue(ctx, obj);
- if (mode == special_findIndex || mode == special_findLastIndex)
+ if (mode == ArrayFindIndex || mode == ArrayFindLastIndex)
return JS_NewInt32(ctx, -1);
else
return JS_UNDEFINED;
@@ -41076,10 +41075,10 @@ static const JSCFunctionListEntry js_array_proto_funcs[] = {
JS_CFUNC_MAGIC_DEF("reduce", 1, js_array_reduce, special_reduce ),
JS_CFUNC_MAGIC_DEF("reduceRight", 1, js_array_reduce, special_reduceRight ),
JS_CFUNC_DEF("fill", 1, js_array_fill ),
- JS_CFUNC_MAGIC_DEF("find", 1, js_array_find, special_find ),
- JS_CFUNC_MAGIC_DEF("findIndex", 1, js_array_find, special_findIndex ),
- JS_CFUNC_MAGIC_DEF("findLast", 1, js_array_find, special_findLast ),
- JS_CFUNC_MAGIC_DEF("findLastIndex", 1, js_array_find, special_findLastIndex ),
+ JS_CFUNC_MAGIC_DEF("find", 1, js_array_find, ArrayFind ),
+ JS_CFUNC_MAGIC_DEF("findIndex", 1, js_array_find, ArrayFindIndex ),
+ JS_CFUNC_MAGIC_DEF("findLast", 1, js_array_find, ArrayFindLast ),
+ JS_CFUNC_MAGIC_DEF("findLastIndex", 1, js_array_find, ArrayFindLastIndex ),
JS_CFUNC_DEF("indexOf", 1, js_array_indexOf ),
JS_CFUNC_DEF("lastIndexOf", 1, js_array_lastIndexOf ),
JS_CFUNC_DEF("includes", 1, js_array_includes ),
@@ -54185,14 +54184,13 @@ static JSValue js_typed_array_find(JSContext *ctx, JSValueConst this_val,
if (argc > 1)
this_arg = argv[1];
- if (mode == special_findLast || mode == special_findLastIndex) {
+ k = 0;
+ dir = 1;
+ end = len;
+ if (mode == ArrayFindLast || mode == ArrayFindLastIndex) {
k = len - 1;
dir = -1;
end = -1;
- } else {
- k = 0;
- dir = 1;
- end = len;
}
for(; k != end; k += dir) {
@@ -54207,7 +54205,7 @@ static JSValue js_typed_array_find(JSContext *ctx, JSValueConst this_val,
if (JS_IsException(res))
goto exception;
if (JS_ToBoolFree(ctx, res)) {
- if (mode == special_findIndex || mode == special_findLastIndex) {
+ if (mode == ArrayFindIndex || mode == ArrayFindLastIndex) {
JS_FreeValue(ctx, val);
return index_val;
} else {
@@ -54216,7 +54214,7 @@ static JSValue js_typed_array_find(JSContext *ctx, JSValueConst this_val,
}
JS_FreeValue(ctx, val);
}
- if (mode == special_findIndex || mode == special_findLastIndex)
+ if (mode == ArrayFindIndex || mode == ArrayFindLastIndex)
return JS_NewInt32(ctx, -1);
else
return JS_UNDEFINED;
@@ -55060,10 +55058,10 @@ static const JSCFunctionListEntry js_typed_array_base_proto_funcs[] = {
JS_CFUNC_MAGIC_DEF("reduce", 1, js_array_reduce, special_reduce | special_TA ),
JS_CFUNC_MAGIC_DEF("reduceRight", 1, js_array_reduce, special_reduceRight | special_TA ),
JS_CFUNC_DEF("fill", 1, js_typed_array_fill ),
- JS_CFUNC_MAGIC_DEF("find", 1, js_typed_array_find, special_find ),
- JS_CFUNC_MAGIC_DEF("findIndex", 1, js_typed_array_find, special_findIndex ),
- JS_CFUNC_MAGIC_DEF("findLast", 1, js_typed_array_find, special_findLast ),
- JS_CFUNC_MAGIC_DEF("findLastIndex", 1, js_typed_array_find, special_findLastIndex ),
+ JS_CFUNC_MAGIC_DEF("find", 1, js_typed_array_find, ArrayFind ),
+ JS_CFUNC_MAGIC_DEF("findIndex", 1, js_typed_array_find, ArrayFindIndex ),
+ JS_CFUNC_MAGIC_DEF("findLast", 1, js_typed_array_find, ArrayFindLast ),
+ JS_CFUNC_MAGIC_DEF("findLastIndex", 1, js_typed_array_find, ArrayFindLastIndex ),
JS_CFUNC_DEF("reverse", 0, js_typed_array_reverse ),
JS_CFUNC_DEF("toReversed", 0, js_typed_array_toReversed ),
JS_CFUNC_DEF("slice", 2, js_typed_array_slice ),