blob: 24d4d65bad4553ab90c3d7f382dfc6fa02cc49c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
* Utilities for managing dynamically-allocated executable pages.
*
* These are primarily used to back the adjustor code produced by the native
* adjustor implementations.
*/
#include "Rts.h"
#include "LinkerInternals.h"
#include "sm/OSMem.h"
ExecPage *allocateExecPage() {
ExecPage *page = (ExecPage *) mmapAnonForLinker(getPageSize());
return page;
}
void freezeExecPage(ExecPage *page) {
mprotectForLinker(page, getPageSize(), MEM_READ_EXECUTE);
flushExec(getPageSize(), page);
}
void freeExecPage(ExecPage *page) {
munmapForLinker(page, getPageSize(), "freeExecPage");
}
|