void JITCompiler32 :: allocateVMT(MemoryWriter& vmtWriter, size_t flags, size_t vmtLength) { alignCode(&vmtWriter, VA_ALIGNMENT, false); // create VMT header: // dummy package reference vmtWriter.writeDWord(0); // vmt length vmtWriter.writeDWord(vmtLength); // vmt flags vmtWriter.writeDWord(flags); // dummy class reference vmtWriter.writeDWord(0); int position = vmtWriter.Position(); size_t vmtSize = 0; if (test(flags, elStandartVMT)) { // + VMT length vmtSize = vmtLength * sizeof(VMTEntry); } vmtWriter.writeBytes(0, vmtSize); vmtWriter.seek(position); }
int JITCompiler32 :: allocateConstant(MemoryWriter& writer, size_t objectOffset) { writer.writeBytes(0, objectOffset); alignCode(&writer, VA_ALIGNMENT, false); return writer.Position() - 4; }
void JITCompiler32 :: allocateArray(MemoryWriter& writer, size_t count) { writer.writeBytes(0, count * 4); }