externals: Update Xbyak to v5.51
Xbyak now supports multi-byte nops
This commit is contained in:
parent
1613846ab0
commit
568b52d4ba
3 changed files with 1 additions and 41 deletions
2
externals/xbyak
vendored
2
externals/xbyak
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit d62f6fb28f3c7b3fafb201b2ce65b653b547659c
|
Subproject commit b633c68b53654154699e2780449c47d3049c4420
|
|
@ -207,45 +207,6 @@ void BlockOfCode::SwitchToNearCode() {
|
||||||
SetCodePtr(near_code_ptr);
|
SetCodePtr(near_code_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlockOfCode::nop(size_t size) {
|
|
||||||
switch (size) {
|
|
||||||
case 0:
|
|
||||||
return;
|
|
||||||
case 1:
|
|
||||||
db(0x90);
|
|
||||||
return;
|
|
||||||
case 2:
|
|
||||||
db(0x66); db(0x90);
|
|
||||||
return;
|
|
||||||
case 3:
|
|
||||||
db(0x0f); db(0x1f); db(0x00);
|
|
||||||
return;
|
|
||||||
case 4:
|
|
||||||
db(0x0f); db(0x1f); db(0x40); db(0x00);
|
|
||||||
return;
|
|
||||||
case 5:
|
|
||||||
db(0x0f); db(0x1f); db(0x44); db(0x00); db(0x00);
|
|
||||||
return;
|
|
||||||
case 6:
|
|
||||||
db(0x66); db(0x0f); db(0x1f); db(0x44); db(0x00); db(0x00);
|
|
||||||
return;
|
|
||||||
case 7:
|
|
||||||
db(0x0f); db(0x1f); db(0x80); db(0x00); db(0x00); db(0x00); db(0x00);
|
|
||||||
return;
|
|
||||||
case 8:
|
|
||||||
db(0x0f); db(0x1f); db(0x84); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
|
|
||||||
return;
|
|
||||||
case 9:
|
|
||||||
db(0x66); db(0x0f); db(0x1f); db(0x84); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
|
|
||||||
return;
|
|
||||||
case 10:
|
|
||||||
default:
|
|
||||||
db(0x66); db(0x2e); db(0x0f); db(0x1f); db(0x84); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
|
|
||||||
nop(size - 10);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void* BlockOfCode::AllocateFromCodeSpace(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);
|
||||||
|
|
|
@ -103,7 +103,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void int3() { db(0xCC); }
|
void int3() { db(0xCC); }
|
||||||
void nop(size_t size = 1);
|
|
||||||
|
|
||||||
/// Allocate memory of `size` bytes from the same block of memory the code is in.
|
/// 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.
|
/// This is useful for objects that need to be placed close to or within code.
|
||||||
|
|
Loading…
Reference in a new issue