Skip to content

Commit 5bbfd16

Browse files
committed
Only pin owners, not all generic memory objects
1 parent b56b167 commit 5bbfd16

File tree

1 file changed

+1
-3
lines changed

1 file changed

+1
-3
lines changed

src/genericmemory.c

+1-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ 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);
5857

5958
if (pooled) {
6059
data = (char*)m + JL_SMALL_BYTE_ALIGNMENT;
@@ -108,7 +107,6 @@ JL_DLLEXPORT jl_genericmemory_t *jl_string_to_genericmemory(jl_value_t *str)
108107
jl_task_t *ct = jl_current_task;
109108
int tsz = sizeof(jl_genericmemory_t) + sizeof(void*);
110109
jl_genericmemory_t *m = (jl_genericmemory_t*)jl_gc_alloc(ct->ptls, tsz, jl_memory_uint8_type);
111-
PTR_PIN(m);
112110
m->length = jl_string_len(str);
113111
m->ptr = jl_string_data(str);
114112
jl_genericmemory_data_owner_field(m) = str;
@@ -163,11 +161,11 @@ JL_DLLEXPORT jl_genericmemory_t *jl_ptr_to_genericmemory(jl_value_t *mtype, void
163161
jl_exceptionf(jl_argumenterror_type, "invalid GenericMemory size: too large for system address width");
164162
int tsz = sizeof(jl_genericmemory_t) + sizeof(void*);
165163
m = (jl_genericmemory_t*)jl_gc_alloc(ct->ptls, tsz, mtype);
166-
PTR_PIN(m);
167164
m->ptr = data;
168165
m->length = nel;
169166
jl_genericmemory_data_owner_field(m) = own_buffer ? (jl_value_t*)m : NULL;
170167
if (own_buffer) {
168+
PTR_PIN(m);
171169
int isaligned = 0; // TODO: allow passing memalign'd buffers
172170
jl_gc_track_malloced_genericmemory(ct->ptls, m, isaligned);
173171
jl_gc_count_allocd(nel*elsz);

0 commit comments

Comments
 (0)