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

ruby-changes:20733

From: ktsj <ko1@a...>
Date: Sun, 31 Jul 2011 23:02:15 +0900 (JST)
Subject: [ruby-changes:20733] ktsj:r32781 (trunk): * vm.c (vm_make_env_each): don't save prev env value.

ktsj	2011-07-31 23:00:57 +0900 (Sun, 31 Jul 2011)

  New Revision: 32781

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

  Log:
    * vm.c (vm_make_env_each): don't save prev env value.
    It is no longer used. [Feature #4871] [ruby-dev:43743]
    
    * vm.c (check_env): changed accordingly.

  Modified files:
    trunk/ChangeLog
    trunk/vm.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32780)
+++ ChangeLog	(revision 32781)
@@ -1,3 +1,10 @@
+Sun Jul 31 22:50:23 2011  Kazuki Tsujimoto  <kazuki@c...>
+
+	* vm.c (vm_make_env_each): don't save prev env value.
+	It is no longer used. [Feature #4871] [ruby-dev:43743]
+
+	* vm.c (check_env): changed accordingly.
+
 Sun Jul 31 20:21:36 2011  "Yuki Sonoda (Yugui)"  <yugui@y...>
 
 	* common.mk (ECHO1): ":" in a make variable replacement cause a syntax
Index: vm.c
===================================================================
--- vm.c	(revision 32780)
+++ vm.c	(revision 32781)
@@ -217,7 +217,6 @@
   env{
     env[0] // special (block or prev env)
     env[1] // env object
-    env[2] // prev env val
   };
  */
 
@@ -305,17 +304,13 @@
 {
     printf("---\n");
     printf("envptr: %p\n", (void *)&env->block.dfp[0]);
-    printf("orphan: %p\n", (void *)env->block.dfp[1]);
-    printf("inheap: %p\n", (void *)env->block.dfp[2]);
-    printf("envval: %10p ", (void *)env->block.dfp[3]);
-    dp(env->block.dfp[3]);
-    printf("penvv : %10p ", (void *)env->block.dfp[4]);
-    dp(env->block.dfp[4]);
+    printf("envval: %10p ", (void *)env->block.dfp[1]);
+    dp(env->block.dfp[1]);
     printf("lfp:    %10p\n", (void *)env->block.lfp);
     printf("dfp:    %10p\n", (void *)env->block.dfp);
-    if (env->block.dfp[4]) {
+    if (env->prev_envval) {
 	printf(">>\n");
-	check_env_value(env->block.dfp[4]);
+	check_env_value(env->prev_envval);
 	printf("<<\n");
     }
     return 1;
@@ -379,7 +374,7 @@
 	local_size = cfp->iseq->local_size;
     }
 
-    env->env_size = local_size + 1 + 2;
+    env->env_size = local_size + 1 + 1;
     env->local_size = local_size;
     env->env = ALLOC_N(VALUE, env->env_size);
     env->prev_envval = penvval;
@@ -398,7 +393,6 @@
     *envptr = envval;		/* GC mark */
     nenvptr = &env->env[i - 1];
     nenvptr[1] = envval;	/* frame self */
-    nenvptr[2] = penvval;	/* frame prev env object */
 
     /* reset lfp/dfp in cfp */
     cfp->dfp = nenvptr;

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

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