1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2000-08-09 04:32:24 +00:00
parent a3edeb5fec
commit c1bbe10599
12 changed files with 40 additions and 43 deletions

View file

@ -14,24 +14,23 @@ else
endif endif
WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT) WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_INSTALL_NAME).def RUBYDEF = $(RUBY_INSTALL_NAME).def
RUBY_SO_NAME = $(LIBRUBY_SO:.dll=) SOLIBS := $(LIBRUBY_SO).res.@OBJEXT@ $(SOLIBS)
SOLIBS := $(RUBY_SO_NAME).res.o $(SOLIBS) EXTOBJS += $(@:$(EXEEXT)=.res.@OBJEXT@)
EXTOBJS += $(@:$(EXEEXT)=.res.o)
$(LIBRUBY_SO): $(RUBYDEF) $(RUBY_SO_NAME).res.o $(LIBRUBY_SO): $(RUBYDEF) $(LIBRUBY_SO).res.@OBJEXT@
$(LIBRUBY): $(LIBRUBY_SO) $(LIBRUBY): $(LIBRUBY_SO)
%.res.o: %.rc %.res.@OBJEXT@: %.rc
@WINDRES@ --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@ @WINDRES@ --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(LIBRUBY_SO).rc: rbconfig.rb
@@MINIRUBY@ $(srcdir)/win32/resource.rb \ @@MINIRUBY@ $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \ -ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \ -so_name=$(LIBRUBY_SO) \
. $(icondirs) $(srcdir)/win32 . $(icondirs) $(srcdir)/win32
$(PROGRAM): $(RUBY_INSTALL_NAME).res.o $(PROGRAM): $(RUBY_INSTALL_NAME).res.@OBJEXT@
$(WPROGRAM): $(RUBYW_INSTALL_NAME).res.o $(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
@rm -f $@ @rm -f $@
$(PURIFY) $(CC) -mwindows -e _mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \ $(PURIFY) $(CC) -mwindows -e _mainCRTStartup $(LDFLAGS) $(XLDFLAGS) \
$(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@ $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@

View file

@ -61,8 +61,8 @@ if RUBY_PLATFORM == "m68k-human"
else else
CFLAGS = "@CFLAGS@" CFLAGS = "@CFLAGS@"
end end
LINK = "@CC@ -o conftest -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir @LDFLAGS@ %s %s conftest.c %s %s @LIBS@" LINK = "@CC@ -o conftest -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir @LDFLAGS@ %s %s %s conftest.c %s %s @LIBS@"
CPP = "@CPP@ @CPPFLAGS@ -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir %s %s conftest.c" CPP = "@CPP@ @CPPFLAGS@ -I#$topdir -I#$top_srcdir #{CFLAGS} -I#$includedir %s %s %s conftest.c"
if FileTest.readable? 'nul' if FileTest.readable? 'nul'
$null = open('nul', 'w') $null = open('nul', 'w')
@ -91,7 +91,7 @@ def try_link0(src, opt="")
cfile = open("conftest.c", "w") cfile = open("conftest.c", "w")
cfile.print src cfile.print src
cfile.close cfile.close
xsystem(format(LINK, $CFLAGS, $LDFLAGS, opt, $LOCAL_LIBS)) xsystem(format(LINK, $CFLAGS, $CPPFLAGS, $LDFLAGS, opt, $LOCAL_LIBS))
end end
def try_link(src, opt="") def try_link(src, opt="")
@ -107,7 +107,7 @@ def try_cpp(src, opt="")
cfile.print src cfile.print src
cfile.close cfile.close
begin begin
xsystem(format(CPP, $CFLAGS, opt)) xsystem(format(CPP, $CFLAGS, $CPPFLAGS, opt))
ensure ensure
rm_f "conftest*" rm_f "conftest*"
end end
@ -118,7 +118,7 @@ def egrep_cpp(pat, src, opt="")
cfile.print src cfile.print src
cfile.close cfile.close
begin begin
xsystem(format(CPP+"|egrep #{pat}", $CFLAGS, opt)) xsystem(format(CPP+"|egrep #{pat}", $CFLAGS, $CPPFLAGS, opt))
ensure ensure
rm_f "conftest*" rm_f "conftest*"
end end
@ -326,7 +326,7 @@ def dir_config(target)
ldir = " -L"+dir if dir ldir = " -L"+dir if dir
end end
$CFLAGS += idir if idir $CPPFLAGS += idir if idir
$LDFLAGS += ldir if ldir $LDFLAGS += ldir if ldir
end end
@ -375,7 +375,7 @@ DESTDIR =
CC = @CC@ CC = @CC@
CFLAGS = %s #{CFLAGS} #$CFLAGS CFLAGS = %s #{CFLAGS} #$CFLAGS
CPPFLAGS = -I$(topdir) -I$(hdrdir) -I@includedir@ %s CPPFLAGS = -I$(topdir) -I$(hdrdir) -I@includedir@ %s #$CPPFLAGS
DLDFLAGS = #$DLDFLAGS #$LDFLAGS DLDFLAGS = #$DLDFLAGS #$LDFLAGS
LDSHARED = @LDSHARED@ #{defflag} LDSHARED = @LDSHARED@ #{defflag}
", if $static then "" else "@CCDLFLAGS@" end, $defs.join(" ") ", if $static then "" else "@CCDLFLAGS@" end, $defs.join(" ")
@ -464,6 +464,11 @@ EOS
{$(srcdir)}.c{}.obj: {$(srcdir)}.c{}.obj:
$(CC) -I. -I$(<D) $(CFLAGS) $(CPPFLAGS) -c $(<:/=\\) $(CC) -I. -I$(<D) $(CFLAGS) $(CPPFLAGS) -c $(<:/=\\)
"
else
mfile.puts "
.c.@OBJEXT@:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
" "
end end

2
gc.c
View file

@ -280,9 +280,9 @@ rb_newobj()
if (!freelist) rb_gc(); if (!freelist) rb_gc();
if (freelist->as.free.next && freelist->as.free.next->as.free.flag != 0) abort();
obj = (VALUE)freelist; obj = (VALUE)freelist;
freelist = freelist->as.free.next; freelist = freelist->as.free.next;
MEMZERO((void*)obj, RVALUE, 1);
return obj; return obj;
} }

6
hash.c
View file

@ -171,9 +171,7 @@ rb_hash_new2(klass)
NEWOBJ(hash, struct RHash); NEWOBJ(hash, struct RHash);
OBJSETUP(hash, klass, T_HASH); OBJSETUP(hash, klass, T_HASH);
hash->iter_lev = 0;
hash->ifnone = Qnil; hash->ifnone = Qnil;
hash->tbl = 0; /* avoid GC crashing */
hash->tbl = st_init_table(&objhash); hash->tbl = st_init_table(&objhash);
return (VALUE)hash; return (VALUE)hash;
@ -225,9 +223,7 @@ rb_hash_s_create(argc, argv, klass)
NEWOBJ(hash, struct RHash); NEWOBJ(hash, struct RHash);
OBJSETUP(hash, klass, T_HASH); OBJSETUP(hash, klass, T_HASH);
hash->iter_lev = 0;
hash->ifnone = Qnil; hash->ifnone = Qnil;
hash->tbl = 0; /* avoid GC crashing */
hash->tbl = st_copy(RHASH(argv[0])->tbl); hash->tbl = st_copy(RHASH(argv[0])->tbl);
return (VALUE)hash; return (VALUE)hash;
@ -252,9 +248,7 @@ rb_hash_clone(hash)
NEWOBJ(clone, struct RHash); NEWOBJ(clone, struct RHash);
CLONESETUP(clone, hash); CLONESETUP(clone, hash);
clone->iter_lev = 0;
clone->ifnone = RHASH(hash)->ifnone; clone->ifnone = RHASH(hash)->ifnone;
clone->tbl = 0; /* avoid GC crashing */
clone->tbl = (st_table*)st_copy(RHASH(hash)->tbl); clone->tbl = (st_table*)st_copy(RHASH(hash)->tbl);
return (VALUE)clone; return (VALUE)clone;

View file

@ -939,7 +939,7 @@ convert string charset, and set language to "ja".
start_pos = lines.rindex(/^\s*<#{element}/ni, end_pos) start_pos = lines.rindex(/^\s*<#{element}/ni, end_pos)
lines[start_pos ... end_pos] = "__" + lines[start_pos ... end_pos].gsub(/\n(?!\z)/n, "\n" + shift) + "__" lines[start_pos ... end_pos] = "__" + lines[start_pos ... end_pos].gsub(/\n(?!\z)/n, "\n" + shift) + "__"
end end
lines.gsub(/^(\s*)__(?=<\/?\w)/n, '\1') lines.gsub(/^((?:#{Regexp::quote(shift)})*)__(?=<\/?\w)/n, '\1')
end end

View file

@ -386,7 +386,7 @@ hdrdir = #{$hdrdir}
CC = #{CONFIG["CC"]} CC = #{CONFIG["CC"]}
CFLAGS = #{CONFIG["CCDLFLAGS"]} #{CFLAGS} #{$CFLAGS} CFLAGS = #{CONFIG["CCDLFLAGS"]} #{CFLAGS} #{$CFLAGS}
CPPFLAGS = -I$(hdrdir) -I#{CONFIG["includedir"]} #{$defs.join(" ")} CPPFLAGS = -I$(hdrdir) -I#{CONFIG["includedir"]} #{$defs.join(" ")} #{CONFIG["CPPFLAGS"]}
CXXFLAGS = $(CFLAGS) CXXFLAGS = $(CFLAGS)
DLDFLAGS = #{$DLDFLAGS} #{$LDFLAGS} DLDFLAGS = #{$DLDFLAGS} #{$LDFLAGS}
LDSHARED = #{CONFIG["LDSHARED"]} #{defflag} LDSHARED = #{CONFIG["LDSHARED"]} #{defflag}
@ -454,6 +454,11 @@ EOMF
{$(srcdir)}.c.obj: {$(srcdir)}.c.obj:
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
"
else
mfile.print "
.c.#{$OBJEXT}:
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
" "
end end

View file

@ -93,7 +93,6 @@ rb_obj_clone(obj)
rb_raise(rb_eTypeError, "can't clone %s", rb_class2name(CLASS_OF(obj))); rb_raise(rb_eTypeError, "can't clone %s", rb_class2name(CLASS_OF(obj)));
} }
clone = rb_obj_alloc(RBASIC(obj)->klass); clone = rb_obj_alloc(RBASIC(obj)->klass);
ROBJECT(clone)->iv_tbl = 0; /* avoid GC crash */
CLONESETUP(clone,obj); CLONESETUP(clone,obj);
if (ROBJECT(obj)->iv_tbl) { if (ROBJECT(obj)->iv_tbl) {
ROBJECT(clone)->iv_tbl = st_copy(ROBJECT(obj)->iv_tbl); ROBJECT(clone)->iv_tbl = st_copy(ROBJECT(obj)->iv_tbl);
@ -521,8 +520,6 @@ rb_mod_clone(module)
CLONESETUP(clone, module); CLONESETUP(clone, module);
clone->super = RCLASS(module)->super; clone->super = RCLASS(module)->super;
clone->iv_tbl = 0;
clone->m_tbl = 0; /* avoid GC crashing */
if (RCLASS(module)->iv_tbl) { if (RCLASS(module)->iv_tbl) {
clone->iv_tbl = st_copy(RCLASS(module)->iv_tbl); clone->iv_tbl = st_copy(RCLASS(module)->iv_tbl);
} }

5
ruby.h
View file

@ -217,13 +217,12 @@ char *rb_str2cstr _((VALUE,int*));
VALUE rb_newobj _((void)); VALUE rb_newobj _((void));
#define NEWOBJ(obj,type) type *obj = (type*)rb_newobj() #define NEWOBJ(obj,type) type *obj = (type*)rb_newobj()
#define OBJSETUP(obj,c,t) {\ #define OBJSETUP(obj,c,t) {\
RBASIC(obj)->klass = (c);\
RBASIC(obj)->flags = (t);\ RBASIC(obj)->flags = (t);\
RBASIC(obj)->klass = (c);\
if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\ if (rb_safe_level() >= 3) FL_SET(obj, FL_TAINT);\
} }
#define CLONESETUP(clone,obj) do {\ #define CLONESETUP(clone,obj) do {\
RBASIC(clone)->flags = (RBASIC(obj)->flags);\ OBJSETUP(clone,rb_singleton_class_clone(RBASIC(obj)->klass),RBASIC(obj)->flags);\
RBASIC(obj)->klass = (rb_singleton_class_clone(RBASIC(obj)->klass));\
rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\ rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);\
if (FL_TEST(obj, FL_EXIVAR)) rb_clone_generic_ivar((VALUE)clone,(VALUE)obj);\ if (FL_TEST(obj, FL_EXIVAR)) rb_clone_generic_ivar((VALUE)clone,(VALUE)obj);\
} while (0) } while (0)

View file

@ -281,7 +281,6 @@ struct_alloc(argc, argv, klass)
size = iv_get(klass, "__size__"); size = iv_get(klass, "__size__");
n = FIX2LONG(size); n = FIX2LONG(size);
st->len = 0; /* avoid GC crashing */
st->ptr = ALLOC_N(VALUE, n); st->ptr = ALLOC_N(VALUE, n);
rb_mem_clear(st->ptr, n); rb_mem_clear(st->ptr, n);
st->len = n; st->len = n;
@ -408,7 +407,6 @@ rb_struct_clone(s)
{ {
NEWOBJ(clone, struct RStruct); NEWOBJ(clone, struct RStruct);
CLONESETUP(clone, s); CLONESETUP(clone, s);
clone->len = 0; /* avoid GC crashing */
clone->ptr = ALLOC_N(VALUE, RSTRUCT(s)->len); clone->ptr = ALLOC_N(VALUE, RSTRUCT(s)->len);
clone->len = RSTRUCT(s)->len; clone->len = RSTRUCT(s)->len;
MEMCPY(clone->ptr, RSTRUCT(s)->ptr, VALUE, clone->len); MEMCPY(clone->ptr, RSTRUCT(s)->ptr, VALUE, clone->len);

View file

@ -29,12 +29,12 @@ AUTOCONF = autoconf
prefix = /usr prefix = /usr
CFLAGS = -nologo -DNT=1 -MDd -Zi CFLAGS = -nologo -DNT=1 -Zi -O2b2x -G5
CPPFLAGS = -I$(srcdir) -I$(srcdir)/missing CPPFLAGS = -I$(srcdir) -I$(srcdir)/missing
LDFLAGS = $(CFLAGS) -Fm LDFLAGS = $(CFLAGS) -Fm
XLDFLAGS = XLDFLAGS =
#EXTLIBS = #EXTLIBS =
LIBS = RubyCRTD.lib user32.lib advapi32.lib ws2_32.lib $(EXTLIBS) LIBS = user32.lib advapi32.lib wsock32.lib $(EXTLIBS)
MISSING = crypt.obj alloca.obj win32.obj isinf.obj isnan.obj MISSING = crypt.obj alloca.obj win32.obj isinf.obj isnan.obj
LDSHARED = LDSHARED =
DLDFLAGS = DLDFLAGS =

View file

@ -1,12 +1,12 @@
s%@SHELL@%%g s%@SHELL@%%g
s%@CFLAGS@%-nologo -DNT=1 -MDd -Zi%g s%@CFLAGS@%-nologo -DNT=1 -Zi -O2b2x -G5%g
s%@CPPFLAGS@%%g s%@CPPFLAGS@%%g
s%@CXXFLAGS@%%g s%@CXXFLAGS@%%g
s%@FFLAGS@%%g s%@FFLAGS@%%g
s%@DEFS@% s%@DEFS@%
-DUSE_THREAD -DSIZEOF_INT=4 -DSIZEOF_SHORT=2 -DSIZEOF_LONG=4 -DSIZEOF_VOIDP=4 -DSIZEOF_FLOAT=4 -DSIZEOF_DOUBLE=8 -DHAVE_PROTOTYPES=1 -DHAVE_STDARG_PROTOTYPES=1 -DHAVE_STDLIB_H=1 -DHAVE_LIMITS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ST_RDEV=1 -DGETGROUPS_T=int -DRETSIGTYPE=void -DHAVE_ALLOCA=1 -DHAVE_FMOD=1 -DHAVE_WAITPID=1 -DHAVE_GETCWD=1 -DHAVE_CHSIZE=1 -DHAVE_GETGROUPS=1 -DHAVE_GETLOGIN=1 -DRSHIFT=\(x,y\)\ \(\(x\)\>\>y\) -DFILE_COUNT=_cnt -DDLEXT=\".so\" -DDLEXT2=\".dll\" -DRUBY_PLATFORM=\"i586-mswin32\" %g -DUSE_THREAD -DSIZEOF_INT=4 -DSIZEOF_SHORT=2 -DSIZEOF_LONG=4 -DSIZEOF_VOIDP=4 -DSIZEOF_FLOAT=4 -DSIZEOF_DOUBLE=8 -DHAVE_PROTOTYPES=1 -DHAVE_STDARG_PROTOTYPES=1 -DHAVE_STDLIB_H=1 -DHAVE_LIMITS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ST_RDEV=1 -DGETGROUPS_T=int -DRETSIGTYPE=void -DHAVE_ALLOCA=1 -DHAVE_FMOD=1 -DHAVE_WAITPID=1 -DHAVE_GETCWD=1 -DHAVE_CHSIZE=1 -DHAVE_GETGROUPS=1 -DHAVE_GETLOGIN=1 -DRSHIFT=\(x,y\)\ \(\(x\)\>\>y\) -DFILE_COUNT=_cnt -DDLEXT=\".so\" -DDLEXT2=\".dll\" -DRUBY_PLATFORM=\"i586-mswin32\" %g
s%@LDFLAGS@%-nologo -MDd -Zi%g s%@LDFLAGS@%-nologo%g
s%@LIBS@%RubyCRTD.lib user32.lib advapi32.lib ws2_32.lib%g s%@LIBS@%user32.lib advapi32.lib wsock32.lib%g
s%@exec_prefix@%${prefix}%g s%@exec_prefix@%${prefix}%g
s%@prefix@%%g s%@prefix@%%g
s%@program_transform_name@%s,x,x,%g s%@program_transform_name@%s,x,x,%g
@ -40,7 +40,7 @@ s%@DEFAULT_KCODE@%%g
s%@EXEEXT@%.exe%g s%@EXEEXT@%.exe%g
s%@OBJEXT@%obj%g s%@OBJEXT@%obj%g
s%@XLDFLAGS@%%g s%@XLDFLAGS@%%g
s%@DLDFLAGS@%-MDd -Zi%g s%@DLDFLAGS@%$(CFLAGS)%g
s%@STATIC@%%g s%@STATIC@%%g
s%@CCDLFLAGS@%-DIMPORT%g s%@CCDLFLAGS@%-DIMPORT%g
s%@LDSHARED@%cl -LD%g s%@LDSHARED@%cl -LD%g
@ -59,10 +59,10 @@ s%@LIBRUBY_ALIASES@%%g
s%@LIBRUBY@%$(RUBY_SO_NAME).lib%g s%@LIBRUBY@%$(RUBY_SO_NAME).lib%g
s%@LIBRUBYARG@%$(topdir)/$(RUBY_SO_NAME).lib%g s%@LIBRUBYARG@%$(topdir)/$(RUBY_SO_NAME).lib%g
s%@SOLIBS@%%g s%@SOLIBS@%%g
s%@DLDLIBS@%RubyCRTD.lib%g s%@DLDLIBS@%%g
s%@arch@%i586-mswin32%g s%@arch@%i586-mswin32%g
s%@sitedir@%${prefix}/lib/ruby/site_ruby%g s%@sitedir@%${prefix}/lib/ruby/site_ruby%g
s%@configure_args@%--with-make-prog=nmake --with-tcllib=tcl83 --with-tklib=tk83%g s%@configure_args@%--with-make-prog=nmake%g
s%@configure_input@%$configure_input%g s%@configure_input@%$configure_input%g
s%@srcdir@%$srcdir%g s%@srcdir@%$srcdir%g
s%@top_srcdir@%$top_srcdir%g s%@top_srcdir@%$top_srcdir%g

View file

@ -8,7 +8,7 @@ fversion = "#{CONFIG['MAJOR']},#{CONFIG['MINOR']},#{CONFIG['TEENY']},0"
$ruby_name ||= CONFIG["RUBY_INSTALL_NAME"] $ruby_name ||= CONFIG["RUBY_INSTALL_NAME"]
$rubyw_name ||= CONFIG["RUBYW_INSTALL_NAME"] || $ruby_name.sub(/ruby/, '\&w') $rubyw_name ||= CONFIG["RUBYW_INSTALL_NAME"] || $ruby_name.sub(/ruby/, '\&w')
$so_name ||= CONFIG["RUBY_SO_NAME"] $so_name ||= CONFIG["RUBY_SO_NAME"] + '.dll'
icons = {} icons = {}
def icons.find(path) def icons.find(path)
@ -49,7 +49,7 @@ end
[ # base name extension file type icons [ # base name extension file type icons
[$ruby_name, CONFIG["EXEEXT"], 'VFT_APP', ruby_icon], [$ruby_name, CONFIG["EXEEXT"], 'VFT_APP', ruby_icon],
[$rubyw_name, CONFIG["EXEEXT"], 'VFT_APP', rubyw_icon], [$rubyw_name, CONFIG["EXEEXT"], 'VFT_APP', rubyw_icon],
[$so_name, '.'+CONFIG["DLEXT2"], 'VFT_DLL', dll_icons], [$so_name, '', 'VFT_DLL', dll_icons],
].each do |base, ext, type, icons| ].each do |base, ext, type, icons|
open(base + '.rc', "w") { |f| open(base + '.rc', "w") { |f|
f.binmode if /mingw/ =~ RUBY_PLATFORM f.binmode if /mingw/ =~ RUBY_PLATFORM