git: 9front

Download patch

ref: e1b4c849ae4c7acea2a8a1e9063392c8bcc4fee8
parent: 1ef78810f0ccb53ab05a6f48939723a7c4b73df1
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Apr 10 21:26:36 EDT 2020

backout the gethunk() again, as that breaks the assemblers

the assemblers share gethunk() cc/macbody but are compiled
without compat.c, so calls such as getenv() trigger malloc()
which does its own sbrk() calls, breaking the continuity
of the hunk.

so this change needs another revision. until then, this is
backed out.

--- a/sys/src/cmd/1l/obj.c
+++ b/sys/src/cmd/1l/obj.c
@@ -1099,11 +1099,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/2l/obj.c
+++ b/sys/src/cmd/2l/obj.c
@@ -1121,11 +1121,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/5l/obj.c
+++ b/sys/src/cmd/5l/obj.c
@@ -1152,11 +1152,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/6l/obj.c
+++ b/sys/src/cmd/6l/obj.c
@@ -1222,11 +1222,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/7l/obj.c
+++ b/sys/src/cmd/7l/obj.c
@@ -1178,11 +1178,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/8l/obj.c
+++ b/sys/src/cmd/8l/obj.c
@@ -1196,11 +1196,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--- a/sys/src/cmd/cc/macbody
+++ b/sys/src/cmd/cc/macbody
@@ -862,10 +862,7 @@
 		yyerror("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
--- a/sys/src/cmd/kl/l.h
+++ b/sys/src/cmd/kl/l.h
@@ -241,7 +241,7 @@
 EXTERN	long	staticgen;
 EXTERN	Prog*	textp;
 EXTERN	long	textsize;
-EXTERN	uintptr	thunk;
+EXTERN	uintptr	tothunk;
 EXTERN	char	xcmp[C_NCLASS][C_NCLASS];
 EXTERN	int	version;
 EXTERN	Prog	zprg;
--- a/sys/src/cmd/kl/obj.c
+++ b/sys/src/cmd/kl/obj.c
@@ -194,7 +194,7 @@
 out:
 	if(debug['v']) {
 		Bprint(&bso, "%5.2f cpu time\n", cputime());
-		Bprint(&bso, "%zud memory used\n", thunk);
+		Bprint(&bso, "%zud memory used\n", tothunk);
 		Bprint(&bso, "%d sizeof adr\n", sizeof(Adr));
 		Bprint(&bso, "%d sizeof prog\n", sizeof(Prog));
 	}
@@ -983,9 +983,9 @@
 	long nh;
 
 	nh = NHUNK;
-	if(thunk >= 5L*NHUNK) {
+	if(tothunk >= 5L*NHUNK) {
 		nh = 5L*NHUNK;
-		if(thunk >= 25L*NHUNK)
+		if(tothunk >= 25L*NHUNK)
 			nh = 25L*NHUNK;
 	}
 	h = mysbrk(nh);
@@ -993,12 +993,10 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
-	thunk += nh;
+
+	hunk = h;
+	nhunk = nh;
+	tothunk += nh;
 }
 
 void
--- a/sys/src/cmd/ql/l.h
+++ b/sys/src/cmd/ql/l.h
@@ -234,7 +234,7 @@
 EXTERN	long	staticgen;
 EXTERN	Prog*	textp;
 EXTERN	long	textsize;
-EXTERN	uintptr	thunk;
+EXTERN	uintptr	tothunk;
 EXTERN	char	xcmp[C_NCLASS][C_NCLASS];
 EXTERN	int	version;
 EXTERN	Prog	zprg;
--- a/sys/src/cmd/ql/obj.c
+++ b/sys/src/cmd/ql/obj.c
@@ -273,7 +273,7 @@
 out:
 	if(debug['v']) {
 		Bprint(&bso, "%5.2f cpu time\n", cputime());
-		Bprint(&bso, "%zud memory used\n", thunk);
+		Bprint(&bso, "%zud memory used\n", tothunk);
 		Bprint(&bso, "%d sizeof adr\n", sizeof(Adr));
 		Bprint(&bso, "%d sizeof prog\n", sizeof(Prog));
 	}
@@ -1117,9 +1117,9 @@
 	long nh;
 
 	nh = NHUNK;
-	if(thunk >= 5L*NHUNK) {
+	if(tothunk >= 5L*NHUNK) {
 		nh = 5L*NHUNK;
-		if(thunk >= 25L*NHUNK)
+		if(tothunk >= 25L*NHUNK)
 			nh = 25L*NHUNK;
 	}
 	h = mysbrk(nh);
@@ -1127,12 +1127,10 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
-	thunk += nh;
+
+	hunk = h;
+	nhunk = nh;
+	tothunk += nh;
 }
 
 void
--- a/sys/src/cmd/vl/obj.c
+++ b/sys/src/cmd/vl/obj.c
@@ -1075,11 +1075,8 @@
 		diag("out of memory");
 		errorexit();
 	}
-	if(nhunk == 0)
-		hunk = h;
-	else
-		nh += (h - hunk) - nhunk;
-	nhunk += nh;
+	hunk = h;
+	nhunk = nh;
 	thunk += nh;
 }
 
--