@@ -349,11 +349,12 @@ class Linker:
349
349
"""
350
350
351
351
class _MembersNeededForFinalize :
352
- __slots__ = ("handle" , "use_nvjitlink" )
352
+ __slots__ = ("handle" , "use_nvjitlink" , "const_char_keep_alive" )
353
353
354
354
def __init__ (self , program_obj , handle , use_nvjitlink ):
355
355
self .handle = handle
356
356
self .use_nvjitlink = use_nvjitlink
357
+ self .const_char_keep_alive = []
357
358
weakref .finalize (program_obj , self .close )
358
359
359
360
def close (self ):
@@ -390,27 +391,30 @@ def _add_code_object(self, object_code: ObjectCode):
390
391
data = object_code ._module
391
392
assert_type (data , bytes )
392
393
with _exception_manager (self ):
394
+ name_str = f"{ object_code ._handle } _{ object_code ._code_type } "
393
395
if _nvjitlink :
394
396
_nvjitlink .add_data (
395
397
self ._mnff .handle ,
396
398
self ._input_type_from_code_type (object_code ._code_type ),
397
399
data ,
398
400
len (data ),
399
- f" { object_code . _handle } _ { object_code . _code_type } " ,
401
+ name_str ,
400
402
)
401
403
else :
404
+ name_bytes = name_str .encode ()
402
405
handle_return (
403
406
_driver .cuLinkAddData (
404
407
self ._mnff .handle ,
405
408
self ._input_type_from_code_type (object_code ._code_type ),
406
409
data ,
407
410
len (data ),
408
- f" { object_code . _handle } _ { object_code . _code_type } " . encode () ,
411
+ name_bytes ,
409
412
0 ,
410
413
None ,
411
414
None ,
412
415
)
413
416
)
417
+ self ._mnff .const_char_keep_alive .append (name_bytes )
414
418
415
419
def link (self , target_type ) -> ObjectCode :
416
420
"""
0 commit comments