LLVMModule.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 27 Jan 2016 14:20:58 +0000
changeset 54 a288aced3dd1
parent 43 597181c496f0
child 65 9244f78bcf02
permissions -rw-r--r--
LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9 In LLVM 3.9 some parameters to these functions were dropped. The DIBuilder interface has been changed to reflect these changes (i.e., C functions no longer require dropped argument). The LLVM C Extensions library can still be compiled against LLVM 3.8 (via #ifdef), but the API will be different. Also, the Smalltallks bindings will make use of LLVM 3.9 interface. That said, LLVM C API Extensions library may still be used by *other* projects on top of LLVM 3.8, though Smalltalk bindings require LLVM 3.9 from now on.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     1
"
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     2
    Copyright (C) 2015-now Jan Vrany
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     3
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     4
    This code is not an open-source (yet). You may use this code
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     5
    for your own experiments and projects, given that:
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     6
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     7
    * all modification to the code will be sent to the
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     8
      original author for inclusion in future releases
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     9
    * this is not used in any commercial software
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    10
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    11
    This license is provisional and may (will) change in
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    12
    a future.
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    13
"
12
f98e97fd02ef Package renamed from jv:libllvms to jv:llvm_s
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    14
"{ Package: 'jv:llvm_s' }"
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
1
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
    18
LLVMDisposableObject subclass:#LLVMModule
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	instanceVariableNames:''
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	classVariableNames:''
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	poolDictionaries:'LLVMTypeKind'
13
fa967c0e1827 Renamed class categories to begin with LLVM-S
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
    22
	category:'LLVM-S-Core'
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
14
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    25
!LLVMModule class methodsFor:'documentation'!
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    26
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    27
copyright
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    28
"
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    29
    Copyright (C) 2015-now Jan Vrany
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    30
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    31
    This code is not an open-source (yet). You may use this code
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    32
    for your own experiments and projects, given that:
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    33
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    34
    * all modification to the code will be sent to the
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    35
      original author for inclusion in future releases
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    36
    * this is not used in any commercial software
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    37
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    38
    This license is provisional and may (will) change in
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    39
    a future.
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    40
"
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    41
! !
c7dea3fcc5a7 Added short README, license.txt and updated copyright information
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    42
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!LLVMModule class methodsFor:'instance creation'!
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    45
new
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    46
    ^ self newWithName: 'm'
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    47
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    48
    "Created: / 03-09-2015 / 06:41:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    49
!
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    50
37
0933f973bc22 Add assertion to LLVMModule>>newWithName: to check for nil name. Fixed skip-in-debugger pragma (typo)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    51
newWithName: aString
0933f973bc22 Add assertion to LLVMModule>>newWithName: to check for nil name. Fixed skip-in-debugger pragma (typo)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    52
    
0933f973bc22 Add assertion to LLVMModule>>newWithName: to check for nil name. Fixed skip-in-debugger pragma (typo)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    53
    self assertIsString: aString.
0933f973bc22 Add assertion to LLVMModule>>newWithName: to check for nil name. Fixed skip-in-debugger pragma (typo)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    54
    ^ LLVM ModuleCreateWithName: aString
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    "Created: / 07-07-2015 / 20:22:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
37
0933f973bc22 Add assertion to LLVMModule>>newWithName: to check for nil name. Fixed skip-in-debugger pragma (typo)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    57
    "Modified: / 14-09-2015 / 10:39:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
! !
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
4
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    60
!LLVMModule methodsFor:'accessing'!
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    61
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    62
dataLayoutString
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    63
    ^ LLVM GetDataLayout: self.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    64
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    65
    "Created: / 11-07-2015 / 06:57:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    66
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    67
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    68
debugInfoBuilder
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    69
    ^ LLVMDIBuilder newForModule: self
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    70
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    71
    "Created: / 13-08-2015 / 06:35:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    72
!
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    73
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    74
getFunctionNamed: name 
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    75
    self assertIsString: name. 
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    76
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    77
    ^ LLVM GetNamedFunction: self  _: name.
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    78
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    79
    "Created: / 02-09-2015 / 22:27:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    80
    "Modified (format): / 18-09-2015 / 06:15:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    81
!
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    82
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    83
getIntrinsicNamed: name 
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    84
    ^ self getIntrinsicNamed: name types: #().
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    85
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    86
    "Created: / 14-08-2015 / 14:10:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    87
    "Modified: / 03-09-2015 / 06:35:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    88
!
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    89
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    90
getIntrinsicNamed: name types: types
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    91
    self assertIsString: name.  
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    92
    self assertIsTypeArray: types.
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    93
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    94
    ^ LLVMCEXT GetIntrinsicByName: self _: name _: types size _: types asLLVMObjectArray.
35
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    95
fd459b38f324 Added LLVMModule>>getFunctionNamed:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    96
    "Created: / 10-08-2015 / 17:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
    97
    "Modified (format): / 18-09-2015 / 06:15:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    98
! !
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    99
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
!LLVMModule methodsFor:'adding & removing'!
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   102
addFlag: key value: value behavior: behavior
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   103
    self assertIsString: key.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   104
    self assertIsMetadata: value.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   105
    self assertIsIntegerUnsigned: behavior.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   106
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   107
    LLVMCEXT ModuleAddModuleFlag: self _: behavior _: key _: value
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   108
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   109
    "Created: / 15-08-2015 / 06:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   110
    "Modified (format): / 15-08-2015 / 22:06:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   111
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   112
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
addFunctionNamed: name type: type
24
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   114
    self assertIsString: name.  
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    self assert: type kind == LLVMFunctionTypeKind.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
   116
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   117
    ^ LLVM AddFunction: self _: name _: type.
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 07-07-2015 / 21:59:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
597181c496f0 Added value-kind testing functions to LLVMValue
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   120
    "Modified: / 18-09-2015 / 06:15:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   121
!
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   122
16
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   123
addGlobalNamed: name type: type value: value
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   124
    | global |
24
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   125
    self assertIsString: name.  
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   126
    self assertIsType: type.  
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   127
    self assertIsValue: value ofType: type.
16
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   128
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   129
    global := LLVM AddGlobal: self _: type _: name.
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   130
    LLVM SetInitializer: global _: value.
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   131
    ^ global
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   132
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   133
    "Created: / 03-08-2015 / 16:41:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   134
    "Modified: / 10-08-2015 / 17:07:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   135
!
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   136
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   137
addGlobalNamed: name value: value
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   138
    ^ self addGlobalNamed: name type: value type value: value
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   139
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   140
    "Created: / 03-08-2015 / 16:57:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   141
!
23e82cf19788 Tests refactored to be actually a testcase. Introduced LLVMConstant class
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14
diff changeset
   142
4
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   143
addMethodForClass: class selector: selector
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   144
    | name type typeObj typeIlcPtr argTypes|
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   145
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   146
    name := LLVMStXMethod llvmFunctionNameForClass: class selector: selector.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   147
    typeObj := LLVMType intptr.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   148
    typeIlcPtr := LLVMType intptr.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   149
    argTypes := LLVMObjectArray new: 4"receiver, selector, clsOrNil, pIlc" + selector numArgs.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   150
    1 to: argTypes size do:[:i | 
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   151
        argTypes at: i put: typeObj.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   152
    ].
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   153
    argTypes at: 4 put: typeIlcPtr.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   154
    type := LLVMType function: argTypes  returning: typeObj.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   155
    ^ LLVM AddMethod: self _: name _: type.
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   156
d33c64726c86 Temporary commit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   157
    "Created: / 11-07-2015 / 09:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
! !
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
!LLVMModule methodsFor:'debugging'!
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   162
inspectorExtraAttributes 
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   163
    | d |
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   164
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   165
    d := super inspectorExtraAttributes.      
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   166
    d add: '-llvm ir' -> [ self dumpString ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   167
    d add: '-assembly' -> [ String streamContents:[:s | self writeAssemblyOn: s] ].
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   168
    ^ d
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   169
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   170
    "Created: / 10-07-2015 / 14:37:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   171
    "Modified: / 05-08-2015 / 23:47:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   172
! !
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   173
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   174
!LLVMModule methodsFor:'debugging-dumping'!
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   176
dumpOn: aStream
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   177
    aStream nextPutAll: self dumpString
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   178
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   179
    "Created: / 10-07-2015 / 14:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   180
!
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   181
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   182
dumpString
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   183
    | cstr str|
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   184
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   185
    cstr := LLVM PrintModuleToString: self.
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   186
    str := cstr copyCStringFromHeap.
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   187
    LLVM DisposeMessage: cstr.
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   188
    ^ str
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   189
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   190
    "Created: / 10-07-2015 / 14:31:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
! !
38af781b75ab First shot.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
1
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   193
!LLVMModule methodsFor:'initialization & release'!
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   194
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   195
dispose
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   196
    ^ LLVM DisposeModule: self
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   197
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   198
    "Modified: / 08-07-2015 / 22:40:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   199
! !
e3dcb6272f0b Introduced abstract superclasses LLVMObject and LLVMDisposableObject
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   200
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   201
!LLVMModule methodsFor:'inspecting'!
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   202
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   203
inspector2TabASM
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   204
    <inspector2Tab>
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   205
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   206
    ^ (self newInspector2Tab)
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   207
        label:'Assembly';
24
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   208
        priority:49;
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   209
        text: [ String streamContents:[:s | self writeAssemblyOn: s] ];
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   210
        yourself
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   211
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   212
    "Created: / 05-08-2015 / 23:47:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
7e7ddd55174c Added support for intrinsics.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   213
    "Modified: / 10-08-2015 / 17:49:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   214
!
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   215
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   216
inspector2TabIR
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   217
    <inspector2Tab>
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   218
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   219
    ^ (self newInspector2Tab)
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   220
        label:'LLVM IR';
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   221
        priority:50;
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   222
        text: [ self dumpString ];
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   223
        yourself
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   224
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   225
    "Created: / 05-08-2015 / 23:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   226
! !
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   227
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   228
!LLVMModule methodsFor:'writing-assembly'!
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   229
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   230
writeAssemblyOn: aStream
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   231
    | bitcode assembly |
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   232
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   233
    bitcode := Filename newTemporary.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   234
    self writeBitcodeToFile: bitcode.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   235
    assembly := bitcode withSuffix:'s'.  
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   236
    [ 
38
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   237
        | errorOutput |
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   238
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   239
        errorOutput := String new writeStream.
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   240
        (OperatingSystem executeCommand: (LLVMConfig bindir , Filename separator , 'llc ' , bitcode pathName) errorTo: errorOutput) ifTrue:[
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   241
            aStream nextPutAll: assembly contents asString.
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   242
        ] ifFalse:[ 
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   243
            aStream nextPutAll: 'Failed to generate assembly:'; cr; cr.
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   244
            aStream nextPutAll: errorOutput contents
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   245
        ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   246
    ] ensure:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   247
        bitcode remove.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   248
        assembly remove.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   249
    ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   250
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   251
    "Created: / 05-08-2015 / 23:46:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
38
52be9bfdf7e1 Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   252
    "Modified: / 15-09-2015 / 18:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   253
! !
53abac7217de Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
   254
20
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   255
!LLVMModule methodsFor:'writing-bitcode'!
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   256
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   257
writeBitcodeToFile: aStringOrFilename
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   258
    | file path |
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   259
    file := aStringOrFilename asFilename.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   260
    path := file pathName.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   261
    file exists ifTrue:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   262
        file isWritable ifFalse:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   263
            self error: 'File not writable (', file pathName , ')'.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   264
            ^ self.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   265
        ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   266
    ] ifFalse:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   267
        | dir |    
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   268
        dir := file directory.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   269
        dir exists ifFalse:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   270
            self error: 'Directory does not exists (', dir pathName , ')'.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   271
            ^ self.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   272
        ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   273
        dir isWritable ifFalse:[ 
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   274
            self error: 'Directory not writable (', dir pathName , ')'.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   275
            ^ self.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   276
        ]
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   277
    ].
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   278
    LLVM WriteBitcodeToFile: self  _: path.
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   279
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   280
    "Created: / 05-08-2015 / 22:10:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   281
! !
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   282
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   283
!LLVMModule class methodsFor:'documentation'!
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   284
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   285
version_HG
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   286
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   287
    ^ '$Changeset: <not expanded> $'
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   288
! !
29174b92f44a Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   289