[ros-diffs] [hpoussin] 31571: Divide by 10 memory requirements for rbuild, from 270MB to 20MB, by deleting unused objects

hpoussin at svn.reactos.org hpoussin at svn.reactos.org
Wed Jan 2 21:37:10 CET 2008


Author: hpoussin
Date: Wed Jan  2 23:37:09 2008
New Revision: 31571

URL: http://svn.reactos.org/svn/reactos?rev=31571&view=rev
Log:
Divide by 10 memory requirements for rbuild,
from 270MB to 20MB, by deleting unused objects

Modified:
    trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp

Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp?rev=31571&r1=31570&r2=31571&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Wed Jan  2 23:37:09 2008
@@ -412,17 +412,13 @@
 		for ( i = 0; i < compilationUnits.size (); i++ )
 		{
 			CompilationUnit& compilationUnit = *compilationUnits[i];
-			const FileLocation *objectFilename = GetObjectFilename ( compilationUnit.GetFilename (), importedModule, NULL );
+			const FileLocation *compilationName = compilationUnit.GetFilename ();
+			const FileLocation *objectFilename = GetObjectFilename ( compilationName, importedModule, NULL );
 			if ( GetExtension ( *objectFilename ) == ".h" )
-			{
 				dep += ssprintf ( " $(%s_HEADERS)", importedModule.name.c_str () );
-				break;
-			}
-		    if ( GetExtension ( *objectFilename ) == ".rc" )
-		    {
-			    dep += ssprintf ( " $(%s_MCHEADERS)", importedModule.name.c_str () );
-			    break;
-		    }
+			else if ( GetExtension ( *objectFilename ) == ".rc" )
+				dep += ssprintf ( " $(%s_MCHEADERS)", importedModule.name.c_str () );
+			delete compilationName;
 		}
 	}
 	else
@@ -487,9 +483,10 @@
 	{
 		if ( includeGeneratedFiles || !compilationUnits[i]->IsGeneratedFile () )
 		{
-			const FileLocation* sourceFileLocation = GetActualSourceFilename (
-				compilationUnits[i]->GetFilename () );
+			const FileLocation *compilationName = compilationUnits[i]->GetFilename ();
+			const FileLocation* sourceFileLocation = GetActualSourceFilename ( compilationName );
 			list.push_back ( *sourceFileLocation );
+			delete compilationName;
 			delete sourceFileLocation;
 		}
 	}
@@ -510,9 +507,10 @@
 			CompilationUnit& compilationUnit = *compilationUnits[j];
 			if ( includeGeneratedFiles || !compilationUnit.IsGeneratedFile () )
 			{
-				const FileLocation* sourceFileLocation = GetActualSourceFilename (
-					compilationUnit.GetFilename () );
+				const FileLocation *compilationName = compilationUnit.GetFilename ();
+				const FileLocation* sourceFileLocation = GetActualSourceFilename ( compilationName );
 				list.push_back ( *sourceFileLocation );
+				delete compilationName;
 				delete sourceFileLocation;
 			}
 		}
@@ -672,8 +670,10 @@
 	{
 		if ( objectFilenames.size () > 0 )
 			objectFilenames += " ";
-		const FileLocation *object_file = GetObjectFilename ( compilationUnits[i]->GetFilename (), module, NULL );
+		const FileLocation *compilationName = compilationUnits[i]->GetFilename ();
+		const FileLocation *object_file = GetObjectFilename ( compilationName, module, NULL );
 		objectFilenames += backend->GetFullName ( *object_file );
+		delete compilationName;
 		delete object_file;
 	}
 	return objectFilenames;
@@ -1021,11 +1021,13 @@
 		for ( i = 0; i < compilationUnits.size(); i++ )
 		{
 			CompilationUnit& compilationUnit = *compilationUnits[i];
+			const FileLocation *compilationName = compilationUnit.GetFilename ();
 			fprintf (
 				fMakefile,
 				"%s%s",
 				( i%10 == 9 ? " \\\n\t" : " " ),
-				backend->GetFullName ( *compilationUnit.GetFilename () ).c_str () );
+				backend->GetFullName ( *compilationName ).c_str () );
+			delete compilationName;
 		}
 		fprintf ( fMakefile, "\n" );
 	}
@@ -1060,11 +1062,13 @@
 	GetModuleSpecificCompilationUnits ( sourceCompilationUnits );
 	for ( i = 0; i < sourceCompilationUnits.size (); i++ )
 	{
+		const FileLocation *compilationName = sourceCompilationUnits[i]->GetFilename ();
 		fprintf (
 			fMakefile,
 			"%s += %s\n",
 			sourcesMacro.c_str(),
-			backend->GetFullName ( *sourceCompilationUnits[i]->GetFilename () ).c_str () );
+			backend->GetFullName ( *compilationName ).c_str () );
+		delete compilationName;
 	}
 	CleanupCompilationUnitVector ( sourceCompilationUnits );
 }
@@ -1087,13 +1091,15 @@
 			CompilationUnit& compilationUnit = *compilationUnits[i];
 			if ( compilationUnit.IsFirstFile () )
 			{
-				const FileLocation *object_file = GetObjectFilename ( compilationUnit.GetFilename (), module, NULL );
+				const FileLocation *compilationName = compilationUnit.GetFilename ();
+				const FileLocation *object_file = GetObjectFilename ( compilationName, module, NULL );
 				fprintf ( fMakefile,
 					"%s := %s $(%s)\n",
 					objectsMacro.c_str(),
 					backend->GetFullName ( *object_file ).c_str (),
 					objectsMacro.c_str() );
 				delete object_file;
+				delete compilationName;
 			}
 		}
 		fprintf (
@@ -1106,7 +1112,8 @@
 			CompilationUnit& compilationUnit = *compilationUnits[i];
 			if ( !compilationUnit.IsFirstFile () )
 			{
-				const FileLocation *objectFilename = GetObjectFilename ( compilationUnit.GetFilename (), module, NULL );
+				const FileLocation *compilationName = compilationUnit.GetFilename ();
+				const FileLocation *objectFilename = GetObjectFilename ( compilationName, module, NULL );
 				if ( GetExtension ( *objectFilename ) == ".h" )
 					headers.push_back ( objectFilename );
 				else if ( GetExtension ( *objectFilename ) == ".rc" )
@@ -1124,6 +1131,7 @@
 						backend->GetFullName ( *objectFilename ).c_str () );
 					delete objectFilename;
 				}
+				delete compilationName;
 			}
 		}
 		fprintf ( fMakefile, "\n" );
@@ -1215,13 +1223,15 @@
 	GetModuleSpecificCompilationUnits ( sourceCompilationUnits );
 	for ( i = 0; i < sourceCompilationUnits.size (); i++ )
 	{
-		const FileLocation *object_file = GetObjectFilename ( sourceCompilationUnits[i]->GetFilename (), module, NULL );
+		const FileLocation *compilationName = sourceCompilationUnits[i]->GetFilename ();
+		const FileLocation *object_file = GetObjectFilename ( compilationName, module, NULL );
 		fprintf (
 			fMakefile,
 			"%s += %s\n",
 			objectsMacro.c_str(),
 			backend->GetFullName ( *object_file ).c_str () );
 		delete object_file;
+		delete compilationName;
 	}
 	CleanupCompilationUnitVector ( sourceCompilationUnits );
 }
@@ -1508,6 +1518,7 @@
 	          backend->GetFullName ( *sourceFile ).c_str () );
 
 	delete generatedHeaderFilename;
+	delete sourceFile;
 }
 
 /* caller needs to delete the returned object */
@@ -1562,6 +1573,8 @@
 	          widlflagsMacro.c_str (),
 	          backend->GetFullName ( EmbeddedTypeLibFilename ).c_str(),
 	          backend->GetFullName ( *sourceFile ).c_str () );
+
+	delete sourceFile;
 }
 
 void
@@ -1600,6 +1613,7 @@
 	          backend->GetFullName ( *sourceFile ).c_str () );
 
 	delete generatedHeaderFilename;
+	delete sourceFile;
 }
 
 void
@@ -1631,6 +1645,7 @@
 	          backend->GetFullName ( *sourceFile ).c_str () );
 
 	delete generatedHeader;
+	delete sourceFile;
 }
 
 void
@@ -1671,7 +1686,6 @@
 		                     GetCompilationUnitDependencies ( compilationUnit ) + extraDependencies,
 		                     cc,
 		                     cflagsMacro );
-		return;
 	}
 	else if ( extension == ".cc" || extension == ".CC" ||
 	          extension == ".cpp" || extension == ".CPP" ||
@@ -1681,31 +1695,26 @@
 		                     GetCompilationUnitDependencies ( compilationUnit ) + extraDependencies,
 		                     cppc,
 		                     cflagsMacro );
-		return;
 	}
 	else if ( extension == ".s" || extension == ".S" )
 	{
 		GenerateGccAssemblerCommand ( sourceFile,
 		                              cc,
 		                              cflagsMacro );
-		return;
 	}
 	else if ( extension == ".asm" || extension == ".ASM" )
 	{
 		GenerateNasmCommand ( sourceFile,
 		                      nasmflagsMacro );
-		return;
 	}
 	else if ( extension == ".rc" || extension == ".RC" )
 	{
 		GenerateWindresCommand ( sourceFile,
 		                         windresflagsMacro );
-		return;
 	}
 	else if ( extension == ".mc" || extension == ".MC" )
 	{
 		GenerateWmcCommands ( sourceFile );
-		return;
 	}
 	else if ( extension == ".spec" || extension == ".SPEC" )
 	{
@@ -1714,7 +1723,6 @@
 		                     extraDependencies,
 		                     cc,
 		                     cflagsMacro );
-		return;
 	}
 	else if ( extension == ".idl" || extension == ".IDL" )
 	{
@@ -1727,14 +1735,17 @@
 			                     cc,
 			                     cflagsMacro );
 		}
-		return;
-	}
-
-	throw InvalidOperationException ( __FILE__,
-	                                  __LINE__,
-	                                  "Unsupported filename extension '%s' in file '%s'",
-	                                  extension.c_str (),
-	                                  backend->GetFullName ( *sourceFile ).c_str () );
+	}
+	else
+	{
+		throw InvalidOperationException ( __FILE__,
+		                                  __LINE__,
+		                                  "Unsupported filename extension '%s' in file '%s'",
+		                                  extension.c_str (),
+		                                  backend->GetFullName ( *sourceFile ).c_str () );
+	}
+
+	delete sourceFile;
 }
 
 void
@@ -1822,9 +1833,11 @@
 	for ( size_t i = 0; i < data.compilationUnits.size (); i++ )
 	{
 		CompilationUnit& compilationUnit = *data.compilationUnits[i];
-		const FileLocation *object_file = GetObjectFilename ( compilationUnit.GetFilename (), module, NULL );
+		const FileLocation *compilationName = compilationUnit.GetFilename ();
+		const FileLocation *object_file = GetObjectFilename ( compilationName, module, NULL );
 		objectFiles.push_back ( *object_file );
 		delete object_file;
+		delete compilationName;
 	}
 }
 
@@ -2010,17 +2023,13 @@
 	for ( i = 0; i < compilationUnits.size (); i++ )
 	{
 		CompilationUnit& compilationUnit = *compilationUnits[i];
-		const FileLocation *objectFilename = GetObjectFilename ( compilationUnit.GetFilename (), module, NULL );
+		const FileLocation *compilationName = compilationUnit.GetFilename ();
+		const FileLocation *objectFilename = GetObjectFilename ( compilationName, module, NULL );
 		if ( GetExtension ( *objectFilename ) == ".h" )
-		{
 			moduleDependencies += ssprintf ( " $(%s_HEADERS)", module.name.c_str () );
-			break;
-		}
-		if ( GetExtension ( *objectFilename ) == ".rc" )
-		{
+		else if ( GetExtension ( *objectFilename ) == ".rc" )
 			moduleDependencies += ssprintf ( " $(%s_RESOURCES)", module.name.c_str () );
-			break;
-		}
+		delete compilationName;
 		delete objectFilename;
 	}
 
@@ -2272,6 +2281,7 @@
 						delete header;
 					}
 				}
+				delete sourceFile;
 			}
 		}
 	}
@@ -2313,6 +2323,7 @@
 			string extension = GetExtension ( *sourceFile );
 			if ( extension == ".spec" || extension == ".SPEC" )
 				GetSpecObjectDependencies ( s, sourceFile );
+			delete sourceFile;
 		}
 	}
 	if ( s.size () > 0 )
@@ -2555,22 +2566,23 @@
 
 	dependencies.push_back ( "$(PSDK_TARGET) $(psdk_HEADERS)" );
 
-    /* Check if any dependent library relays on the generated headers */
+	/* Check if any dependent library relays on the generated headers */
 	for ( size_t i = 0; i < module.project.modules.size (); i++ )
 	{
 		const Module& m = *module.project.modules[i];
-	    for ( size_t j = 0; j < m.non_if_data.compilationUnits.size (); j++ )
-	    {
+		for ( size_t j = 0; j < m.non_if_data.compilationUnits.size (); j++ )
+		{
 			CompilationUnit& compilationUnit = *m.non_if_data.compilationUnits[j];
 			const FileLocation* sourceFile = compilationUnit.GetFilename ();
 			string extension = GetExtension ( *sourceFile );
-            if (extension == ".mc" || extension == ".MC" )
-            {
-                string dependency = ssprintf ( " $(%s_MCHEADERS)", m.name.c_str () );
-                dependencies.push_back ( dependency );
-            }
-        }
-    }
+			if (extension == ".mc" || extension == ".MC" )
+			{
+				string dependency = ssprintf ( " $(%s_MCHEADERS)", m.name.c_str () );
+				dependencies.push_back ( dependency );
+			}
+			delete sourceFile;
+		}
+	}
 }
 
 void
@@ -2747,6 +2759,7 @@
 			if ( ( module.type == RpcServer ) || ( module.type == RpcClient ) )
 				GetWidlObjectDependencies ( dependencies, sourceFile );
 		}
+		delete sourceFile;
 	}
 }
 




More information about the Ros-diffs mailing list