1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
ko1 2007-08-24 15:26:28 +00:00
parent b285d26a16
commit 6bf7d3d8c0
6 changed files with 60 additions and 6 deletions

View file

@ -1,3 +1,17 @@
Sat Aug 25 00:22:31 2007 Koichi Sasada <ko1@atdot.net>
* 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 <ko1@atdot.net>
* compile.c (compile_massign_opt): fix to skip massign optimization

View file

@ -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)

View file

@ -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();
}

14
prelude.rb Normal file
View file

@ -0,0 +1,14 @@
# Mutex
class Mutex
class Mutex
def synchronize
self.lock
yield
ensure
self.unlock
end
end
end

View file

@ -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);

25
tool/compile_prelude.rb Normal file
View file

@ -0,0 +1,25 @@
prelude, outfile = *ARGV
lines = []
File.readlines(prelude).each{|line|
lines << "#{line.dump}"
}
open(outfile, 'w'){|f|
f.puts <<EOS__
#include "ruby/ruby.h"
static const char *prelude_code =
#{lines.join("\n")}
;
void
Init_prelude(void)
{
rb_iseq_eval(rb_iseq_compile(
rb_str_new2(prelude_code),
rb_str_new2("prelude.rb"), INT2FIX(1)));
}
EOS__
}