Ver Fonte

Correctly call JitCompiler destructor
Fix cmake/ccache

tevador há 7 anos atrás
pai
commit
c5c891ff8e
3 ficheiros alterados com 15 adições e 6 exclusões
  1. 3 0
      CMakeLists.txt
  2. 11 0
      src/dataset.cpp
  3. 1 6
      src/dataset.hpp

+ 3 - 0
CMakeLists.txt

@@ -64,3 +64,6 @@ target_link_libraries(randomx
   PRIVATE
     ${CMAKE_THREAD_LIBS_INIT})
 set_property(TARGET randomx PROPERTY POSITION_INDEPENDENT_CODE ON)
+
+# cheat because cmake and ccache hate each other
+set_property(SOURCE src/jit_compiler_x86_static.S PROPERTY LANGUAGE C)

+ 11 - 0
src/dataset.cpp

@@ -47,6 +47,17 @@ static_assert(ARGON2_BLOCK_SIZE == randomx::ArgonBlockSize, "Unpexpected value o
 
 namespace randomx {
 
+	template<class Allocator>
+	void deallocCache(randomx_cache* cache) {
+		if (cache->memory != nullptr)
+			Allocator::freeMemory(cache->memory, CacheSize);
+		if (cache->jit != nullptr)
+			delete cache->jit;
+	}
+
+	template void deallocCache<DefaultAllocator>(randomx_cache* cache);
+	template void deallocCache<LargePageAllocator>(randomx_cache* cache);
+
 	void initCache(randomx_cache* cache, const void* key, size_t keySize) {
 		uint32_t memory_blocks, segment_length;
 		argon2_instance_t instance;

+ 1 - 6
src/dataset.hpp

@@ -58,12 +58,7 @@ namespace randomx {
 	}
 
 	template<class Allocator>
-	void deallocCache(randomx_cache* cache) {
-		if(cache->memory != nullptr)
-			Allocator::freeMemory(cache->memory, CacheSize);
-		if (cache->jit != nullptr)
-			delete cache->jit;
-	}
+	void deallocCache(randomx_cache* cache);
 
 	void initCache(randomx_cache*, const void*, size_t);
 	void initCacheCompile(randomx_cache*, const void*, size_t);