backend/x64: Support W^X systems

Closes #176.
This commit is contained in:
MerryMage
2018-08-22 13:16:26 +01:00
parent 2a65442933
commit 3432a08e0a
5 changed files with 59 additions and 1 deletions

View File

@@ -11,6 +11,7 @@
#include "common/assert.h"
#include "common/bit_util.h"
#include "common/common_types.h"
#include "common/scope_exit.h"
#include "common/variant_util.h"
#include "frontend/ir/basic_block.h"
#include "frontend/ir/microinstruction.h"
@@ -327,6 +328,9 @@ void EmitX64::ClearCache() {
}
void EmitX64::InvalidateBasicBlocks(const std::unordered_set<IR::LocationDescriptor>& locations) {
code.EnableWriting();
SCOPE_EXIT { code.DisableWriting(); };
for (const auto &descriptor : locations) {
auto it = block_descriptors.find(descriptor);
if (it == block_descriptors.end()) {