@@ -8,7 +8,12 @@ extern "C" {
8
8
VALUE registered_tagged_value ;
9
9
VALUE registered_reference_value ;
10
10
VALUE registered_before_rb_gc_register_address ;
11
- VALUE registered_before_rb_global_variable ;
11
+ VALUE registered_before_rb_global_variable_string ;
12
+ VALUE registered_before_rb_global_variable_bignum ;
13
+ VALUE registered_before_rb_global_variable_float ;
14
+ VALUE registered_after_rb_global_variable_string ;
15
+ VALUE registered_after_rb_global_variable_bignum ;
16
+ VALUE registered_after_rb_global_variable_float ;
12
17
VALUE rb_gc_register_address_outside_init ;
13
18
14
19
static VALUE registered_tagged_address (VALUE self ) {
@@ -23,8 +28,28 @@ static VALUE get_registered_before_rb_gc_register_address(VALUE self) {
23
28
return registered_before_rb_gc_register_address ;
24
29
}
25
30
26
- static VALUE get_registered_before_rb_global_variable (VALUE self ) {
27
- return registered_before_rb_global_variable ;
31
+ static VALUE get_registered_before_rb_global_variable_string (VALUE self ) {
32
+ return registered_before_rb_global_variable_string ;
33
+ }
34
+
35
+ static VALUE get_registered_before_rb_global_variable_bignum (VALUE self ) {
36
+ return registered_before_rb_global_variable_bignum ;
37
+ }
38
+
39
+ static VALUE get_registered_before_rb_global_variable_float (VALUE self ) {
40
+ return registered_before_rb_global_variable_float ;
41
+ }
42
+
43
+ static VALUE get_registered_after_rb_global_variable_string (VALUE self ) {
44
+ return registered_after_rb_global_variable_string ;
45
+ }
46
+
47
+ static VALUE get_registered_after_rb_global_variable_bignum (VALUE self ) {
48
+ return registered_after_rb_global_variable_bignum ;
49
+ }
50
+
51
+ static VALUE get_registered_after_rb_global_variable_float (VALUE self ) {
52
+ return registered_after_rb_global_variable_float ;
28
53
}
29
54
30
55
static VALUE gc_spec_rb_gc_register_address (VALUE self ) {
@@ -71,17 +96,34 @@ void Init_gc_spec(void) {
71
96
rb_gc_register_address (& registered_tagged_value );
72
97
rb_gc_register_address (& registered_reference_value );
73
98
rb_gc_register_address (& registered_before_rb_gc_register_address );
74
- rb_global_variable (& registered_before_rb_global_variable );
99
+ rb_global_variable (& registered_before_rb_global_variable_string );
100
+ rb_global_variable (& registered_before_rb_global_variable_bignum );
101
+ rb_global_variable (& registered_before_rb_global_variable_float );
75
102
76
103
registered_tagged_value = INT2NUM (10 );
77
104
registered_reference_value = rb_str_new2 ("Globally registered data" );
78
105
registered_before_rb_gc_register_address = rb_str_new_cstr ("registered before rb_gc_register_address()" );
79
- registered_before_rb_global_variable = rb_str_new_cstr ("registered before rb_global_variable()" );
106
+
107
+ registered_before_rb_global_variable_string = rb_str_new_cstr ("registered before rb_global_variable()" );
108
+ registered_before_rb_global_variable_bignum = LONG2NUM (INT64_MAX );
109
+ registered_before_rb_global_variable_float = DBL2NUM (3.14 );
110
+
111
+ registered_after_rb_global_variable_string = rb_str_new_cstr ("registered after rb_global_variable()" );
112
+ rb_global_variable (& registered_after_rb_global_variable_string );
113
+ registered_after_rb_global_variable_bignum = LONG2NUM (INT64_MAX );
114
+ rb_global_variable (& registered_after_rb_global_variable_bignum );
115
+ registered_after_rb_global_variable_float = DBL2NUM (6.28 );
116
+ rb_global_variable (& registered_after_rb_global_variable_float );
80
117
81
118
rb_define_method (cls , "registered_tagged_address" , registered_tagged_address , 0 );
82
119
rb_define_method (cls , "registered_reference_address" , registered_reference_address , 0 );
83
120
rb_define_method (cls , "registered_before_rb_gc_register_address" , get_registered_before_rb_gc_register_address , 0 );
84
- rb_define_method (cls , "registered_before_rb_global_variable" , get_registered_before_rb_global_variable , 0 );
121
+ rb_define_method (cls , "registered_before_rb_global_variable_string" , get_registered_before_rb_global_variable_string , 0 );
122
+ rb_define_method (cls , "registered_before_rb_global_variable_bignum" , get_registered_before_rb_global_variable_bignum , 0 );
123
+ rb_define_method (cls , "registered_before_rb_global_variable_float" , get_registered_before_rb_global_variable_float , 0 );
124
+ rb_define_method (cls , "registered_after_rb_global_variable_string" , get_registered_after_rb_global_variable_string , 0 );
125
+ rb_define_method (cls , "registered_after_rb_global_variable_bignum" , get_registered_after_rb_global_variable_bignum , 0 );
126
+ rb_define_method (cls , "registered_after_rb_global_variable_float" , get_registered_after_rb_global_variable_float , 0 );
85
127
rb_define_method (cls , "rb_gc_register_address" , gc_spec_rb_gc_register_address , 0 );
86
128
rb_define_method (cls , "rb_gc_unregister_address" , gc_spec_rb_gc_unregister_address , 0 );
87
129
rb_define_method (cls , "rb_gc_enable" , gc_spec_rb_gc_enable , 0 );
0 commit comments