Module Name:    src
Committed By:   rillig
Date:           Sun Apr 28 15:10:19 UTC 2024

Modified Files:
        src/usr.bin/make: buf.c buf.h var.c

Log Message:
make: don't reallocate memory after evaluating an expression

When an expression is evaluated, the resulting text is short-lived in
almost all cases.  In particular, the compaction neither affects the
target names nor the global variable values, which are the prime
candidates for permanent memory usage.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/usr.bin/make/buf.c
cvs rdiff -u -r1.49 -r1.50 src/usr.bin/make/buf.h
cvs rdiff -u -r1.1107 -r1.1108 src/usr.bin/make/var.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/buf.c
diff -u src/usr.bin/make/buf.c:1.57 src/usr.bin/make/buf.c:1.58
--- src/usr.bin/make/buf.c:1.57	Tue Dec 19 19:33:39 2023
+++ src/usr.bin/make/buf.c	Sun Apr 28 15:10:19 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: buf.c,v 1.57 2023/12/19 19:33:39 rillig Exp $	*/
+/*	$NetBSD: buf.c,v 1.58 2024/04/28 15:10:19 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -75,7 +75,7 @@
 #include "make.h"
 
 /*	"@(#)buf.c	8.1 (Berkeley) 6/6/93"	*/
-MAKE_RCSID("$NetBSD: buf.c,v 1.57 2023/12/19 19:33:39 rillig Exp $");
+MAKE_RCSID("$NetBSD: buf.c,v 1.58 2024/04/28 15:10:19 rillig Exp $");
 
 /* Make space in the buffer for adding at least 16 more bytes. */
 void
@@ -187,30 +187,3 @@ Buf_DoneData(Buffer *buf)
 
 	return data;
 }
-
-#ifndef BUF_COMPACT_LIMIT
-# define BUF_COMPACT_LIMIT 128	/* worthwhile saving */
-#endif
-
-/*
- * Return the data from the buffer.
- * Leave the buffer itself in an indeterminate state.
- *
- * If the buffer size is much greater than its content,
- * a new buffer will be allocated and the old one freed.
- */
-char *
-Buf_DoneDataCompact(Buffer *buf)
-{
-#if BUF_COMPACT_LIMIT > 0
-	if (buf->cap - buf->len >= BUF_COMPACT_LIMIT) {
-		/* We trust realloc to be smart */
-		char *data = bmake_realloc(buf->data, buf->len + 1);
-		buf->data = NULL;
-		data[buf->len] = '\0';	/* XXX: unnecessary */
-		Buf_Done(buf);
-		return data;
-	}
-#endif
-	return Buf_DoneData(buf);
-}

Index: src/usr.bin/make/buf.h
diff -u src/usr.bin/make/buf.h:1.49 src/usr.bin/make/buf.h:1.50
--- src/usr.bin/make/buf.h:1.49	Tue Dec 19 19:33:39 2023
+++ src/usr.bin/make/buf.h	Sun Apr 28 15:10:19 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: buf.h,v 1.49 2023/12/19 19:33:39 rillig Exp $	*/
+/*	$NetBSD: buf.h,v 1.50 2024/04/28 15:10:19 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -124,6 +124,5 @@ void Buf_Init(Buffer *);
 void Buf_InitSize(Buffer *, size_t);
 void Buf_Done(Buffer *);
 char *Buf_DoneData(Buffer *) MAKE_ATTR_USE;
-char *Buf_DoneDataCompact(Buffer *) MAKE_ATTR_USE;
 
 #endif

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.1107 src/usr.bin/make/var.c:1.1108
--- src/usr.bin/make/var.c:1.1107	Sat Apr 27 21:26:23 2024
+++ src/usr.bin/make/var.c	Sun Apr 28 15:10:19 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.1107 2024/04/27 21:26:23 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.1108 2024/04/28 15:10:19 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -132,7 +132,7 @@
 #include "metachar.h"
 
 /*	"@(#)var.c	8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.1107 2024/04/27 21:26:23 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.1108 2024/04/28 15:10:19 rillig Exp $");
 
 /*
  * Variables are defined using one of the VAR=value assignments.  Their
@@ -4731,7 +4731,7 @@ Var_Subst(const char *str, GNode *scope,
 			VarSubstPlain(&p, &res);
 	}
 
-	return Buf_DoneDataCompact(&res);
+	return Buf_DoneData(&res);
 }
 
 void

Reply via email to