@@ -54,6 +54,7 @@ jl_genericmemory_t *_new_genericmemory_(jl_value_t *mtype, size_t nel, int8_t is
5454 tot = sizeof (jl_genericmemory_t ) + sizeof (void * );
5555 }
5656 m = (jl_genericmemory_t * )jl_gc_alloc (ct -> ptls , tot , mtype );
57+ PTR_PIN (m );
5758
5859 if (pooled ) {
5960 data = (char * )m + JL_SMALL_BYTE_ALIGNMENT ;
@@ -107,9 +108,11 @@ JL_DLLEXPORT jl_genericmemory_t *jl_string_to_genericmemory(jl_value_t *str)
107108 jl_task_t * ct = jl_current_task ;
108109 int tsz = sizeof (jl_genericmemory_t ) + sizeof (void * );
109110 jl_genericmemory_t * m = (jl_genericmemory_t * )jl_gc_alloc (ct -> ptls , tsz , jl_memory_uint8_type );
111+ PTR_PIN (m );
110112 m -> length = jl_string_len (str );
111113 m -> ptr = jl_string_data (str );
112114 jl_genericmemory_data_owner_field (m ) = str ;
115+ PTR_PIN (str );
113116 return m ;
114117}
115118
@@ -160,6 +163,7 @@ JL_DLLEXPORT jl_genericmemory_t *jl_ptr_to_genericmemory(jl_value_t *mtype, void
160163 jl_exceptionf (jl_argumenterror_type , "invalid GenericMemory size: too large for system address width" );
161164 int tsz = sizeof (jl_genericmemory_t ) + sizeof (void * );
162165 m = (jl_genericmemory_t * )jl_gc_alloc (ct -> ptls , tsz , mtype );
166+ PTR_PIN (m );
163167 m -> ptr = data ;
164168 m -> length = nel ;
165169 jl_genericmemory_data_owner_field (m ) = own_buffer ? (jl_value_t * )m : NULL ;
@@ -249,9 +253,11 @@ JL_DLLEXPORT jl_genericmemory_t *jl_genericmemory_slice(jl_genericmemory_t *mem,
249253 }
250254 jl_task_t * ct = jl_current_task ;
251255 jl_genericmemory_t * newmem = (jl_genericmemory_t * )jl_gc_alloc (ct -> ptls , sizeof (jl_genericmemory_t ) + sizeof (void * ), dt );
256+ PTR_PIN (newmem );
252257 newmem -> length = len ;
253258 newmem -> ptr = data ;
254259 jl_genericmemory_data_owner_field (newmem ) = jl_genericmemory_owner (mem );
260+ PTR_PIN (jl_genericmemory_owner (mem ));
255261 return newmem ;
256262}
257263
0 commit comments