Exemplo n.º 1
0
        internal static byte[] SerializeModuleAsBitcode(this Module module)
        {
            LLVMMemoryBufferRef bufferRef = module.WriteBitcodeToMemoryBuffer();

            byte[] serialized = CopyBytesFromMemoryBufferRef(bufferRef);
            LLVMSharp.LLVM.DisposeMemoryBuffer(bufferRef);
            return(serialized);
        }
Exemplo n.º 2
0
        private static byte[] CopyBytesFromMemoryBufferRef(LLVMMemoryBufferRef bufferRef)
        {
            IntPtr start = LLVMSharp.LLVM.GetBufferStart(bufferRef);
            var    size  = LLVMSharp.LLVM.GetBufferSize(bufferRef);

            byte[] copy = new byte[size];
            Marshal.Copy(start, copy, 0, size);
            return(copy);
        }
Exemplo n.º 3
0
        internal static Module DeserializeModuleAsBitcode(this byte[] moduleBytes, LLVMContextRef contextRef)
        {
            LLVMMemoryBufferRef bufferRef = CreateMemoryBufferRefFromBytes(moduleBytes);
            LLVMModuleRef       moduleRef;

            try
            {
                if (LLVMSharp.LLVM.ParseBitcodeInContext2(contextRef, bufferRef, out moduleRef) != false)
                {
                    throw new ArgumentException("Failed to load bitcode module", nameof(moduleBytes));
                }
                return(moduleRef.ModuleFromModuleRef());
            }
            finally
            {
                LLVMSharp.LLVM.DisposeMemoryBuffer(bufferRef);
            }
        }
Exemplo n.º 4
0
 public static extern int ParseBitcode(LLVMMemoryBufferRef* MemBuf, ref LLVMModuleRef * OutModule, [MarshalAs(UnmanagedType.LPStr)] ref StringBuilder OutMessage);
Exemplo n.º 5
0
 public static extern LLVMObjectFileRef* CreateObjectFile(LLVMMemoryBufferRef* MemBuf);
Exemplo n.º 6
0
 public static extern void DisposeMemoryBuffer(LLVMMemoryBufferRef* MemBuf);
Exemplo n.º 7
0
 public static extern int CreateMemoryBufferWithSTDIN(ref LLVMMemoryBufferRef * OutMemBuf, [MarshalAs(UnmanagedType.LPStr)] ref StringBuilder OutMessage);
Exemplo n.º 8
0
 public static extern int CreateMemoryBufferWithContentsOfFile([In][MarshalAs(UnmanagedType.LPStr)] string Path, ref LLVMMemoryBufferRef * OutMemBuf, [MarshalAs(UnmanagedType.LPStr)] ref StringBuilder OutMessage);
Exemplo n.º 9
0
 public DisposableBuffer(LLVMMemoryBufferRef buffer) => this.buffer = buffer;
Exemplo n.º 10
0
 internal MemoryBuffer(LLVMMemoryBufferRef memoryBuffer) => _memoryBuffer = memoryBuffer;
Exemplo n.º 11
0
        internal MemoryBuffer(LLVMMemoryBufferRef bufferHandle)
        {
            bufferHandle.ValidateNotDefault(nameof(bufferHandle));

            BufferHandle_ = bufferHandle;
        }
Exemplo n.º 12
0
 internal MemoryBuffer(LLVMMemoryBufferRef bufferHandle)
 {
     BufferHandle_ = bufferHandle;
 }
Exemplo n.º 13
0
 internal void Release() => _memoryBuffer = new LLVMMemoryBufferRef();
Exemplo n.º 14
0
 public static extern int GetBitcodeModuleInContext(LLVMContextRef* ContextRef, LLVMMemoryBufferRef* MemBuf, ref LLVMModuleRef * OutM, [MarshalAs(UnmanagedType.LPStr)] ref StringBuilder OutMessage);
Exemplo n.º 15
0
 /// <summary>Initializes a new instance of the <see cref="MemoryBuffer"/> class from a byte array</summary>
 /// <param name="memoryBufferRef">An instance of the LLVMMemoryBufferRef type that will be tracked by this object.</param>
 public MemoryBuffer(LLVMMemoryBufferRef memoryBufferRef)
 {
     BufferHandle = memoryBufferRef;
 }
Exemplo n.º 16
0
 public static extern int GetBitcodeModuleProvider(LLVMMemoryBufferRef* MemBuf, ref LLVMModuleProviderRef * OutMP, [MarshalAs(UnmanagedType.LPStr)] ref StringBuilder OutMessage);
Exemplo n.º 17
0
 private static extern LLVMSharedObjectBufferRef LLVMOrcMakeSharedObjectBuffer(LLVMMemoryBufferRef ObjBuffer);