Skip to content

Commit 1a8900d

Browse files
committed
Move rb_string_value* functions to ruby.c
* Those functions are exposed by libruby so they need to be externally visible.
1 parent cf1f49e commit 1a8900d

File tree

3 files changed

+29
-27
lines changed

3 files changed

+29
-27
lines changed

lib/cext/include/ruby/ruby.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -598,9 +598,15 @@ void rb_check_type(VALUE,int);
598598
#define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
599599

600600
VALUE rb_str_to_str(VALUE);
601-
MUST_INLINE VALUE rb_string_value(VALUE *value_pointer);
602-
MUST_INLINE char *rb_string_value_ptr(VALUE *value_pointer);
603-
MUST_INLINE char *rb_string_value_cstr(VALUE *value_pointer);
601+
#ifdef TRUFFLERUBY
602+
VALUE rb_string_value(VALUE *value_pointer);
603+
char *rb_string_value_ptr(VALUE *value_pointer);
604+
char *rb_string_value_cstr(VALUE *value_pointer);
605+
#else
606+
VALUE rb_string_value(volatile VALUE*);
607+
char *rb_string_value_ptr(volatile VALUE*);
608+
char *rb_string_value_cstr(volatile VALUE*);
609+
#endif
604610

605611
#define StringValue(v) rb_string_value(&(v))
606612
#define StringValuePtr(v) rb_string_value_ptr(&(v))

lib/cext/include/truffleruby/truffleruby.h

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -184,30 +184,6 @@ MUST_INLINE int rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock) {
184184
return 0;
185185
}
186186

187-
MUST_INLINE VALUE rb_string_value(VALUE *value_pointer) {
188-
VALUE value = *value_pointer;
189-
190-
if (!RB_TYPE_P(value, T_STRING)) {
191-
value = rb_str_to_str(value);
192-
*value_pointer = value;
193-
}
194-
195-
return value;
196-
}
197-
198-
MUST_INLINE char *rb_string_value_ptr(VALUE *value_pointer) {
199-
VALUE string = rb_string_value(value_pointer);
200-
return RSTRING_PTR(string);
201-
}
202-
203-
MUST_INLINE char *rb_string_value_cstr(VALUE *value_pointer) {
204-
VALUE string = rb_string_value(value_pointer);
205-
206-
RUBY_CEXT_INVOKE("rb_string_value_cstr_check", string);
207-
208-
return RSTRING_PTR(string);
209-
}
210-
211187
MUST_INLINE int rb_tr_scan_args(int argc, VALUE *argv, const char *format, VALUE *v1, VALUE *v2, VALUE *v3, VALUE *v4, VALUE *v5, VALUE *v6, VALUE *v7, VALUE *v8, VALUE *v9, VALUE *v10) {
212188
// Parse the format string
213189

src/main/c/cext/ruby.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,26 @@ double rb_float_value(VALUE value) {
799799

800800
// String
801801

802+
VALUE rb_string_value(VALUE *value_pointer) {
803+
VALUE value = *value_pointer;
804+
if (!RB_TYPE_P(value, T_STRING)) {
805+
value = rb_str_to_str(value);
806+
*value_pointer = value;
807+
}
808+
return value;
809+
}
810+
811+
char *rb_string_value_ptr(VALUE *value_pointer) {
812+
VALUE string = rb_string_value(value_pointer);
813+
return RSTRING_PTR(string);
814+
}
815+
816+
char *rb_string_value_cstr(VALUE *value_pointer) {
817+
VALUE string = rb_string_value(value_pointer);
818+
RUBY_CEXT_INVOKE("rb_string_value_cstr_check", string);
819+
return RSTRING_PTR(string);
820+
}
821+
802822
char *RSTRING_PTR_IMPL(VALUE string) {
803823
return (char *)polyglot_as_i8_array(RUBY_CEXT_INVOKE_NO_WRAP("RSTRING_PTR", string));
804824
}

0 commit comments

Comments
 (0)