summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Core/PageFaultTest.cpp
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2016-06-24 10:43:46 +0200
committerPierre Bourdon <delroth@gmail.com>2016-06-24 10:43:46 +0200
commit3570c7f03a2aa90aa634f96c0af1969af610f14d (patch)
tree4252e03c0e853ba7cffe022937698c854ad0eaa9 /Source/UnitTests/Core/PageFaultTest.cpp
parent2115e8a4a6814e32107b5205ff5c95bbd3c6e99c (diff)
Reformat all the things. Have fun with merge conflicts.
Diffstat (limited to 'Source/UnitTests/Core/PageFaultTest.cpp')
-rw-r--r--Source/UnitTests/Core/PageFaultTest.cpp89
1 files changed, 44 insertions, 45 deletions
diff --git a/Source/UnitTests/Core/PageFaultTest.cpp b/Source/UnitTests/Core/PageFaultTest.cpp
index 1dc0b4752d..63990f7a6f 100644
--- a/Source/UnitTests/Core/PageFaultTest.cpp
+++ b/Source/UnitTests/Core/PageFaultTest.cpp
@@ -10,70 +10,69 @@
#include "Core/PowerPC/JitCommon/JitBase.h"
// include order is important
-#include <gtest/gtest.h> // NOLINT
+#include <gtest/gtest.h> // NOLINT
enum
{
#ifdef _WIN32
- PAGE_GRAN = 0x10000
+ PAGE_GRAN = 0x10000
#else
- PAGE_GRAN = 0x1000
+ PAGE_GRAN = 0x1000
#endif
};
class PageFaultFakeJit : public JitBase
{
public:
- // CPUCoreBase methods
- void Init() override {}
- void Shutdown() override {}
- void ClearCache() override {}
- void Run() override {}
- void SingleStep() override {}
- const char *GetName() override { return nullptr; }
+ // CPUCoreBase methods
+ void Init() override {}
+ void Shutdown() override {}
+ void ClearCache() override {}
+ void Run() override {}
+ void SingleStep() override {}
+ const char* GetName() override { return nullptr; }
+ // JitBase methods
+ JitBaseBlockCache* GetBlockCache() override { return nullptr; }
+ void Jit(u32 em_address) override {}
+ const CommonAsmRoutinesBase* GetAsmRoutines() override { return nullptr; }
+ virtual bool HandleFault(uintptr_t access_address, SContext* ctx) override
+ {
+ m_pre_unprotect_time = std::chrono::high_resolution_clock::now();
+ UnWriteProtectMemory(m_data, PAGE_GRAN, /*allowExecute*/ false);
+ m_post_unprotect_time = std::chrono::high_resolution_clock::now();
+ return true;
+ }
- // JitBase methods
- JitBaseBlockCache *GetBlockCache() override { return nullptr; }
- void Jit(u32 em_address) override {}
- const CommonAsmRoutinesBase *GetAsmRoutines() override { return nullptr; }
-
- virtual bool HandleFault(uintptr_t access_address, SContext* ctx) override
- {
- m_pre_unprotect_time = std::chrono::high_resolution_clock::now();
- UnWriteProtectMemory(m_data, PAGE_GRAN, /*allowExecute*/ false);
- m_post_unprotect_time = std::chrono::high_resolution_clock::now();
- return true;
- }
-
- void* m_data;
- std::chrono::time_point<std::chrono::high_resolution_clock>
- m_pre_unprotect_time, m_post_unprotect_time;
+ void* m_data;
+ std::chrono::time_point<std::chrono::high_resolution_clock> m_pre_unprotect_time,
+ m_post_unprotect_time;
};
-
TEST(PageFault, PageFault)
{
- EMM::InstallExceptionHandler();
- void* data = AllocateMemoryPages(PAGE_GRAN);
- EXPECT_NE(data, nullptr);
- WriteProtectMemory(data, PAGE_GRAN, false);
+ EMM::InstallExceptionHandler();
+ void* data = AllocateMemoryPages(PAGE_GRAN);
+ EXPECT_NE(data, nullptr);
+ WriteProtectMemory(data, PAGE_GRAN, false);
- PageFaultFakeJit pfjit;
- jit = &pfjit;
- pfjit.m_data = data;
+ PageFaultFakeJit pfjit;
+ jit = &pfjit;
+ pfjit.m_data = data;
- auto start = std::chrono::high_resolution_clock::now();
- *(volatile int*) data = 5;
- auto end = std::chrono::high_resolution_clock::now();
+ auto start = std::chrono::high_resolution_clock::now();
+ *(volatile int*)data = 5;
+ auto end = std::chrono::high_resolution_clock::now();
- #define AS_NS(diff) ((unsigned long long)std::chrono::duration_cast<std::chrono::nanoseconds>(diff).count())
+#define AS_NS(diff) \
+ ((unsigned long long)std::chrono::duration_cast<std::chrono::nanoseconds>(diff).count())
- EMM::UninstallExceptionHandler();
- jit = nullptr;
+ EMM::UninstallExceptionHandler();
+ jit = nullptr;
- printf("page fault timing:\n");
- printf("start->HandleFault %llu ns\n", AS_NS(pfjit.m_pre_unprotect_time - start));
- printf("UnWriteProtectMemory %llu ns\n", AS_NS(pfjit.m_post_unprotect_time - pfjit.m_pre_unprotect_time));
- printf("HandleFault->end %llu ns\n", AS_NS(end - pfjit.m_post_unprotect_time));
- printf("total %llu ns\n", AS_NS(end - start));
+ printf("page fault timing:\n");
+ printf("start->HandleFault %llu ns\n", AS_NS(pfjit.m_pre_unprotect_time - start));
+ printf("UnWriteProtectMemory %llu ns\n",
+ AS_NS(pfjit.m_post_unprotect_time - pfjit.m_pre_unprotect_time));
+ printf("HandleFault->end %llu ns\n", AS_NS(end - pfjit.m_post_unprotect_time));
+ printf("total %llu ns\n", AS_NS(end - start));
}