[前][次][番号順一覧][スレッド一覧]

ruby-changes:10302

From: yugui <ko1@a...>
Date: Wed, 28 Jan 2009 20:09:35 +0900 (JST)
Subject: [ruby-changes:10302] Ruby:r21846 (ruby_1_9_1): merges r21651 from trunk into ruby_1_9_1.

yugui	2009-01-28 20:09:14 +0900 (Wed, 28 Jan 2009)

  New Revision: 21846

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21846

  Log:
    merges r21651 from trunk into ruby_1_9_1.
    * eval.c, vm_eval.c (rb_f_local_variables): move definition from eval.c
      to vm_eval.c because vm_collect_local_variables_in_heap() should
      be static function.
    * vm.c (vm_collect_local_variables_in_heap): make it static.

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/eval.c
    branches/ruby_1_9_1/vm.c
    branches/ruby_1_9_1/vm_eval.c

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 21845)
+++ ruby_1_9_1/ChangeLog	(revision 21846)
@@ -1,3 +1,11 @@
+Mon Jan 19 08:56:53 2009  Koichi Sasada  <ko1@a...>
+
+	* eval.c, vm_eval.c (rb_f_local_variables): move definition from eval.c
+	  to vm_eval.c because vm_collect_local_variables_in_heap() should
+	  be static function.
+
+	* vm.c (vm_collect_local_variables_in_heap): make it static.
+
 Tue Jan 27 14:41:33 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* cygwin/GNUmakefile.in (RUBYDEF): needs DATA marks to export
Index: ruby_1_9_1/vm_eval.c
===================================================================
--- ruby_1_9_1/vm_eval.c	(revision 21845)
+++ ruby_1_9_1/vm_eval.c	(revision 21846)
@@ -19,6 +19,7 @@
 static NODE *vm_cref_push(rb_thread_t *th, VALUE klass, int noex);
 static VALUE vm_exec(rb_thread_t *th);
 static void vm_set_eval_stack(rb_thread_t * th, VALUE iseqval, const NODE *cref);
+static int vm_collect_local_variables_in_heap(rb_thread_t *th, VALUE *dfp, VALUE ary);
 
 static inline VALUE
 vm_call0(rb_thread_t * th, VALUE klass, VALUE recv, VALUE id, ID oid,
@@ -1321,10 +1322,67 @@
     return vm_backtrace(GET_THREAD(), -1);
 }
 
+/*
+ *  call-seq:
+ *     local_variables    => array
+ *
+ *  Returns the names of the current local variables.
+ *
+ *     fred = 1
+ *     for i in 1..10
+ *        # ...
+ *     end
+ *     local_variables   #=> ["fred", "i"]
+ */
+
+static VALUE
+rb_f_local_variables(void)
+{
+    VALUE ary = rb_ary_new();
+    rb_thread_t *th = GET_THREAD();
+    rb_control_frame_t *cfp =
+	vm_get_ruby_level_caller_cfp(th, RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp));
+    int i;
+
+    while (cfp) {
+	if (cfp->iseq) {
+	    for (i = 0; i < cfp->iseq->local_table_size; i++) {
+		ID lid = cfp->iseq->local_table[i];
+		if (lid) {
+		    const char *vname = rb_id2name(lid);
+		    /* should skip temporary variable */
+		    if (vname) {
+			rb_ary_push(ary, ID2SYM(lid));
+		    }
+		}
+	    }
+	}
+	if (cfp->lfp != cfp->dfp) {
+	    /* block */
+	    VALUE *dfp = GC_GUARDED_PTR_REF(cfp->dfp[0]);
+
+	    if (vm_collect_local_variables_in_heap(th, dfp, ary)) {
+		break;
+	    }
+	    else {
+		while (cfp->dfp != dfp) {
+		    cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
+		}
+	    }
+	}
+	else {
+	    break;
+	}
+    }
+    return ary;
+}
+
 void
 Init_vm_eval(void)
 {
     rb_define_global_function("eval", rb_f_eval, -1);
+    rb_define_global_function("local_variables", rb_f_local_variables, 0);
+
     rb_define_global_function("catch", rb_f_catch, -1);
     rb_define_global_function("throw", rb_f_throw, -1);
 
Index: ruby_1_9_1/eval.c
===================================================================
--- ruby_1_9_1/eval.c	(revision 21845)
+++ ruby_1_9_1/eval.c	(revision 21846)
@@ -1041,66 +1041,8 @@
     set_backtrace(err, val);
 }
 
-int vm_collect_local_variables_in_heap(rb_thread_t *th, VALUE *dfp, VALUE ary);
-
 /*
  *  call-seq:
- *     local_variables    => array
- *
- *  Returns the names of the current local variables.
- *
- *     fred = 1
- *     for i in 1..10
- *        # ...
- *     end
- *     local_variables   #=> ["fred", "i"]
- */
-
-static VALUE
-rb_f_local_variables(void)
-{
-    VALUE ary = rb_ary_new();
-    rb_thread_t *th = GET_THREAD();
-    rb_control_frame_t *cfp =
-	vm_get_ruby_level_caller_cfp(th, RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp));
-    int i;
-
-    while (cfp) {
-	if (cfp->iseq) {
-	    for (i = 0; i < cfp->iseq->local_table_size; i++) {
-		ID lid = cfp->iseq->local_table[i];
-		if (lid) {
-		    const char *vname = rb_id2name(lid);
-		    /* should skip temporary variable */
-		    if (vname) {
-			rb_ary_push(ary, ID2SYM(lid));
-		    }
-		}
-	    }
-	}
-	if (cfp->lfp != cfp->dfp) {
-	    /* block */
-	    VALUE *dfp = GC_GUARDED_PTR_REF(cfp->dfp[0]);
-
-	    if (vm_collect_local_variables_in_heap(th, dfp, ary)) {
-		break;
-	    }
-	    else {
-		while (cfp->dfp != dfp) {
-		    cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
-		}
-	    }
-	}
-	else {
-	    break;
-	}
-    }
-    return ary;
-}
-
-
-/*
- *  call-seq:
  *     __method__         => symbol
  *     __callee__         => symbol
  *
@@ -1135,7 +1077,6 @@
     rb_define_global_function("fail", rb_f_raise, -1);
 
     rb_define_global_function("global_variables", rb_f_global_variables, 0);	/* in variable.c */
-    rb_define_global_function("local_variables", rb_f_local_variables, 0);
 
     rb_define_global_function("__method__", rb_f_method_name, 0);
     rb_define_global_function("__callee__", rb_f_method_name, 0);
Index: ruby_1_9_1/vm.c
===================================================================
--- ruby_1_9_1/vm.c	(revision 21845)
+++ ruby_1_9_1/vm.c	(revision 21846)
@@ -373,9 +373,8 @@
     return 0;
 }
 
-int
-vm_collect_local_variables_in_heap(rb_thread_t * const th,
-				   VALUE * const dfp, const VALUE ary)
+static int
+vm_collect_local_variables_in_heap(rb_thread_t *th, VALUE *dfp, VALUE ary)
 {
     if (ENV_IN_HEAP_P(th, dfp)) {
 	rb_env_t *env;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]