Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): reduce memory allocation in CmdOpts.ma...



details:   https://anonhg.NetBSD.org/src/rev/9492cc295502
branches:  trunk
changeset: 946480:9492cc295502
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Nov 28 23:32:22 2020 +0000

description:
make(1): reduce memory allocation in CmdOpts.makefiles

diffstat:

 usr.bin/make/main.c |  22 +++++++++++++---------
 usr.bin/make/make.h |   4 ++--
 2 files changed, 15 insertions(+), 11 deletions(-)

diffs (90 lines):

diff -r 0a7eb88b9bee -r 9492cc295502 usr.bin/make/main.c
--- a/usr.bin/make/main.c       Sat Nov 28 23:22:14 2020 +0000
+++ b/usr.bin/make/main.c       Sat Nov 28 23:32:22 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.483 2020/11/28 18:55:52 rillig Exp $        */
+/*     $NetBSD: main.c,v 1.484 2020/11/28 23:32:22 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -109,7 +109,7 @@
 #include "trace.h"
 
 /*     "@(#)main.c     8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: main.c,v 1.483 2020/11/28 18:55:52 rillig Exp $");
+MAKE_RCSID("$NetBSD: main.c,v 1.484 2020/11/28 23:32:22 rillig Exp $");
 #if defined(MAKE_NATIVE) && !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 "
            "The Regents of the University of California.  "
@@ -528,7 +528,7 @@
                Var_Append(MAKEFLAGS, "-e", VAR_GLOBAL);
                break;
        case 'f':
-               Lst_Append(opts.makefiles, bmake_strdup(argvalue));
+               Lst_Append(&opts.makefiles, bmake_strdup(argvalue));
                break;
        case 'i':
                opts.ignoreErrors = TRUE;
@@ -1126,7 +1126,7 @@
        opts.lint = FALSE;
        opts.debugVflag = FALSE;
        opts.checkEnvFirst = FALSE;
-       opts.makefiles = Lst_New();
+       Lst_Init(&opts.makefiles);
        opts.ignoreErrors = FALSE;      /* Pay attention to non-zero returns */
        opts.maxJobs = DEFMAXLOCAL;     /* Set default local max concurrency */
        opts.keepgoing = FALSE;         /* Stop on error */
@@ -1321,9 +1321,9 @@
         * since these makefiles do not come from the command line.  They
         * also have different semantics in that only the first file that
         * is found is processed.  See ReadAllMakefiles. */
-       (void)str2Lst_Append(opts.makefiles, prefs);
+       (void)str2Lst_Append(&opts.makefiles, prefs);
 
-       for (ln = opts.makefiles->first; ln != NULL; ln = ln->next)
+       for (ln = opts.makefiles.first; ln != NULL; ln = ln->next)
                if (ReadMakefile(ln->datum) == 0)
                        break;
 
@@ -1531,8 +1531,8 @@
        if (!opts.noBuiltins)
                ReadBuiltinRules();
 
-       if (!Lst_IsEmpty(opts.makefiles))
-               ReadAllMakefiles(opts.makefiles);
+       if (!Lst_IsEmpty(&opts.makefiles))
+               ReadAllMakefiles(&opts.makefiles);
        else
                ReadFirstDefaultMakefile();
 }
@@ -1622,7 +1622,11 @@
 {
 #ifdef CLEANUP
        Lst_Destroy(opts.variables, free);
-       Lst_Free(opts.makefiles);       /* don't free, may be used in GNodes */
+       /*
+        * Don't free the actual strings from opts.makefiles, they may be
+        * used in GNodes.
+        */
+       Lst_Done(&opts.makefiles);
        Lst_Destroy(opts.create, free);
 #endif
 
diff -r 0a7eb88b9bee -r 9492cc295502 usr.bin/make/make.h
--- a/usr.bin/make/make.h       Sat Nov 28 23:22:14 2020 +0000
+++ b/usr.bin/make/make.h       Sat Nov 28 23:32:22 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: make.h,v 1.225 2020/11/28 19:22:32 rillig Exp $        */
+/*     $NetBSD: make.h,v 1.226 2020/11/28 23:32:22 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -635,7 +635,7 @@
        Boolean checkEnvFirst;
 
        /* -f: the makefiles to read */
-       StringList *makefiles;
+       StringList makefiles;
 
        /* -i: if true, ignore all errors from shell commands */
        Boolean ignoreErrors;



Home | Main Index | Thread Index | Old Index