common: Remove code_block.h
We use dynarmic, so this is unued. Anything else we need will likely use Xbyak, so this header isn't necessary any more.
This commit is contained in:
		| @@ -34,7 +34,6 @@ add_library(common STATIC | ||||
|     chunk_file.h | ||||
|     cityhash.cpp | ||||
|     cityhash.h | ||||
|     code_block.h | ||||
|     color.h | ||||
|     common_funcs.h | ||||
|     common_paths.h | ||||
|   | ||||
| @@ -1,85 +0,0 @@ | ||||
| // Copyright 2013 Dolphin Emulator Project | ||||
| // Licensed under GPLv2 | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <cstddef> | ||||
| #include "common/common_types.h" | ||||
| #include "common/memory_util.h" | ||||
|  | ||||
| // Everything that needs to generate code should inherit from this. | ||||
| // You get memory management for free, plus, you can use all emitter functions without | ||||
| // having to prefix them with gen-> or something similar. | ||||
| // Example implementation: | ||||
| // class JIT : public CodeBlock<ARMXEmitter> {} | ||||
| template <class T> | ||||
| class CodeBlock : public T, NonCopyable { | ||||
| private: | ||||
|     // A privately used function to set the executable RAM space to something invalid. | ||||
|     // For debugging usefulness it should be used to set the RAM to a host specific breakpoint | ||||
|     // instruction | ||||
|     virtual void PoisonMemory() = 0; | ||||
|  | ||||
| protected: | ||||
|     u8* region; | ||||
|     size_t region_size; | ||||
|  | ||||
| public: | ||||
|     CodeBlock() : region(nullptr), region_size(0) {} | ||||
|     virtual ~CodeBlock() { | ||||
|         if (region) | ||||
|             FreeCodeSpace(); | ||||
|     } | ||||
|  | ||||
|     // Call this before you generate any code. | ||||
|     void AllocCodeSpace(int size) { | ||||
|         region_size = size; | ||||
|         region = (u8*)AllocateExecutableMemory(region_size); | ||||
|         T::SetCodePtr(region); | ||||
|     } | ||||
|  | ||||
|     // Always clear code space with breakpoints, so that if someone accidentally executes | ||||
|     // uninitialized, it just breaks into the debugger. | ||||
|     void ClearCodeSpace() { | ||||
|         PoisonMemory(); | ||||
|         ResetCodePtr(); | ||||
|     } | ||||
|  | ||||
|     // Call this when shutting down. Don't rely on the destructor, even though it'll do the job. | ||||
|     void FreeCodeSpace() { | ||||
| #ifdef __SYMBIAN32__ | ||||
|         ResetExecutableMemory(region); | ||||
| #else | ||||
|         FreeMemoryPages(region, region_size); | ||||
| #endif | ||||
|         region = nullptr; | ||||
|         region_size = 0; | ||||
|     } | ||||
|  | ||||
|     bool IsInSpace(const u8* ptr) { | ||||
|         return (ptr >= region) && (ptr < (region + region_size)); | ||||
|     } | ||||
|  | ||||
|     // Cannot currently be undone. Will write protect the entire code region. | ||||
|     // Start over if you need to change the code (call FreeCodeSpace(), AllocCodeSpace()). | ||||
|     void WriteProtect() { | ||||
|         WriteProtectMemory(region, region_size, true); | ||||
|     } | ||||
|  | ||||
|     void ResetCodePtr() { | ||||
|         T::SetCodePtr(region); | ||||
|     } | ||||
|  | ||||
|     size_t GetSpaceLeft() const { | ||||
|         return region_size - (T::GetCodePtr() - region); | ||||
|     } | ||||
|  | ||||
|     u8* GetBasePtr() { | ||||
|         return region; | ||||
|     } | ||||
|  | ||||
|     size_t GetOffset(const u8* ptr) const { | ||||
|         return ptr - region; | ||||
|     } | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user
	 Lioncash
					Lioncash