diff options
Diffstat (limited to 'include/ruby')
-rw-r--r-- | include/ruby/ruby.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 6144c67234..d0651f40ac 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -536,7 +536,11 @@ static inline int rb_type(VALUE obj); #ifdef __GNUC__ #define RB_GC_GUARD(v) \ - (*__extension__ ({volatile VALUE *rb_gc_guarded_ptr = &(v); rb_gc_guarded_ptr;})) + (*__extension__ ({ \ + volatile VALUE *rb_gc_guarded_ptr = &(v); \ + __asm__("### RB_GC_GUARD("#v")" : : "m"(rb_gc_guarded_ptr)); \ + rb_gc_guarded_ptr; \ + })) #elif defined _MSC_VER #pragma optimize("", off) static inline volatile VALUE *rb_gc_guarded_ptr(volatile VALUE *ptr) {return ptr;} |