diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2023-04-01 21:52:35 -0700 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2023-04-01 23:00:36 -0700 |
commit | a077b7e36b27462b9702251d6fb823d3a092a134 (patch) | |
tree | 0840fba415562e5602279632d3305cc4f27be058 /rjit_c.c | |
parent | 87dc06ed242ab6524cc51404513a8b0dad9fe1e3 (diff) | |
download | ruby-a077b7e36b27462b9702251d6fb823d3a092a134.tar.gz |
RJIT: Support rest args
Diffstat (limited to 'rjit_c.c')
-rw-r--r-- | rjit_c.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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" |