Commit d6b4e37
authored
Custom memory allocation for JIT and simpler native contexts. (#330)
* Add Custom memory manager support to JIT
* This adds the types but doesn't yet use/test them
- Future PR will add them once testing is done
* Fixed declaration of native callback function pointers
- Can't use bool for LLVMBool as that requires marshaling
* Added debug assert for `SafeGCHandle.AddRefAndGetNativeContext` to complain in a debug build if the underlying AddRef fails for some reason.
- Docs on behavior of that API are a bit dodgy and it isn't clear how it could ever provide an out parameter of non-success
* Added additional preprocessor checks to disable unused code
* Added `IJitMemoryAllocator` to support either MCJIT simple allocator or an OrcJitV2 Object layer.
* Readme and doc comment corrections/clarifications
* Updates for simpler native contexts
Native contexts are effectively an opaque `void*` they can have any value that fits in a pointer. The native layers don't care about it and store the value to provide as a parameter to callback functions. The implementation of the callback has all the knowledge to interpret the intended meaning of the context value.
For managed code this is an allocated GCHandle converted to a pointer. The managed code can resolve the pointer to a handle, and then the target instance to get a viable managed ref. When no more call backs can occur the context is released. This simplifies the use of callbacks as a native context can be created for any managed heap object. (Extension method added for this action)
* Updated comments
* Removed some dead code
* Added comments to explain limits of the C# 14 keyword `extension` and why it isn't used.
* Removed SafeGCHandle and MarshalGCHandles as context handles are MUCH simpler now.
* Added the memory allocator base types
- These are not yet used or tested and are subject to change in the future and therfore attributed as experimental.
* Defined interface for materializer callbacks to allow internal implementation to hold delegates as a single unit to become a native context for call backs.
* Removed unnecessary using statements1 parent 94c0ad4 commit d6b4e37
41 files changed
Lines changed: 801 additions & 453 deletions
File tree
- src
- Interop/Ubiquity.NET.Llvm.Interop/ABI
- StringMarshaling
- llvm-c
- Ubiquity.NET.CommandLine.UT
- Ubiquity.NET.CommandLine
- Ubiquity.NET.Extensions
- Ubiquity.NET.InteropHelpers
- Ubiquity.NET.Llvm.JIT.Tests
- Ubiquity.NET.Llvm
- Instructions
- OrcJITv2
- Types
- Ubiquity.NET.TextUX
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 10 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | | - | |
| 138 | + | |
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
155 | 163 | | |
156 | 164 | | |
157 | 165 | | |
| |||
180 | 188 | | |
181 | 189 | | |
182 | 190 | | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | 191 | | |
197 | 192 | | |
198 | 193 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
421 | 421 | | |
422 | 422 | | |
423 | 423 | | |
424 | | - | |
| 424 | + | |
425 | 425 | | |
426 | 426 | | |
427 | 427 | | |
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
431 | 431 | | |
432 | | - | |
| 432 | + | |
433 | 433 | | |
434 | 434 | | |
435 | 435 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
210 | | - | |
| 210 | + | |
211 | 211 | | |
212 | 212 | | |
213 | 213 | | |
| |||
223 | 223 | | |
224 | 224 | | |
225 | 225 | | |
226 | | - | |
| 226 | + | |
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
13 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
14 | 23 | | |
15 | | - | |
16 | | - | |
17 | 24 | | |
18 | 25 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | 26 | | |
51 | 27 | | |
52 | 28 | | |
| |||
75 | 51 | | |
76 | 52 | | |
77 | 53 | | |
78 | | - | |
79 | 54 | | |
80 | 55 | | |
81 | 56 | | |
| |||
Lines changed: 16 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | 8 | | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
13 | 22 | | |
14 | 23 | | |
15 | 24 | | |
16 | 25 | | |
17 | 26 | | |
18 | 27 | | |
19 | | - | |
| 28 | + | |
| 29 | + | |
20 | 30 | | |
21 | 31 | | |
22 | 32 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | 33 | | |
27 | 34 | | |
28 | 35 | | |
| |||
72 | 79 | | |
73 | 80 | | |
74 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
75 | 85 | | |
76 | 86 | | |
77 | | - | |
| 87 | + | |
78 | 88 | | |
79 | 89 | | |
80 | 90 | | |
This file was deleted.
0 commit comments