Module Name: src
Committed By: rillig
Date: Sat Sep 26 17:15:20 UTC 2020
Modified Files:
src/usr.bin/make: dir.c job.c lst.c lst.h main.c make.c meta.c suff.c
targ.c
Log Message:
make(1): inline and remove LstNode_Prev and LstNode_Next
These functions made the code larger than necessary. The prev and next
fields are published intentionally since navigating in a doubly-linked
list is simple to do and there is no need to wrap this in a layer of
function calls, not even syntactically. (On the execution level, the
function calls had been inlined anyway.)
To generate a diff of this commit:
cvs rdiff -u -r1.147 -r1.148 src/usr.bin/make/dir.c
cvs rdiff -u -r1.240 -r1.241 src/usr.bin/make/job.c
cvs rdiff -u -r1.71 -r1.72 src/usr.bin/make/lst.c
cvs rdiff -u -r1.68 -r1.69 src/usr.bin/make/lst.h
cvs rdiff -u -r1.347 -r1.348 src/usr.bin/make/main.c
cvs rdiff -u -r1.146 -r1.147 src/usr.bin/make/make.c
cvs rdiff -u -r1.119 -r1.120 src/usr.bin/make/meta.c
cvs rdiff -u -r1.168 -r1.169 src/usr.bin/make/suff.c
cvs rdiff -u -r1.100 -r1.101 src/usr.bin/make/targ.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/make/dir.c
diff -u src/usr.bin/make/dir.c:1.147 src/usr.bin/make/dir.c:1.148
--- src/usr.bin/make/dir.c:1.147 Fri Sep 25 06:49:13 2020
+++ src/usr.bin/make/dir.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.147 2020/09/25 06:49:13 rillig Exp $ */
+/* $NetBSD: dir.c,v 1.148 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -134,7 +134,7 @@
#include "job.h"
/* "@(#)dir.c 8.2 (Berkeley) 1/2/94" */
-MAKE_RCSID("$NetBSD: dir.c,v 1.147 2020/09/25 06:49:13 rillig Exp $");
+MAKE_RCSID("$NetBSD: dir.c,v 1.148 2020/09/26 17:15:20 rillig Exp $");
#define DIR_DEBUG0(fmt) \
if (!DEBUG(DIR)) (void) 0; else fprintf(debug_file, fmt)
@@ -1705,10 +1705,9 @@ void
Dir_Concat(SearchPath *path1, SearchPath *path2)
{
SearchPathNode *ln;
- CachedDir *dir;
- for (ln = Lst_First(path2); ln != NULL; ln = LstNode_Next(ln)) {
- dir = LstNode_Datum(ln);
+ for (ln = path2->first; ln != NULL; ln = ln->next) {
+ CachedDir *dir = ln->datum;
if (Lst_FindDatum(path1, dir) == NULL) {
dir->refCount += 1;
Lst_Append(path1, dir);
@@ -1746,8 +1745,8 @@ void
Dir_PrintPath(SearchPath *path)
{
SearchPathNode *node;
- for (node = Lst_First(path); node != NULL; node = LstNode_Next(node)) {
- const CachedDir *dir = LstNode_Datum(node);
+ for (node = path->first; node != NULL; node = node->next) {
+ const CachedDir *dir = node->datum;
fprintf(debug_file, "%s ", dir->name);
}
}
Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.240 src/usr.bin/make/job.c:1.241
--- src/usr.bin/make/job.c:1.240 Sat Sep 26 16:55:58 2020
+++ src/usr.bin/make/job.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: job.c,v 1.240 2020/09/26 16:55:58 rillig Exp $ */
+/* $NetBSD: job.c,v 1.241 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -140,7 +140,7 @@
#include "trace.h"
/* "@(#)job.c 8.2 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: job.c,v 1.240 2020/09/26 16:55:58 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.241 2020/09/26 17:15:20 rillig Exp $");
# define STATIC static
@@ -689,7 +689,7 @@ JobPrintCommand(void *cmdp, void *jobp)
job->node->type |= OP_SAVE_CMDS;
if ((job->flags & JOB_IGNDOTS) == 0) {
StringListNode *dotsNode = Lst_FindDatum(job->node->commands, cmd);
- job->tailCmds = dotsNode != NULL ? LstNode_Next(dotsNode) : NULL;
+ job->tailCmds = dotsNode != NULL ? dotsNode->next : NULL;
return 1;
}
return 0;
@@ -884,8 +884,8 @@ JobSaveCommands(Job *job)
{
StringListNode *node;
- for (node = job->tailCmds; node != NULL; node = LstNode_Next(node)) {
- char *cmd = LstNode_Datum(node);
+ for (node = job->tailCmds; node != NULL; node = node->next) {
+ const char *cmd = node->datum;
char *expanded_cmd;
/* XXX: This Var_Subst is only intended to expand the dynamic
* variables such as .TARGET, .IMPSRC. It is not intended to
Index: src/usr.bin/make/lst.c
diff -u src/usr.bin/make/lst.c:1.71 src/usr.bin/make/lst.c:1.72
--- src/usr.bin/make/lst.c:1.71 Fri Sep 25 04:18:11 2020
+++ src/usr.bin/make/lst.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.71 2020/09/25 04:18:11 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.72 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -34,7 +34,7 @@
#include "make.h"
-MAKE_RCSID("$NetBSD: lst.c,v 1.71 2020/09/25 04:18:11 rillig Exp $");
+MAKE_RCSID("$NetBSD: lst.c,v 1.72 2020/09/26 17:15:20 rillig Exp $");
/* Allocate and initialize a list node.
*
@@ -290,8 +290,7 @@ Lst_Find(List *list, LstFindProc match,
/* Return the first node from the list, starting at the given node, for which
* the match function returns TRUE, or NULL if none of the nodes matches.
*
- * The start node may be NULL, in which case nothing is found. This allows
- * for passing Lst_First or LstNode_Next as the start node. */
+ * The start node may be NULL, in which case nothing is found. */
ListNode *
Lst_FindFrom(List *list, ListNode *node, LstFindProc match, const void *matchArgs)
{
Index: src/usr.bin/make/lst.h
diff -u src/usr.bin/make/lst.h:1.68 src/usr.bin/make/lst.h:1.69
--- src/usr.bin/make/lst.h:1.68 Fri Sep 25 15:54:50 2020
+++ src/usr.bin/make/lst.h Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.h,v 1.68 2020/09/25 15:54:50 rillig Exp $ */
+/* $NetBSD: lst.h,v 1.69 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -88,8 +88,8 @@ typedef struct List List;
typedef struct ListNode ListNode;
struct ListNode {
- ListNode *prev; /* previous element in list */
- ListNode *next; /* next in list */
+ ListNode *prev; /* previous node in list, or NULL */
+ ListNode *next; /* next node in list, or NULL */
uint8_t priv_useCount; /* Count of functions using the node.
* node may not be deleted until count
* goes to 0 */
@@ -175,12 +175,6 @@ void Lst_MoveAll(List *, List *);
/* Node-specific functions */
-/* Return the successor of the node, or NULL. */
-static inline MAKE_ATTR_UNUSED ListNode *
-LstNode_Next(ListNode *node) { return node->next; }
-/* Return the predecessor of the node, or NULL. */
-static inline MAKE_ATTR_UNUSED ListNode *
-LstNode_Prev(ListNode *node) { return node->prev; }
/* Return the datum of the node. Usually not NULL. */
static inline MAKE_ATTR_UNUSED void *
LstNode_Datum(ListNode *node) { return node->datum; }
Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.347 src/usr.bin/make/main.c:1.348
--- src/usr.bin/make/main.c:1.347 Sat Sep 26 16:55:58 2020
+++ src/usr.bin/make/main.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.347 2020/09/26 16:55:58 rillig Exp $ */
+/* $NetBSD: main.c,v 1.348 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -126,7 +126,7 @@
#endif
/* "@(#)main.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: main.c,v 1.347 2020/09/26 16:55:58 rillig Exp $");
+MAKE_RCSID("$NetBSD: main.c,v 1.348 2020/09/26 17:15:20 rillig Exp $");
#if defined(MAKE_NATIVE) && !defined(lint)
__COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993\
The Regents of the University of California. All rights reserved.");
@@ -869,8 +869,8 @@ doPrintVars(void)
else
expandVars = getBoolean(".MAKE.EXPAND_VARIABLES", FALSE);
- for (ln = Lst_First(variables); ln != NULL; ln = LstNode_Next(ln)) {
- char *var = LstNode_Datum(ln);
+ for (ln = variables->first; ln != NULL; ln = ln->next) {
+ const char *var = ln->datum;
const char *value;
char *p1;
Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.146 src/usr.bin/make/make.c:1.147
--- src/usr.bin/make/make.c:1.146 Sat Sep 26 16:55:58 2020
+++ src/usr.bin/make/make.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: make.c,v 1.146 2020/09/26 16:55:58 rillig Exp $ */
+/* $NetBSD: make.c,v 1.147 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -107,7 +107,7 @@
#include "job.h"
/* "@(#)make.c 8.1 (Berkeley) 6/6/93" */
-MAKE_RCSID("$NetBSD: make.c,v 1.146 2020/09/26 16:55:58 rillig Exp $");
+MAKE_RCSID("$NetBSD: make.c,v 1.147 2020/09/26 17:15:20 rillig Exp $");
static unsigned int checked = 1;/* Sequence # to detect recursion */
static GNodeList *toBeMade; /* The current fringe of the graph. These
@@ -1306,7 +1306,7 @@ add_wait_dependency(GNodeListNode *owln,
GNodeListNode *cln;
GNode *cn;
- for (cln = owln; (cn = LstNode_Datum(cln)) != wn; cln = LstNode_Next(cln)) {
+ for (cln = owln; (cn = cln->datum) != wn; cln = cln->next) {
if (DEBUG(MAKE))
fprintf(debug_file, ".WAIT: add dependency %s%s -> %s\n",
cn->name, cn->cohort_num, wn->name);
Index: src/usr.bin/make/meta.c
diff -u src/usr.bin/make/meta.c:1.119 src/usr.bin/make/meta.c:1.120
--- src/usr.bin/make/meta.c:1.119 Thu Sep 24 07:53:32 2020
+++ src/usr.bin/make/meta.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: meta.c,v 1.119 2020/09/24 07:53:32 rillig Exp $ */
+/* $NetBSD: meta.c,v 1.120 2020/09/26 17:15:20 rillig Exp $ */
/*
* Implement 'meta' mode.
@@ -1331,7 +1331,7 @@ meta_oodate(GNode *gn, Boolean oodate)
do {
char *tp;
nln = Lst_FindFrom(missingFiles,
- LstNode_Next(missingNode),
+ missingNode->next,
path_match, p);
tp = LstNode_Datum(missingNode);
Lst_Remove(missingFiles, missingNode);
@@ -1565,7 +1565,7 @@ meta_oodate(GNode *gn, Boolean oodate)
oodate = TRUE;
}
free(cmd);
- cmdNode = LstNode_Next(cmdNode);
+ cmdNode = cmdNode->next;
}
} else if (strcmp(buf, "CWD") == 0) {
/*
Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.168 src/usr.bin/make/suff.c:1.169
--- src/usr.bin/make/suff.c:1.168 Sat Sep 26 16:00:12 2020
+++ src/usr.bin/make/suff.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: suff.c,v 1.168 2020/09/26 16:00:12 rillig Exp $ */
+/* $NetBSD: suff.c,v 1.169 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -126,7 +126,7 @@
#include "dir.h"
/* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */
-MAKE_RCSID("$NetBSD: suff.c,v 1.168 2020/09/26 16:00:12 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.169 2020/09/26 17:15:20 rillig Exp $");
#define SUFF_DEBUG0(fmt) \
if (!DEBUG(SUFF)) (void) 0; else fprintf(debug_file, fmt)
@@ -487,8 +487,7 @@ SuffParseTransform(const char *str, Suff
if (srcLn == NULL) {
srcLn = Lst_Find(sufflist, SuffSuffIsPrefix, str);
} else {
- srcLn = Lst_FindFrom(sufflist, LstNode_Next(srcLn),
- SuffSuffIsPrefix, str);
+ srcLn = Lst_FindFrom(sufflist, srcLn->next, SuffSuffIsPrefix, str);
}
if (srcLn == NULL) {
/*
@@ -1332,7 +1331,7 @@ SuffExpandChildren(GNodeListNode *cln, G
Lst_Append(gn->parents, pgn);
pgn->unmade++;
/* Expand wildcards on new node */
- SuffExpandWildcards(LstNode_Prev(cln), pgn);
+ SuffExpandWildcards(cln->prev, pgn);
}
Lst_Free(members);
@@ -1503,8 +1502,8 @@ SuffApplyTransform(GNode *tGn, GNode *sG
/*
* Deal with wildcards and variables in any acquired sources
*/
- for (ln = ln != NULL ? LstNode_Next(ln) : NULL; ln != NULL; ln = nln) {
- nln = LstNode_Next(ln);
+ for (ln = ln != NULL ? ln->next : NULL; ln != NULL; ln = nln) {
+ nln = ln->next;
SuffExpandChildren(ln, tGn);
}
@@ -1609,7 +1608,7 @@ SuffFindArchiveDeps(GNode *gn, SrcList *
* that still contain variables or wildcards in their names.
*/
for (ln = Lst_First(gn->children); ln != NULL; ln = nln) {
- nln = LstNode_Next(ln);
+ nln = ln->next;
SuffExpandChildren(ln, gn);
}
@@ -1763,7 +1762,7 @@ SuffFindNormalDeps(GNode *gn, SrcList *s
/*
* Search from this suffix's successor...
*/
- ln = LstNode_Next(ln);
+ ln = ln->next;
}
}
@@ -1839,7 +1838,7 @@ SuffFindNormalDeps(GNode *gn, SrcList *s
* that still contain variables or wildcards in their names.
*/
for (ln = Lst_First(gn->children); ln != NULL; ln = nln) {
- nln = LstNode_Next(ln);
+ nln = ln->next;
SuffExpandChildren(ln, gn);
}
Index: src/usr.bin/make/targ.c
diff -u src/usr.bin/make/targ.c:1.100 src/usr.bin/make/targ.c:1.101
--- src/usr.bin/make/targ.c:1.100 Sat Sep 26 17:02:11 2020
+++ src/usr.bin/make/targ.c Sat Sep 26 17:15:20 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: targ.c,v 1.100 2020/09/26 17:02:11 rillig Exp $ */
+/* $NetBSD: targ.c,v 1.101 2020/09/26 17:15:20 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -121,7 +121,7 @@
#include "dir.h"
/* "@(#)targ.c 8.2 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: targ.c,v 1.100 2020/09/26 17:02:11 rillig Exp $");
+MAKE_RCSID("$NetBSD: targ.c,v 1.101 2020/09/26 17:15:20 rillig Exp $");
static GNodeList *allTargets; /* the list of all targets found so far */
#ifdef CLEANUP
@@ -344,8 +344,8 @@ PrintNodeNames(GNodeList *gnodes)
{
GNodeListNode *node;
- for (node = Lst_First(gnodes); node != NULL; node = LstNode_Next(node)) {
- GNode *gn = LstNode_Datum(node);
+ for (node = gnodes->first; node != NULL; node = node->next) {
+ GNode *gn = node->datum;
fprintf(debug_file, " %s%s", gn->name, gn->cohort_num);
}
}
@@ -363,8 +363,8 @@ PrintNodeNamesLine(const char *label, GN
void
Targ_PrintCmds(GNode *gn)
{
- StringListNode *node = Lst_First(gn->commands);
- for (; node != NULL; node = LstNode_Next(node)) {
+ StringListNode *node = gn->commands->first;
+ for (; node != NULL; node = node->next) {
const char *cmd = LstNode_Datum(node);
fprintf(debug_file, "\t%s\n", cmd);
}
@@ -562,14 +562,14 @@ Targ_Propagate(void)
{
GNodeListNode *pn, *cn;
- for (pn = Lst_First(allTargets); pn != NULL; pn = LstNode_Next(pn)) {
- GNode *pgn = LstNode_Datum(pn);
+ for (pn = allTargets->first; pn != NULL; pn = pn->next) {
+ GNode *pgn = pn->datum;
if (!(pgn->type & OP_DOUBLEDEP))
continue;
- for (cn = Lst_First(pgn->cohorts); cn != NULL; cn = LstNode_Next(cn)) {
- GNode *cgn = LstNode_Datum(cn);
+ for (cn = pgn->cohorts->first; cn != NULL; cn = cn->next) {
+ GNode *cgn = cn->datum;
cgn->type |= pgn->type & ~OP_OPMASK;
}