Module Name:    src
Committed By:   rillig
Date:           Sat Nov 28 23:22:15 UTC 2020

Modified Files:
        src/usr.bin/make: dir.c

Log Message:
make(1): reduce memory allocation in OpenDirs


To generate a diff of this commit:
cvs rdiff -u -r1.226 -r1.227 src/usr.bin/make/dir.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.226 src/usr.bin/make/dir.c:1.227
--- src/usr.bin/make/dir.c:1.226	Sat Nov 28 22:59:53 2020
+++ src/usr.bin/make/dir.c	Sat Nov 28 23:22:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.226 2020/11/28 22:59:53 rillig Exp $	*/
+/*	$NetBSD: dir.c,v 1.227 2020/11/28 23:22:14 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -136,7 +136,7 @@
 #include "job.h"
 
 /*	"@(#)dir.c	8.2 (Berkeley) 1/2/94"	*/
-MAKE_RCSID("$NetBSD: dir.c,v 1.226 2020/11/28 22:59:53 rillig Exp $");
+MAKE_RCSID("$NetBSD: dir.c,v 1.227 2020/11/28 23:22:14 rillig Exp $");
 
 #define DIR_DEBUG0(text) DEBUG0(DIR, text)
 #define DIR_DEBUG1(fmt, arg1) DEBUG1(DIR, fmt, arg1)
@@ -218,14 +218,14 @@ SearchPath *dirSearchPath;	/* main searc
 
 /* A list of cached directories, with fast lookup by directory name. */
 typedef struct OpenDirs {
-	CachedDirList *list;
+	CachedDirList list;
 	HashTable /* of CachedDirListNode */ table;
 } OpenDirs;
 
 static void
 OpenDirs_Init(OpenDirs *odirs)
 {
-	odirs->list = Lst_New();
+	Lst_Init(&odirs->list);
 	HashTable_Init(&odirs->table);
 }
 
@@ -235,14 +235,14 @@ static void Dir_Destroy(CachedDir *);
 static void
 OpenDirs_Done(OpenDirs *odirs)
 {
-	CachedDirListNode *ln = odirs->list->first;
+	CachedDirListNode *ln = odirs->list.first;
 	while (ln != NULL) {
 		CachedDirListNode *next = ln->next;
 		CachedDir *dir = ln->datum;
 		Dir_Destroy(dir);	/* removes the dir from odirs->list */
 		ln = next;
 	}
-	Lst_Free(odirs->list);
+	Lst_Done(&odirs->list);
 	HashTable_Done(&odirs->table);
 }
 #endif
@@ -259,8 +259,8 @@ OpenDirs_Add(OpenDirs *odirs, CachedDir 
 {
 	if (HashTable_FindEntry(&odirs->table, cdir->name) != NULL)
 		return;
-	Lst_Append(odirs->list, cdir);
-	HashTable_Set(&odirs->table, cdir->name, odirs->list->last);
+	Lst_Append(&odirs->list, cdir);
+	HashTable_Set(&odirs->table, cdir->name, odirs->list.last);
 }
 
 static void
@@ -272,7 +272,7 @@ OpenDirs_Remove(OpenDirs *odirs, const c
 		return;
 	ln = HashEntry_Get(he);
 	HashTable_DeleteEntry(&odirs->table, he);
-	Lst_Remove(odirs->list, ln);
+	Lst_Remove(&odirs->list, ln);
 }
 
 static OpenDirs openDirs;	/* all cached directories */
@@ -1610,7 +1610,7 @@ Dir_PrintDirectories(void)
 	    percentage(hits, hits + bigmisses + nearmisses));
 	debug_printf("# %-20s referenced\thits\n", "directory");
 
-	for (ln = openDirs.list->first; ln != NULL; ln = ln->next) {
+	for (ln = openDirs.list.first; ln != NULL; ln = ln->next) {
 		CachedDir *dir = ln->datum;
 		debug_printf("# %-20s %10d\t%4d\n",
 			     dir->name, dir->refCount, dir->hits);

Reply via email to