Skip to content

Commit 22524a8

Browse files
authored
Merge pull request #35 from udesou/feature/check-gc-disabled
Ask from binding if GC is disabled
2 parents 5c406d9 + 99aa5dd commit 22524a8

File tree

6 files changed

+4
-25
lines changed

6 files changed

+4
-25
lines changed

src/gc-common.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ void gc_premark(jl_ptls_t ptls2)
576576
// GC control
577577
// ---
578578

579-
_Atomic(uint32_t) jl_gc_disable_counter = 1;
579+
JL_DLLEXPORT _Atomic(uint32_t) jl_gc_disable_counter = 1;
580580

581581
JL_DLLEXPORT int jl_gc_enable(int on)
582582
{
@@ -588,11 +588,9 @@ JL_DLLEXPORT int jl_gc_enable(int on)
588588
if (jl_atomic_fetch_add(&jl_gc_disable_counter, -1) == 1) {
589589
gc_num.allocd += gc_num.deferred_alloc;
590590
gc_num.deferred_alloc = 0;
591-
enable_collection();
592591
}
593592
}
594593
else if (prev && !on) {
595-
disable_collection();
596594
// enable -> disable
597595
jl_atomic_fetch_add(&jl_gc_disable_counter, 1);
598596
// check if the GC is running and wait for it to finish

src/gc.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3438,12 +3438,6 @@ void jl_gc_threadfun(void *arg)
34383438
}
34393439

34403440
// added for MMTk integration
3441-
void enable_collection(void)
3442-
{
3443-
}
3444-
void disable_collection(void)
3445-
{
3446-
}
34473441

34483442
JL_DLLEXPORT void jl_gc_wb1_noinline(const void *parent) JL_NOTSAFEPOINT
34493443
{

src/gc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ extern const size_t max_collect_interval;
8383
extern size_t last_long_collect_interval;
8484
extern size_t total_mem;
8585
extern memsize_t max_total_memory;
86-
extern _Atomic(uint32_t) jl_gc_disable_counter;
86+
extern JL_DLLEXPORT _Atomic(uint32_t) jl_gc_disable_counter;
8787
extern jl_mutex_t heapsnapshot_lock;
8888
extern uint64_t finalizer_rngState[];
8989
extern int gc_n_threads;

src/julia_internal.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,6 @@ extern jl_array_t *jl_all_methods JL_GLOBALLY_ROOTED;
333333
JL_DLLEXPORT extern int jl_lineno;
334334
JL_DLLEXPORT extern const char *jl_filename;
335335

336-
extern void enable_collection(void);
337-
extern void disable_collection(void);
338336
jl_value_t *jl_gc_pool_alloc_noinline(jl_ptls_t ptls, int pool_offset,
339337
int osize);
340338
jl_value_t *jl_gc_big_alloc_noinline(jl_ptls_t ptls, size_t allocsz);
@@ -938,7 +936,7 @@ STATIC_INLINE int jl_addr_is_safepoint(uintptr_t addr)
938936
return addr >= safepoint_addr && addr < safepoint_addr + jl_page_size * 3;
939937
}
940938
extern _Atomic(uint32_t) jl_gc_running;
941-
extern _Atomic(uint32_t) jl_gc_disable_counter;
939+
extern JL_DLLEXPORT _Atomic(uint32_t) jl_gc_disable_counter;
942940
// All the functions are safe to be called from within a signal handler
943941
// provided that the thread will not be interrupted by another asynchronous
944942
// signal.

src/mmtk-gc.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ JL_DLLEXPORT void jl_gc_collect(jl_gc_collection_t collection)
219219
{
220220
jl_task_t *ct = jl_current_task;
221221
jl_ptls_t ptls = ct->ptls;
222-
if (jl_atomic_load_relaxed(&jl_gc_disable_counter)) {
222+
if (jl_atomic_load_acquire(&jl_gc_disable_counter)) {
223223
size_t localbytes = jl_atomic_load_relaxed(&ptls->gc_num.allocd) + gc_num.interval;
224224
jl_atomic_store_relaxed(&ptls->gc_num.allocd, -(int64_t)gc_num.interval);
225225
static_assert(sizeof(_Atomic(uint64_t)) == sizeof(gc_num.deferred_alloc), "");
@@ -503,14 +503,6 @@ void jl_gc_threadfun(void *arg)
503503
}
504504

505505
// added for MMTk integration
506-
void enable_collection(void)
507-
{
508-
mmtk_enable_collection();
509-
}
510-
void disable_collection(void)
511-
{
512-
mmtk_disable_collection();
513-
}
514506

515507
JL_DLLEXPORT void jl_gc_array_ptr_copy(jl_array_t *dest, void **dest_p, jl_array_t *src, void **src_p, ssize_t n) JL_NOTSAFEPOINT
516508
{

src/threading.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -351,9 +351,6 @@ jl_ptls_t jl_init_threadtls(int16_t tid)
351351
ptls->rngseed = jl_rand();
352352
if (tid == 0) {
353353
ptls->disable_gc = 1;
354-
#ifdef MMTK_GC
355-
disable_collection();
356-
#endif
357354
}
358355
#ifdef _OS_WINDOWS_
359356
if (tid == 0) {

0 commit comments

Comments
 (0)