1
1
import atexit
2
- from typing import Optional
2
+ from typing import Optional , Sequence
3
3
4
4
from .ffi import load_mono , ffi
5
5
@@ -17,13 +17,17 @@ def __init__(
17
17
libmono ,
18
18
* ,
19
19
domain = None ,
20
+ debug = False ,
21
+ jit_options : Optional [Sequence [str ]] = None ,
20
22
config_file : Optional [str ] = None ,
21
23
global_config_file : Optional [str ] = None ,
22
24
):
23
25
self ._assemblies = {}
24
26
25
27
initialize (
26
28
config_file = config_file ,
29
+ debug = debug ,
30
+ jit_options = jit_options ,
27
31
global_config_file = global_config_file ,
28
32
libmono = libmono ,
29
33
)
@@ -95,6 +99,8 @@ def __call__(self, ptr, size):
95
99
96
100
def initialize (
97
101
libmono : str ,
102
+ debug : bool = False ,
103
+ jit_options : Optional [Sequence [str ]] = None ,
98
104
config_file : Optional [str ] = None ,
99
105
global_config_file : Optional [str ] = None ,
100
106
) -> None :
@@ -113,6 +119,13 @@ def initialize(
113
119
114
120
config_encoded = config_file .encode ("utf8" )
115
121
122
+ if jit_options :
123
+ options = [ffi .new ("char[]" , o .encode ("utf8" )) for o in jit_options ]
124
+ _MONO .mono_jit_parse_options (len (options ), options )
125
+
126
+ if debug :
127
+ _MONO .mono_debug_init (_MONO .MONO_DEBUG_FORMAT_MONO )
128
+
116
129
_ROOT_DOMAIN = _MONO .mono_jit_init (b"clr_loader" )
117
130
_MONO .mono_domain_set_config (_ROOT_DOMAIN , b"." , config_encoded )
118
131
_check_result (_ROOT_DOMAIN , "Failed to initialize Mono" )
0 commit comments