1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#include "stdafx.h"
#include "CodeX86.h"
#include "Gc.h"
#include "Core/GcCode.h"
#include "CodeTable.h"
namespace storm {
namespace x86 {
void writePtr(void *code, const GcCode *refs, Nat id) {
const GcCodeRef &ref = refs->refs[id];
size_t ptr = size_t(ref.pointer);
void *write = ((byte *)code) + ref.offset;
switch (ref.kind) {
case GcCodeRef::jump:
unalignedAtomicWrite(*(size_t *)write, ptr - (size_t(write) + sizeof(size_t)));
invalidateSingleICache(write);
break;
default:
dbg_assert(false, L"Unknown pointer type.");
break;
}
}
void finalize(void *code) {
(void)code;
}
}
}
|