VALUE
rb_rsort(VALUE obj, VALUE list)
{
    VALUE dest = rb_sort(obj, list);
    rb_ary_reverse(dest);
    return dest;
}
示例#2
0
文件: vm_backtrace.c 项目: sho-h/ruby
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;
}
示例#3
0
文件: vm.c 项目: qnighy/ruby-1.9.2p0
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);
}
示例#4
0
static VALUE array_spec_rb_ary_reverse(VALUE self, VALUE array) {
  return rb_ary_reverse(array);
}