From 6bf7d3d8c08dbd96ec485bb856cb739139e720bc Mon Sep 17 00:00:00 2001 From: ko1 Date: Fri, 24 Aug 2007 15:26:28 +0000 Subject: * prelude.rb: added. run this script on startup. * tool/compile_prelude.rb: compile prelude.rb to C string. (prelude.rb -> prelude.c) * common.mk: fix to build with prelude.c. * inits.c (rb_call_inits): ditto. * thread.c (Init_Thread): move definition of Mutex#synchronize to prelude.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 14 ++++++++++++++ common.mk | 5 +++++ inits.c | 2 ++ prelude.rb | 14 ++++++++++++++ thread.c | 6 ------ tool/compile_prelude.rb | 25 +++++++++++++++++++++++++ 6 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 prelude.rb create mode 100644 tool/compile_prelude.rb diff --git a/ChangeLog b/ChangeLog index e5373e3dc4..0f0f1838cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Sat Aug 25 00:22:31 2007 Koichi Sasada + + * prelude.rb: added. run this script on startup. + + * tool/compile_prelude.rb: compile prelude.rb to C string. + (prelude.rb -> prelude.c) + + * common.mk: fix to build with prelude.c. + + * inits.c (rb_call_inits): ditto. + + * thread.c (Init_Thread): move definition of Mutex#synchronize + to prelude.rb. + Sat Aug 25 00:08:43 2007 Koichi Sasada * compile.c (compile_massign_opt): fix to skip massign optimization diff --git a/common.mk b/common.mk index 060e0501ec..742223fa7f 100644 --- a/common.mk +++ b/common.mk @@ -76,6 +76,7 @@ OBJS = array.$(OBJEXT) \ thread.$(OBJEXT) \ cont.$(OBJEXT) \ id.$(OBJEXT) \ + prelude.$(OBJEXT) \ $(MISSING) SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \ @@ -588,6 +589,7 @@ blockinlining.$(OBJEXT): {$(VPATH)}blockinlining.c \ {$(VPATH)}debug.h {$(VPATH)}vm_opts.h \ {$(VPATH)}thread_$(THREAD_MODEL).h id.$(OBJEXT): {$(VPATH)}id.c {$(VPATH)}ruby.h +prelude.$(OBJEXT): {$(VPATH)}prelude.c {$(VPATH)}ruby.h MATZRUBY = $(MATZRUBYDIR)ruby @@ -621,6 +623,9 @@ incs: $(INSNS) node_name.inc node_name.inc: {$(VPATH)}node.h $(BASERUBY) -n $(srcdir)/tool/node_name.rb $? > $@ +prelude.c: {$(VPATH)}prelude.rb + $(BASERUBY) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb prelude.c + docs: $(BASERUBY) -I$(srcdir) $(srcdir)/tool/makedocs.rb $(INSNS2VMOPT) diff --git a/inits.c b/inits.c index f63ea7de0e..7c53fb7aa2 100644 --- a/inits.c +++ b/inits.c @@ -51,6 +51,7 @@ void Init_VM(void); void Init_Thread(void); void Init_Cont(void); void Init_top_self(void); +void Init_prelude(void); void rb_call_inits() @@ -94,4 +95,5 @@ rb_call_inits() Init_Thread(); Init_Cont(); Init_version(); + Init_prelude(); } diff --git a/prelude.rb b/prelude.rb new file mode 100644 index 0000000000..423c9c423e --- /dev/null +++ b/prelude.rb @@ -0,0 +1,14 @@ + +# Mutex + +class Mutex + class Mutex + def synchronize + self.lock + yield + ensure + self.unlock + end + end +end + diff --git a/thread.c b/thread.c index 9a20254c6a..cedfcbea49 100644 --- a/thread.c +++ b/thread.c @@ -2968,12 +2968,6 @@ Init_Thread(void) rb_define_method(rb_cMutex, "unlock", rb_mutex_unlock, 0); rb_define_method(rb_cMutex, "sleep", mutex_sleep, -1); - rb_iseq_eval(rb_iseq_compile( - rb_str_new2("class Mutex;" - " def synchronize; self.lock; yield; ensure; self.unlock; end;" - "end;"), - rb_str_new2(__FILE__), INT2FIX(__LINE__))); - recursive_key = rb_intern("__recursive_key__"); rb_eThreadError = rb_define_class("ThreadError", rb_eStandardError); diff --git a/tool/compile_prelude.rb b/tool/compile_prelude.rb new file mode 100644 index 0000000000..13ccb8aced --- /dev/null +++ b/tool/compile_prelude.rb @@ -0,0 +1,25 @@ + +prelude, outfile = *ARGV +lines = [] + +File.readlines(prelude).each{|line| + lines << "#{line.dump}" +} + +open(outfile, 'w'){|f| +f.puts <