summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-15 04:37:26 (GMT)
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-15 04:37:26 (GMT)
commitc2e8fb0f34999739cff9c9e2d637346079b9365f (patch)
treea49f1ca0bb1b070c525b5ba80a8dc644f10ecc62 /string.c
parentd0e86105829192d982016d5e8badea950a76b6dd (diff)
proc.c: proc without env
* proc.c (rb_sym_to_proc): move from string.c and create a Proc with no environments. [ruby-core:71088] [Bug #11594] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c29
1 files changed, 2 insertions, 27 deletions
diff --git a/string.c b/string.c
index fac0085..313825c 100644
--- a/string.c
+++ b/string.c
@@ -8960,6 +8960,7 @@ rb_sym_proc_call(VALUE args, VALUE sym, int argc, const VALUE *argv, VALUE passe
return rb_funcall_with_block(obj, (ID)sym, argc - 1, argv + 1, passed_proc);
}
+#if 0
/*
* call-seq:
* sym.to_proc
@@ -8972,34 +8973,8 @@ rb_sym_proc_call(VALUE args, VALUE sym, int argc, const VALUE *argv, VALUE passe
VALUE
rb_sym_to_proc(VALUE sym)
{
- static VALUE sym_proc_cache = Qfalse;
- enum {SYM_PROC_CACHE_SIZE = 67};
- VALUE proc;
- long index;
- ID id;
- VALUE *aryp;
-
- if (!sym_proc_cache) {
- sym_proc_cache = rb_ary_tmp_new(SYM_PROC_CACHE_SIZE * 2);
- rb_gc_register_mark_object(sym_proc_cache);
- rb_ary_store(sym_proc_cache, SYM_PROC_CACHE_SIZE*2 - 1, Qnil);
- }
-
- id = SYM2ID(sym);
- index = (id % SYM_PROC_CACHE_SIZE) << 1;
-
- aryp = RARRAY_PTR(sym_proc_cache);
- if (aryp[index] == sym) {
- return aryp[index + 1];
- }
- else {
- proc = rb_proc_new(rb_sym_proc_call, (VALUE)id);
- rb_block_clear_env_self(proc);
- aryp[index] = sym;
- aryp[index + 1] = proc;
- return proc;
- }
}
+#endif
/*
* call-seq: