summaryrefslogtreecommitdiffstats
path: root/src/common/code_block.h
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2016-09-18 02:38:01 +0200
committerEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2016-09-18 02:38:01 +0200
commitdc8479928c5aee4c6ad6fe4f59006fb604cee701 (patch)
tree569a7f13128450bbab973236615587ff00bced5f /src/common/code_block.h
parentTravis: Import Dolphin’s clang-format hook. (diff)
downloadyuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar.gz
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar.bz2
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar.lz
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar.xz
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.tar.zst
yuzu-dc8479928c5aee4c6ad6fe4f59006fb604cee701.zip
Diffstat (limited to 'src/common/code_block.h')
-rw-r--r--src/common/code_block.h42
1 files changed, 20 insertions, 22 deletions
diff --git a/src/common/code_block.h b/src/common/code_block.h
index 2fa4a0090..58696737e 100644
--- a/src/common/code_block.h
+++ b/src/common/code_block.h
@@ -14,24 +14,28 @@
// having to prefix them with gen-> or something similar.
// Example implementation:
// class JIT : public CodeBlock<ARMXEmitter> {}
-template<class T> class CodeBlock : public T, NonCopyable
-{
+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
+ // For debugging usefulness it should be used to set the RAM to a host specific breakpoint
+ // instruction
virtual void PoisonMemory() = 0;
protected:
- u8 *region;
+ u8* region;
size_t region_size;
public:
- CodeBlock() : region(nullptr), region_size(0) {}
- virtual ~CodeBlock() { if (region) FreeCodeSpace(); }
+ CodeBlock() : region(nullptr), region_size(0) {
+ }
+ virtual ~CodeBlock() {
+ if (region)
+ FreeCodeSpace();
+ }
// Call this before you generate any code.
- void AllocCodeSpace(int size)
- {
+ void AllocCodeSpace(int size) {
region_size = size;
region = (u8*)AllocateExecutableMemory(region_size);
T::SetCodePtr(region);
@@ -39,15 +43,13 @@ public:
// Always clear code space with breakpoints, so that if someone accidentally executes
// uninitialized, it just breaks into the debugger.
- void ClearCodeSpace()
- {
+ void ClearCodeSpace() {
PoisonMemory();
ResetCodePtr();
}
// Call this when shutting down. Don't rely on the destructor, even though it'll do the job.
- void FreeCodeSpace()
- {
+ void FreeCodeSpace() {
#ifdef __SYMBIAN32__
ResetExecutableMemory(region);
#else
@@ -57,33 +59,29 @@ public:
region_size = 0;
}
- bool IsInSpace(const u8 *ptr)
- {
+ 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()
- {
+ void WriteProtect() {
WriteProtectMemory(region, region_size, true);
}
- void ResetCodePtr()
- {
+ void ResetCodePtr() {
T::SetCodePtr(region);
}
- size_t GetSpaceLeft() const
- {
+ size_t GetSpaceLeft() const {
return region_size - (T::GetCodePtr() - region);
}
- u8 *GetBasePtr() {
+ u8* GetBasePtr() {
return region;
}
- size_t GetOffset(const u8 *ptr) const {
+ size_t GetOffset(const u8* ptr) const {
return ptr - region;
}
};