cmTarget: Re-arrange data layout.

Size with GNU libstdc++-5.1 goes from 840 bytes to 808 bytes.
This commit is contained in:
Stephen Kelly 2015-06-06 09:44:47 +02:00
parent 647488570b
commit 41fef23b9b

View File

@ -642,12 +642,6 @@ public:
private: private:
bool HandleLocationPropertyPolicy(cmMakefile* context) const; bool HandleLocationPropertyPolicy(cmMakefile* context) const;
// The set of include directories that are marked as system include
// directories.
std::set<std::string> SystemIncludeDirectories;
std::vector<std::pair<TLLSignature, cmListFileContext> > TLLCommands;
#if defined(_WIN32) && !defined(__CYGWIN__) #if defined(_WIN32) && !defined(__CYGWIN__)
/** /**
* A list of direct dependencies. Use in conjunction with DependencyMap. * A list of direct dependencies. Use in conjunction with DependencyMap.
@ -742,40 +736,48 @@ private:
void GetSourceFiles(std::vector<std::string> &files, void GetSourceFiles(std::vector<std::string> &files,
const std::string& config) const; const std::string& config) const;
private: private:
std::string Name; mutable cmPropertyMap Properties;
std::vector<cmCustomCommand> PreBuildCommands; std::set<std::string> SystemIncludeDirectories;
std::vector<cmCustomCommand> PreLinkCommands;
std::vector<cmCustomCommand> PostBuildCommands;
TargetType TargetTypeValue;
LinkLibraryVectorType PrevLinkedLibraries;
#if defined(_WIN32) && !defined(__CYGWIN__)
LinkLibraryVectorType LinkLibrariesForVS6;
bool LinkLibrariesForVS6Analyzed;
#endif
std::vector<std::string> LinkDirectories;
std::set<std::string> LinkDirectoriesEmmitted; std::set<std::string> LinkDirectoriesEmmitted;
bool HaveInstallRule; std::set<std::string> Utilities;
mutable std::set<std::string> LinkImplicitNullProperties;
std::map<std::string, cmListFileBacktrace> UtilityBacktraces;
mutable std::map<std::string, bool> DebugCompatiblePropertiesDone;
mutable std::map<std::string, std::string> MaxLanguageStandards;
cmPolicies::PolicyMap PolicyMap;
std::string Name;
std::string InstallPath; std::string InstallPath;
std::string RuntimeInstallPath; std::string RuntimeInstallPath;
mutable std::string ExportMacro; mutable std::string ExportMacro;
std::set<std::string> Utilities; std::vector<std::string> LinkDirectories;
std::map<std::string, cmListFileBacktrace> UtilityBacktraces; std::vector<cmCustomCommand> PreBuildCommands;
bool RecordDependencies; std::vector<cmCustomCommand> PreLinkCommands;
mutable cmPropertyMap Properties; std::vector<cmCustomCommand> PostBuildCommands;
std::vector<std::pair<TLLSignature, cmListFileContext> > TLLCommands;
LinkLibraryVectorType PrevLinkedLibraries;
LinkLibraryVectorType OriginalLinkLibraries; LinkLibraryVectorType OriginalLinkLibraries;
#if defined(_WIN32) && !defined(__CYGWIN__)
LinkLibraryVectorType LinkLibrariesForVS6;
#endif
cmMakefile* Makefile;
cmTargetInternalPointer Internal;
TargetType TargetTypeValue;
bool HaveInstallRule;
bool RecordDependencies;
bool DLLPlatform; bool DLLPlatform;
bool IsAndroid; bool IsAndroid;
bool IsApple; bool IsApple;
bool IsImportedTarget; bool IsImportedTarget;
bool BuildInterfaceIncludesAppended;
mutable bool DebugIncludesDone; mutable bool DebugIncludesDone;
mutable std::map<std::string, bool> DebugCompatiblePropertiesDone;
mutable bool DebugCompileOptionsDone; mutable bool DebugCompileOptionsDone;
mutable bool DebugCompileDefinitionsDone; mutable bool DebugCompileDefinitionsDone;
mutable bool DebugSourcesDone; mutable bool DebugSourcesDone;
mutable bool DebugCompileFeaturesDone; mutable bool DebugCompileFeaturesDone;
mutable std::set<std::string> LinkImplicitNullProperties; mutable bool LinkImplementationLanguageIsContextDependent;
mutable std::map<std::string, std::string> MaxLanguageStandards; #if defined(_WIN32) && !defined(__CYGWIN__)
bool BuildInterfaceIncludesAppended; bool LinkLibrariesForVS6Analyzed;
#endif
// Cache target output paths for each configuration. // Cache target output paths for each configuration.
struct OutputInfo; struct OutputInfo;
@ -825,16 +827,10 @@ private:
void ProcessSourceExpression(std::string const& expr); void ProcessSourceExpression(std::string const& expr);
// The cmMakefile instance that owns this target. This should
// always be set.
cmMakefile* Makefile;
cmPolicies::PolicyMap PolicyMap;
// Internal representation details. // Internal representation details.
friend class cmTargetInternals; friend class cmTargetInternals;
friend class cmGeneratorTarget; friend class cmGeneratorTarget;
friend class cmTargetTraceDependencies; friend class cmTargetTraceDependencies;
cmTargetInternalPointer Internal;
void ComputeVersionedName(std::string& vName, void ComputeVersionedName(std::string& vName,
std::string const& prefix, std::string const& prefix,
@ -842,8 +838,6 @@ private:
std::string const& suffix, std::string const& suffix,
std::string const& name, std::string const& name,
const char* version) const; const char* version) const;
mutable bool LinkImplementationLanguageIsContextDependent;
}; };
#ifdef CMAKE_BUILD_WITH_CMAKE #ifdef CMAKE_BUILD_WITH_CMAKE