static void debug_arr(FILE *stream, js_val *arr, int indent) { if (arr->object.length == 0) { fprintf(stream, "[]"); return; } fprintf(stream, "[ "); bool first = true; js_prop *prop; unsigned long i; for (i = 0; i < arr->object.length; i++) { prop = fh_get_prop(arr, JSNUMKEY(i)->string.ptr); if (!first) fprintf(stream, ", "); else first = false; if (!prop) continue; if (prop->circular) cfprintf(stream, ANSI_BLUE, "[Circular]"); else fh_debug(stream, prop->ptr, 0, false); } fprintf(stream, " ]"); }
// Function.prototype.apply(thisValue[, argsArray]) js_val * func_proto_apply(js_val *instance, js_args *args, eval_state *state) { js_val *this = ARG(args, 0); js_val *arr = ARG(args, 1); js_args *func_args = args_new(); unsigned long i; for (i = 0; i < arr->object.length; i++) args_append(func_args, fh_get(arr, JSNUMKEY(i)->string.ptr)); return fh_call(state->ctx, this, instance, func_args); }