summaryrefslogtreecommitdiff
path: root/rjit_c.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-04-01 21:52:35 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2023-04-01 23:00:36 -0700
commita077b7e36b27462b9702251d6fb823d3a092a134 (patch)
tree0840fba415562e5602279632d3305cc4f27be058 /rjit_c.c
parent87dc06ed242ab6524cc51404513a8b0dad9fe1e3 (diff)
downloadruby-a077b7e36b27462b9702251d6fb823d3a092a134.tar.gz
RJIT: Support rest args
Diffstat (limited to 'rjit_c.c')
-rw-r--r--rjit_c.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/rjit_c.c b/rjit_c.c
index 9431afd896..134251bead 100644
--- a/rjit_c.c
+++ b/rjit_c.c
@@ -176,6 +176,13 @@ rjit_str_simple_append(VALUE str1, VALUE str2)
return rb_str_cat(str1, RSTRING_PTR(str2), RSTRING_LEN(str2));
}
+VALUE
+rjit_rb_ary_subseq_length(VALUE ary, long beg)
+{
+ long len = RARRAY_LEN(ary);
+ return rb_ary_subseq(ary, beg, len);
+}
+
// The code we generate in gen_send_cfunc() doesn't fire the c_return TracePoint event
// like the interpreter. When tracing for c_return is enabled, we patch the code after
// the C method return to call into this to fire the event.
@@ -507,6 +514,7 @@ extern VALUE rb_str_bytesize(VALUE str);
extern const rb_callable_method_entry_t *rb_callable_method_entry_or_negative(VALUE klass, ID mid);
extern VALUE rb_vm_yield_with_cfunc(rb_execution_context_t *ec, const struct rb_captured_block *captured, int argc, const VALUE *argv);
extern VALUE rb_vm_set_ivar_id(VALUE obj, ID id, VALUE val);
+extern VALUE rb_yjit_rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary);
#include "rjit_c.rbinc"