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