[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:102

From: ko1 atdot.net
Date: 24 Sep 2005 06:52:47 -0000
Subject: [yarv-diff:102] r258 - trunk

Author: ko1
Date: 2005-09-24 15:52:46 +0900 (Sat, 24 Sep 2005)
New Revision: 258

Modified:
   trunk/ChangeLog
   trunk/eval.c
   trunk/eval_jump.h
   trunk/eval_proc.c
   trunk/eval_thread.c
   trunk/yarv.h
   trunk/yarvcore.c
Log:
	* eval* : remove dependency to ruby_dyna_vars and ruby_class



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/ChangeLog	2005-09-24 06:52:46 UTC (rev 258)
@@ -4,6 +4,11 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2005-09-24(Sat) 15:51:42 +0900  Koichi Sasada  <ko1 atdot.net>
+
+	* eval* : remove dependency to ruby_dyna_vars and ruby_class
+
+
 2005-09-23(Fri) 20:39:14 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* eval_*.[ch] : split eval.c to some files

Modified: trunk/eval.c
===================================================================
--- trunk/eval.c	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/eval.c	2005-09-24 06:52:46 UTC (rev 258)
@@ -14,8 +14,11 @@
 
 #include "eval_intern.h"
 
-struct SCOPE *ruby_scope = 0; /* for gc.c */
+/* for gc.c */
+struct SCOPE *ruby_scope = 0;
+struct RVarmap *ruby_dyna_vars = 0;
 
+
 struct tag *ruby_prot_tag;
 VALUE rb_cProc;
 VALUE rb_cBinding;
@@ -58,25 +61,8 @@
 
 unsigned long frame_unique = 0;
 
-struct RVarmap *ruby_dyna_vars = 0;
-
-VALUE *
-rb_svar(cnt)
-    int cnt;
-{
-  return yarv_svar(cnt);
-}
-
-VALUE ruby_class;
 static VALUE ruby_wrapper;	/* security wrapper */
 
-#define PUSH_CLASS(c) do {		\
-    VALUE _class = ruby_class;		\
-    ruby_class = (c)
-
-#define POP_CLASS() ruby_class = _class; \
-} while (0)
-
 #define PUSH_THREAD_TAG() \
   PUSH_TAG(PROT_THREAD)
 
@@ -183,7 +169,6 @@
     PUSH_TAG(PROT_NONE);
     if ((state = EXEC_TAG()) == 0) {
 	rb_call_inits();
-	ruby_class = rb_cObject;
 	ruby_frame->self = ruby_top_self;
 #ifdef __MACOS__
 	_macruby_init();
@@ -366,7 +351,6 @@
     VALUE wrapper = ruby_wrapper;
     VALUE val;
 
-    PUSH_CLASS(ruby_wrapper = rb_module_new());
     ruby_top_self = rb_obj_clone(ruby_top_self);
     rb_extend_object(ruby_top_self, ruby_wrapper);
     PUSH_FRAME();
@@ -379,7 +363,6 @@
     ruby_top_self = self;
 
     POP_FRAME();
-    POP_CLASS();
     ruby_wrapper = wrapper;
     if (state) {
 	*state = status;
@@ -2034,7 +2017,6 @@
     int state;
     int mode;
 
-    PUSH_CLASS(under);
     PUSH_FRAME();
     ruby_frame->self = _frame.prev->self;
     ruby_frame->callee = _frame.prev->callee;
@@ -2051,7 +2033,6 @@
     POP_TAG();
     SCOPE_SET(mode);
     POP_FRAME();
-    POP_CLASS();
     if (state) JUMP_TAG(state);
 
     return val;
@@ -2087,58 +2068,13 @@
 }
 
 static VALUE
-yield_under_i(self)
-    VALUE self;
-{
-    return rb_yield_0(self, self, ruby_class, YIELD_PUBLIC_DEF, Qfalse);
-}
-
-/* block eval under the class/module context */
-static VALUE
-yield_under(under, self)
-    VALUE under, self;
-{
-    return exec_under(yield_under_i, under, 0, self);
-}
-
-static VALUE
 specific_eval(argc, argv, klass, self)
     int argc;
     VALUE *argv;
     VALUE klass, self;
 {
-    if (rb_block_given_p()) {
-	if (argc > 0) {
-	    rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
-	}
-	return yield_under(klass, self);
-    }
-    else {
-	char *file = "(eval)";
-	int   line = 1;
-
-	if (argc == 0) {
-	    rb_raise(rb_eArgError, "block not supplied");
-	}
-	else {
-	    if (ruby_safe_level >= 4) {
-		StringValue(argv[0]);
-	    }
-	    else {
-		SafeStringValue(argv[0]);
-	    }
-	    if (argc > 3) {
-		rb_raise(rb_eArgError, "wrong number of arguments: %s(src) or %s{..}",
-			 rb_id2name(ruby_frame->callee),
-			 rb_id2name(ruby_frame->callee));
-	    }
-	    if (argc > 2) line = NUM2INT(argv[2]);
-	    if (argc > 1) {
-		file = StringValuePtr(argv[1]);
-	    }
-	}
-	return eval_under(klass, self, argv[0], file, line);
-    }
+  UNSUPPORTED(specific_eval);
+  return Qnil;
 }
 
 /*
@@ -2243,15 +2179,12 @@
     fname = tmp;
 
     ruby_errinfo = Qnil;	/* ensure */
-    PUSH_CLASS(ruby_wrapper);
     if (!wrap) {
 	rb_secure(4);		/* should alter global state */
-	ruby_class = rb_cObject;
 	ruby_wrapper = 0;
     }
     else {
 	/* load in anonymous module as toplevel */
-	ruby_class = ruby_wrapper = rb_module_new();
 	self = rb_obj_clone(ruby_top_self);
 	rb_extend_object(self, ruby_wrapper);
     }
@@ -2283,7 +2216,6 @@
     POP_TAG();
     rb_prohibit_interrupt = prohibit_int;
     POP_FRAME();
-    POP_CLASS();
     ruby_wrapper = wrapper;
     if (ruby_nerrs > 0) {
 	ruby_nerrs = 0;
@@ -3212,7 +3144,6 @@
     __send__ = rb_intern("__send__");
 
     rb_global_variable((VALUE*)&ruby_eval_tree);
-    rb_global_variable((VALUE*)&ruby_dyna_vars);
 
     rb_define_virtual_variable("$@", errat_getter, errat_setter);
     rb_define_hooked_variable("$!", &ruby_errinfo, 0, errinfo_setter);

Modified: trunk/eval_jump.h
===================================================================
--- trunk/eval_jump.h	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/eval_jump.h	2005-09-24 06:52:46 UTC (rev 258)
@@ -275,14 +275,8 @@
 call_end_proc(data)
     VALUE data;
 {
-    PUSH_FRAME();
-    ruby_frame->self = ruby_frame->prev->self;
-    ruby_frame->node = 0;
-    ruby_frame->callee = 0;
-    ruby_frame->this_func = 0;
-    ruby_frame->this_class = 0;
-    proc_invoke(data, rb_ary_new2(0), Qundef, 0);
-    POP_FRAME();
+  // TODO: fix me
+  proc_invoke(data, rb_ary_new2(0), Qundef, 0);
 }
 
 /*

Modified: trunk/eval_proc.c
===================================================================
--- trunk/eval_proc.c	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/eval_proc.c	2005-09-24 06:52:46 UTC (rev 258)
@@ -1028,14 +1028,8 @@
 mproc(method)
     VALUE method;
 {
-    VALUE proc;
-
-    /* emulate ruby's method call */
-    PUSH_FRAME();
-    proc = rb_block_proc();
-    POP_FRAME();
-
-    return proc;
+  UNSUPPORTED(mproc);
+  return Qnil;
 }
 
 static VALUE

Modified: trunk/eval_thread.c
===================================================================
--- trunk/eval_thread.c	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/eval_thread.c	2005-09-24 06:52:46 UTC (rev 258)
@@ -493,8 +493,6 @@
 #endif
 
     th->frame = ruby_frame;
-    th->klass = ruby_class;
-    th->dyna_vars = ruby_dyna_vars;
     th->flags &= THREAD_FLAGS_MASK;
     th->tag = prot_tag;
   // th->tracing = tracing;
@@ -566,8 +564,6 @@
 
     rb_trap_immediate = 0;	/* inhibit interrupts from here */
     ruby_frame = th->frame;
-    ruby_class = th->klass;
-    ruby_dyna_vars = th->dyna_vars;
     prot_tag = th->tag;
   // tracing = th->tracing;
     ruby_errinfo = th->errinfo;
@@ -1462,7 +1458,6 @@
     th->scope = 0;\
     th->klass = 0;\
     th->wrapper = 0;\
-    th->dyna_vars = ruby_dyna_vars;\
     th->block = 0;\
     th->iter = 0;\
     th->tag = 0;\

Modified: trunk/yarv.h
===================================================================
--- trunk/yarv.h	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/yarv.h	2005-09-24 06:52:46 UTC (rev 258)
@@ -55,4 +55,6 @@
 
 VALUE yarvcore_eval_parsed(VALUE node, VALUE file);
 
+int yarv_block_given_p();
+
 #endif

Modified: trunk/yarvcore.c
===================================================================
--- trunk/yarvcore.c	2005-09-23 11:41:35 UTC (rev 257)
+++ trunk/yarvcore.c	2005-09-24 06:52:46 UTC (rev 258)
@@ -201,7 +201,7 @@
 
 VALUE *th_svar(yarv_thread_t *self, int cnt);
 
-VALUE *yarv_svar(int cnt){
+VALUE *rb_svar(int cnt){
   return th_svar(GET_THREAD(), cnt);
 }
 


--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]