private void allocMem(IntPtr _this, uint hotCodeSize, uint coldCodeSize, uint roDataSize, uint xcptnsCount, CorJitAllocMemFlag flag, ref void* hotCodeBlock, ref void* coldCodeBlock, ref void* roDataBlock) { hotCodeBlock = (void*)GetPin(_code = new byte[hotCodeSize]); if (coldCodeSize != 0) coldCodeBlock = (void*)GetPin(_coldCode = new byte[coldCodeSize]); if (roDataSize != 0) { int alignment = 8; if ((flag & CorJitAllocMemFlag.CORJIT_ALLOCMEM_FLG_RODATA_16BYTE_ALIGN) != 0) { alignment = 16; } else if (roDataSize < 8) { alignment = PointerSize; } _roData = new byte[roDataSize]; _roDataBlob = _compilation.NodeFactory.ReadOnlyDataBlob( "__readonlydata_" + _compilation.NameMangler.GetMangledMethodName(_methodBeingCompiled), _roData, alignment); roDataBlock = (void*)GetPin(_roData); } if (_numFrameInfos > 0) { _frameInfos = new FrameInfo[_numFrameInfos]; } }
private void allocMem(IntPtr _this, uint hotCodeSize, uint coldCodeSize, uint roDataSize, uint xcptnsCount, CorJitAllocMemFlag flag, ref void* hotCodeBlock, ref void* coldCodeBlock, ref void* roDataBlock) { hotCodeBlock = (void*)GetPin(_code = new byte[hotCodeSize]); if (coldCodeSize != 0) coldCodeBlock = (void*)GetPin(_coldCode = new byte[coldCodeSize]); if (roDataSize != 0) { if ((flag & CorJitAllocMemFlag.CORJIT_ALLOCMEM_FLG_RODATA_16BYTE_ALIGN) != 0) { _roDataAlignment = 16; } else if (roDataSize < 8) { _roDataAlignment = PointerSize; } else { _roDataAlignment = 8; } roDataBlock = (void*)GetPin(_roData = new byte[roDataSize]); } if (_numFrameInfos > 0) { _frameInfos = new FrameInfo[_numFrameInfos]; } }
public virtual void allocMem_wrapper(IntPtr _this, out IntPtr exception, uint hotCodeSize, uint coldCodeSize, uint roDataSize, uint xcptnsCount, CorJitAllocMemFlag flag, ref void* hotCodeBlock, ref void* coldCodeBlock, ref void* roDataBlock) { exception = IntPtr.Zero; try { allocMem(hotCodeSize, coldCodeSize, roDataSize, xcptnsCount, flag, ref hotCodeBlock, ref coldCodeBlock, ref roDataBlock); return; } catch (Exception ex) { exception = AllocException(ex); } }
static void _allocMem(IntPtr thisHandle, IntPtr* ppException, uint hotCodeSize, uint coldCodeSize, uint roDataSize, uint xcptnsCount, CorJitAllocMemFlag flag, ref void* hotCodeBlock, ref void* coldCodeBlock, ref void* roDataBlock) { var _this = GetThis(thisHandle); try { _this.allocMem(hotCodeSize, coldCodeSize, roDataSize, xcptnsCount, flag, ref hotCodeBlock, ref coldCodeBlock, ref roDataBlock); } catch (Exception ex) { *ppException = _this.AllocException(ex); } }