Skip to content

Commit dd61b98

Browse files
committed
Transitively pinning objects from gc_preserve
1 parent 65b1312 commit dd61b98

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

src/gc-mmtk.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1529,7 +1529,7 @@ JL_DLLEXPORT jl_value_t *jl_gc_internal_obj_base_ptr(void *p)
15291529

15301530
#define JL_GC_PUSHARGS_PRESERVE_ROOT_OBJS(rts_var,n) \
15311531
rts_var = ((jl_value_t**)malloc(((n)+2)*sizeof(jl_value_t*)))+2; \
1532-
((void**)rts_var)[-2] = (void*)JL_GC_ENCODE_PUSHARGS(n); \
1532+
((void**)rts_var)[-2] = (void*)JL_GC_ENCODE_PUSHARGS_TPIN(n); \
15331533
((void**)rts_var)[-1] = jl_p_gcpreserve_stack; \
15341534
memset((void*)rts_var, 0, (n)*sizeof(jl_value_t*)); \
15351535
jl_p_gcpreserve_stack = (jl_gcframe_t*)&(((void**)rts_var)[-2]); \

src/julia.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,8 @@ struct _jl_gcframe_t {
12411241
#define JL_GC_ENCODE_PUSHARGS(n) JL_GC_ENCODE_PUSHARGS_NO_TPIN(n)
12421242
#define JL_GC_ENCODE_PUSH(n) JL_GC_ENCODE_PUSH_NO_TPIN(n)
12431243

1244+
#define JL_GC_ENCODE_PUSHARGS_TPIN(n) (((size_t)(n))<<3)
1245+
12441246
#endif
12451247
#endif
12461248

0 commit comments

Comments
 (0)