···561561 clientNotImplemented();
562562 }
563563564564- createSocket(options, callback) {
564564+ createSocket(_options, callback) {
565565 const error = new Error('node:http Agent client transport is not implemented yet');
566566 if (typeof callback === 'function') callback(error);
567567 else throw error;
+34-1
src/silver/compiler.c
···398398 return c && !c->is_arrow && c->enclosing;
399399}
400400401401+static bool ast_arguments_captured_by_arrow(const sv_ast_t *node, bool in_arrow) {
402402+ if (!node) return false;
403403+ if (in_arrow && node->type == N_IDENT &&
404404+ is_ident_str(node->str, node->len, "arguments", 9))
405405+ return true;
406406+407407+ if (node->type == N_FUNC) {
408408+ if (!(node->flags & FN_ARROW)) return false;
409409+410410+ for (int i = 0; i < node->args.count; i++) {
411411+ if (ast_arguments_captured_by_arrow(node->args.items[i], true)) return true;
412412+ }
413413+ return ast_arguments_captured_by_arrow(node->body, true);
414414+ }
415415+416416+ if (ast_arguments_captured_by_arrow(node->left, in_arrow)) return true;
417417+ if (ast_arguments_captured_by_arrow(node->right, in_arrow)) return true;
418418+ if (ast_arguments_captured_by_arrow(node->cond, in_arrow)) return true;
419419+ if (ast_arguments_captured_by_arrow(node->body, in_arrow)) return true;
420420+ if (ast_arguments_captured_by_arrow(node->catch_body, in_arrow)) return true;
421421+ if (ast_arguments_captured_by_arrow(node->finally_body, in_arrow)) return true;
422422+ if (ast_arguments_captured_by_arrow(node->catch_param, in_arrow)) return true;
423423+ if (ast_arguments_captured_by_arrow(node->init, in_arrow)) return true;
424424+ if (ast_arguments_captured_by_arrow(node->update, in_arrow)) return true;
425425+426426+ for (int i = 0; i < node->args.count; i++) {
427427+ if (ast_arguments_captured_by_arrow(node->args.items[i], in_arrow)) return true;
428428+ }
429429+430430+ return false;
431431+}
432432+401433static int resolve_local(sv_compiler_t *c, const char *name, uint32_t len) {
402434 if (c->local_lookup_heads && c->local_lookup_cap > 0) {
403435 uint32_t hash = sv_compile_ctx_hash_local_name(name, len);
···44684500 }
4469450144704502 if (!comp.is_arrow && has_implicit_arguments_obj(&comp) &&
44714471- (node->flags & FN_USES_ARGS)) {
45034503+ (node->flags & FN_USES_ARGS) &&
45044504+ ast_arguments_captured_by_arrow(node->body, false)) {
44724505 comp.strict_args_local = add_local(&comp, "", 0, false, comp.scope_depth);
44734506 emit_op(&comp, OP_SPECIAL_OBJ);
44744507 emit(&comp, 0);
+14-6
src/silver/swarm.c
···10541054 case OP_RETURN: case OP_RETURN_UNDEF:
10551055 case OP_GET_FIELD: case OP_GET_FIELD2: case OP_GET_GLOBAL:
10561056 case OP_SPECIAL_OBJ:
10571057- if (op == OP_SPECIAL_OBJ && sv_get_u8(ip + 1) == 0 &&
10581058- !f->is_strict && f->param_count > 0) return false;
10571057+ // OP_SPECIAL_OBJ(0) materializes `arguments`. keep these functions on
10581058+ // the interpreter until JIT routes a real per-call activation/object
10591059+ // with matching lifetime and semantics.
10601060+ if (sv_get_u8(ip + 1) == 0) return false;
10611061+ break;
10591062 case OP_NOP: case OP_LINE_NUM: case OP_COL_NUM: case OP_LABEL:
10601063 break;
10611064 default:
···20042007 case OP_STR_ALC_SNAPSHOT:
20052008 case OP_TO_PROPKEY:
20062009 case OP_RETURN: case OP_RETURN_UNDEF:
20072007- case OP_SPECIAL_OBJ: if (
20082008- op == OP_SPECIAL_OBJ && sv_get_u8(ip + 1) == 0
20092009- && !func->is_strict && func->param_count > 0
20102010- ) eligible = false;
20112010 case OP_SET_NAME:
20122011 case OP_TRY_PUSH: case OP_TRY_POP:
20132012 case OP_THROW: case OP_THROW_ERROR:
···20242023 }
20252024 case OP_RE_EXEC_TRUTHY:
20262025 eligible = false;
20262026+ break;
20272027+ case OP_SPECIAL_OBJ:
20282028+ if (sv_get_u8(ip + 1) == 0) {
20292029+ if (sv_jit_warn_unlikely)
20302030+ fprintf(stderr, "jit: ineligible op SPECIAL_OBJ(%d) in %s\n",
20312031+ sv_get_u8(ip + 1),
20322032+ func->name ? func->name : "<anonymous>");
20332033+ eligible = false;
20342034+ }
20272035 break;
20282036 default:
20292037 if (sv_jit_warn_unlikely)