@@ -2280,12 +2280,16 @@ struct cross_ractor_require {
22802280 VALUE result ;
22812281 VALUE exception ;
22822282
2283- // require
2284- VALUE feature ;
2283+ union {
2284+ struct {
2285+ VALUE feature ;
2286+ } require ;
22852287
2286- // autoload
2287- VALUE module ;
2288- ID name ;
2288+ struct {
2289+ VALUE module ;
2290+ ID name ;
2291+ } autoload ;
2292+ } as ;
22892293
22902294 bool silent ;
22912295};
@@ -2294,8 +2298,7 @@ RUBY_REFERENCES(cross_ractor_require_refs) = {
22942298 RUBY_REF_EDGE (struct cross_ractor_require , port ),
22952299 RUBY_REF_EDGE (struct cross_ractor_require , result ),
22962300 RUBY_REF_EDGE (struct cross_ractor_require , exception ),
2297- RUBY_REF_EDGE (struct cross_ractor_require , feature ),
2298- RUBY_REF_EDGE (struct cross_ractor_require , module ),
2301+ RUBY_REF_EDGE (struct cross_ractor_require , as .require .feature ),
22992302 RUBY_REF_END
23002303};
23012304
@@ -2322,10 +2325,10 @@ require_body(VALUE crr_obj)
23222325 if (crr -> silent ) {
23232326 int rb_require_internal_silent (VALUE fname );
23242327
2325- RB_OBJ_WRITE (crr_obj , & crr -> result , INT2NUM (rb_require_internal_silent (crr -> feature )));
2328+ RB_OBJ_WRITE (crr_obj , & crr -> result , INT2NUM (rb_require_internal_silent (crr -> as . require . feature )));
23262329 }
23272330 else {
2328- RB_OBJ_WRITE (crr_obj , & crr -> result , rb_funcallv (Qnil , require , 1 , & crr -> feature ));
2331+ RB_OBJ_WRITE (crr_obj , & crr -> result , rb_funcallv (Qnil , require , 1 , & crr -> as . require . feature ));
23292332 }
23302333
23312334 return Qnil ;
@@ -2418,7 +2421,7 @@ rb_ractor_require(VALUE feature, bool silent)
24182421 FL_SET_RAW (crr_obj , RUBY_FL_SHAREABLE );
24192422
24202423 // Convert feature to proper file path and make it shareable as fstring
2421- RB_OBJ_WRITE (crr_obj , & crr -> feature , rb_fstring (FilePathValue (feature )));
2424+ RB_OBJ_WRITE (crr_obj , & crr -> as . require . feature , rb_fstring (FilePathValue (feature )));
24222425 RB_OBJ_WRITE (crr_obj , & crr -> port , ractor_port_new (GET_RACTOR ()));
24232426 crr -> result = Qundef ;
24242427 crr -> exception = Qundef ;
@@ -2459,7 +2462,7 @@ autoload_load_body(VALUE crr_obj)
24592462 struct cross_ractor_require * crr ;
24602463 TypedData_Get_Struct (crr_obj , struct cross_ractor_require , & cross_ractor_require_data_type , crr );
24612464
2462- RB_OBJ_WRITE (crr_obj , & crr -> result , rb_autoload_load (crr -> module , crr -> name ));
2465+ RB_OBJ_WRITE (crr_obj , & crr -> result , rb_autoload_load (crr -> as . autoload . module , crr -> as . autoload . name ));
24632466
24642467 return Qnil ;
24652468}
@@ -2476,8 +2479,8 @@ rb_ractor_autoload_load(VALUE module, ID name)
24762479 struct cross_ractor_require * crr ;
24772480 VALUE crr_obj = TypedData_Make_Struct (0 , struct cross_ractor_require , & cross_ractor_require_data_type , crr );
24782481 FL_SET_RAW (crr_obj , RUBY_FL_SHAREABLE );
2479- RB_OBJ_WRITE (crr_obj , & crr -> module , module );
2480- RB_OBJ_WRITE (crr_obj , & crr -> name , name );
2482+ RB_OBJ_WRITE (crr_obj , & crr -> as . autoload . module , module );
2483+ RB_OBJ_WRITE (crr_obj , & crr -> as . autoload . name , name );
24812484 RB_OBJ_WRITE (crr_obj , & crr -> port , ractor_port_new (GET_RACTOR ()));
24822485 crr -> result = Qundef ;
24832486 crr -> exception = Qundef ;
0 commit comments