llvm: more vocabs from factor-unmaintained added back
parent
c90a2a28bd
commit
7044e398a0
|
@ -35,6 +35,7 @@ FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID )
|
||||||
FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M )
|
FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M )
|
||||||
FUNCTION: void LLVMDumpModule ( LLVMModuleRef M )
|
FUNCTION: void LLVMDumpModule ( LLVMModuleRef M )
|
||||||
FUNCTION: LLVMBool LLVMVerifyModule ( LLVMModuleRef M, int Action, char **OutMessage )
|
FUNCTION: LLVMBool LLVMVerifyModule ( LLVMModuleRef M, int Action, char **OutMessage )
|
||||||
|
FUNCTION: c-string LLVMGetTarget ( LLVMModuleRef M )
|
||||||
DESTRUCTOR: LLVMDisposeModule
|
DESTRUCTOR: LLVMDisposeModule
|
||||||
|
|
||||||
! Types
|
! Types
|
||||||
|
@ -54,6 +55,7 @@ FUNCTION: LLVMValueRef LLVMAddFunction ( LLVMModuleRef M,
|
||||||
LLVMTypeRef FunctionTy )
|
LLVMTypeRef FunctionTy )
|
||||||
FUNCTION: LLVMValueRef LLVMGetParam ( LLVMValueRef Fn,
|
FUNCTION: LLVMValueRef LLVMGetParam ( LLVMValueRef Fn,
|
||||||
unsigned index )
|
unsigned index )
|
||||||
|
FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val )
|
||||||
|
|
||||||
! Basic blocks
|
! Basic blocks
|
||||||
FUNCTION: LLVMBasicBlockRef LLVMAppendBasicBlock ( LLVMValueRef Fn,
|
FUNCTION: LLVMBasicBlockRef LLVMAppendBasicBlock ( LLVMValueRef Fn,
|
||||||
|
@ -86,3 +88,21 @@ FUNCTION: LLVMBool LLVMCreateExecutionEngineForModule (
|
||||||
char **OutMessage )
|
char **OutMessage )
|
||||||
FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef E )
|
FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef E )
|
||||||
DESTRUCTOR: LLVMDisposeExecutionEngine
|
DESTRUCTOR: LLVMDisposeExecutionEngine
|
||||||
|
|
||||||
|
! Memory buffers
|
||||||
|
FUNCTION: LLVMBool LLVMCreateMemoryBufferWithContentsOfFile (
|
||||||
|
c-string Path,
|
||||||
|
LLVMMemoryBufferRef* OutMemBuf,
|
||||||
|
c-string* OutMessage )
|
||||||
|
FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf )
|
||||||
|
FUNCTION: size_t LLVMGetBufferSize ( LLVMMemoryBufferRef MemBuf )
|
||||||
|
FUNCTION: int LLVMParseBitcode ( LLVMMemoryBufferRef MemBuf,
|
||||||
|
LLVMModuleRef* OutModule,
|
||||||
|
c-string* OutMessage )
|
||||||
|
|
||||||
|
! Module providers
|
||||||
|
FUNCTION: LLVMModuleProviderRef LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M )
|
||||||
|
FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP )
|
||||||
|
|
||||||
|
! Messages
|
||||||
|
FUNCTION: void LLVMDisposeMessage ( char *Message )
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
! Copyright (C) 2017 Björn Lindqvist.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: help.markup help.syntax llvm.wrappers strings ;
|
||||||
|
|
||||||
|
IN: llvm.reader
|
||||||
|
|
||||||
|
HELP: load-module
|
||||||
|
{ $values { "path" string } { "module" module } }
|
||||||
|
{ $description "Parses a file containing llvm bitcode into an llvm module." }
|
||||||
|
{ $examples
|
||||||
|
{ $unchecked-example
|
||||||
|
"USING: io.pathnames llvm.reader ;"
|
||||||
|
"\"resource:extra/llvm/wrappers/add.bc\" absolute-path load-module"
|
||||||
|
"T{ module { value ALIEN: 1be7120 } }"
|
||||||
|
}
|
||||||
|
} ;
|
|
@ -0,0 +1,17 @@
|
||||||
|
! Copyright (C) 2009 Matthew Willis.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: accessors alien.c-types alien.data destructors kernel llvm.ffi
|
||||||
|
llvm.wrappers ;
|
||||||
|
|
||||||
|
IN: llvm.reader
|
||||||
|
|
||||||
|
: buffer>module ( buffer -- module )
|
||||||
|
[
|
||||||
|
value>> f void* <ref> f void* <ref>
|
||||||
|
[ LLVMParseBitcode drop ] 2keep
|
||||||
|
void* deref [ llvm-throw ] when* void* deref
|
||||||
|
module new swap >>value
|
||||||
|
] with-disposal ;
|
||||||
|
|
||||||
|
: load-module ( path -- module )
|
||||||
|
<buffer> buffer>module ;
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
! Copyright (C) 2017 Björn Lindqvist.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: help.markup help.syntax ;
|
||||||
|
IN: llvm.wrappers
|
||||||
|
|
||||||
|
HELP: <provider>
|
||||||
|
{ $values { "module" module } { "provider" provider } }
|
||||||
|
{ $description "Creates a module provider from a given module. The provider takes ownership of the module." } ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
USING: accessors alien destructors io.pathnames kernel llvm.ffi
|
||||||
|
llvm.wrappers tools.test ;
|
||||||
|
IN: llvm.wrappers.tests
|
||||||
|
|
||||||
|
{ 728 t } [
|
||||||
|
"resource:extra/llvm/wrappers/add.bc" absolute-path <buffer>
|
||||||
|
[ value>> [ LLVMGetBufferSize ] keep ] with-disposal alien?
|
||||||
|
] unit-test
|
|
@ -0,0 +1,37 @@
|
||||||
|
! Copyright (C) 2009 Matthew Willis.
|
||||||
|
! 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 ;
|
||||||
|
IN: llvm.wrappers
|
||||||
|
|
||||||
|
ERROR: llvm-error message ;
|
||||||
|
|
||||||
|
: llvm-throw ( c-string -- )
|
||||||
|
[ utf8 alien>string ] [ LLVMDisposeMessage ] bi llvm-error ;
|
||||||
|
|
||||||
|
: <dispose> ( alien class -- disposable ) new swap >>value ;
|
||||||
|
|
||||||
|
TUPLE: module value disposed ;
|
||||||
|
M: module dispose* value>> LLVMDisposeModule ;
|
||||||
|
|
||||||
|
: <module> ( name -- module )
|
||||||
|
LLVMModuleCreateWithName module <dispose> ;
|
||||||
|
|
||||||
|
TUPLE: provider value module disposed ;
|
||||||
|
M: provider dispose* value>> LLVMDisposeModuleProvider ;
|
||||||
|
|
||||||
|
: (provider) ( module -- provider )
|
||||||
|
[ value>> LLVMCreateModuleProviderForExistingModule provider <dispose> ]
|
||||||
|
[ t >>disposed value>> ] bi
|
||||||
|
>>module ;
|
||||||
|
|
||||||
|
: <provider> ( module -- provider )
|
||||||
|
[ (provider) ] with-disposal ;
|
||||||
|
|
||||||
|
TUPLE: buffer value disposed ;
|
||||||
|
M: buffer dispose* value>> LLVMDisposeMemoryBuffer ;
|
||||||
|
|
||||||
|
: <buffer> ( path -- buffer )
|
||||||
|
f void* <ref> f void* <ref>
|
||||||
|
[ LLVMCreateMemoryBufferWithContentsOfFile drop ] 2keep
|
||||||
|
void* deref [ llvm-throw ] when* void* deref buffer <dispose> ;
|
Loading…
Reference in New Issue