@@ -189,11 +189,16 @@ BigDecimal_memsize(const void *ptr)
189
189
return (sizeof (* pv ) + pv -> MaxPrec * sizeof (BDIGIT ));
190
190
}
191
191
192
+ #ifndef HAVE_RB_EXT_RACTOR_SAFE
193
+ # undef RUBY_TYPED_FROZEN_SHAREABLE
194
+ # define RUBY_TYPED_FROZEN_SHAREABLE 0
195
+ #endif
196
+
192
197
static const rb_data_type_t BigDecimal_data_type = {
193
198
"BigDecimal" ,
194
199
{ 0 , BigDecimal_delete , BigDecimal_memsize , },
195
200
#ifdef RUBY_TYPED_FREE_IMMEDIATELY
196
- 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY
201
+ 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_FROZEN_SHAREABLE
197
202
#endif
198
203
};
199
204
@@ -3351,6 +3356,9 @@ BigMath_s_log(VALUE klass, VALUE x, VALUE vprec)
3351
3356
void
3352
3357
Init_bigdecimal (void )
3353
3358
{
3359
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
3360
+ rb_ext_ractor_safe (true);
3361
+ #endif
3354
3362
VALUE arg ;
3355
3363
3356
3364
id_BigDecimal_exception_mode = rb_intern_const ("BigDecimal.exception_mode" );
@@ -3617,6 +3625,9 @@ static void VpFormatSt(char *psz, size_t fFmt);
3617
3625
static int VpRdup (Real * m , size_t ind_m );
3618
3626
3619
3627
#ifdef BIGDECIMAL_DEBUG
3628
+ # ifdef HAVE_RB_EXT_RACTOR_SAFE
3629
+ # error Need to make rewiting gnAlloc atomic
3630
+ # endif
3620
3631
static int gnAlloc = 0 ; /* Memory allocation counter */
3621
3632
#endif /* BIGDECIMAL_DEBUG */
3622
3633
0 commit comments