[前][次][番号順一覧][スレッド一覧]

ruby-changes:72604

From: Nobuyoshi <ko1@a...>
Date: Wed, 20 Jul 2022 17:40:20 +0900 (JST)
Subject: [ruby-changes:72604] 472740de41 (master): Fix free objects count condition

https://git.ruby-lang.org/ruby.git/commit/?id=472740de41

From 472740de4184c214dfaaf6189fe3bb1b17a15ecc Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 20 Jul 2022 17:39:54 +0900
Subject: Fix free objects count condition

Free objects have `T_NONE` as the builtin type.  A pointer to a valid
array element will never be `NULL`.
---
 gc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gc.c b/gc.c
index e92a576c29..6fbcd74eb1 100644
--- a/gc.c
+++ b/gc.c
@@ -7866,9 +7866,10 @@ gc_verify_heap_page(rb_objspace_t *objspace, struct heap_page *page, VALUE obj) https://github.com/ruby/ruby/blob/trunk/gc.c#L7866
     for (uintptr_t ptr = start; ptr < end; ptr += slot_size) {
         VALUE val = (VALUE)ptr;
         void *poisoned = asan_unpoison_object_temporary(val);
+        enum ruby_value_type type = BUILTIN_TYPE(val);
 
-	if (RBASIC(val) == 0) free_objects++;
-	if (BUILTIN_TYPE(val) == T_ZOMBIE) zombie_objects++;
+	if (type == T_NONE) free_objects++;
+	if (type == T_ZOMBIE) zombie_objects++;
 	if (RVALUE_PAGE_UNCOLLECTIBLE(page, val) && RVALUE_PAGE_WB_UNPROTECTED(page, val)) {
 	    has_remembered_shady = TRUE;
 	}
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]