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

ruby-changes:56711

From: Nobuyoshi <ko1@a...>
Date: Wed, 31 Jul 2019 11:09:13 +0900 (JST)
Subject: [ruby-changes:56711] Nobuyoshi Nakada: 13e84d5c0a (master): Moved RHASH_LEV_MASK and turned into a macro

https://git.ruby-lang.org/ruby.git/commit/?id=13e84d5c0a

From 13e84d5c0a53ad013aa0093f179115bcf88417e9 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 31 Jul 2019 11:08:05 +0900
Subject: Moved RHASH_LEV_MASK and turned into a macro

Get rid of "ISO C restricts enumerator values to range of 'int'"
error.

diff --git a/hash.c b/hash.c
index dfb27b8..b0e9b02 100644
--- a/hash.c
+++ b/hash.c
@@ -1317,10 +1317,11 @@ iter_lev_in_ivar_set(VALUE hash, int lev) https://github.com/ruby/ruby/blob/trunk/hash.c#L1317
     rb_ivar_set_internal(hash, rb_intern("hash_iter_lev"), INT2FIX(lev));
 }
 
+#define RHASH_LEV_MASK ((VALUE)RHASH_LEV_MAX << RHASH_LEV_SHIFT)
 static int
 iter_lev_in_flags(VALUE hash)
 {
-    unsigned int u = (unsigned int)(RBASIC(hash)->flags & (unsigned int)RHASH_LEV_MASK) >> RHASH_LEV_SHIFT;
+    unsigned int u = (unsigned int)((RBASIC(hash)->flags >> RHASH_LEV_SHIFT) & RHASH_LEV_MAX);
     return (int)u;
 }
 
diff --git a/internal.h b/internal.h
index 1203f17..1dbb3d3 100644
--- a/internal.h
+++ b/internal.h
@@ -827,8 +827,6 @@ enum ruby_rhash_flags { https://github.com/ruby/ruby/blob/trunk/internal.h#L827
     RHASH_TRANSIENT_FLAG = FL_USER12,                                    /* FL 12 */
 #endif
 
-    RHASH_LEV_MASK = (FL_USER13 | FL_USER14 | FL_USER15 |                /* FL 13..19 */
-                      FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19),
     RHASH_LEV_SHIFT = (FL_USHIFT + 13),
     RHASH_LEV_MAX = 127, /* 7 bits */
 
-- 
cgit v0.10.2


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

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