Skip to content

Commit 98ded5d

Browse files
committed
suggestions from Yi' review
1 parent e19c0da commit 98ded5d

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

src/engine.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ struct ReservationInfo {
1818

1919
struct InferKey {
2020
jl_method_instance_t *mi = nullptr;
21-
jl_value_t *owner = nullptr;
21+
JL_ROOT jl_value_t *owner = nullptr;
2222
};
2323

2424
template<> struct llvm::DenseMapInfo<InferKey> {
@@ -64,15 +64,15 @@ jl_code_instance_t *jl_engine_reserve(jl_method_instance_t *m, jl_value_t *owner
6464
auto tid = jl_atomic_load_relaxed(&ct->tid);
6565
if (([tid, m, owner, ci] () -> bool { // necessary scope block / lambda for unique_lock
6666
jl_unique_gcsafe_lock lock(engine_lock);
67-
arraylist_push(&objects_pinned_by_inference_engine, owner);
67+
arraylist_push(&gc_pinned_objects, owner);
6868
InferKey key{m, owner};
6969
if ((signed)Awaiting.size() < tid + 1)
7070
Awaiting.resize(tid + 1);
7171
while (1) {
7272
auto record = Reservations.find(key);
7373
if (record == Reservations.end()) {
7474
Reservations[key] = ReservationInfo{tid, ci};
75-
arraylist_pop(&objects_pinned_by_inference_engine);
75+
arraylist_pop(&gc_pinned_objects);
7676
return false;
7777
}
7878
// before waiting, need to run deadlock/cycle detection
@@ -81,7 +81,7 @@ jl_code_instance_t *jl_engine_reserve(jl_method_instance_t *m, jl_value_t *owner
8181
auto wait_tid = record->second.tid;
8282
while (1) {
8383
if (wait_tid == tid) {
84-
arraylist_pop(&objects_pinned_by_inference_engine);
84+
arraylist_pop(&gc_pinned_objects);
8585
return true;
8686
}
8787
if ((signed)Awaiting.size() <= wait_tid)
@@ -99,7 +99,7 @@ jl_code_instance_t *jl_engine_reserve(jl_method_instance_t *m, jl_value_t *owner
9999
lock.wait(engine_wait);
100100
Awaiting[tid] = InferKey{};
101101
}
102-
arraylist_pop(&objects_pinned_by_inference_engine);
102+
arraylist_pop(&gc_pinned_objects);
103103
})())
104104
ct->ptls->engine_nqueued--;
105105
JL_GC_POP();

src/gc-common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ JL_DLLEXPORT int jl_gc_enable(int on)
687687
// MISC
688688
// =========================================================================== //
689689

690-
arraylist_t objects_pinned_by_inference_engine;
690+
arraylist_t gc_pinned_objects;
691691

692692
JL_DLLEXPORT jl_weakref_t *jl_gc_new_weakref(jl_value_t *value)
693693
{

src/gc-mmtk.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ void jl_gc_init(void) {
7474

7575
jl_set_check_alive_type(mmtk_is_reachable_object);
7676

77-
arraylist_new(&objects_pinned_by_inference_engine, 0);
77+
arraylist_new(&gc_pinned_objects, 0);
7878
arraylist_new(&to_finalize, 0);
7979
arraylist_new(&finalizer_list_marked, 0);
8080
gc_num.interval = default_collect_interval;
@@ -251,8 +251,8 @@ JL_DLLEXPORT void jl_gc_collect(jl_gc_collection_t collection) {
251251

252252
void gc_pin_objects_from_inference_engine(arraylist_t *objects_pinned_by_call)
253253
{
254-
for (size_t i = 0; i < objects_pinned_by_inference_engine.len; i++) {
255-
void *obj = objects_pinned_by_inference_engine.items[i];
254+
for (size_t i = 0; i < gc_pinned_objects.len; i++) {
255+
void *obj = gc_pinned_objects.items[i];
256256
unsigned char got_pinned = mmtk_pin_object(obj);
257257
if (got_pinned) {
258258
arraylist_push(objects_pinned_by_call, obj);

src/julia.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1346,7 +1346,7 @@ JL_DLLEXPORT JL_CONST_FUNC jl_gcframe_t **(jl_get_pgcstack)(void) JL_GLOBALLY_RO
13461346

13471347
// object pinning ------------------------------------------------------------
13481348

1349-
extern arraylist_t objects_pinned_by_inference_engine;
1349+
extern arraylist_t gc_pinned_objects;
13501350
typedef bool (*check_alive_fn_type)(void *);
13511351
JL_DLLEXPORT void jl_set_check_alive_type(check_alive_fn_type fn);
13521352
JL_DLLEXPORT void jl_log_pinning_event(void *pinned_object, const char *filename, int lineno);

src/support/analyzer_annotations.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#define JL_NOTSAFEPOINT_ENTER __attribute__((annotate("julia_notsafepoint_enter")))
1616
#define JL_NOTSAFEPOINT_LEAVE __attribute__((annotate("julia_notsafepoint_leave")))
1717
#define JL_MAYBE_UNROOTED __attribute__((annotate("julia_maybe_unrooted")))
18+
#define JL_ROOT __attribute__((annotate("julia_rooted")))
1819
#define JL_GLOBALLY_ROOTED __attribute__((annotate("julia_globally_rooted")))
1920
#define JL_ROOTING_ARGUMENT __attribute__((annotate("julia_rooting_argument")))
2021
#define JL_ROOTED_ARGUMENT __attribute__((annotate("julia_rooted_argument")))
@@ -38,6 +39,7 @@ extern "C" {
3839
#define JL_NOTSAFEPOINT_ENTER
3940
#define JL_NOTSAFEPOINT_LEAVE
4041
#define JL_MAYBE_UNROOTED
42+
#define JL_ROOT
4143
#define JL_GLOBALLY_ROOTED
4244
#define JL_ROOTING_ARGUMENT
4345
#define JL_ROOTED_ARGUMENT

0 commit comments

Comments
 (0)