Sprucing up some of alloy.
This commit is contained in:
@@ -9,30 +9,21 @@
|
||||
|
||||
#include <alloy/memory.h>
|
||||
|
||||
#if !XE_LIKE_WIN32
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#include <poly/memory.h>
|
||||
|
||||
namespace alloy {
|
||||
|
||||
Memory::Memory() : membase_(0), reserve_address_(0) {
|
||||
// TODO(benvanik): move to poly.
|
||||
#if XE_LIKE_WIN32
|
||||
SYSTEM_INFO si;
|
||||
GetSystemInfo(&si);
|
||||
system_page_size_ = si.dwPageSize;
|
||||
#else
|
||||
system_page_size_ = getpagesize();
|
||||
#endif
|
||||
Memory::Memory() : membase_(nullptr), reserve_address_(0) {
|
||||
system_page_size_ = poly::page_size();
|
||||
}
|
||||
|
||||
Memory::~Memory() {}
|
||||
Memory::~Memory() = default;
|
||||
|
||||
int Memory::Initialize() { return 0; }
|
||||
|
||||
void Memory::Zero(uint64_t address, size_t size) {
|
||||
uint8_t* p = membase_ + address;
|
||||
XEIGNORE(xe_zero_memory(p, size, 0, size));
|
||||
memset(p, 0, size);
|
||||
}
|
||||
|
||||
void Memory::Fill(uint64_t address, size_t size, uint8_t value) {
|
||||
@@ -42,15 +33,15 @@ void Memory::Fill(uint64_t address, size_t size, uint8_t value) {
|
||||
|
||||
void Memory::Copy(uint64_t dest, uint64_t src, size_t size) {
|
||||
uint8_t* pdest = membase_ + dest;
|
||||
uint8_t* psrc = membase_ + src;
|
||||
XEIGNORE(xe_copy_memory(pdest, size, psrc, size));
|
||||
const uint8_t* psrc = membase_ + src;
|
||||
memcpy(pdest, psrc, size);
|
||||
}
|
||||
|
||||
uint64_t Memory::SearchAligned(uint64_t start, uint64_t end,
|
||||
const uint32_t* values, size_t value_count) {
|
||||
assert_true(start <= end);
|
||||
const uint32_t* p = (const uint32_t*)(membase_ + start);
|
||||
const uint32_t* pe = (const uint32_t*)(membase_ + end);
|
||||
const uint32_t* p = reinterpret_cast<const uint32_t*>(membase_ + start);
|
||||
const uint32_t* pe = reinterpret_cast<const uint32_t*>(membase_ + end);
|
||||
while (p != pe) {
|
||||
if (*p == values[0]) {
|
||||
const uint32_t* pc = p + 1;
|
||||
@@ -62,7 +53,7 @@ uint64_t Memory::SearchAligned(uint64_t start, uint64_t end,
|
||||
matched++;
|
||||
}
|
||||
if (matched == value_count) {
|
||||
return (uint64_t)((uint8_t*)p - membase_);
|
||||
return uint64_t(reinterpret_cast<const uint8_t*>(p) - membase_);
|
||||
}
|
||||
}
|
||||
p++;
|
||||
|
||||
Reference in New Issue
Block a user