@@ -415,7 +415,6 @@ VALUE rb_id2sym(ID);
415
415
#define ID2SYM (x ) RB_ID2SYM(x)
416
416
#define SYM2ID (x ) RB_SYM2ID(x)
417
417
418
-
419
418
#ifndef USE_FLONUM
420
419
#if SIZEOF_VALUE >= SIZEOF_DOUBLE
421
420
#define USE_FLONUM 1
@@ -479,8 +478,8 @@ enum ruby_special_consts {
479
478
#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
480
479
481
480
int RTEST (VALUE value );
482
- #define NIL_P RB_NIL_P
483
481
int RB_NIL_P (VALUE value ); /* Defined as a function in TruffleRuby. */
482
+ #define NIL_P (v ) RB_NIL_P(v)
484
483
485
484
#define CLASS_OF (v ) rb_class_of((VALUE)(v))
486
485
@@ -561,11 +560,22 @@ MUST_INLINE int RB_FLOAT_TYPE_P(VALUE obj);
561
560
562
561
bool RB_TYPE_P (VALUE value , int type );
563
562
563
+ #ifdef __GNUC__
564
564
#define RB_GC_GUARD (v ) \
565
565
(*__extension__ ({ \
566
- volatile VALUE *rb_gc_guarded_ptr = rb_tr_gc_guard(&v); \
567
- rb_gc_guarded_ptr; \
566
+ volatile VALUE *rb_gc_guarded_ptr = rb_tr_gc_guard(&v); \
567
+ rb_gc_guarded_ptr; \
568
568
}))
569
+ #elif defined _MSC_VER
570
+ #pragma optimize("", off)
571
+ static inline volatile VALUE * rb_gc_guarded_ptr (volatile VALUE * ptr ) {return ptr ;}
572
+ #pragma optimize("", on)
573
+ #define RB_GC_GUARD (v ) (*rb_gc_guarded_ptr(&(v)))
574
+ #else
575
+ volatile VALUE * rb_gc_guarded_ptr_val (volatile VALUE * ptr , VALUE val );
576
+ #define HAVE_RB_GC_GUARDED_PTR_VAL 1
577
+ #define RB_GC_GUARD (v ) (*rb_gc_guarded_ptr_val(&(v),(v)))
578
+ #endif
569
579
570
580
#ifdef __GNUC__
571
581
#define RB_UNUSED_VAR (x ) x __attribute__ ((unused))
0 commit comments