Browse Source

Add StompAlloc workspace alloc option

Brian Fiete 3 years ago
parent
commit
a77a95b71b

+ 6 - 6
BeefRT/BeefDbg/BeefDbg.vcxproj

@@ -582,7 +582,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BFRT_DYNAMIC;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BFRT_DYNAMIC;BF_STOMP_EXPORT;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>
       </DisableSpecificWarnings>
@@ -607,7 +607,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BF_STOMP_EXPORT;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>
       </DisableSpecificWarnings>
@@ -633,7 +633,7 @@
       </PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BF_STOMP_EXPORT;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>
       </DisableSpecificWarnings>
@@ -720,7 +720,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BFRT_DYNAMIC;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BFRT_DYNAMIC;;BF_STOMP_EXPORT;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -742,7 +742,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BF_STOMP_EXPORT;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -764,7 +764,7 @@
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>BFRTDBG;BP_DISABLED;BF_NO_BFAPP;BF_STOMP_EXPORT;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalIncludeDirectories>.;../;../..;../../BeefySysLib/third_party;../../BeefySysLib;../../BeefySysLib/platform/win;../gperftools/src;../gperftools/src/windows</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

+ 11 - 3
BeefRT/rt/StompAlloc.cpp

@@ -1,4 +1,4 @@
-#ifdef BF_USE_STOMP_ALLOC
+#if defined BF_USE_STOMP_ALLOC || defined BF_STOMP_EXPORT
 
 #include "BeefySysLib/Common.h"
 
@@ -166,7 +166,11 @@ public:
 static std::list<SA_AllocRange> gAllocRanges;
 static CritSect gSA_CritSect;
 
-extern "C" void* StompAlloc(intptr size)
+extern "C" 
+#ifdef BF_STOMP_EXPORT
+__declspec(dllexport)
+#endif
+void* StompAlloc(intptr size)
 {
 	AutoCrit autoCrit(gSA_CritSect);
 
@@ -184,7 +188,11 @@ extern "C" void* StompAlloc(intptr size)
 	}		
 }
 
-extern "C" void StompFree(void* addr)
+extern "C" 
+#ifdef BF_STOMP_EXPORT
+__declspec(dllexport)
+#endif
+void StompFree(void* addr)
 {	
 	AutoCrit autoCrit(gSA_CritSect);
 

+ 11 - 2
BeefRT/rt/StompAlloc.h

@@ -1,4 +1,13 @@
 #pragma once
 
-extern "C" void* StompAlloc(intptr size);
-extern "C" void StompFree(void* addr);
+extern "C" 
+#ifdef BF_STOMP_EXPORT
+__declspec(dllexport)
+#endif
+void* StompAlloc(intptr size);
+
+extern "C" 
+#ifdef BF_STOMP_EXPORT
+__declspec(dllexport)
+#endif
+void StompFree(void* addr);

+ 1 - 1
IDE/src/BuildContext.bf

@@ -740,7 +740,7 @@ namespace IDE
 				outRt.Append(dynName ? ".dll" : ".lib");
 			}
 
-			if ((workspaceOptions.mEnableObjectDebugFlags) || (workspaceOptions.mAllocType == .Debug))
+			if ((workspaceOptions.mEnableObjectDebugFlags) || (workspaceOptions.mAllocType == .Debug) || (workspaceOptions.mAllocType == .Stomp))
 			{
 				outDbg.Append("Beef", IDEApp.sRTVersionStr, "Dbg");
 				outDbg.Append((Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4) ? "32" : "64");

+ 3 - 0
IDE/src/Compiler/BfCompiler.bf

@@ -745,6 +745,9 @@ namespace IDE.Compiler
 				optionFlags |= .DebugAlloc;
 				mallocLinkName = "";
 				freeLinkName = "";
+			case .Stomp:
+				mallocLinkName = "StompAlloc";
+				freeLinkName = "StompFree";
 			case .CRT:
 				mallocLinkName = "malloc";
 				freeLinkName = "free";

+ 1 - 0
IDE/src/Workspace.bf

@@ -215,6 +215,7 @@ namespace IDE
 		public enum AllocType
 		{
 			Debug,
+			Stomp,
 			CRT,
 			JEMalloc,
 			TCMalloc,

+ 7 - 1
IDE/src/ui/WorkspaceProperties.bf

@@ -733,7 +733,8 @@ namespace IDE.ui
 			AddPropertiesItem(category, "Preprocessor Macros", "mPreprocessorMacros");
 			AddPropertiesItem(category, "Incremental Build", "mIncrementalBuild");
             AddPropertiesItem(category, "Intermediate Type", "mIntermediateType");
-			var (allocCategory, allocPropEntry) = AddPropertiesItem(category, "Memory Allocator", "mAllocType");
+			var (allocCategory, allocPropEntry) = AddPropertiesItem(category, "Memory Allocator", "mAllocType",
+				scope String[] ("Debug", "Stomp (Debug)", "CRT", "JEMalloc", "TCMalloc"));
 			var (mallocItem, mallocPropEntry) = AddPropertiesItem(allocCategory, "Malloc", "mAllocMalloc");
 			var (freeItem, freePropEntry) = AddPropertiesItem(allocCategory, "Free", "mAllocFree");
 			allocPropEntry.mOnUpdate.Add(new () =>
@@ -758,6 +759,11 @@ namespace IDE.ui
 							mallocSubItem.Label = "";
 							freeSubItem.Label = "";
 						}
+						else if (allocType == .Stomp)
+						{
+							mallocSubItem.Label = "StompAlloc";
+							freeSubItem.Label = "StompFree";
+						}
 						else if (allocType == .CRT)
 						{
 							mallocSubItem.Label = "malloc";