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.

migrate to is_callable everywhere

+10 -17
+2 -2
src/ant.c
··· 5024 5024 ant_offset_t return_off = lkp_proto(js, iterator, "return", 6); 5025 5025 if (return_off == 0) return js_mkundef(); 5026 5026 ant_value_t return_method = propref_load(js, return_off); 5027 - if (vtype(return_method) != T_FUNC && vtype(return_method) != T_CFUNC) { 5027 + if (!is_callable(return_method)) { 5028 5028 return js_mkerr(js, "iterator.return is not a function"); 5029 5029 } 5030 5030 return iter_call_noargs_with_this(js, iterator, return_method); ··· 5046 5046 if (next_off == 0) { return js_mkerr(js, "iterator.next is not a function"); } 5047 5047 5048 5048 ant_value_t next_method = propref_load(js, next_off); 5049 - if (vtype(next_method) != T_FUNC && vtype(next_method) != T_CFUNC) { 5049 + if (!is_callable(next_method)) { 5050 5050 return js_mkerr(js, "iterator.next is not a function"); 5051 5051 } 5052 5052
+1 -1
src/modules/symbol.c
··· 266 266 267 267 uint8_t mt = vtype(method); 268 268 if (mt == T_UNDEF || mt == T_NULL) return js_mkundef(); 269 - if (mt != T_FUNC && mt != T_CFUNC) { 269 + if (!is_callable(method)) { 270 270 return js_mkerr_typed(js, JS_ERR_TYPE, "Symbol method is not callable"); 271 271 } 272 272
+3 -6
src/silver/glue.c
··· 344 344 ant_value_t next_method = iter_buf[1]; 345 345 GC_ROOT_PIN(js, iterator); 346 346 GC_ROOT_PIN(js, next_method); 347 - uint8_t ft = vtype(next_method); 348 - if (ft != T_FUNC && ft != T_CFUNC) { 347 + if (!is_callable(next_method)) { 349 348 GC_ROOT_RESTORE(js, root_mark); 350 349 return js_mkerr(js, "iterator.next is not a function"); 351 350 } ··· 388 387 GC_ROOT_PIN(js, iterator); 389 388 ant_value_t return_fn = js_getprop_fallback(js, iterator, "return"); 390 389 GC_ROOT_PIN(js, return_fn); 391 - uint8_t ft = vtype(return_fn); 392 - if (ft == T_FUNC || ft == T_CFUNC) 390 + if (is_callable(return_fn)) 393 391 sv_vm_call(vm, js, return_fn, iterator, NULL, 0, NULL, false); 394 392 } 395 393 ··· 429 427 430 428 ant_value_t iter_fn = js_get_sym(js, iterable, get_iterator_sym()); 431 429 GC_ROOT_PIN(js, iter_fn); 432 - uint8_t ft = vtype(iter_fn); 433 - if (ft != T_FUNC && ft != T_CFUNC) { 430 + if (!is_callable(iter_fn)) { 434 431 GC_ROOT_RESTORE(js, root_mark); 435 432 return js_mkerr(js, "not iterable"); 436 433 }
+4 -8
src/silver/ops/iteration.h
··· 261 261 default: { 262 262 ant_value_t next_method = vm->stack[vm->sp - 2]; 263 263 ant_value_t iterator = vm->stack[vm->sp - 3]; 264 - uint8_t ft = vtype(next_method); 265 - if (ft != T_FUNC && ft != T_CFUNC) 264 + if (!is_callable(next_method)) 266 265 return js_mkerr(js, "iterator.next is not a function"); 267 266 ant_value_t result = sv_vm_call(vm, js, next_method, iterator, NULL, 0, NULL, false); 268 267 if (is_err(result)) return result; ··· 304 303 if (tag == SV_ITER_GENERIC) { 305 304 ant_value_t iterator = vm->stack[vm->sp - 3]; 306 305 ant_value_t return_fn = js_getprop_fallback(js, iterator, "return"); 307 - uint8_t ft = vtype(return_fn); 308 - if (ft == T_FUNC || ft == T_CFUNC) 306 + if (is_callable(return_fn)) 309 307 sv_vm_call(vm, js, return_fn, iterator, NULL, 0, NULL, false); 310 308 } 311 309 vm->sp -= 3; ··· 347 345 static inline ant_value_t sv_op_iter_call(sv_vm_t *vm, ant_t *js, uint8_t *ip) { 348 346 ant_value_t method = vm->stack[vm->sp - 1]; 349 347 ant_value_t iterator = vm->stack[vm->sp - 4]; 350 - uint8_t ft = vtype(method); 351 - if (ft != T_FUNC && ft != T_CFUNC) 348 + if (!is_callable(method)) 352 349 return js_mkerr(js, "iterator method is not callable"); 353 350 ant_value_t result = sv_vm_call(vm, js, method, iterator, NULL, 0, NULL, false); 354 351 if (is_err(result)) return result; ··· 364 361 }; 365 362 ant_value_t next_method = vm->stack[vm->sp - 2]; 366 363 ant_value_t iterator = vm->stack[vm->sp - 3]; 367 - uint8_t ft = vtype(next_method); 368 - if (ft != T_FUNC && ft != T_CFUNC) 364 + if (!is_callable(next_method)) 369 365 return (sv_await_result_t){ .state = SV_AWAIT_ERROR, .value = js_mkerr(js, "iterator.next is not a function"), .handoff = false }; 370 366 ant_value_t result = sv_vm_call(vm, js, next_method, iterator, NULL, 0, NULL, false); 371 367 if (is_err(result))