Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: e2a479eb7af2
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: d5cdc866d5f9
Choose a head ref
  • 2 commits
  • 7 files changed
  • 1 contributor

Commits on Jul 17, 2016

  1. Copy the full SHA
    7e027cb View commit details
  2. 2
    Copy the full SHA
    d5cdc86 View commit details
31 changes: 31 additions & 0 deletions lib/ruby/truffle/cext/ruby.h
Original file line number Diff line number Diff line change
@@ -216,6 +216,37 @@ VALUE rb_mutex_unlock(VALUE mutex);
VALUE rb_mutex_sleep(VALUE mutex, VALUE timeout);
VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);

// Rational

VALUE rb_Rational(VALUE num, VALUE den);
#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
#define rb_Rational2(x,y) rb_Rational((x), (y))
VALUE rb_rational_raw(VALUE num, VALUE den);
#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
VALUE rb_rational_new(VALUE num, VALUE den);
#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
#define rb_rational_new2(x,y) rb_rational_new((x), (y))
VALUE rb_rational_num(VALUE rat);
VALUE rb_rational_den(VALUE rat);
VALUE rb_flt_rationalize_with_prec(VALUE value, VALUE precision);
VALUE rb_flt_rationalize(VALUE value);

// Complex

VALUE rb_Complex(VALUE real, VALUE imag);
#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
#define rb_Complex2(x,y) rb_Complex((x), (y))
VALUE rb_complex_new(VALUE real, VALUE imag);
#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
#define rb_complex_new2(x,y) rb_complex_new((x), (y))
VALUE rb_complex_raw(VALUE real, VALUE imag);
#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
VALUE rb_complex_polar(VALUE r, VALUE theta);
VALUE rb_complex_set_real(VALUE complex, VALUE real);
VALUE rb_complex_set_imag(VALUE complex, VALUE imag);

// GC

VALUE rb_gc_enable();
20 changes: 0 additions & 20 deletions spec/ruby/optional/capi/ext/jruby_truffle.h
Original file line number Diff line number Diff line change
@@ -70,14 +70,6 @@
#undef HAVE_RB_PATH_TO_CLASS
#undef HAVE_RB_CLASS_SUPERCLASS

/* Complex */
#undef HAVE_RB_COMPLEX
#undef HAVE_RB_COMPLEX1
#undef HAVE_RB_COMPLEX2
#undef HAVE_RB_COMPLEX_NEW
#undef HAVE_RB_COMPLEX_NEW1
#undef HAVE_RB_COMPLEX_NEW2

/* Constants */
#undef HAVE_RB_CARRAY
#undef HAVE_RB_CBIGNUM
@@ -396,18 +388,6 @@
#undef HAVE_RB_RANGE_NEW
#undef HAVE_RB_RANGE_VALUES

/* Rational */
#undef HAVE_RB_RATIONAL
#undef HAVE_RB_RATIONAL1
#undef HAVE_RB_RATIONAL2
#undef HAVE_RB_RATIONAL_NEW
#undef HAVE_RB_RATIONAL_NEW1
#undef HAVE_RB_RATIONAL_NEW2
#ifdef RUBY_VERSION_IS_2_2
#undef HAVE_RB_RATIONAL_NUM
#undef HAVE_RB_RATIONAL_DEN
#endif

/* Regexp */
#undef HAVE_RB_BACKREF_GET
#undef HAVE_RB_REG_MATCH
5 changes: 0 additions & 5 deletions spec/truffle/tags/optional/capi/complex_tags.txt

This file was deleted.

7 changes: 0 additions & 7 deletions spec/truffle/tags/optional/capi/rational_tags.txt

This file was deleted.

56 changes: 56 additions & 0 deletions truffle/src/main/c/cext/ruby.c
Original file line number Diff line number Diff line change
@@ -396,6 +396,62 @@ void rb_undef(VALUE module, ID name) {
truffle_invoke(RUBY_CEXT, "rb_undef", module, name);
}

// Rational

VALUE rb_Rational(VALUE num, VALUE den) {
return truffle_invoke(RUBY_CEXT, "rb_Rational", num, den);
}

VALUE rb_rational_raw(VALUE num, VALUE den) {
return truffle_invoke(RUBY_CEXT, "rb_rational_raw", num, den);
}

VALUE rb_rational_new(VALUE num, VALUE den) {
return truffle_invoke(RUBY_CEXT, "rb_rational_new", num, den);
}

VALUE rb_rational_num(VALUE rat) {
return truffle_invoke(rat, "numerator");
}

VALUE rb_rational_den(VALUE rat) {
return truffle_invoke(rat, "denominator");
}

VALUE rb_flt_rationalize_with_prec(VALUE value, VALUE precision) {
return truffle_invoke(value, "rationalize", precision);
}

VALUE rb_flt_rationalize(VALUE value) {
return truffle_invoke(value, "rationalize");
}

// Complex

VALUE rb_Complex(VALUE real, VALUE imag) {
return truffle_invoke(RUBY_CEXT, "rb_Complex", real, imag);
}

VALUE rb_complex_new(VALUE real, VALUE imag) {
return truffle_invoke(RUBY_CEXT, "rb_complex_new", real, imag);
}

VALUE rb_complex_raw(VALUE real, VALUE imag) {
return truffle_invoke(RUBY_CEXT, "rb_complex_raw", real, imag);
}

VALUE rb_complex_polar(VALUE r, VALUE theta) {
return truffle_invoke(RUBY_CEXT, "rb_complex_polar", r, theta);
}

VALUE rb_complex_set_real(VALUE complex, VALUE real) {
return truffle_invoke(RUBY_CEXT, "rb_complex_set_real", complex, real);
}

VALUE rb_complex_set_imag(VALUE complex, VALUE imag) {
return truffle_invoke(RUBY_CEXT, "rb_complex_set_imag", complex, imag);
}

// Mutexes

VALUE rb_mutex_new(void) {
11 changes: 11 additions & 0 deletions truffle/src/main/ruby/core/complex.rb
Original file line number Diff line number Diff line change
@@ -358,4 +358,15 @@ def marshal_load(ary)
attr_reader :real
attr_reader :imag
alias_method :imaginary, :imag

private

def real=(real)
@real = real
end

def imag=(imag)
@imag = imag
end

end
44 changes: 44 additions & 0 deletions truffle/src/main/ruby/core/truffle/cext.rb
Original file line number Diff line number Diff line change
@@ -219,6 +219,50 @@ def rb_funcall(object, name, argc, args=[])
object.__send__(name, *args)
end

def rb_Rational(num, den)
Rational.new(num, den)
end

def rb_rational_raw(num, den)
Rational.new(num, den)
end

def rb_rational_new(num, den)
Rational(num, den)
end

def rb_complex_new(real, imag)
Complex.new(real, imag)
end

def rb_Complex(real, imag)
Complex.new(real, imag)
end

def rb_complex_raw(real, imag)
Complex.new(real, imag)
end

def rb_complex_new(real, imag)
Complex(real, imag)
end

def rb_complex_polar(r, theta)
Complex.new(r, theta)
end

def rb_complex_set_real(complex, real)
Truffle.privately do
complex.real = real
end
end

def rb_complex_set_imag(complex, imag)
Truffle.privately do
complex.imag = imag
end
end

def rb_mutex_new
Mutex.new
end