[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