OSDN Git Service

Use custom executable memory allocator.
authorNicolas Capens <capn@google.com>
Thu, 6 Sep 2018 19:34:46 +0000 (15:34 -0400)
committerNicolas Capens <nicolascapens@google.com>
Thu, 6 Sep 2018 20:08:19 +0000 (20:08 +0000)
On Linux this enables using named memory maps to assist profiling.

Change-Id: I96c36cf7b892237f4f7ed921d01f33454a9398f0
Reviewed-on: https://swiftshader-review.googlesource.com/20508
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
src/Reactor/BUILD.gn
src/Reactor/Subzero.vcxproj
src/Reactor/SubzeroReactor.cpp

index dca98e4..97446fc 100644 (file)
@@ -281,6 +281,10 @@ swiftshader_source_set("swiftshader_reactor") {
       ":swiftshader_subzero_common_private_config",
       ":swiftshader_reactor_with_subzero_private_config",
     ]
+
+    include_dirs = [
+      "..",
+    ]
   } else {
     deps += [ "../../third_party/LLVM:swiftshader_llvm" ]
 
index 688e839..51e0a62 100644 (file)
@@ -87,7 +87,7 @@
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>SZTARGET=X8632;ALLOW_DUMP=0;ALLOW_TIMERS=0;ALLOW_LLVM_CL=0;ALLOW_LLVM_IR=0;ALLOW_LLVM_IR_AS_INPUT=0;ALLOW_MINIMAL_BUILD=0;ALLOW_WASM=0;ICE_THREAD_LOCAL_HACK=0;SUBZERO_USE_MICROSOFT_ABI;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include;$(SolutionDir)src\</AdditionalIncludeDirectories>\r
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
       <ForcedIncludeFiles>src/IceTypes.h</ForcedIncludeFiles>\r
       <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
       <Optimization>Disabled</Optimization>\r
       <PreprocessorDefinitions>SZTARGET=X8664;ALLOW_DUMP=0;ALLOW_TIMERS=0;ALLOW_LLVM_CL=0;ALLOW_LLVM_IR=0;ALLOW_LLVM_IR_AS_INPUT=0;ALLOW_MINIMAL_BUILD=0;ALLOW_WASM=0;ICE_THREAD_LOCAL_HACK=0;SUBZERO_USE_MICROSOFT_ABI;WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include;$(SolutionDir)src\</AdditionalIncludeDirectories>\r
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
       <ForcedIncludeFiles>src/IceTypes.h</ForcedIncludeFiles>\r
       <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <PreprocessorDefinitions>SZTARGET=X8632;ALLOW_DUMP=0;ALLOW_TIMERS=0;ALLOW_LLVM_CL=0;ALLOW_LLVM_IR=0;ALLOW_LLVM_IR_AS_INPUT=0;ALLOW_MINIMAL_BUILD=0;ALLOW_WASM=0;ICE_THREAD_LOCAL_HACK=0;SUBZERO_USE_MICROSOFT_ABI;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include;$(SolutionDir)src\</AdditionalIncludeDirectories>\r
       <ForcedIncludeFiles>src/IceTypes.h</ForcedIncludeFiles>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
       <IntrinsicFunctions>true</IntrinsicFunctions>\r
       <PreprocessorDefinitions>SZTARGET=X8664;ALLOW_DUMP=0;ALLOW_TIMERS=0;ALLOW_LLVM_CL=0;ALLOW_LLVM_IR=0;ALLOW_LLVM_IR_AS_INPUT=0;ALLOW_MINIMAL_BUILD=0;ALLOW_WASM=0;ICE_THREAD_LOCAL_HACK=0;SUBZERO_USE_MICROSOFT_ABI;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <AdditionalUsingDirectories>%(AdditionalUsingDirectories)</AdditionalUsingDirectories>\r
-      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>$(SolutionDir)third_party\subzero;$(SolutionDir)third_party\llvm-subzero\include;$(SolutionDir)third_party\llvm-subzero\build\Windows\include;$(SolutionDir)third_party\subzero\pnacl-llvm\include;$(SolutionDir)src\</AdditionalIncludeDirectories>\r
       <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>\r
       <OmitFramePointers>true</OmitFramePointers>\r
       <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>\r
index e499496..3d49658 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "Optimizer.hpp"
 
+#include "Common/Memory.hpp"
+
 #include "src/IceTypes.h"
 #include "src/IceCfg.h"
 #include "src/IceELFStreamer.h"
@@ -423,20 +425,12 @@ namespace sw
 
                T *allocate(size_type n)
                {
-                       #if defined(_WIN32)
-                               return (T*)VirtualAlloc(NULL, sizeof(T) * n, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
-                       #else
-                               return (T*)mmap(nullptr, sizeof(T) * n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-                       #endif
+                       return (T*)allocateExecutable(sizeof(T) * n);
                }
 
                void deallocate(T *p, size_type n)
                {
-                       #if defined(_WIN32)
-                               VirtualFree(p, 0, MEM_RELEASE);
-                       #else
-                               munmap(p, sizeof(T) * n);
-                       #endif
+                       deallocateExecutable(p, sizeof(T) * n);
                }
        };