diff dmd/Module.d @ 176:fa9a71a9f5a8

Moved all the mutable globals to Global
author korDen
date Sun, 10 Oct 2010 05:22:45 +0400
parents af724d3510d7
children e3afd1303184
line wrap: on
line diff
--- a/dmd/Module.d	Sun Oct 10 03:48:06 2010 +0400
+++ b/dmd/Module.d	Sun Oct 10 05:22:45 2010 +0400
@@ -937,17 +937,17 @@
 
 		//printf("Module.genobjfile(multiobj = %d) %s\n", multiobj, toChars());
 
-		lastmname = srcfile.toChars();	/// global mutation
+		auto lastmname = global.lastmname = srcfile.toChars();
 
 		obj_initfile(toStringz(lastmname), null, toStringz(toPrettyChars()));
 
-		eictor = null;
-		ictorlocalgot = null;
-		ector = null;
-		ectorgates.setDim(0);
-		edtor = null;
-		etest = null;
-		dtorcount = 0;
+		global.eictor = null;
+		global.ictorlocalgot = null;
+		global.ector = null;
+		global.ectorgates.setDim(0);
+		global.edtor = null;
+		global.etest = null;
+		global.dtorcount = 0;
 
 		if (doppelganger)
 		{
@@ -1039,7 +1039,7 @@
 
 			sictor = toSymbolX("__modictor", SC.SCglobal, t, "FZv");
 			cstate.CSpsymtab = &sictor.Sfunc.Flocsym;
-			localgot = ictorlocalgot;
+			global.localgot = global.ictorlocalgot;
 			elem* e;
 
 			e = el_params(el_ptr(cov), el_long(TYM.TYuint, numlines),
@@ -1047,12 +1047,12 @@
 					  toEfilename(),
 					  null);
 			e = el_bin(OPER.OPcall, TYM.TYvoid, el_var(rtlsym[RTLSYM.RTLSYM_DCOVER]), e);
-			eictor = el_combine(e, eictor);
-			ictorlocalgot = localgot;
+			global.eictor = el_combine(e, global.eictor);
+			global.ictorlocalgot = global.localgot;
 		}
 
 		// If coverage / static constructor / destructor / unittest calls
-		if (eictor || ector || ectorgates.dim || edtor || etest)
+		if (global.eictor || global.ector || global.ectorgates.dim || global.edtor || global.etest)
 		{
 			/* t will be the type of the functions generated:
 			 *	extern (C) void func();
@@ -1065,36 +1065,36 @@
 
 			enum moddeco = "FZv";
 
-			if (eictor)
+			if (global.eictor)
 			{
-				localgot = ictorlocalgot;
+				global.localgot = global.ictorlocalgot;
 
 				block* b = block_calloc();
 				b.BC = BC.BCret;
-				b.Belem = eictor;
+				b.Belem = global.eictor;
 				sictor.Sfunc.Fstartblock = b;
 				writefunc(sictor);
 			}
 
-			if (ector || ectorgates.dim)
+			if (global.ector || global.ectorgates.dim)
 			{
-				localgot = null;
+				global.localgot = null;
 				sctor = toSymbolX("__modctor", SC.SCglobal, t, moddeco);
 				cstate.CSpsymtab = &sctor.Sfunc.Flocsym;
 
-				for (int i = 0; i < ectorgates.dim; i++)
+				for (int i = 0; i < global.ectorgates.dim; i++)
 				{
-					StaticDtorDeclaration f = cast(StaticDtorDeclaration)ectorgates.data[i];
+					StaticDtorDeclaration f = cast(StaticDtorDeclaration)global.ectorgates.data[i];
 
 					Symbol* s = f.vgate.toSymbol();
 					elem* e = el_var(s);
 					e = el_bin(OPER.OPaddass, TYM.TYint, e, el_long(TYM.TYint, 1));
-					ector = el_combine(ector, e);
+					global.ector = el_combine(global.ector, e);
 				}
 
 				block* b = block_calloc();
 				b.BC = BC.BCret;
-				b.Belem = ector;
+				b.Belem = global.ector;
 				sctor.Sfunc.Fstartblock = b;
 				writefunc(sctor);
 version (STATICCTOR) {
@@ -1102,26 +1102,26 @@
 }
 			}
 
-			if (edtor)
+			if (global.edtor)
 			{
-				localgot = null;
+				global.localgot = null;
 				sdtor = toSymbolX("__moddtor", SC.SCglobal, t, moddeco);
 
 				block* b = block_calloc();
 				b.BC = BC.BCret;
-				b.Belem = edtor;
+				b.Belem = global.edtor;
 				sdtor.Sfunc.Fstartblock = b;
 				writefunc(sdtor);
 			}
 
-			if (etest)
+			if (global.etest)
 			{
-				localgot = null;
+				global.localgot = null;
 				stest = toSymbolX("__modtest", SC.SCglobal, t, moddeco);
 
 				block* b = block_calloc();
 				b.BC = BC.BCret;
-				b.Belem = etest;
+				b.Belem = global.etest;
 				stest.Sfunc.Fstartblock = b;
 				writefunc(stest);
 			}
@@ -1156,7 +1156,7 @@
 				elem* elinnum;
 				elem* efilename;
 
-				localgot = null;
+				global.localgot = null;
 
 				// Call dassert(filename, line)
 				// Get sole parameter, linnum