block_of_code: Rename alloc to AllocateFromCodeSpace
This commit is contained in:
parent
96e46ba6b5
commit
74a95ea51e
3 changed files with 10 additions and 6 deletions
|
@ -227,7 +227,7 @@ void BlockOfCode::nop(size_t size) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void* BlockOfCode::alloc(size_t alloc_size) {
|
void* BlockOfCode::AllocateFromCodeSpace(size_t alloc_size) {
|
||||||
if (size_ + alloc_size >= maxSize_) {
|
if (size_ + alloc_size >= maxSize_) {
|
||||||
throw Xbyak::Error(Xbyak::ERR_CODE_IS_TOO_BIG);
|
throw Xbyak::Error(Xbyak::ERR_CODE_IS_TOO_BIG);
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,7 +129,11 @@ public:
|
||||||
void int3() { db(0xCC); }
|
void int3() { db(0xCC); }
|
||||||
void nop(size_t size = 1);
|
void nop(size_t size = 1);
|
||||||
|
|
||||||
void* alloc(size_t size);
|
/// Allocate memory of `size` bytes from the same block of memory the code is in.
|
||||||
|
/// This is useful for objects that need to be placed close to or within code.
|
||||||
|
/// The lifetime of this memory is the same as the code around it.
|
||||||
|
void* AllocateFromCodeSpace(size_t size);
|
||||||
|
|
||||||
void SetCodePtr(CodePtr code_ptr);
|
void SetCodePtr(CodePtr code_ptr);
|
||||||
void EnsurePatchLocationSize(CodePtr begin, size_t size);
|
void EnsurePatchLocationSize(CodePtr begin, size_t size);
|
||||||
|
|
||||||
|
|
|
@ -177,7 +177,7 @@ void BlockOfCode::UnwindHandler::Register(BlockOfCode* code) {
|
||||||
const auto prolog_info = GetPrologueInformation();
|
const auto prolog_info = GetPrologueInformation();
|
||||||
|
|
||||||
code->align(16);
|
code->align(16);
|
||||||
UNWIND_INFO* unwind_info = static_cast<UNWIND_INFO*>(code->alloc(sizeof(UNWIND_INFO)));
|
UNWIND_INFO* unwind_info = static_cast<UNWIND_INFO*>(code->AllocateFromCodeSpace(sizeof(UNWIND_INFO)));
|
||||||
unwind_info->Version = 1;
|
unwind_info->Version = 1;
|
||||||
unwind_info->Flags = 0; // No special exception handling required.
|
unwind_info->Flags = 0; // No special exception handling required.
|
||||||
unwind_info->SizeOfProlog = prolog_info.prolog_size;
|
unwind_info->SizeOfProlog = prolog_info.prolog_size;
|
||||||
|
@ -186,11 +186,11 @@ void BlockOfCode::UnwindHandler::Register(BlockOfCode* code) {
|
||||||
unwind_info->FrameOffset = 0; // Unused because FrameRegister == 0
|
unwind_info->FrameOffset = 0; // Unused because FrameRegister == 0
|
||||||
// UNWIND_INFO::UnwindCode field:
|
// UNWIND_INFO::UnwindCode field:
|
||||||
const size_t size_of_unwind_code = sizeof(UNWIND_CODE) * prolog_info.unwind_code.size();
|
const size_t size_of_unwind_code = sizeof(UNWIND_CODE) * prolog_info.unwind_code.size();
|
||||||
UNWIND_CODE* unwind_code = static_cast<UNWIND_CODE*>(code->alloc(size_of_unwind_code));
|
UNWIND_CODE* unwind_code = static_cast<UNWIND_CODE*>(code->AllocateFromCodeSpace(size_of_unwind_code));
|
||||||
memcpy(unwind_code, prolog_info.unwind_code.data(), size_of_unwind_code);
|
memcpy(unwind_code, prolog_info.unwind_code.data(), size_of_unwind_code);
|
||||||
|
|
||||||
code->align(16);
|
code->align(16);
|
||||||
RUNTIME_FUNCTION* rfuncs = static_cast<RUNTIME_FUNCTION*>(code->alloc(sizeof(RUNTIME_FUNCTION)));
|
RUNTIME_FUNCTION* rfuncs = static_cast<RUNTIME_FUNCTION*>(code->AllocateFromCodeSpace(sizeof(RUNTIME_FUNCTION)));
|
||||||
rfuncs->BeginAddress = static_cast<DWORD>(reinterpret_cast<u8*>(code->run_code) - code->getCode());
|
rfuncs->BeginAddress = static_cast<DWORD>(reinterpret_cast<u8*>(code->run_code) - code->getCode());
|
||||||
rfuncs->EndAddress = static_cast<DWORD>(code->maxSize_);
|
rfuncs->EndAddress = static_cast<DWORD>(code->maxSize_);
|
||||||
rfuncs->UnwindData = static_cast<DWORD>(reinterpret_cast<u8*>(unwind_info) - code->getCode());
|
rfuncs->UnwindData = static_cast<DWORD>(reinterpret_cast<u8*>(unwind_info) - code->getCode());
|
||||||
|
|
Loading…
Reference in a new issue