VALUE rb_rsort(VALUE obj, VALUE list) { VALUE dest = rb_sort(obj, list); rb_ary_reverse(dest); return dest; }
static VALUE collect_caller_bindings(rb_thread_t *th) { struct collect_caller_bindings_data data; VALUE result; int i; data.ary = rb_ary_new(); backtrace_each(th, collect_caller_bindings_init, collect_caller_bindings_iseq, collect_caller_bindings_cfunc, &data); result = rb_ary_reverse(data.ary); /* bindings should be created from top of frame */ for (i=0; i<RARRAY_LEN(result); i++) { VALUE entry = rb_ary_entry(result, i); VALUE cfp_val = rb_ary_entry(entry, CALLER_BINDING_BINDING); if (!NIL_P(cfp_val)) { rb_control_frame_t *cfp = GC_GUARDED_PTR_REF(cfp_val); rb_ary_store(entry, CALLER_BINDING_BINDING, rb_binding_new_with_cfp(th, cfp)); } } return result; }
static inline VALUE vm_backtrace(rb_thread_t *th, int lev) { VALUE ary = 0; if (lev < 0) { ary = rb_ary_new(); } vm_backtrace_each(th, lev, vm_backtrace_alloc, vm_backtrace_push, &ary); if (!ary) return Qnil; return rb_ary_reverse(ary); }
static VALUE array_spec_rb_ary_reverse(VALUE self, VALUE array) { return rb_ary_reverse(array); }