ruby-changes:73764
From: Nobuyoshi <ko1@a...>
Date: Wed, 28 Sep 2022 23:52:11 +0900 (JST)
Subject: [ruby-changes:73764] a05b261464 (master): Always use the longer version of `TRY_WITH_GC`
https://git.ruby-lang.org/ruby.git/commit/?id=a05b261464 From a05b2614645594df896aaf44a2e5701ee7fb5fec Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Wed, 28 Sep 2022 22:07:50 +0900 Subject: Always use the longer version of `TRY_WITH_GC` --- gc.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/gc.c b/gc.c index d026139d7b..0ba28ba67b 100644 --- a/gc.c +++ b/gc.c @@ -12121,10 +12121,16 @@ objspace_malloc_fixup(rb_objspace_t *objspace, void *mem, size_t size) https://github.com/ruby/ruby/blob/trunk/gc.c#L12121 } #if defined(__GNUC__) && RUBY_DEBUG -#define RB_BUG_INSTEAD_OF_RB_MEMERROR +#define RB_BUG_INSTEAD_OF_RB_MEMERROR 1 #endif -#ifdef RB_BUG_INSTEAD_OF_RB_MEMERROR +#ifndef RB_BUG_INSTEAD_OF_RB_MEMERROR +# define RB_BUG_INSTEAD_OF_RB_MEMERROR 0 +#endif + +#define GC_MEMERROR(...) \ + ((RB_BUG_INSTEAD_OF_RB_MEMERROR+0) ? rb_bug("" __VA_ARGS__) : rb_memerror()) + #define TRY_WITH_GC(siz, expr) do { \ const gc_profile_record_flag gpr = \ GPR_FLAG_FULL_MARK | \ @@ -12138,29 +12144,17 @@ objspace_malloc_fixup(rb_objspace_t *objspace, void *mem, size_t size) https://github.com/ruby/ruby/blob/trunk/gc.c#L12144 } \ else if (!garbage_collect_with_gvl(objspace, gpr)) { \ /* @shyouhei thinks this doesn't happen */ \ - rb_bug("TRY_WITH_GC: could not GC"); \ + GC_MEMERROR("TRY_WITH_GC: could not GC"); \ } \ else if ((expr)) { \ /* Success on 2nd try */ \ } \ else { \ - rb_bug("TRY_WITH_GC: could not allocate:" \ - "%"PRIdSIZE" bytes for %s", \ - siz, # expr); \ + GC_MEMERROR("TRY_WITH_GC: could not allocate:" \ + "%"PRIdSIZE" bytes for %s", \ + siz, # expr); \ } \ } while (0) -#else -#define TRY_WITH_GC(siz, alloc) do { \ - objspace_malloc_gc_stress(objspace); \ - if (!(alloc) && \ - (!garbage_collect_with_gvl(objspace, GPR_FLAG_FULL_MARK | \ - GPR_FLAG_IMMEDIATE_MARK | GPR_FLAG_IMMEDIATE_SWEEP | \ - GPR_FLAG_MALLOC) || \ - !(alloc))) { \ - ruby_memerror(); \ - } \ - } while (0) -#endif /* these shouldn't be called directly. * objspace_* functions do not check allocation size. -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/