summaryrefslogtreecommitdiff
path: root/eval_load.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-07 01:25:05 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-02-07 01:25:05 +0000
commit44aef0b53f3e73ec987a668a3284d5e28bdb8121 (patch)
tree4cbe7f49ca7c1b4be5f345870ef3d99126803a31 /eval_load.c
parent8ee7d0767f7940baeae60ffa95afde93f3378c93 (diff)
* this commit is a result of refactoring. only renaming functions,
moving definitions place, add/remove prototypes, deleting unused variables and removing yarv.h. This commit doesn't change any behavior of ruby/vm. * yarv.h, common.mk: remove yarv.h (contents are moved to yarvcore.h). * error.c, eval_intern.h: include yarvcore.h instead yarv.h * rename some functions: * debug.[ch]: debug_*() -> ruby_debug_*() * iseq.c: iseq_*() -> rb_iseq_*(), ruby_iseq_disasm() * iseq.c: node_name() -> ruby_node_name() * vm.c: yarv_check_redefinition_opt_method() -> rb_vm_check_redefinition_opt_method() * some refactoring with checking -Wall. * array.c: remove rb_ary_ptr() (unused) and remove unused local variables. * object.c: add a prototype of rb_mod_module_exec(). * eval_intern.h (ruby_cref): set it inline. * eval_load.c (rb_load), yarvcore.c: yarv_load() -> rb_load_internal(). * parse.y: add a prototype of rb_parse_in_eval() (in eval.c). * process.c: add a prototype of rb_thread_stop_timer_thread() (in thread.c). * thread.c: remove raw_gets() function (unused) and fix some format mismatch (format mismatchs have remained yet. this is todo). * thread.c (rb_thread_wait_fd_rw): fix typo on label name. * thread_pthread.ci: comment out codes with USE_THREAD_CACHE. * vm.c (rb_svar, rb_backref_get, rb_backref_get, rb_lastline_get, rb_lastline_set) : moved from yarvcore.c. * vm.c (yarv_init_redefined_flag): add a prototype and rename yarv_opt_method_table to vm_opt_method_table. * vm.c (rb_thread_eval): moved from yarvcore.c. * yarvcore.c: remove unused global variables and fix to use nsdr(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval_load.c')
-rw-r--r--eval_load.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/eval_load.c b/eval_load.c
index 809f9654a1..14e8692a43 100644
--- a/eval_load.c
+++ b/eval_load.c
@@ -111,7 +111,33 @@ rb_provide(const char *feature)
VALUE rb_load_path;
NORETURN(static void load_failed _((VALUE)));
-void th_klass_init(rb_thead_t *);
+
+RUBY_EXTERN NODE *ruby_eval_tree;
+
+static VALUE
+rb_load_internal(char *file)
+{
+ NODE *node;
+ VALUE iseq;
+ rb_thead_t *th = GET_THREAD();
+
+ {
+ th->parse_in_eval++;
+ node = (NODE *)rb_load_file(file);
+ th->parse_in_eval--;
+ node = ruby_eval_tree;
+ }
+
+ if (ruby_nerrs > 0) {
+ return 0;
+ }
+
+ iseq = rb_iseq_new(node, rb_str_new2("<top (required)>"),
+ rb_str_new2(file), Qfalse, ISEQ_TYPE_TOP);
+
+ rb_thread_eval(GET_THREAD(), iseq);
+ return 0;
+}
void
rb_load(VALUE fname, int wrap)
@@ -141,7 +167,7 @@ rb_load(VALUE fname, int wrap)
PUSH_TAG(PROT_NONE);
state = EXEC_TAG();
if (state == 0) {
- yarv_load(RSTRING_PTR(fname));
+ rb_load_internal(RSTRING_PTR(fname));
}
POP_TAG();