IN: llvm.ffi
<<
-"llvm" "LLVM-3.8" find-so cdecl add-library
+"llvm" "LLVM-3.9" find-so cdecl add-library
>>
LIBRARY: llvm
TYPEDEF: void* LLVMBasicBlockRef
TYPEDEF: void* LLVMBuilderRef
TYPEDEF: void* LLVMMemoryBufferRef
+TYPEDEF: void* LLVMTargetRef
+TYPEDEF: void* LLVMPassRegistryRef
+
+! Type types
+ENUM: LLVMTypeKind
+ LLVMVoidTypeKind
+ LLVMFloatTypeKind
+ LLVMDoubleTypeKind
+ LLVMX86_FP80TypeKind
+ LLVMFP128TypeKind
+ LLVMPPC_FP128TypeKind
+ LLVMLabelTypeKind
+ LLVMMetadataTypeKind
+ LLVMIntegerTypeKind
+ LLVMFunctionTypeKind
+ LLVMStructTypeKind
+ LLVMArrayTypeKind
+ LLVMPointerTypeKind
+ LLVMOpaqueTypeKind
+ LLVMVectorTypeKind ;
! Modules
FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID )
FUNCTION: void LLVMDumpModule ( LLVMModuleRef M )
FUNCTION: LLVMBool LLVMVerifyModule ( LLVMModuleRef M, int Action, char **OutMessage )
FUNCTION: c-string LLVMGetTarget ( LLVMModuleRef M )
-DESTRUCTOR: LLVMDisposeModule
! Types
FUNCTION: LLVMTypeRef LLVMInt1Type ( )
FUNCTION: LLVMTypeRef LLVMFunctionType ( LLVMTypeRef ReturnType,
LLVMTypeRef* ParamTypes,
unsigned ParamCount, int IsVarArg )
+FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty )
! Values
FUNCTION: LLVMValueRef LLVMAddFunction ( LLVMModuleRef M,
FUNCTION: LLVMValueRef LLVMGetParam ( LLVMValueRef Fn,
unsigned index )
FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val )
+FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn )
+FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val )
! Basic blocks
FUNCTION: LLVMBasicBlockRef LLVMAppendBasicBlock ( LLVMValueRef Fn,
c-string Name )
FUNCTION: LLVMValueRef LLVMBuildRet ( LLVMBuilderRef Builder,
LLVMValueRef V )
-DESTRUCTOR: LLVMDisposeBuilder
-! Engines
+! Execution Engines
FUNCTION: LLVMBool LLVMCreateExecutionEngineForModule (
LLVMExecutionEngineRef* OutEE,
LLVMModuleRef M,
char **OutMessage )
FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef E )
-DESTRUCTOR: LLVMDisposeExecutionEngine
+FUNCTION: uint64_t LLVMGetGlobalValueAddress ( LLVMExecutionEngineRef E, c-string name )
+FUNCTION: LLVMBool LLVMFindFunction ( LLVMExecutionEngineRef E,
+ c-string name,
+ LLVMValueRef OutFn )
+FUNCTION: void* LLVMGetPointerToGlobal ( LLVMExecutionEngineRef EE,
+ LLVMValueRef Global )
! Memory buffers
FUNCTION: LLVMBool LLVMCreateMemoryBufferWithContentsOfFile (
c-string* OutMessage )
FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf )
FUNCTION: size_t LLVMGetBufferSize ( LLVMMemoryBufferRef MemBuf )
+! Deprecated and should be replaced with LLVMParseBitcode2.
FUNCTION: int LLVMParseBitcode ( LLVMMemoryBufferRef MemBuf,
LLVMModuleRef* OutModule,
c-string* OutMessage )
FUNCTION: LLVMModuleProviderRef LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M )
FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP )
+! Targets
+FUNCTION: LLVMTargetRef LLVMGetFirstTarget ( )
+FUNCTION: c-string LLVMGetTargetName ( LLVMTargetRef T )
+
! Messages
FUNCTION: void LLVMDisposeMessage ( char *Message )
+
+! Pass Registry
+FUNCTION: LLVMPassRegistryRef LLVMGetGlobalPassRegistry ( )
+
+! Initialization
+FUNCTION: void LLVMInitializeCore ( LLVMPassRegistryRef PR )
+FUNCTION: void LLVMLinkInMCJIT ( )
+FUNCTION: void LLVMInitializeX86AsmPrinter ( )
+FUNCTION: void LLVMInitializeX86TargetInfo ( )
+FUNCTION: void LLVMInitializeX86Target ( )
+FUNCTION: void LLVMInitializeX86TargetMC ( )
+
+! Removed symbols: LLVMCreateJITCompiler
-! Copyright (C) 2009 Matthew Willis.
+! Copyright (C) 2009 Matthew Willis, 2017 Björn Lindqvist.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types alien.data alien.strings destructors io
-io.encodings.utf8 kernel llvm.ffi ;
+io.encodings.utf8 kernel llvm.ffi prettyprint ;
IN: llvm.wrappers
ERROR: llvm-error message ;
-: llvm-throw ( c-string -- )
+: llvm-throw ( void* -- )
[ utf8 alien>string ] [ LLVMDisposeMessage ] bi llvm-error ;
: <dispose> ( alien class -- disposable ) new swap >>value ;
: <provider> ( module -- provider )
[ (provider) ] with-disposal ;
+TUPLE: engine value disposed ;
+M: engine dispose* value>> LLVMDisposeExecutionEngine ;
+
+: (engine) ( LLVMModuleRef -- LLVMExecutionEngineRef )
+ f void* <ref> f void* <ref>
+ [ swapd LLVMCreateExecutionEngineForModule drop ] 2keep
+ void* deref [ llvm-throw ] when*
+ void* deref ;
+
+: <engine> ( module -- engine )
+ [
+ [ value>> (engine) engine <dispose> ]
+ [ t >>disposed drop ] bi
+ ] with-disposal ;
+
+: find-function ( engine name -- function/f )
+ [ value>> ] dip f void* <ref>
+ [ LLVMFindFunction drop ] keep void* deref ;
+
+: function-pointer ( engine function -- alien )
+ [ value>> ] dip LLVMGetPointerToGlobal ;
+
TUPLE: buffer value disposed ;
M: buffer dispose* value>> LLVMDisposeMemoryBuffer ;