Skip to content

Commit 504a426

Browse files
committed
Fix RGENGC_CHECK_MODE without VM_CHECK_MODE
1 parent 0c3bb5f commit 504a426

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

gc/default/default.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,8 +1206,8 @@ sweep_lock_lock_impl(rb_nativethread_lock_t *sweep_lock, const char *function, i
12061206
static inline void
12071207
sweep_lock_unlock(rb_nativethread_lock_t *sweep_lock)
12081208
{
1209-
GC_ASSERT(sweep_lock_owner == pthread_self());
12101209
#if VM_CHECK_MODE > 0
1210+
GC_ASSERT(sweep_lock_owner == pthread_self());
12111211
sweep_lock_owner = 0;
12121212
#endif
12131213
rb_native_mutex_unlock(sweep_lock);
@@ -1225,8 +1225,8 @@ sweep_lock_set_locked(void)
12251225
static inline void
12261226
sweep_lock_set_unlocked(void)
12271227
{
1228-
GC_ASSERT(sweep_lock_owner == pthread_self());
12291228
#if VM_CHECK_MODE > 0
1229+
GC_ASSERT(sweep_lock_owner == pthread_self());
12301230
sweep_lock_owner = 0;
12311231
#endif
12321232
}
@@ -1640,6 +1640,10 @@ check_rvalue_consistency_force(rb_objspace_t *objspace, const VALUE obj, int ter
16401640
{
16411641
int err = 0;
16421642

1643+
1644+
rb_execution_context_t *ec = rb_current_execution_context(false);
1645+
if (!ec) return 0; // sweep thread
1646+
16431647
int lev = RB_GC_VM_LOCK_NO_BARRIER();
16441648
{
16451649
if (SPECIAL_CONST_P(obj)) {
@@ -4349,8 +4353,8 @@ static void
43494353
debug_free_check(rb_objspace_t *objspace, VALUE vp)
43504354
{
43514355
if (!is_full_marking(objspace)) {
4352-
if (RVALUE_OLD_P(objspace, vp)) rb_bug("page_sweep: %p - old while minor GC.", (void *)p);
4353-
if (RVALUE_REMEMBERED(objspace, vp)) rb_bug("page_sweep: %p - remembered.", (void *)p);
4356+
if (RVALUE_OLD_P(objspace, vp)) rb_bug("page_sweep: %p - old while minor GC.", (void *)vp);
4357+
if (RVALUE_REMEMBERED(objspace, vp)) rb_bug("page_sweep: %p - remembered.", (void *)vp);
43544358
}
43554359
#define CHECK(x) if (x(objspace, vp) != FALSE) rb_bug("obj_free: " #x "(%s) != FALSE", rb_obj_info(vp))
43564360
CHECK(RVALUE_MARKED);
@@ -4433,6 +4437,7 @@ gc_pre_sweep_plane(rb_objspace_t *objspace, rb_heap_t *heap, struct heap_page *p
44334437
break;
44344438
}
44354439
switch (imemo_type(vp)) {
4440+
case imemo_callcache:
44364441
case imemo_constcache:
44374442
case imemo_cref:
44384443
case imemo_env:

0 commit comments

Comments
 (0)