Skip to content

Commit

Permalink
Showing 5 changed files with 12 additions and 8 deletions.
2 changes: 2 additions & 0 deletions lib/ruby/truffle/cext/ruby.h
Original file line number Diff line number Diff line change
@@ -103,6 +103,8 @@ VALUE rb_Array(VALUE value);
VALUE rb_ary_new(void);
VALUE rb_ary_new_capa(long capacity);
#define rb_ary_new2 rb_ary_new_capa
VALUE rb_ary_new_from_args(long n, ...);
#define rb_ary_new3 rb_ary_new_from_args
VALUE rb_ary_push(VALUE array, VALUE value);
VALUE rb_ary_pop(VALUE array);
void rb_ary_store(VALUE array, long index, VALUE value);
Binary file modified lib/ruby/truffle/cext/ruby.su
Binary file not shown.
4 changes: 0 additions & 4 deletions spec/ruby/optional/capi/ext/jruby_truffle.h
Original file line number Diff line number Diff line change
@@ -20,10 +20,6 @@
#undef HAVE_RB_ARY_FREEZE
#undef HAVE_RB_ARY_INCLUDES
#undef HAVE_RB_ARY_JOIN
#undef HAVE_RB_ARY_NEW3
#ifdef RUBY_VERSION_IS_2_1
#undef HAVE_RB_ARY_NEW_FROM_ARGS
#endif
#undef HAVE_RB_ARY_NEW4
#undef HAVE_RB_ARY_REVERSE
#undef HAVE_RB_ARY_SHIFT
2 changes: 0 additions & 2 deletions spec/truffle/tags/optional/capi/array_tags.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
fails:C-API Array function rb_Array returns obj wrapped in an array if it cannot be converted to an array
fails:C-API Array function rb_ary_new3 returns an array with the passed cardinality and varargs
fails:C-API Array function rb_ary_new_from_args returns an array with the passed cardinality and varargs
fails:C-API Array function rb_ary_new4 returns returns an array with the passed values
fails:C-API Array function rb_ary_join joins elements of an array with a string
fails:C-API Array function rb_ary_to_s creates an Array literal representation as a String
12 changes: 10 additions & 2 deletions truffle/src/main/c/cext/ruby.c
Original file line number Diff line number Diff line change
@@ -158,12 +158,20 @@ VALUE rb_Array(VALUE array) {
return truffle_invoke(RUBY_CEXT, "rb_Array", array);
}

VALUE rb_ary_new() {
return (VALUE) truffle_invoke(RUBY_CEXT, "rb_ary_new");
}

VALUE rb_ary_new_capa(long capacity) {
return (VALUE) truffle_invoke(RUBY_CEXT, "rb_ary_new_capa", capacity);
}

VALUE rb_ary_new() {
return (VALUE) truffle_invoke(RUBY_CEXT, "rb_ary_new");
VALUE rb_ary_new_from_args(long n, ...) {
VALUE array = rb_ary_new_capa(n);
for (int i = 0; i < n; i++) {
rb_ary_store(array, i, (VALUE) truffle_get_arg(1+i));
}
return array;
}

VALUE rb_ary_push(VALUE array, VALUE value) {

1 comment on commit d955a02

@chrisseaton
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Please sign in to comment.