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/