[master] 25b2e84 More function argument cleanup

Poul-Henning Kamp phk at FreeBSD.org
Wed Jan 24 09:27:13 UTC 2018


commit 25b2e84c0473449f2e2c79d08cc01ccb5ecb9e88
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Jan 24 09:25:26 2018 +0000

    More function argument cleanup

diff --git a/lib/libvcc/vcc_action.c b/lib/libvcc/vcc_action.c
index b030c11..98df6d1 100644
--- a/lib/libvcc/vcc_action.c
+++ b/lib/libvcc/vcc_action.c
@@ -46,8 +46,8 @@ parse_call(struct vcc *tl)
 
 	vcc_NextToken(tl);
 	ExpectErr(tl, ID);
-	vcc_AddCall(tl, tl->t);
-	sym = vcc_AddRef(tl, tl->t, SYM_SUB);
+	vcc_AddCall(tl);
+	sym = vcc_AddRef(tl, SYM_SUB);
 	VCC_GlobalSymbol(sym, SUB, "VGC_function");
 	Fb(tl, 1, "%s(ctx);\n", sym->rname);
 	vcc_NextToken(tl);
@@ -245,7 +245,7 @@ parse_return_vcl(struct vcc *tl)
 	ExpectErr(tl, '(');
 	vcc_NextToken(tl);
 	ExpectErr(tl, ID);
-	sym = VCC_SymbolTok(tl, NULL, tl->t, SYM_VCL, 0);
+	sym = VCC_SymbolTok(tl, NULL, SYM_VCL, 0);
 	ERRCHK(tl);
 	if (sym == NULL) {
 		VSB_printf(tl->sb, "Not a VCL label:\n");
@@ -396,7 +396,7 @@ vcc_ParseAction(struct vcc *tl)
 			return (1);
 		}
 	}
-	sym = VCC_SymbolTok(tl, NULL, tl->t, SYM_NONE, 0);
+	sym = VCC_SymbolTok(tl, NULL, SYM_NONE, 0);
 	if (sym != NULL && sym->kind == SYM_FUNC) {
 		vcc_Expr_Call(tl, sym);
 		return (1);
diff --git a/lib/libvcc/vcc_backend.c b/lib/libvcc/vcc_backend.c
index ed4aa50..a5a693f 100644
--- a/lib/libvcc/vcc_backend.c
+++ b/lib/libvcc/vcc_backend.c
@@ -265,10 +265,8 @@ vcc_ParseProbe(struct vcc *tl)
 	AN(sym);
 
 	vcc_ParseProbeSpec(tl, sym, &p);
-	if (vcc_IdIs(t_probe, "default")) {
-		(void)vcc_AddRef(tl, t_probe, SYM_PROBE);
-		tl->default_probe = p;
-	}
+	if (vcc_IdIs(t_probe, "default"))
+		tl->default_probe = sym;
 }
 
 /*--------------------------------------------------------------------
@@ -392,7 +390,7 @@ vcc_ParseHostDef(struct vcc *tl, const struct token *t_be, const char *vgcname)
 			Fb(tl, 0, "\t.probe = %s,\n", p);
 			ERRCHK(tl);
 		} else if (vcc_IdIs(t_field, "probe") && tl->t->tok == ID) {
-			pb = VCC_SymbolTok(tl, NULL, tl->t, SYM_PROBE, 0);
+			pb = VCC_SymbolTok(tl, NULL, SYM_PROBE, 0);
 			if (pb == NULL) {
 				VSB_printf(tl->sb, "Probe %.*s not found\n",
 				    PF(tl->t));
@@ -400,7 +398,7 @@ vcc_ParseHostDef(struct vcc *tl, const struct token *t_be, const char *vgcname)
 				return;
 			}
 			Fb(tl, 0, "\t.probe = %s,\n", pb->rname);
-			(void)vcc_AddRef(tl, tl->t, SYM_PROBE);
+			(void)vcc_AddRef(tl, SYM_PROBE);
 			vcc_NextToken(tl);
 			SkipToken(tl, ';');
 		} else if (vcc_IdIs(t_field, "probe")) {
@@ -490,10 +488,8 @@ vcc_ParseBackend(struct vcc *tl)
 		return;
 	}
 
-	if (tl->default_director == NULL || vcc_IdIs(t_be, "default")) {
-		tl->default_director = sym->rname;
-		tl->t_default_director = t_be;
-	}
+	if (tl->default_director == NULL || vcc_IdIs(t_be, "default"))
+		tl->default_director = sym;
 }
 
 void
diff --git a/lib/libvcc/vcc_compile.c b/lib/libvcc/vcc_compile.c
index 0e84062..298b7a8 100644
--- a/lib/libvcc/vcc_compile.c
+++ b/lib/libvcc/vcc_compile.c
@@ -415,9 +415,11 @@ EmitStruct(const struct vcc *tl)
 	Fc(tl, 0, "\nconst struct VCL_conf VCL_conf = {\n");
 	Fc(tl, 0, "\t.magic = VCL_CONF_MAGIC,\n");
 	Fc(tl, 0, "\t.event_vcl = VGC_Event,\n");
-	Fc(tl, 0, "\t.default_director = &%s,\n", tl->default_director);
+	Fc(tl, 0, "\t.default_director = &%s,\n",
+	   tl->default_director->rname);
 	if (tl->default_probe != NULL)
-		Fc(tl, 0, "\t.default_probe = %s,\n", tl->default_probe);
+		Fc(tl, 0, "\t.default_probe = %s,\n",
+		    tl->default_probe->rname);
 	Fc(tl, 0, "\t.ref = VGC_ref,\n");
 	Fc(tl, 0, "\t.nref = VGC_NREFS,\n");
 	Fc(tl, 0, "\t.nsrc = VGC_NSRCS,\n");
@@ -627,8 +629,10 @@ vcc_CompileSource(struct vcc *tl, struct source *sp)
 		return (NULL);
 	}
 
-	/* Configure the default director */
-	(void)vcc_AddRef(tl, tl->t_default_director, SYM_BACKEND);
+	/* Refcount the default director & probe*/
+	tl->default_director->nref++;
+	if (tl->default_probe != NULL)
+		tl->default_probe->nref++;
 
 	/* Check for orphans */
 	if (vcc_CheckReferences(tl))
diff --git a/lib/libvcc/vcc_compile.h b/lib/libvcc/vcc_compile.h
index 4e98e94..74a42a5 100644
--- a/lib/libvcc/vcc_compile.h
+++ b/lib/libvcc/vcc_compile.h
@@ -218,9 +218,8 @@ struct vcc {
 	int			nprobe;
 
 	int			ndirector;
-	const char		*default_director;
-	struct token		*t_default_director;
-	const char		*default_probe;
+	struct symbol		*default_director;
+	struct symbol		*default_probe;
 
 	unsigned		unique;
 
@@ -319,8 +318,8 @@ void vcc_stevedore(struct vcc *vcc, const char *stv_name);
 void VCC_PrintCName(struct vsb *vsb, const char *b, const char *e);
 struct symbol *VCC_Symbol(struct vcc *, struct symbol *,
     const char *, const char *, enum symkind, int);
-#define VCC_SymbolTok(vcc, sym, tok, kind, create) \
-    VCC_Symbol(vcc, sym, (tok)->b, (tok)->e, kind, create)
+#define VCC_SymbolTok(vcc, sym, kind, create) \
+    VCC_Symbol(vcc, sym, (vcc)->t->b, (vcc)->t->e, kind, create)
 const char * VCC_SymKind(struct vcc *tl, const struct symbol *s);
 typedef void symwalk_f(struct vcc *tl, const struct symbol *s);
 void VCC_WalkSymbols(struct vcc *tl, symwalk_f *func, enum symkind kind);
@@ -354,14 +353,12 @@ void vcc_ParseImport(struct vcc *tl);
 void vcc_ParseNew(struct vcc *tl);
 
 /* vcc_xref.c */
-struct symbol *vcc_AddDef(struct vcc *tl, const struct token *t,
-    enum symkind type);
-struct symbol *vcc_AddRef(struct vcc *tl, const struct token *t,
-    enum symkind type);
+struct symbol *vcc_AddDef(struct vcc *, enum symkind);
+struct symbol *vcc_AddRef(struct vcc *, enum symkind);
 int vcc_CheckReferences(struct vcc *tl);
 void VCC_XrefTable(struct vcc *);
 
-void vcc_AddCall(struct vcc *tl, struct token *t);
+void vcc_AddCall(struct vcc *);
 void vcc_ProcAction(struct proc *p, unsigned action, struct token *t);
 int vcc_CheckAction(struct vcc *tl);
 void vcc_AddUses(struct vcc *tl, const struct token *t, unsigned mask,
diff --git a/lib/libvcc/vcc_expr.c b/lib/libvcc/vcc_expr.c
index affbe68..dacae1e 100644
--- a/lib/libvcc/vcc_expr.c
+++ b/lib/libvcc/vcc_expr.c
@@ -333,13 +333,13 @@ vcc_Eval_Handle(struct vcc *tl, struct expr **e, const struct symbol *sym,
 	AN(sym->rname);
 
 	if (sym->fmt != STRING && fmt == STRINGS) {
-		(void)vcc_AddRef(tl, tl->t, sym->kind);
+		(void)vcc_AddRef(tl, sym->kind);
 		*e = vcc_mk_expr(STRINGS, "\"%s\"", sym->name);
 		(*e)->nstr = 1;
 		(*e)->constant |= EXPR_CONST | EXPR_STR_CONST;
 	} else {
 		vcc_ExpectVid(tl, "handle");
-		(void)vcc_AddRef(tl, tl->t, sym->kind);
+		(void)vcc_AddRef(tl, sym->kind);
 		*e = vcc_mk_expr(sym->fmt, "%s", sym->rname);
 		(*e)->constant = EXPR_VAR;
 		(*e)->nstr = 1;
@@ -657,9 +657,9 @@ vcc_expr4(struct vcc *tl, struct expr **e, vcc_type_t fmt)
 		sym = NULL;
 		kind = VCC_HandleKind(fmt);
 		if (kind != SYM_NONE)
-			sym = VCC_SymbolTok(tl, NULL, tl->t, kind, 0);
+			sym = VCC_SymbolTok(tl, NULL, kind, 0);
 		if (sym == NULL)
-			sym = VCC_SymbolTok(tl, NULL, tl->t, SYM_NONE, 0);
+			sym = VCC_SymbolTok(tl, NULL, SYM_NONE, 0);
 		if (sym == NULL || sym->eval == NULL) {
 			VSB_printf(tl->sb, "Symbol not found: ");
 			vcc_ErrToken(tl, tl->t);
@@ -966,7 +966,7 @@ cmp_acl(struct vcc *tl, struct expr **e, const struct cmps *cp)
 
 	vcc_NextToken(tl);
 	vcc_ExpectVid(tl, "ACL");
-	sym = vcc_AddRef(tl, tl->t, SYM_ACL);
+	sym = vcc_AddRef(tl, SYM_ACL);
 	vcc_NextToken(tl);
 	VCC_GlobalSymbol(sym, ACL, ACL_SYMBOL_PREFIX);
 	bprintf(buf, "%sVRT_acl_match(ctx, %s, \v1)", cp->emit, sym->rname);
diff --git a/lib/libvcc/vcc_parse.c b/lib/libvcc/vcc_parse.c
index 9652077..a179d4a 100644
--- a/lib/libvcc/vcc_parse.c
+++ b/lib/libvcc/vcc_parse.c
@@ -215,7 +215,7 @@ vcc_ParseFunction(struct vcc *tl)
 	vcc_ExpectVid(tl, "function");
 	ERRCHK(tl);
 
-	sym = vcc_AddDef(tl, tl->t, SYM_SUB);
+	sym = vcc_AddDef(tl, SYM_SUB);
 	AN(sym);
 	p = sym->proc;
 	if (p == NULL) {
@@ -247,8 +247,8 @@ vcc_ParseFunction(struct vcc *tl)
 		/* Add to VCL sub */
 		AN(p->method);
 		if (p->name == NULL) {
-			(void)vcc_AddDef(tl, tl->t, SYM_SUB);
-			(void)vcc_AddRef(tl, tl->t, SYM_SUB);
+			(void)vcc_AddDef(tl, SYM_SUB);
+			(void)vcc_AddRef(tl, SYM_SUB);
 			p->name = tl->t;
 		}
 	}
diff --git a/lib/libvcc/vcc_symb.c b/lib/libvcc/vcc_symb.c
index ef526f1..a485df6 100644
--- a/lib/libvcc/vcc_symb.c
+++ b/lib/libvcc/vcc_symb.c
@@ -237,7 +237,7 @@ VCC_HandleSymbol(struct vcc *tl, vcc_type_t fmt, const char *pfx)
 	kind = VCC_HandleKind(fmt);
 	assert(kind != SYM_NONE);
 
-	sym = VCC_SymbolTok(tl, NULL, tl->t, SYM_NONE, 0);
+	sym = VCC_SymbolTok(tl, NULL, SYM_NONE, 0);
 	if (sym != NULL && sym->def_b != NULL && kind == sym->kind) {
 		p = VCC_SymKind(tl, sym);
 		VSB_printf(tl->sb, "%c%s '%.*s' redefined.\n",
@@ -262,7 +262,7 @@ VCC_HandleSymbol(struct vcc *tl, vcc_type_t fmt, const char *pfx)
 		return (sym);
 	}
 	if (sym == NULL)
-		sym = VCC_SymbolTok(tl, NULL, tl->t, kind, 1);
+		sym = VCC_SymbolTok(tl, NULL, kind, 1);
 	AN(sym);
 	AZ(sym->ndef);
 	VCC_GlobalSymbol(sym, fmt, pfx);
diff --git a/lib/libvcc/vcc_var.c b/lib/libvcc/vcc_var.c
index 02c4e5e..51b9897 100644
--- a/lib/libvcc/vcc_var.c
+++ b/lib/libvcc/vcc_var.c
@@ -100,7 +100,7 @@ vcc_FindVar(struct vcc *tl, int wr_access, const char *use)
 {
 	const struct symbol *sym;
 
-	sym = VCC_SymbolTok(tl, NULL, tl->t, SYM_VAR, 0);
+	sym = VCC_SymbolTok(tl, NULL, SYM_VAR, 0);
 	if (tl->err)
 		return (NULL);
 	if (sym != NULL) {
diff --git a/lib/libvcc/vcc_vmod.c b/lib/libvcc/vcc_vmod.c
index 0cc0725..21a7216 100644
--- a/lib/libvcc/vcc_vmod.c
+++ b/lib/libvcc/vcc_vmod.c
@@ -75,7 +75,7 @@ vcc_ParseImport(struct vcc *tl)
 
 	ExpectErr(tl, ID);
 	mod = tl->t;
-	osym = VCC_SymbolTok(tl, NULL, tl->t, SYM_NONE, 0);
+	osym = VCC_SymbolTok(tl, NULL, SYM_NONE, 0);
 	vcc_NextToken(tl);
 
 	if (osym != NULL && osym->kind != SYM_VMOD) {
@@ -290,7 +290,7 @@ vcc_ParseNew(struct vcc *tl)
 	vcc_NextToken(tl);
 
 	ExpectErr(tl, ID);
-	sy2 = VCC_SymbolTok(tl, NULL, tl->t, SYM_OBJECT, 0);
+	sy2 = VCC_SymbolTok(tl, NULL, SYM_OBJECT, 0);
 	if (sy2 == NULL || sy2->extra == NULL) {
 		if (sy2 == NULL)
 			p = "Symbol";
diff --git a/lib/libvcc/vcc_xref.c b/lib/libvcc/vcc_xref.c
index fff066c..1462145 100644
--- a/lib/libvcc/vcc_xref.c
+++ b/lib/libvcc/vcc_xref.c
@@ -61,26 +61,26 @@ struct procuse {
  */
 
 struct symbol *
-vcc_AddRef(struct vcc *tl, const struct token *t, enum symkind kind)
+vcc_AddRef(struct vcc *tl, enum symkind kind)
 {
 	struct symbol *sym;
 
-	sym = VCC_SymbolTok(tl, NULL, t, kind, 1);
+	sym = VCC_SymbolTok(tl, NULL, kind, 1);
 	if (sym->ref_b == NULL)
-		sym->ref_b = t;
+		sym->ref_b = tl->t;
 	AN(sym);
 	sym->nref++;
 	return (sym);
 }
 
 struct symbol *
-vcc_AddDef(struct vcc *tl, const struct token *t, enum symkind kind)
+vcc_AddDef(struct vcc *tl, enum symkind kind)
 {
 	struct symbol *sym;
 
-	sym = VCC_SymbolTok(tl, NULL, t, kind, 1);
+	sym = VCC_SymbolTok(tl, NULL, kind, 1);
 	if (sym->def_b == NULL)
-		sym->def_b = t;
+		sym->def_b = tl->t;
 	AN(sym);
 	sym->ndef++;
 	return (sym);
@@ -138,15 +138,15 @@ vcc_AddUses(struct vcc *tl, const struct token *t, unsigned mask,
 }
 
 void
-vcc_AddCall(struct vcc *tl, struct token *t)
+vcc_AddCall(struct vcc *tl)
 {
 	struct proccall *pc;
 
 	pc = TlAlloc(tl, sizeof *pc);
 	assert(pc != NULL);
-	pc->sym = VCC_SymbolTok(tl, NULL, t, SYM_SUB, 1);
+	pc->sym = VCC_SymbolTok(tl, NULL, SYM_SUB, 1);
 	AN(pc->sym);
-	pc->t = t;
+	pc->t = tl->t;
 	VTAILQ_INSERT_TAIL(&tl->curproc->calls, pc, list);
 }
 


More information about the varnish-commit mailing list