author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 30 Aug 2016 16:57:29 +0100 | |
changeset 78 | 7a4c769a9fea |
parent 65 | 9244f78bcf02 |
permissions | -rw-r--r-- |
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 | 15 |
|
16 |
"{ NameSpace: Smalltalk }" |
|
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 | 19 |
instanceVariableNames:'' |
20 |
classVariableNames:'' |
|
65
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
21 |
poolDictionaries:'LLVMTypeKind LLVMVerifierFailureAction' |
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 | 23 |
! |
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 | 43 |
!LLVMModule class methodsFor:'instance creation'! |
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 | 55 |
|
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 | 58 |
! ! |
59 |
||
4 | 60 |
!LLVMModule methodsFor:'accessing'! |
61 |
||
62 |
dataLayoutString |
|
63 |
^ LLVM GetDataLayout: self. |
|
64 |
||
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 | 98 |
! ! |
99 |
||
0 | 100 |
!LLVMModule methodsFor:'adding & removing'! |
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 | 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 | 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 | 118 |
|
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 | 121 |
! |
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 | 143 |
addMethodForClass: class selector: selector |
144 |
| name type typeObj typeIlcPtr argTypes| |
|
145 |
||
146 |
name := LLVMStXMethod llvmFunctionNameForClass: class selector: selector. |
|
147 |
typeObj := LLVMType intptr. |
|
148 |
typeIlcPtr := LLVMType intptr. |
|
149 |
argTypes := LLVMObjectArray new: 4"receiver, selector, clsOrNil, pIlc" + selector numArgs. |
|
150 |
1 to: argTypes size do:[:i | |
|
151 |
argTypes at: i put: typeObj. |
|
152 |
]. |
|
153 |
argTypes at: 4 put: typeIlcPtr. |
|
154 |
type := LLVMType function: argTypes returning: typeObj. |
|
155 |
^ LLVM AddMethod: self _: name _: type. |
|
156 |
||
157 |
"Created: / 11-07-2015 / 09:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
0 | 158 |
! ! |
159 |
||
160 |
!LLVMModule methodsFor:'debugging'! |
|
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 | 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 | 191 |
! ! |
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 |
|
65
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
228 |
!LLVMModule methodsFor:'utilities'! |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
229 |
|
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
230 |
verify |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
231 |
"Verifies that a module is valid. If yes, this method is no-op. |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
232 |
If false, throws LLVMModuleVerificationError." |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
233 |
|
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
234 |
| msgPtr msg | |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
235 |
|
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
236 |
msgPtr := ExternalBytes new: ExternalBytes sizeofPointer. |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
237 |
|
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
238 |
(LLVM VerifyModule: self _: LLVMReturnStatusAction _: msgPtr) ifTrue:[ |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
239 |
msg := (msgPtr pointerAt: 1) copyCStringFromHeap. |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
240 |
LLVM DisposeMessage: (msgPtr pointerAt: 1). |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
241 |
LLVMModuleVerificationError signal: msg. |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
242 |
]. |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
243 |
|
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
244 |
"Created: / 18-06-2016 / 15:48:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
245 |
! ! |
9244f78bcf02
Added LLVMModule>>verify and LLVMFunction>>verify
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
43
diff
changeset
|
246 |
|
20
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
247 |
!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
|
248 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
249 |
writeAssemblyOn: aStream |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
250 |
| bitcode assembly | |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
251 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
252 |
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
|
253 |
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
|
254 |
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
|
255 |
[ |
38
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
256 |
| errorOutput | |
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
257 |
|
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
258 |
errorOutput := String new writeStream. |
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
259 |
(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
|
260 |
aStream nextPutAll: assembly contents asString. |
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
261 |
] ifFalse:[ |
52be9bfdf7e1
Added LLVMIRBuilder>>block returning current insertion block
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
37
diff
changeset
|
262 |
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
|
263 |
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
|
264 |
]. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
265 |
] ensure:[ |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
266 |
bitcode remove. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
267 |
assembly remove. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
268 |
]. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
269 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
270 |
"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
|
271 |
"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
|
272 |
! ! |
53abac7217de
Added support for creating execution engines and fetching function addresses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1
diff
changeset
|
273 |
|
20
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
274 |
!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
|
275 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
276 |
writeBitcodeToFile: aStringOrFilename |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
277 |
| file path | |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
278 |
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
|
279 |
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
|
280 |
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
|
281 |
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
|
282 |
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
|
283 |
^ self. |
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 |
] ifFalse:[ |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
286 |
| dir | |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
287 |
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
|
288 |
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
|
289 |
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
|
290 |
^ self. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
291 |
]. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
292 |
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
|
293 |
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
|
294 |
^ self. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
295 |
] |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
296 |
]. |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
297 |
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
|
298 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
299 |
"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
|
300 |
! ! |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
301 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
302 |
!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
|
303 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
304 |
version_HG |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
305 |
|
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
306 |
^ '$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
|
307 |
! ! |
29174b92f44a
Added inspector tab to show generated assembly for a module
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
19
diff
changeset
|
308 |