299.403
svn: r979
This commit is contained in:
parent
54ea8d32a8
commit
261662f378
|
@ -22,7 +22,7 @@ PERL = @PERL@
|
|||
RANLIB = @RANLIB@
|
||||
AR = @AR@
|
||||
ARFLAGS = @ARFLAGS@
|
||||
OPTIONS = @OPTIONS@ @MROPTIONS@
|
||||
OPTIONS = @OPTIONS@ @GC2OPTIONS@ @MROPTIONS@
|
||||
XINCLUDE = @X_CFLAGS@
|
||||
XLIB = @X_LIBS@
|
||||
LDLIBS = @X_PRE_LIBS@ -lXaw -lXmu -lXt -lX11 -lXext @X_EXTRA_LIBS@ @LIBS@
|
||||
|
@ -60,8 +60,8 @@ MZMMM = $(MZMMM_@WXVARIANT@)
|
|||
XFORM_CMD = $(MZMMM) -rq $(srcdir)/../../mzscheme/gc2/xform.ss --setup
|
||||
XFORM_CPP_ARGS = -I$(srcdir)/../../mzscheme/gc2 $(XINCLUDE) $(NOGCINC) $(OPTIONS) @PREFLAGS@ $(XFORM_INC_@WXVARIANT@) @JPEG_INC@ @ZLIB_INC@
|
||||
|
||||
XFORMXX = $(XFORM_CMD) "$(CXXCPP) $(XFORM_CPP_ARGS)"
|
||||
XFORM = $(XFORM_CMD) "$(CPP) $(XFORM_CPP_ARGS)"
|
||||
XFORMXX = $(XFORM_CMD) --cpp "$(CXXCPP) $(XFORM_CPP_ARGS)" -o
|
||||
XFORM = $(XFORM_CMD) --cpp "$(CPP) $(XFORM_CPP_ARGS)" -o
|
||||
XFORMDEP = $(srcdir)/../../mzscheme/gc2/xform.ss $(srcdir)/../../mzscheme/gc2/xform-mod.ss $(srcdir)/../../mzscheme/gc2/gc2.h
|
||||
|
||||
WXBDIR=../../wxxt
|
||||
|
@ -70,141 +70,141 @@ WXMACBDIR=../../wxmac/src
|
|||
MREDLDFLAGS = -L$(WXBDIR)/utils/image/src -L$(WXBDIR)/contrib/xpm/lib $(LDFLAGS) -L../../mzscheme -L../wxs -L../wxme -L$(WXBDIR)/src
|
||||
|
||||
xsrc/Window.cc: $(WXDIR)/src/Windows/Window.cc $(WXBDIR)/src/Windows/Window.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Window.cc xsrc/Window.cc
|
||||
$(XFORM) xsrc/Window.cc $(WXDIR)/src/Windows/Window.cc
|
||||
xsrc/Button.cc: $(WXDIR)/src/Windows/Button.cc $(WXBDIR)/src/Windows/Button.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Button.cc xsrc/Button.cc
|
||||
$(XFORM) xsrc/Button.cc $(WXDIR)/src/Windows/Button.cc
|
||||
xsrc/Frame.cc: $(WXDIR)/src/Windows/Frame.cc $(WXBDIR)/src/Windows/Frame.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Frame.cc xsrc/Frame.cc
|
||||
$(XFORM) xsrc/Frame.cc $(WXDIR)/src/Windows/Frame.cc
|
||||
xsrc/Layout.cc: $(WXDIR)/src/Windows/Layout.cc $(WXBDIR)/src/Windows/Layout.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Layout.cc xsrc/Layout.cc
|
||||
$(XFORM) xsrc/Layout.cc $(WXDIR)/src/Windows/Layout.cc
|
||||
xsrc/MenuBar.cc: $(WXDIR)/src/Windows/MenuBar.cc $(WXBDIR)/src/Windows/MenuBar.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/MenuBar.cc xsrc/MenuBar.cc
|
||||
$(XFORM) xsrc/MenuBar.cc $(WXDIR)/src/Windows/MenuBar.cc
|
||||
xsrc/RadioBox.cc: $(WXDIR)/src/Windows/RadioBox.cc $(WXBDIR)/src/Windows/RadioBox.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/RadioBox.cc xsrc/RadioBox.cc
|
||||
$(XFORM) xsrc/RadioBox.cc $(WXDIR)/src/Windows/RadioBox.cc
|
||||
xsrc/CheckBox.cc: $(WXDIR)/src/Windows/CheckBox.cc $(WXBDIR)/src/Windows/CheckBox.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/CheckBox.cc xsrc/CheckBox.cc
|
||||
$(XFORM) xsrc/CheckBox.cc $(WXDIR)/src/Windows/CheckBox.cc
|
||||
xsrc/Choice.cc: $(WXDIR)/src/Windows/Choice.cc $(WXBDIR)/src/Windows/Choice.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Choice.cc xsrc/Choice.cc
|
||||
$(XFORM) xsrc/Choice.cc $(WXDIR)/src/Windows/Choice.cc
|
||||
xsrc/Gauge.cc: $(WXDIR)/src/Windows/Gauge.cc $(WXBDIR)/src/Windows/Gauge.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Gauge.cc xsrc/Gauge.cc
|
||||
$(XFORM) xsrc/Gauge.cc $(WXDIR)/src/Windows/Gauge.cc
|
||||
xsrc/ListBox.cc: $(WXDIR)/src/Windows/ListBox.cc $(WXBDIR)/src/Windows/ListBox.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/ListBox.cc xsrc/ListBox.cc
|
||||
$(XFORM) xsrc/ListBox.cc $(WXDIR)/src/Windows/ListBox.cc
|
||||
xsrc/Message.cc: $(WXDIR)/src/Windows/Message.cc $(WXBDIR)/src/Windows/Message.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Message.cc xsrc/Message.cc
|
||||
$(XFORM) xsrc/Message.cc $(WXDIR)/src/Windows/Message.cc
|
||||
xsrc/Slider.cc: $(WXDIR)/src/Windows/Slider.cc $(WXBDIR)/src/Windows/Slider.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Slider.cc xsrc/Slider.cc
|
||||
$(XFORM) xsrc/Slider.cc $(WXDIR)/src/Windows/Slider.cc
|
||||
xsrc/Canvas.cc: $(WXDIR)/src/Windows/Canvas.cc $(WXBDIR)/src/Windows/Canvas.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Canvas.cc xsrc/Canvas.cc
|
||||
$(XFORM) xsrc/Canvas.cc $(WXDIR)/src/Windows/Canvas.cc
|
||||
xsrc/DialogBox.cc: $(WXDIR)/src/Windows/DialogBox.cc $(WXBDIR)/src/Windows/DialogBox.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/DialogBox.cc xsrc/DialogBox.cc
|
||||
$(XFORM) xsrc/DialogBox.cc $(WXDIR)/src/Windows/DialogBox.cc
|
||||
xsrc/Item.cc: $(WXDIR)/src/Windows/Item.cc $(WXBDIR)/src/Windows/Item.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Item.cc xsrc/Item.cc
|
||||
$(XFORM) xsrc/Item.cc $(WXDIR)/src/Windows/Item.cc
|
||||
xsrc/Menu.cc: $(WXDIR)/src/Windows/Menu.cc $(WXBDIR)/src/Windows/Menu.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Menu.cc xsrc/Menu.cc
|
||||
$(XFORM) xsrc/Menu.cc $(WXDIR)/src/Windows/Menu.cc
|
||||
xsrc/Panel.cc: $(WXDIR)/src/Windows/Panel.cc $(WXBDIR)/src/Windows/Panel.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Windows/Panel.cc xsrc/Panel.cc
|
||||
$(XFORM) xsrc/Panel.cc $(WXDIR)/src/Windows/Panel.cc
|
||||
|
||||
xsrc/DC.cc: $(WXDIR)/src/DeviceContexts/DC.cc $(WXBDIR)/src/DeviceContexts/DC.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DeviceContexts/DC.cc xsrc/DC.cc
|
||||
$(XFORM) xsrc/DC.cc $(WXDIR)/src/DeviceContexts/DC.cc
|
||||
xsrc/WindowDC.cc: $(WXDIR)/src/DeviceContexts/WindowDC.cc $(WXBDIR)/src/DeviceContexts/WindowDC.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DeviceContexts/WindowDC.cc xsrc/WindowDC.cc
|
||||
$(XFORM) xsrc/WindowDC.cc $(WXDIR)/src/DeviceContexts/WindowDC.cc
|
||||
xsrc/MemoryDC.cc: $(WXDIR)/src/DeviceContexts/MemoryDC.cc $(WXBDIR)/src/DeviceContexts/MemoryDC.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DeviceContexts/MemoryDC.cc xsrc/MemoryDC.cc
|
||||
$(XFORM) xsrc/MemoryDC.cc $(WXDIR)/src/DeviceContexts/MemoryDC.cc
|
||||
xsrc/PSDC.cc: $(WXDIR)/src/DeviceContexts/PSDC.cc $(WXBDIR)/src/DeviceContexts/PSDC.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DeviceContexts/PSDC.cc xsrc/PSDC.cc
|
||||
$(XFORM) xsrc/PSDC.cc $(WXDIR)/src/DeviceContexts/PSDC.cc
|
||||
|
||||
xsrc/Object.cc: $(WXDIR)/src/DataStructures/Object.cc $(WXBDIR)/src/DataStructures/Object.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DataStructures/Object.cc xsrc/Object.cc
|
||||
$(XFORM) xsrc/Object.cc $(WXDIR)/src/DataStructures/Object.cc
|
||||
xsrc/TypeTree.cc: $(WXDIR)/src/DataStructures/TypeTree.cc $(WXBDIR)/src/DataStructures/TypeTree.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DataStructures/TypeTree.cc xsrc/TypeTree.cc
|
||||
$(XFORM) xsrc/TypeTree.cc $(WXDIR)/src/DataStructures/TypeTree.cc
|
||||
xsrc/wb_list.cc: $(WXDIR)/src/DataStructures/wb_list.cc $(WXBDIR)/src/DataStructures/wb_list.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DataStructures/wb_list.cc xsrc/wb_list.cc
|
||||
$(XFORM) xsrc/wb_list.cc $(WXDIR)/src/DataStructures/wb_list.cc
|
||||
xsrc/wb_hash.cc: $(WXDIR)/src/DataStructures/wb_hash.cc $(WXBDIR)/src/DataStructures/wb_hash.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/DataStructures/wb_hash.cc xsrc/wb_hash.cc
|
||||
$(XFORM) xsrc/wb_hash.cc $(WXDIR)/src/DataStructures/wb_hash.cc
|
||||
|
||||
xsrc/AppMain.cc: $(WXDIR)/src/Application/AppMain.cc $(WXBDIR)/src/Application/AppMain.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Application/AppMain.cc xsrc/AppMain.cc
|
||||
$(XFORM) xsrc/AppMain.cc $(WXDIR)/src/Application/AppMain.cc
|
||||
xsrc/GlobalData.cc: $(WXDIR)/src/Application/GlobalData.cc $(WXBDIR)/src/Application/GlobalData.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Application/GlobalData.cc xsrc/GlobalData.cc
|
||||
$(XFORM) xsrc/GlobalData.cc $(WXDIR)/src/Application/GlobalData.cc
|
||||
|
||||
xsrc/FileDialog.cc: $(WXDIR)/src/Dialogs/FileDialog.cc $(WXBDIR)/src/Dialogs/FileDialog.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Dialogs/FileDialog.cc xsrc/FileDialog.cc
|
||||
$(XFORM) xsrc/FileDialog.cc $(WXDIR)/src/Dialogs/FileDialog.cc
|
||||
xsrc/MessageBox.cc: $(WXDIR)/src/Dialogs/MessageBox.cc $(WXBDIR)/src/Dialogs/MessageBox.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Dialogs/MessageBox.cc xsrc/MessageBox.cc
|
||||
$(XFORM) xsrc/MessageBox.cc $(WXDIR)/src/Dialogs/MessageBox.cc
|
||||
|
||||
xsrc/EvtHandler.cc: $(WXDIR)/src/EventHandling/EvtHandler.cc $(WXBDIR)/src/EventHandling/EvtHandler.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/EventHandling/EvtHandler.cc xsrc/EvtHandler.cc
|
||||
$(XFORM) xsrc/EvtHandler.cc $(WXDIR)/src/EventHandling/EvtHandler.cc
|
||||
xsrc/wb_sysev.cc: $(WXDIR)/src/EventHandling/wb_sysev.cc $(WXBDIR)/src/EventHandling/wb_sysev.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/EventHandling/wb_sysev.cc xsrc/wb_sysev.cc
|
||||
$(XFORM) xsrc/wb_sysev.cc $(WXDIR)/src/EventHandling/wb_sysev.cc
|
||||
xsrc/wb_stdev.cc: $(WXDIR)/src/EventHandling/wb_stdev.cc $(WXBDIR)/src/EventHandling/wb_stdev.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/EventHandling/wb_stdev.cc xsrc/wb_stdev.cc
|
||||
$(XFORM) xsrc/wb_stdev.cc $(WXDIR)/src/EventHandling/wb_stdev.cc
|
||||
|
||||
xsrc/Bitmap.cc: $(WXDIR)/src/GDI-Classes/Bitmap.cc $(WXBDIR)/src/GDI-Classes/Bitmap.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/GDI-Classes/Bitmap.cc xsrc/Bitmap.cc
|
||||
$(XFORM) xsrc/Bitmap.cc $(WXDIR)/src/GDI-Classes/Bitmap.cc
|
||||
xsrc/Colour.cc: $(WXDIR)/src/GDI-Classes/Colour.cc $(WXBDIR)/src/GDI-Classes/Colour.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/GDI-Classes/Colour.cc xsrc/Colour.cc
|
||||
$(XFORM) xsrc/Colour.cc $(WXDIR)/src/GDI-Classes/Colour.cc
|
||||
xsrc/Font.cc: $(WXDIR)/src/GDI-Classes/Font.cc $(WXBDIR)/src/GDI-Classes/Font.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/GDI-Classes/Font.cc xsrc/Font.cc
|
||||
$(XFORM) xsrc/Font.cc $(WXDIR)/src/GDI-Classes/Font.cc
|
||||
xsrc/FontDirectory.cc: $(WXDIR)/src/GDI-Classes/FontDirectory.cc $(WXBDIR)/src/GDI-Classes/FontDirectory.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/GDI-Classes/FontDirectory.cc xsrc/FontDirectory.cc
|
||||
$(XFORM) xsrc/FontDirectory.cc $(WXDIR)/src/GDI-Classes/FontDirectory.cc
|
||||
xsrc/Pen+Brush.cc: $(WXDIR)/src/GDI-Classes/Pen+Brush.cc $(WXBDIR)/src/GDI-Classes/Pen+Brush.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/GDI-Classes/Pen+Brush.cc xsrc/Pen+Brush.cc
|
||||
$(XFORM) xsrc/Pen+Brush.cc $(WXDIR)/src/GDI-Classes/Pen+Brush.cc
|
||||
|
||||
xsrc/Clipboard.cc: $(WXDIR)/src/Misc/Clipboard.cc $(WXBDIR)/src/Misc/Clipboard.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Misc/Clipboard.cc xsrc/Clipboard.cc
|
||||
$(XFORM) xsrc/Clipboard.cc $(WXDIR)/src/Misc/Clipboard.cc
|
||||
xsrc/Timer.cc: $(WXDIR)/src/Misc/Timer.cc $(WXBDIR)/src/Misc/Timer.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Misc/Timer.cc xsrc/Timer.cc
|
||||
$(XFORM) xsrc/Timer.cc $(WXDIR)/src/Misc/Timer.cc
|
||||
|
||||
xsrc/Application.cc: $(WXDIR)/src/Utilities/Application.cc $(WXBDIR)/src/Utilities/Application.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Application.cc xsrc/Application.cc
|
||||
$(XFORM) xsrc/Application.cc $(WXDIR)/src/Utilities/Application.cc
|
||||
xsrc/Assert.cc: $(WXDIR)/src/Utilities/Assert.cc $(WXBDIR)/src/Utilities/Assert.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Assert.cc xsrc/Assert.cc
|
||||
$(XFORM) xsrc/Assert.cc $(WXDIR)/src/Utilities/Assert.cc
|
||||
xsrc/BusyCursor.cc: $(WXDIR)/src/Utilities/BusyCursor.cc $(WXBDIR)/src/Utilities/BusyCursor.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/BusyCursor.cc xsrc/BusyCursor.cc
|
||||
$(XFORM) xsrc/BusyCursor.cc $(WXDIR)/src/Utilities/BusyCursor.cc
|
||||
xsrc/Date+Time.cc: $(WXDIR)/src/Utilities/Date+Time.cc $(WXBDIR)/src/Utilities/Date+Time.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Date+Time.cc xsrc/Date+Time.cc
|
||||
$(XFORM) xsrc/Date+Time.cc $(WXDIR)/src/Utilities/Date+Time.cc
|
||||
xsrc/Directory.cc: $(WXDIR)/src/Utilities/Directory.cc $(WXBDIR)/src/Utilities/Directory.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Directory.cc xsrc/Directory.cc
|
||||
$(XFORM) xsrc/Directory.cc $(WXDIR)/src/Utilities/Directory.cc
|
||||
xsrc/Error.cc: $(WXDIR)/src/Utilities/Error.cc $(WXBDIR)/src/Utilities/Error.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Error.cc xsrc/Error.cc
|
||||
$(XFORM) xsrc/Error.cc $(WXDIR)/src/Utilities/Error.cc
|
||||
xsrc/GDI.cc: $(WXDIR)/src/Utilities/GDI.cc $(WXBDIR)/src/Utilities/GDI.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/GDI.cc xsrc/GDI.cc
|
||||
$(XFORM) xsrc/GDI.cc $(WXDIR)/src/Utilities/GDI.cc
|
||||
xsrc/Home.cc: $(WXDIR)/src/Utilities/Home.cc $(WXBDIR)/src/Utilities/Home.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Home.cc xsrc/Home.cc
|
||||
$(XFORM) xsrc/Home.cc $(WXDIR)/src/Utilities/Home.cc
|
||||
xsrc/Misc.cc: $(WXDIR)/src/Utilities/Misc.cc $(WXBDIR)/src/Utilities/Misc.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Misc.cc xsrc/Misc.cc
|
||||
$(XFORM) xsrc/Misc.cc $(WXDIR)/src/Utilities/Misc.cc
|
||||
xsrc/Net.c: $(WXDIR)/src/Utilities/Net.c $(WXBDIR)/src/Utilities/Net.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(WXDIR)/src/Utilities/Net.c xsrc/Net.c
|
||||
$(XFORM) xsrc/Net.c $(WXDIR)/src/Utilities/Net.c
|
||||
xsrc/Path.cc: $(WXDIR)/src/Utilities/Path.cc $(WXBDIR)/src/Utilities/Path.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Path.cc xsrc/Path.cc
|
||||
$(XFORM) xsrc/Path.cc $(WXDIR)/src/Utilities/Path.cc
|
||||
xsrc/Resources.cc: $(WXDIR)/src/Utilities/Resources.cc $(WXBDIR)/src/Utilities/Resources.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/Resources.cc xsrc/Resources.cc
|
||||
$(XFORM) xsrc/Resources.cc $(WXDIR)/src/Utilities/Resources.cc
|
||||
xsrc/String.cc: $(WXDIR)/src/Utilities/String.cc $(WXBDIR)/src/Utilities/String.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/String.cc xsrc/String.cc
|
||||
$(XFORM) xsrc/String.cc $(WXDIR)/src/Utilities/String.cc
|
||||
xsrc/TempFile.cc: $(WXDIR)/src/Utilities/TempFile.cc $(WXBDIR)/src/Utilities/TempFile.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/src/Utilities/TempFile.cc xsrc/TempFile.cc
|
||||
$(XFORM) xsrc/TempFile.cc $(WXDIR)/src/Utilities/TempFile.cc
|
||||
|
||||
xsrc/wx_image.cc: $(WXDIR)/utils/image/src/wx_image.cc $(WXBDIR)/utils/image/src/wx_image.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_image.cc xsrc/wx_image.cc
|
||||
$(XFORM) xsrc/wx_image.cc $(WXDIR)/utils/image/src/wx_image.cc
|
||||
xsrc/wx_img.cc: $(WXDIR)/utils/image/src/wx_img.cc $(WXBDIR)/utils/image/src/wx_img.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_img.cc xsrc/wx_img.cc
|
||||
$(XFORM) xsrc/wx_img.cc $(WXDIR)/utils/image/src/wx_img.cc
|
||||
xsrc/wx_24to8.cc: $(WXDIR)/utils/image/src/wx_24to8.cc $(WXBDIR)/utils/image/src/wx_24to8.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_24to8.cc xsrc/wx_24to8.cc
|
||||
$(XFORM) xsrc/wx_24to8.cc $(WXDIR)/utils/image/src/wx_24to8.cc
|
||||
xsrc/wx_bmp.cc: $(WXDIR)/utils/image/src/wx_bmp.cc $(WXBDIR)/utils/image/src/wx_bmp.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_bmp.cc xsrc/wx_bmp.cc
|
||||
$(XFORM) xsrc/wx_bmp.cc $(WXDIR)/utils/image/src/wx_bmp.cc
|
||||
xsrc/wx_gam.cc: $(WXDIR)/utils/image/src/wx_gam.cc $(WXBDIR)/utils/image/src/wx_gam.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_gam.cc xsrc/wx_gam.cc
|
||||
$(XFORM) xsrc/wx_gam.cc $(WXDIR)/utils/image/src/wx_gam.cc
|
||||
xsrc/wx_gif.cc: $(WXDIR)/utils/image/src/wx_gif.cc $(WXBDIR)/utils/image/src/wx_gif.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_gif.cc xsrc/wx_gif.cc
|
||||
$(XFORM) xsrc/wx_gif.cc $(WXDIR)/utils/image/src/wx_gif.cc
|
||||
xsrc/wx_gifwr.cc: $(WXDIR)/utils/image/src/wx_gifwr.cc $(WXBDIR)/utils/image/src/wx_gifwr.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_gifwr.cc xsrc/wx_gifwr.cc
|
||||
$(XFORM) xsrc/wx_gifwr.cc $(WXDIR)/utils/image/src/wx_gifwr.cc
|
||||
xsrc/wx_xbm.cc: $(WXDIR)/utils/image/src/wx_xbm.cc $(WXBDIR)/utils/image/src/wx_xbm.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXDIR)/utils/image/src/wx_xbm.cc xsrc/wx_xbm.cc
|
||||
$(XFORM) xsrc/wx_xbm.cc $(WXDIR)/utils/image/src/wx_xbm.cc
|
||||
|
||||
MACXPRECOMP = macxsrc/xform_precomp.h
|
||||
|
||||
macxsrc/xform_precomp.h : $(XFORMDEP) $(srcdir)/macprecomp.cxx $(srcdir)/../../mzscheme/src/schvers.h
|
||||
env XFORM_PRECOMP=yes $(XFORMXX) $(srcdir)/macprecomp.cxx $(MACXPRECOMP)
|
||||
env XFORM_PRECOMP=yes $(XFORM) $(MACXPRECOMP) $(srcdir)/macprecomp.cxx
|
||||
|
||||
@INCLUDEDEP@ macprecomp.d
|
||||
|
||||
|
@ -213,267 +213,267 @@ wx_mac_XFORMWP = env XFORM_USE_PRECOMP=$(MACXPRECOMP) $(XFORMXX)
|
|||
XFORMWP = $(@WXVARIANT@_XFORMWP)
|
||||
|
||||
macxsrc/wb_item.cc: $(WXMACDIR)/base/wb_item.cc $(WXMACBDIR)/wb_item.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_item.cc macxsrc/wb_item.cc
|
||||
$(XFORMWP) macxsrc/wb_item.cc $(WXMACDIR)/base/wb_item.cc
|
||||
macxsrc/wb_panel.cc: $(WXMACDIR)/base/wb_panel.cc $(WXMACBDIR)/wb_panel.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_panel.cc macxsrc/wb_panel.cc
|
||||
$(XFORMWP) macxsrc/wb_panel.cc $(WXMACDIR)/base/wb_panel.cc
|
||||
macxsrc/wb_timer.cc: $(WXMACDIR)/base/wb_timer.cc $(WXMACBDIR)/wb_timer.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_timer.cc macxsrc/wb_timer.cc
|
||||
$(XFORMWP) macxsrc/wb_timer.cc $(WXMACDIR)/base/wb_timer.cc
|
||||
macxsrc/wb_frame.cc: $(WXMACDIR)/base/wb_frame.cc $(WXMACBDIR)/wb_frame.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_frame.cc macxsrc/wb_frame.cc
|
||||
$(XFORMWP) macxsrc/wb_frame.cc $(WXMACDIR)/base/wb_frame.cc
|
||||
macxsrc/wb_list.cc: $(srcdir)/../../wxcommon/wb_list.cxx $(WXMACBDIR)/wb_list.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../../wxcommon/wb_list.cxx macxsrc/wb_list.cc
|
||||
$(XFORMWP) macxsrc/wb_list.cc $(WXMACDIR)/../../wxcommon/wb_list.cxx
|
||||
macxsrc/PSDC.cc: $(srcdir)/../../wxcommon/PSDC.cxx $(WXMACBDIR)/PSDC.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../../wxcommon/PSDC.cxx macxsrc/PSDC.cc
|
||||
$(XFORMWP) macxsrc/PSDC.cc $(WXMACDIR)/../../wxcommon/PSDC.cxx
|
||||
macxsrc/wb_types.cc: $(WXMACDIR)/base/wb_types.cc $(WXMACBDIR)/wb_types.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_types.cc macxsrc/wb_types.cc
|
||||
$(XFORMWP) macxsrc/wb_types.cc $(WXMACDIR)/base/wb_types.cc
|
||||
macxsrc/wb_canvs.cc: $(WXMACDIR)/base/wb_canvs.cc $(WXMACBDIR)/wb_canvs.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_canvs.cc macxsrc/wb_canvs.cc
|
||||
$(XFORMWP) macxsrc/wb_canvs.cc $(WXMACDIR)/base/wb_canvs.cc
|
||||
macxsrc/wb_gdi.cc: $(WXMACDIR)/base/wb_gdi.cc $(WXMACBDIR)/wb_gdi.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_gdi.cc macxsrc/wb_gdi.cc
|
||||
$(XFORMWP) macxsrc/wb_gdi.cc $(WXMACDIR)/base/wb_gdi.cc
|
||||
macxsrc/wb_main.cc: $(WXMACDIR)/base/wb_main.cc $(WXMACBDIR)/wb_main.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_main.cc macxsrc/wb_main.cc
|
||||
$(XFORMWP) macxsrc/wb_main.cc $(WXMACDIR)/base/wb_main.cc
|
||||
macxsrc/wb_utils.cc: $(WXMACDIR)/base/wb_utils.cc $(WXMACBDIR)/wb_utils.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_utils.cc macxsrc/wb_utils.cc
|
||||
$(XFORMWP) macxsrc/wb_utils.cc $(WXMACDIR)/base/wb_utils.cc
|
||||
macxsrc/wb_data.cc: $(WXMACDIR)/base/wb_data.cc $(WXMACBDIR)/wb_data.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_data.cc macxsrc/wb_data.cc
|
||||
$(XFORMWP) macxsrc/wb_data.cc $(WXMACDIR)/base/wb_data.cc
|
||||
macxsrc/wb_hash.cc: $(srcdir)/../../wxcommon/wb_hash.cxx $(WXMACBDIR)/wb_hash.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../../wxcommon/wb_hash.cxx macxsrc/wb_hash.cc
|
||||
$(XFORMWP) macxsrc/wb_hash.cc $(WXMACDIR)/../../wxcommon/wb_hash.cxx
|
||||
macxsrc/wb_stdev.cc: $(WXMACDIR)/base/wb_stdev.cc $(WXMACBDIR)/wb_stdev.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_stdev.cc macxsrc/wb_stdev.cc
|
||||
$(XFORMWP) macxsrc/wb_stdev.cc $(WXMACDIR)/base/wb_stdev.cc
|
||||
macxsrc/wb_win.cc: $(WXMACDIR)/base/wb_win.cc $(WXMACBDIR)/wb_win.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_win.cc macxsrc/wb_win.cc
|
||||
$(XFORMWP) macxsrc/wb_win.cc $(WXMACDIR)/base/wb_win.cc
|
||||
macxsrc/wb_dc.cc: $(WXMACDIR)/base/wb_dc.cc $(WXMACBDIR)/wb_dc.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_dc.cc macxsrc/wb_dc.cc
|
||||
$(XFORMWP) macxsrc/wb_dc.cc $(WXMACDIR)/base/wb_dc.cc
|
||||
macxsrc/wb_sysev.cc: $(WXMACDIR)/base/wb_sysev.cc $(WXMACBDIR)/wb_sysev.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_sysev.cc macxsrc/wb_sysev.cc
|
||||
$(XFORMWP) macxsrc/wb_sysev.cc $(WXMACDIR)/base/wb_sysev.cc
|
||||
macxsrc/wb_dialg.cc: $(WXMACDIR)/base/wb_dialg.cc $(WXMACBDIR)/wb_dialg.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_dialg.cc macxsrc/wb_dialg.cc
|
||||
$(XFORMWP) macxsrc/wb_dialg.cc $(WXMACDIR)/base/wb_dialg.cc
|
||||
macxsrc/wb_obj.cc: $(WXMACDIR)/base/wb_obj.cc $(WXMACBDIR)/wb_obj.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/wb_obj.cc macxsrc/wb_obj.cc
|
||||
$(XFORMWP) macxsrc/wb_obj.cc $(WXMACDIR)/base/wb_obj.cc
|
||||
macxsrc/xfspline.cc: $(WXMACDIR)/base/xfspline.cc $(WXMACBDIR)/xfspline.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/base/xfspline.cc macxsrc/xfspline.cc
|
||||
$(XFORMWP) macxsrc/xfspline.cc $(WXMACDIR)/base/xfspline.cc
|
||||
macxsrc/wx_choic.cc: $(WXMACDIR)/mac/wx_choic.cc $(WXMACBDIR)/wx_choic.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_choic.cc macxsrc/wx_choic.cc
|
||||
$(XFORMWP) macxsrc/wx_choic.cc $(WXMACDIR)/mac/wx_choic.cc
|
||||
macxsrc/wx_main.cc: $(WXMACDIR)/mac/wx_main.cc $(WXMACBDIR)/wx_main.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_main.cc macxsrc/wx_main.cc
|
||||
$(XFORMWP) macxsrc/wx_main.cc $(WXMACDIR)/mac/wx_main.cc
|
||||
macxsrc/wx_clipb.cc: $(WXMACDIR)/mac/wx_clipb.cc $(WXMACBDIR)/wx_clipb.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_clipb.cc macxsrc/wx_clipb.cc
|
||||
$(XFORMWP) macxsrc/wx_clipb.cc $(WXMACDIR)/mac/wx_clipb.cc
|
||||
macxsrc/wx_menu.cc: $(WXMACDIR)/mac/wx_menu.cc $(WXMACBDIR)/wx_menu.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_menu.cc macxsrc/wx_menu.cc
|
||||
$(XFORMWP) macxsrc/wx_menu.cc $(WXMACDIR)/mac/wx_menu.cc
|
||||
macxsrc/wx_messg.cc: $(WXMACDIR)/mac/wx_messg.cc $(WXMACBDIR)/wx_messg.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_messg.cc macxsrc/wx_messg.cc
|
||||
$(XFORMWP) macxsrc/wx_messg.cc $(WXMACDIR)/mac/wx_messg.cc
|
||||
macxsrc/wxBorder.cc: $(WXMACDIR)/mac/wxBorder.cc $(WXMACBDIR)/wxBorder.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxBorder.cc macxsrc/wxBorder.cc
|
||||
$(XFORMWP) macxsrc/wxBorder.cc $(WXMACDIR)/mac/wxBorder.cc
|
||||
macxsrc/wx_dc.cc: $(WXMACDIR)/mac/wx_dc.cc $(WXMACBDIR)/wx_dc.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dc.cc macxsrc/wx_dc.cc
|
||||
$(XFORMWP) macxsrc/wx_dc.cc $(WXMACDIR)/mac/wx_dc.cc
|
||||
macxsrc/wxBorderArea.cc: $(WXMACDIR)/mac/wxBorderArea.cc $(WXMACBDIR)/wxBorderArea.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxBorderArea.cc macxsrc/wxBorderArea.cc
|
||||
$(XFORMWP) macxsrc/wxBorderArea.cc $(WXMACDIR)/mac/wxBorderArea.cc
|
||||
macxsrc/wx_dccan1.cc: $(WXMACDIR)/mac/wx_dccan1.cc $(WXMACBDIR)/wx_dccan1.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dccan1.cc macxsrc/wx_dccan1.cc
|
||||
$(XFORMWP) macxsrc/wx_dccan1.cc $(WXMACDIR)/mac/wx_dccan1.cc
|
||||
macxsrc/wx_mnuit.cc: $(WXMACDIR)/mac/wx_mnuit.cc $(WXMACBDIR)/wx_mnuit.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_mnuit.cc macxsrc/wx_mnuit.cc
|
||||
$(XFORMWP) macxsrc/wx_mnuit.cc $(WXMACDIR)/mac/wx_mnuit.cc
|
||||
macxsrc/wxButtonBorder.cc: $(WXMACDIR)/mac/wxButtonBorder.cc $(WXMACBDIR)/wxButtonBorder.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxButtonBorder.cc macxsrc/wxButtonBorder.cc
|
||||
$(XFORMWP) macxsrc/wxButtonBorder.cc $(WXMACDIR)/mac/wxButtonBorder.cc
|
||||
macxsrc/wx_dccan2.cc: $(WXMACDIR)/mac/wx_dccan2.cc $(WXMACBDIR)/wx_dccan2.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dccan2.cc macxsrc/wx_dccan2.cc
|
||||
$(XFORMWP) macxsrc/wx_dccan2.cc $(WXMACDIR)/mac/wx_dccan2.cc
|
||||
macxsrc/wx_dccan3.cc: $(WXMACDIR)/mac/wx_dccan3.cc $(WXMACBDIR)/wx_dccan3.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dccan3.cc macxsrc/wx_dccan3.cc
|
||||
$(XFORMWP) macxsrc/wx_dccan3.cc $(WXMACDIR)/mac/wx_dccan3.cc
|
||||
macxsrc/wx_panel.cc: $(WXMACDIR)/mac/wx_panel.cc $(WXMACBDIR)/wx_panel.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_panel.cc macxsrc/wx_panel.cc
|
||||
$(XFORMWP) macxsrc/wx_panel.cc $(WXMACDIR)/mac/wx_panel.cc
|
||||
macxsrc/wxLabelArea.cc: $(WXMACDIR)/mac/wxLabelArea.cc $(WXMACBDIR)/wxLabelArea.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxLabelArea.cc macxsrc/wxLabelArea.cc
|
||||
$(XFORMWP) macxsrc/wxLabelArea.cc $(WXMACDIR)/mac/wxLabelArea.cc
|
||||
macxsrc/wx_dcmem.cc: $(WXMACDIR)/mac/wx_dcmem.cc $(WXMACBDIR)/wx_dcmem.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dcmem.cc macxsrc/wx_dcmem.cc
|
||||
$(XFORMWP) macxsrc/wx_dcmem.cc $(WXMACDIR)/mac/wx_dcmem.cc
|
||||
macxsrc/wx_print.cc: $(WXMACDIR)/mac/wx_print.cc $(WXMACBDIR)/wx_print.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_print.cc macxsrc/wx_print.cc
|
||||
$(XFORMWP) macxsrc/wx_print.cc $(WXMACDIR)/mac/wx_print.cc
|
||||
macxsrc/wxMacDC.cc: $(WXMACDIR)/mac/wxMacDC.cc $(WXMACBDIR)/wxMacDC.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxMacDC.cc macxsrc/wxMacDC.cc
|
||||
$(XFORMWP) macxsrc/wxMacDC.cc $(WXMACDIR)/mac/wxMacDC.cc
|
||||
macxsrc/wx_dcpr1.cc: $(WXMACDIR)/mac/wx_dcpr1.cc $(WXMACBDIR)/wx_dcpr1.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dcpr1.cc macxsrc/wx_dcpr1.cc
|
||||
$(XFORMWP) macxsrc/wx_dcpr1.cc $(WXMACDIR)/mac/wx_dcpr1.cc
|
||||
macxsrc/wx_rbox.cc: $(WXMACDIR)/mac/wx_rbox.cc $(WXMACBDIR)/wx_rbox.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_rbox.cc macxsrc/wx_rbox.cc
|
||||
$(XFORMWP) macxsrc/wx_rbox.cc $(WXMACDIR)/mac/wx_rbox.cc
|
||||
macxsrc/wx_rbut.cc: $(WXMACDIR)/mac/wx_rbut.cc $(WXMACBDIR)/wx_rbut.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_rbut.cc macxsrc/wx_rbut.cc
|
||||
$(XFORMWP) macxsrc/wx_rbut.cc $(WXMACDIR)/mac/wx_rbut.cc
|
||||
macxsrc/wx_sbar.cc: $(WXMACDIR)/mac/wx_sbar.cc $(WXMACBDIR)/wx_sbar.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_sbar.cc macxsrc/wx_sbar.cc
|
||||
$(XFORMWP) macxsrc/wx_sbar.cc $(WXMACDIR)/mac/wx_sbar.cc
|
||||
macxsrc/wxMargin.cc: $(WXMACDIR)/mac/wxMargin.cc $(WXMACBDIR)/wxMargin.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXMACDIR)/mac/wxMargin.cc macxsrc/wxMargin.cc
|
||||
$(XFORM) macxsrc/wxMargin.cc $(WXMACDIR)/mac/wxMargin.cc
|
||||
macxsrc/wx_dialg.cc: $(WXMACDIR)/mac/wx_dialg.cc $(WXMACBDIR)/wx_dialg.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_dialg.cc macxsrc/wx_dialg.cc
|
||||
$(XFORMWP) macxsrc/wx_dialg.cc $(WXMACDIR)/mac/wx_dialg.cc
|
||||
macxsrc/wx_screen.cc: $(WXMACDIR)/mac/wx_screen.cc $(WXMACBDIR)/wx_screen.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_screen.cc macxsrc/wx_screen.cc
|
||||
$(XFORMWP) macxsrc/wx_screen.cc $(WXMACDIR)/mac/wx_screen.cc
|
||||
macxsrc/wxRectBorder.cc: $(WXMACDIR)/mac/wxRectBorder.cc $(WXMACBDIR)/wxRectBorder.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxRectBorder.cc macxsrc/wxRectBorder.cc
|
||||
$(XFORMWP) macxsrc/wxRectBorder.cc $(WXMACDIR)/mac/wxRectBorder.cc
|
||||
macxsrc/wx_slidr.cc: $(WXMACDIR)/mac/wx_slidr.cc $(WXMACBDIR)/wx_slidr.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_slidr.cc macxsrc/wx_slidr.cc
|
||||
$(XFORMWP) macxsrc/wx_slidr.cc $(WXMACDIR)/mac/wx_slidr.cc
|
||||
macxsrc/wxScroll.cc: $(WXMACDIR)/mac/wxScroll.cc $(WXMACBDIR)/wxScroll.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxScroll.cc macxsrc/wxScroll.cc
|
||||
$(XFORMWP) macxsrc/wxScroll.cc $(WXMACDIR)/mac/wxScroll.cc
|
||||
macxsrc/wx_frame.cc: $(WXMACDIR)/mac/wx_frame.cc $(WXMACBDIR)/wx_frame.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_frame.cc macxsrc/wx_frame.cc
|
||||
$(XFORMWP) macxsrc/wx_frame.cc $(WXMACDIR)/mac/wx_frame.cc
|
||||
macxsrc/wxScrollArea.cc: $(WXMACDIR)/mac/wxScrollArea.cc $(WXMACBDIR)/wxScrollArea.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wxScrollArea.cc macxsrc/wxScrollArea.cc
|
||||
$(XFORMWP) macxsrc/wxScrollArea.cc $(WXMACDIR)/mac/wxScrollArea.cc
|
||||
macxsrc/wx_gauge.cc: $(WXMACDIR)/mac/wx_gauge.cc $(WXMACBDIR)/wx_gauge.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_gauge.cc macxsrc/wx_gauge.cc
|
||||
$(XFORMWP) macxsrc/wx_gauge.cc $(WXMACDIR)/mac/wx_gauge.cc
|
||||
macxsrc/wxScrollData.cc: $(WXMACDIR)/mac/wxScrollData.cc $(WXMACBDIR)/wxScrollData.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(WXMACDIR)/mac/wxScrollData.cc macxsrc/wxScrollData.cc
|
||||
$(XFORM) macxsrc/wxScrollData.cc $(WXMACDIR)/mac/wxScrollData.cc
|
||||
macxsrc/wx_gdi.cc: $(WXMACDIR)/mac/wx_gdi.cc $(WXMACBDIR)/wx_gdi.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_gdi.cc macxsrc/wx_gdi.cc
|
||||
$(XFORMWP) macxsrc/wx_gdi.cc $(WXMACDIR)/mac/wx_gdi.cc
|
||||
macxsrc/wx_app.cc: $(WXMACDIR)/mac/wx_app.cc $(WXMACBDIR)/wx_app.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_app.cc macxsrc/wx_app.cc
|
||||
$(XFORMWP) macxsrc/wx_app.cc $(WXMACDIR)/mac/wx_app.cc
|
||||
macxsrc/wx_util.cc: $(WXMACDIR)/mac/wx_util.cc $(WXMACBDIR)/wx_util.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_util.cc macxsrc/wx_util.cc
|
||||
$(XFORMWP) macxsrc/wx_util.cc $(WXMACDIR)/mac/wx_util.cc
|
||||
macxsrc/wx_area.cc: $(WXMACDIR)/mac/wx_area.cc $(WXMACBDIR)/wx_area.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_area.cc macxsrc/wx_area.cc
|
||||
$(XFORMWP) macxsrc/wx_area.cc $(WXMACDIR)/mac/wx_area.cc
|
||||
macxsrc/wx_win.cc: $(WXMACDIR)/mac/wx_win.cc $(WXMACBDIR)/wx_win.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_win.cc macxsrc/wx_win.cc
|
||||
$(XFORMWP) macxsrc/wx_win.cc $(WXMACDIR)/mac/wx_win.cc
|
||||
macxsrc/wx_buttn.cc: $(WXMACDIR)/mac/wx_buttn.cc $(WXMACBDIR)/wx_buttn.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_buttn.cc macxsrc/wx_buttn.cc
|
||||
$(XFORMWP) macxsrc/wx_buttn.cc $(WXMACDIR)/mac/wx_buttn.cc
|
||||
macxsrc/wx_item.cc: $(WXMACDIR)/mac/wx_item.cc $(WXMACBDIR)/wx_item.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_item.cc macxsrc/wx_item.cc
|
||||
$(XFORMWP) macxsrc/wx_item.cc $(WXMACDIR)/mac/wx_item.cc
|
||||
macxsrc/wximgfil.cc: $(WXMACDIR)/mac/wximgfil.cc $(WXMACBDIR)/wximgfil.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wximgfil.cc macxsrc/wximgfil.cc
|
||||
$(XFORMWP) macxsrc/wximgfil.cc $(WXMACDIR)/mac/wximgfil.cc
|
||||
macxsrc/wx_canvs.cc: $(WXMACDIR)/mac/wx_canvs.cc $(WXMACBDIR)/wx_canvs.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_canvs.cc macxsrc/wx_canvs.cc
|
||||
$(XFORMWP) macxsrc/wx_canvs.cc $(WXMACDIR)/mac/wx_canvs.cc
|
||||
macxsrc/wx_lbox.cc: $(WXMACDIR)/mac/wx_lbox.cc $(WXMACBDIR)/wx_lbox.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_lbox.cc macxsrc/wx_lbox.cc
|
||||
$(XFORMWP) macxsrc/wx_lbox.cc $(WXMACDIR)/mac/wx_lbox.cc
|
||||
macxsrc/wx_check.cc: $(WXMACDIR)/mac/wx_check.cc $(WXMACBDIR)/wx_check.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_check.cc macxsrc/wx_check.cc
|
||||
$(XFORMWP) macxsrc/wx_check.cc $(WXMACDIR)/mac/wx_check.cc
|
||||
macxsrc/wx_tabc.cc: $(WXMACDIR)/mac/wx_tabc.cc $(WXMACBDIR)/wx_tabc.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_tabc.cc macxsrc/wx_tabc.cc
|
||||
$(XFORMWP) macxsrc/wx_tabc.cc $(WXMACDIR)/mac/wx_tabc.cc
|
||||
macxsrc/wx_gbox.cc: $(WXMACDIR)/mac/wx_gbox.cc $(WXMACBDIR)/wx_gbox.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_gbox.cc macxsrc/wx_gbox.cc
|
||||
$(XFORMWP) macxsrc/wx_gbox.cc $(WXMACDIR)/mac/wx_gbox.cc
|
||||
macxsrc/wx_mac_utils.cc: $(WXMACDIR)/mac/wx_mac_utils.cc $(WXMACBDIR)/wx_mac_utils.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/mac/wx_mac_utils.cc macxsrc/wx_mac_utils.cc
|
||||
$(XFORMWP) macxsrc/wx_mac_utils.cc $(WXMACDIR)/mac/wx_mac_utils.cc
|
||||
|
||||
macxsrc/wx_bmp.cc: $(WXMACDIR)/../utils/image/src/wx_bmp.cc $(WXMACBDIR)/wx_bmp.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../utils/image/src/wx_bmp.cc macxsrc/wx_bmp.cc
|
||||
$(XFORMWP) macxsrc/wx_bmp.cc $(WXMACDIR)/../utils/image/src/wx_bmp.cc
|
||||
macxsrc/wx_24to8.cc: $(WXMACDIR)/../utils/image/src/wx_24to8.cc $(WXMACBDIR)/wx_24to8.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../utils/image/src/wx_24to8.cc macxsrc/wx_24to8.cc
|
||||
$(XFORMWP) macxsrc/wx_24to8.cc $(WXMACDIR)/../utils/image/src/wx_24to8.cc
|
||||
macxsrc/wx_image.cc: $(WXMACDIR)/../utils/image/src/wx_image.cc $(WXMACBDIR)/wx_image.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../utils/image/src/wx_image.cc macxsrc/wx_image.cc
|
||||
$(XFORMWP) macxsrc/wx_image.cc $(WXMACDIR)/../utils/image/src/wx_image.cc
|
||||
macxsrc/wx_xbm.cc: $(WXMACDIR)/../utils/image/src/wx_xbm.cc $(WXMACBDIR)/wx_xbm.@LTO@ $(XFORMDEP) $(MACXPRECOMP)
|
||||
$(XFORMWP) $(WXMACDIR)/../utils/image/src/wx_xbm.cc macxsrc/wx_xbm.cc
|
||||
$(XFORMWP) macxsrc/wx_xbm.cc $(WXMACDIR)/../utils/image/src/wx_xbm.cc
|
||||
macxsrc/simpledrop.cc: $(srcdir)/../../mac/mzscheme/simpledrop.cpp ../simpledrop.@LTO@ $(XFORMDEP)
|
||||
$(XFORMXX) $(srcdir)/../../mac/mzscheme/simpledrop.cpp macxsrc/simpledrop.cc
|
||||
$(XFORM) macxsrc/simpledrop.cc $(srcdir)/../../mac/mzscheme/simpledrop.cpp
|
||||
|
||||
wx_xt_XFORMPRECOMP =
|
||||
wx_mac_XFORMPRECOMP = $(MACXPRECOMP)
|
||||
XFORMPRECOMP = $(@WXVARIANT@_XFORMPRECOMP)
|
||||
|
||||
xsrc/wx_media.cc: $(srcdir)/../wxme/wx_media.cxx ../wxme/wx_media.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_media.cxx xsrc/wx_media.cc
|
||||
$(XFORMWP) xsrc/wx_media.cc $(srcdir)/../wxme/wx_media.cxx
|
||||
|
||||
xsrc/wx_mpriv.cc: $(srcdir)/../wxme/wx_mpriv.cxx ../wxme/wx_mpriv.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_mpriv.cxx xsrc/wx_mpriv.cc
|
||||
$(XFORMWP) xsrc/wx_mpriv.cc $(srcdir)/../wxme/wx_mpriv.cxx
|
||||
|
||||
xsrc/wx_snip.cc: $(srcdir)/../wxme/wx_snip.cxx ../wxme/wx_snip.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_snip.cxx xsrc/wx_snip.cc
|
||||
$(XFORMWP) xsrc/wx_snip.cc $(srcdir)/../wxme/wx_snip.cxx
|
||||
|
||||
xsrc/wx_msnip.cc: $(srcdir)/../wxme/wx_msnip.cxx ../wxme/wx_msnip.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_msnip.cxx xsrc/wx_msnip.cc
|
||||
$(XFORMWP) xsrc/wx_msnip.cc $(srcdir)/../wxme/wx_msnip.cxx
|
||||
|
||||
xsrc/wx_mbuf.cc: $(srcdir)/../wxme/wx_mbuf.cxx ../wxme/wx_mbuf.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_mbuf.cxx xsrc/wx_mbuf.cc
|
||||
$(XFORMWP) xsrc/wx_mbuf.cc $(srcdir)/../wxme/wx_mbuf.cxx
|
||||
|
||||
xsrc/wx_mpbrd.cc: $(srcdir)/../wxme/wx_mpbrd.cxx ../wxme/wx_mpbrd.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_mpbrd.cxx xsrc/wx_mpbrd.cc
|
||||
$(XFORMWP) xsrc/wx_mpbrd.cc $(srcdir)/../wxme/wx_mpbrd.cxx
|
||||
|
||||
xsrc/wx_keym.cc: $(srcdir)/../wxme/wx_keym.cxx ../wxme/wx_keym.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_keym.cxx xsrc/wx_keym.cc
|
||||
$(XFORMWP) xsrc/wx_keym.cc $(srcdir)/../wxme/wx_keym.cxx
|
||||
|
||||
xsrc/wx_medio.cc: $(srcdir)/../wxme/wx_medio.cxx ../wxme/wx_medio.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_medio.cxx xsrc/wx_medio.cc
|
||||
$(XFORMWP) xsrc/wx_medio.cc $(srcdir)/../wxme/wx_medio.cxx
|
||||
|
||||
xsrc/wx_medad.cc: $(srcdir)/../wxme/wx_medad.cxx ../wxme/wx_medad.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_medad.cxx xsrc/wx_medad.cc
|
||||
$(XFORMWP) xsrc/wx_medad.cc $(srcdir)/../wxme/wx_medad.cxx
|
||||
|
||||
xsrc/wx_style.cc: $(srcdir)/../wxme/wx_style.cxx ../wxme/wx_style.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_style.cxx xsrc/wx_style.cc
|
||||
$(XFORMWP) xsrc/wx_style.cc $(srcdir)/../wxme/wx_style.cxx
|
||||
|
||||
xsrc/wx_mline.cc: $(srcdir)/../wxme/wx_mline.cxx ../wxme/wx_mline.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_mline.cxx xsrc/wx_mline.cc
|
||||
$(XFORMWP) xsrc/wx_mline.cc $(srcdir)/../wxme/wx_mline.cxx
|
||||
|
||||
xsrc/wx_cgrec.cc: $(srcdir)/../wxme/wx_cgrec.cxx ../wxme/wx_cgrec.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxme/wx_cgrec.cxx xsrc/wx_cgrec.cc
|
||||
$(XFORMWP) xsrc/wx_cgrec.cc $(srcdir)/../wxme/wx_cgrec.cxx
|
||||
|
||||
|
||||
xsrc/wxscheme.cc: $(srcdir)/../wxs/wxscheme.cxx ../wxs/wxscheme.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxscheme.cxx xsrc/wxscheme.cc
|
||||
$(XFORMWP) xsrc/wxscheme.cc $(srcdir)/../wxs/wxscheme.cxx
|
||||
|
||||
xsrc/xcglue.c: $(srcdir)/../../mzscheme/utils/xcglue.c ../wxs/xcglue.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(srcdir)/../../mzscheme/utils/xcglue.c xsrc/xcglue.c
|
||||
$(XFORM) xsrc/xcglue.c $(srcdir)/../../mzscheme/utils/xcglue.c
|
||||
|
||||
|
||||
xsrc/mred.cc: $(srcdir)/../mred.cxx ../mred.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../mred.cxx xsrc/mred.cc
|
||||
$(XFORMWP) xsrc/mred.cc $(srcdir)/../mred.cxx
|
||||
|
||||
xsrc/mrmain.cc: $(srcdir)/../mrmain.cxx ../mrmain.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../mrmain.cxx xsrc/mrmain.cc
|
||||
$(XFORMWP) xsrc/mrmain.cc $(srcdir)/../mrmain.cxx
|
||||
|
||||
xsrc/mredx.cc: $(srcdir)/../mredx.cxx ../mredx.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../mredx.cxx xsrc/mredx.cc
|
||||
$(XFORMWP) xsrc/mredx.cc $(srcdir)/../mredx.cxx
|
||||
xsrc/mredmac.cc: $(srcdir)/../mredmac.cxx ../mredmac.@LTO@ $(XFORMDEP) $(XPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../mredmac.cxx xsrc/mredmac.cc
|
||||
$(XFORMWP) xsrc/mredmac.cc $(srcdir)/../mredmac.cxx
|
||||
|
||||
xsrc/wxs_bmap.cc: $(srcdir)/../wxs/wxs_bmap.cxx ../wxs/wxs_bmap.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_bmap.cxx xsrc/wxs_bmap.cc
|
||||
$(XFORMWP) xsrc/wxs_bmap.cc $(srcdir)/../wxs/wxs_bmap.cxx
|
||||
xsrc/wxs_butn.cc: $(srcdir)/../wxs/wxs_butn.cxx ../wxs/wxs_butn.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_butn.cxx xsrc/wxs_butn.cc
|
||||
$(XFORMWP) xsrc/wxs_butn.cc $(srcdir)/../wxs/wxs_butn.cxx
|
||||
xsrc/wxs_chce.cc: $(srcdir)/../wxs/wxs_chce.cxx ../wxs/wxs_chce.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_chce.cxx xsrc/wxs_chce.cc
|
||||
$(XFORMWP) xsrc/wxs_chce.cc $(srcdir)/../wxs/wxs_chce.cxx
|
||||
xsrc/wxs_ckbx.cc: $(srcdir)/../wxs/wxs_ckbx.cxx ../wxs/wxs_ckbx.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_ckbx.cxx xsrc/wxs_ckbx.cc
|
||||
$(XFORMWP) xsrc/wxs_ckbx.cc $(srcdir)/../wxs/wxs_ckbx.cxx
|
||||
xsrc/wxs_cnvs.cc: $(srcdir)/../wxs/wxs_cnvs.cxx ../wxs/wxs_cnvs.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_cnvs.cxx xsrc/wxs_cnvs.cc
|
||||
$(XFORMWP) xsrc/wxs_cnvs.cc $(srcdir)/../wxs/wxs_cnvs.cxx
|
||||
xsrc/wxs_dc.cc: $(srcdir)/../wxs/wxs_dc.cxx ../wxs/wxs_dc.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_dc.cxx xsrc/wxs_dc.cc
|
||||
$(XFORMWP) xsrc/wxs_dc.cc $(srcdir)/../wxs/wxs_dc.cxx
|
||||
xsrc/wxs_evnt.cc: $(srcdir)/../wxs/wxs_evnt.cxx ../wxs/wxs_evnt.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_evnt.cxx xsrc/wxs_evnt.cc
|
||||
$(XFORMWP) xsrc/wxs_evnt.cc $(srcdir)/../wxs/wxs_evnt.cxx
|
||||
xsrc/wxs_fram.cc: $(srcdir)/../wxs/wxs_fram.cxx ../wxs/wxs_fram.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_fram.cxx xsrc/wxs_fram.cc
|
||||
$(XFORMWP) xsrc/wxs_fram.cc $(srcdir)/../wxs/wxs_fram.cxx
|
||||
xsrc/wxs_gage.cc: $(srcdir)/../wxs/wxs_gage.cxx ../wxs/wxs_gage.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_gage.cxx xsrc/wxs_gage.cc
|
||||
$(XFORMWP) xsrc/wxs_gage.cc $(srcdir)/../wxs/wxs_gage.cxx
|
||||
xsrc/wxs_gdi.cc: $(srcdir)/../wxs/wxs_gdi.cxx ../wxs/wxs_gdi.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_gdi.cxx xsrc/wxs_gdi.cc
|
||||
$(XFORMWP) xsrc/wxs_gdi.cc $(srcdir)/../wxs/wxs_gdi.cxx
|
||||
xsrc/wxs_glob.cc: $(srcdir)/../wxs/wxs_glob.cxx ../wxs/wxs_glob.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_glob.cxx xsrc/wxs_glob.cc
|
||||
$(XFORMWP) xsrc/wxs_glob.cc $(srcdir)/../wxs/wxs_glob.cxx
|
||||
xsrc/wxs_item.cc: $(srcdir)/../wxs/wxs_item.cxx ../wxs/wxs_item.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_item.cxx xsrc/wxs_item.cc
|
||||
$(XFORMWP) xsrc/wxs_item.cc $(srcdir)/../wxs/wxs_item.cxx
|
||||
xsrc/wxs_lbox.cc: $(srcdir)/../wxs/wxs_lbox.cxx ../wxs/wxs_lbox.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_lbox.cxx xsrc/wxs_lbox.cc
|
||||
$(XFORMWP) xsrc/wxs_lbox.cc $(srcdir)/../wxs/wxs_lbox.cxx
|
||||
xsrc/wxs_madm.cc: $(srcdir)/../wxs/wxs_madm.cxx ../wxs/wxs_madm.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_madm.cxx xsrc/wxs_madm.cc
|
||||
$(XFORMWP) xsrc/wxs_madm.cc $(srcdir)/../wxs/wxs_madm.cxx
|
||||
xsrc/wxs_mede.cc: $(srcdir)/../wxs/wxs_mede.cxx ../wxs/wxs_mede.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_mede.cxx xsrc/wxs_mede.cc
|
||||
$(XFORMWP) xsrc/wxs_mede.cc $(srcdir)/../wxs/wxs_mede.cxx
|
||||
xsrc/wxs_medi.cc: $(srcdir)/../wxs/wxs_medi.cxx ../wxs/wxs_medi.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_medi.cxx xsrc/wxs_medi.cc
|
||||
$(XFORMWP) xsrc/wxs_medi.cc $(srcdir)/../wxs/wxs_medi.cxx
|
||||
xsrc/wxs_menu.cc: $(srcdir)/../wxs/wxs_menu.cxx ../wxs/wxs_menu.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_menu.cxx xsrc/wxs_menu.cc
|
||||
$(XFORMWP) xsrc/wxs_menu.cc $(srcdir)/../wxs/wxs_menu.cxx
|
||||
xsrc/wxs_mio.cc: $(srcdir)/../wxs/wxs_mio.cxx ../wxs/wxs_mio.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_mio.cxx xsrc/wxs_mio.cc
|
||||
$(XFORMWP) xsrc/wxs_mio.cc $(srcdir)/../wxs/wxs_mio.cxx
|
||||
xsrc/wxs_misc.cc: $(srcdir)/../wxs/wxs_misc.cxx ../wxs/wxs_misc.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_misc.cxx xsrc/wxs_misc.cc
|
||||
$(XFORMWP) xsrc/wxs_misc.cc $(srcdir)/../wxs/wxs_misc.cxx
|
||||
xsrc/wxs_mpb.cc: $(srcdir)/../wxs/wxs_mpb.cxx ../wxs/wxs_mpb.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_mpb.cxx xsrc/wxs_mpb.cc
|
||||
$(XFORMWP) xsrc/wxs_mpb.cc $(srcdir)/../wxs/wxs_mpb.cxx
|
||||
xsrc/wxs_obj.cc: $(srcdir)/../wxs/wxs_obj.cxx ../wxs/wxs_obj.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_obj.cxx xsrc/wxs_obj.cc
|
||||
$(XFORMWP) xsrc/wxs_obj.cc $(srcdir)/../wxs/wxs_obj.cxx
|
||||
xsrc/wxs_panl.cc: $(srcdir)/../wxs/wxs_panl.cxx ../wxs/wxs_panl.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_panl.cxx xsrc/wxs_panl.cc
|
||||
$(XFORMWP) xsrc/wxs_panl.cc $(srcdir)/../wxs/wxs_panl.cxx
|
||||
xsrc/wxs_rado.cc: $(srcdir)/../wxs/wxs_rado.cxx ../wxs/wxs_rado.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_rado.cxx xsrc/wxs_rado.cc
|
||||
$(XFORMWP) xsrc/wxs_rado.cc $(srcdir)/../wxs/wxs_rado.cxx
|
||||
xsrc/wxs_slid.cc: $(srcdir)/../wxs/wxs_slid.cxx ../wxs/wxs_slid.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_slid.cxx xsrc/wxs_slid.cc
|
||||
$(XFORMWP) xsrc/wxs_slid.cc $(srcdir)/../wxs/wxs_slid.cxx
|
||||
xsrc/wxs_snip.cc: $(srcdir)/../wxs/wxs_snip.cxx ../wxs/wxs_snip.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_snip.cxx xsrc/wxs_snip.cc
|
||||
$(XFORMWP) xsrc/wxs_snip.cc $(srcdir)/../wxs/wxs_snip.cxx
|
||||
xsrc/wxs_styl.cc: $(srcdir)/../wxs/wxs_styl.cxx ../wxs/wxs_styl.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_styl.cxx xsrc/wxs_styl.cc
|
||||
$(XFORMWP) xsrc/wxs_styl.cc $(srcdir)/../wxs/wxs_styl.cxx
|
||||
xsrc/wxs_tabc.cc: $(srcdir)/../wxs/wxs_tabc.cxx ../wxs/wxs_tabc.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_tabc.cxx xsrc/wxs_tabc.cc
|
||||
$(XFORMWP) xsrc/wxs_tabc.cc $(srcdir)/../wxs/wxs_tabc.cxx
|
||||
xsrc/wxs_win.cc: $(srcdir)/../wxs/wxs_win.cxx ../wxs/wxs_win.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../wxs/wxs_win.cxx xsrc/wxs_win.cc
|
||||
$(XFORMWP) xsrc/wxs_win.cc $(srcdir)/../wxs/wxs_win.cxx
|
||||
|
||||
xsrc/wxJPEG.cc: $(srcdir)/../../wxcommon/wxJPEG.cxx ../wxJPEG.@LTO@ $(XFORMDEP) $(XFORMPRECOMP)
|
||||
$(XFORMWP) $(srcdir)/../../wxcommon/wxJPEG.cxx xsrc/wxJPEG.cc
|
||||
$(XFORMWP) xsrc/wxJPEG.cc $(srcdir)/../../wxcommon/wxJPEG.cxx
|
||||
|
||||
GCPREINC = -include $(srcdir)/../../mzscheme/gc2/gc2.h
|
||||
POSTFLAGS = $(OPTIONS) @COMPFLAGS@ @PROFFLAGS@ @CFLAGS@
|
||||
|
@ -1286,7 +1286,6 @@ wx_xt_PLAIN_OBJS = \
|
|||
../../wxxt/src/XWidgets/xwBoard.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwEnforcer.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwLabel.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwScrollText.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwTabString.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwscroll.@LTO@ \
|
||||
../../wxxt/src/XWidgets/xwButton.@LTO@ \
|
||||
|
|
|
@ -269,7 +269,7 @@ int main(int argc, char *argv[])
|
|||
#if defined(MZ_PRECISE_GC)
|
||||
# ifndef wx_msw
|
||||
stack_start = (void *)&__gc_var_stack__;
|
||||
GC_init_type_tags(_scheme_last_type_, scheme_weak_box_type);
|
||||
GC_init_type_tags(_scheme_last_type_, scheme_weak_box_type, scheme_ephemeron_type);
|
||||
# endif
|
||||
/* For Windows, WinMain inits the type tags. */
|
||||
#endif
|
||||
|
|
|
@ -390,7 +390,7 @@ Bool wxStyleChangeRecord::Undo(wxMediaBuffer *buffer)
|
|||
return continued;
|
||||
}
|
||||
|
||||
class StyleChangeSnip : public wxObject
|
||||
class StyleChangeSnip /* : public wxObject */
|
||||
{
|
||||
public:
|
||||
wxSnip *snip;
|
||||
|
|
|
@ -968,6 +968,9 @@ public:
|
|||
};
|
||||
|
||||
wxsMenuItem::wxsMenuItem(void)
|
||||
#ifndef MZ_PRECISE_GC
|
||||
: wxObject(WXGC_NO_CLEANUP)
|
||||
#endif
|
||||
{
|
||||
#ifdef MZ_PRECISE_GC
|
||||
void *mid;
|
||||
|
|
|
@ -110,6 +110,9 @@ public:
|
|||
};
|
||||
|
||||
wxsMenuItem::wxsMenuItem(void)
|
||||
#ifndef MZ_PRECISE_GC
|
||||
: wxObject(WXGC_NO_CLEANUP)
|
||||
#endif
|
||||
{
|
||||
#ifdef MZ_PRECISE_GC
|
||||
void *mid;
|
||||
|
|
|
@ -667,6 +667,13 @@ void GC_finalize()
|
|||
/* PLTSCHEME: for resetting the disapearing link */
|
||||
struct disappearing_link *done_dl = NULL, *last_done_dl = NULL;
|
||||
|
||||
/* PLTSCHEME: it's important to "push roots again" before
|
||||
making disappearing links disappear, because this
|
||||
step includes marking from ephemerons whose keys are
|
||||
reachable. We want to mark before disappearing links
|
||||
are disappeared. */
|
||||
if (GC_push_last_roots_again) GC_push_last_roots_again();
|
||||
|
||||
/* Make disappearing links disappear */
|
||||
/* PLTSCHEME: handle NULL real_link and remember old values */
|
||||
for (i = 0; i < dl_size; i++) {
|
||||
|
|
|
@ -19,7 +19,8 @@ LIBS = @LIBS@
|
|||
|
||||
PRE_MZ@OSX@ = env DYLD_FRAMEWORK_PATH="`pwd`/.."
|
||||
PRE_MZ@NOT_OSX@ =
|
||||
XFORM = $(PRE_MZ) ../mzscheme -rq $(srcdir)/xform.ss --setup "$(CPP) $(CPPFLAGS)"
|
||||
XFORM_SETUP = $(PRE_MZ) ../mzscheme -rq $(srcdir)/xform.ss --setup
|
||||
XFORM = $(XFORM_SETUP) --cpp "$(CPP) $(CPPFLAGS)" -o
|
||||
XSRCDIR = xsrc
|
||||
SRCDIR = $(srcdir)/../src
|
||||
|
||||
|
@ -116,83 +117,83 @@ xobjects: $(OBJS) main.@LTO@
|
|||
XFORMDEP = $(srcdir)/gc2.h $(srcdir)/xform.ss $(srcdir)/xform-mod.ss
|
||||
|
||||
$(XSRCDIR)/salloc.c: ../src/salloc.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/salloc.c $(XSRCDIR)/salloc.c
|
||||
$(XFORM) $(XSRCDIR)/salloc.c $(SRCDIR)/salloc.c
|
||||
$(XSRCDIR)/bignum.c: ../src/bignum.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/bignum.c $(XSRCDIR)/bignum.c
|
||||
$(XFORM) $(XSRCDIR)/bignum.c $(SRCDIR)/bignum.c
|
||||
$(XSRCDIR)/bool.c: ../src/bool.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/bool.c $(XSRCDIR)/bool.c
|
||||
$(XFORM) $(XSRCDIR)/bool.c $(SRCDIR)/bool.c
|
||||
$(XSRCDIR)/builtin.c: ../src/builtin.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/builtin.c $(XSRCDIR)/builtin.c
|
||||
$(XFORM) $(XSRCDIR)/builtin.c $(SRCDIR)/builtin.c
|
||||
$(XSRCDIR)/char.c: ../src/char.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/char.c $(XSRCDIR)/char.c
|
||||
$(XFORM) $(XSRCDIR)/char.c $(SRCDIR)/char.c
|
||||
$(XSRCDIR)/complex.c: ../src/complex.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/complex.c $(XSRCDIR)/complex.c
|
||||
$(XFORM) $(XSRCDIR)/complex.c $(SRCDIR)/complex.c
|
||||
$(XSRCDIR)/dynext.c: ../src/dynext.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/dynext.c $(XSRCDIR)/dynext.c
|
||||
$(XFORM) $(XSRCDIR)/dynext.c $(SRCDIR)/dynext.c
|
||||
$(XSRCDIR)/env.c: ../src/env.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/env.c $(XSRCDIR)/env.c
|
||||
$(XFORM) $(XSRCDIR)/env.c $(SRCDIR)/env.c
|
||||
$(XSRCDIR)/error.c: ../src/error.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/error.c $(XSRCDIR)/error.c
|
||||
$(XFORM) $(XSRCDIR)/error.c $(SRCDIR)/error.c
|
||||
$(XSRCDIR)/eval.c: ../src/eval.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/eval.c $(XSRCDIR)/eval.c
|
||||
$(XFORM) $(XSRCDIR)/eval.c $(SRCDIR)/eval.c
|
||||
$(XSRCDIR)/file.c: ../src/file.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/file.c $(XSRCDIR)/file.c
|
||||
$(XFORM) $(XSRCDIR)/file.c $(SRCDIR)/file.c
|
||||
$(XSRCDIR)/fun.c: ../src/fun.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/fun.c $(XSRCDIR)/fun.c
|
||||
$(XFORM) $(XSRCDIR)/fun.c $(SRCDIR)/fun.c
|
||||
$(XSRCDIR)/hash.c: ../src/hash.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/hash.c $(XSRCDIR)/hash.c
|
||||
$(XFORM) $(XSRCDIR)/hash.c $(SRCDIR)/hash.c
|
||||
$(XSRCDIR)/image.c: ../src/image.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/image.c $(XSRCDIR)/image.c
|
||||
$(XFORM) $(XSRCDIR)/image.c $(SRCDIR)/image.c
|
||||
$(XSRCDIR)/module.c: ../src/module.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/module.c $(XSRCDIR)/module.c
|
||||
$(XFORM) $(XSRCDIR)/module.c $(SRCDIR)/module.c
|
||||
$(XSRCDIR)/list.c: ../src/list.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/list.c $(XSRCDIR)/list.c
|
||||
$(XFORM) $(XSRCDIR)/list.c $(SRCDIR)/list.c
|
||||
$(XSRCDIR)/network.c: ../src/network.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/network.c $(XSRCDIR)/network.c
|
||||
$(XFORM) $(XSRCDIR)/network.c $(SRCDIR)/network.c
|
||||
$(XSRCDIR)/numarith.c: ../src/numarith.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/numarith.c $(XSRCDIR)/numarith.c
|
||||
$(XFORM) $(XSRCDIR)/numarith.c $(SRCDIR)/numarith.c
|
||||
$(XSRCDIR)/number.c: ../src/number.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/number.c $(XSRCDIR)/number.c
|
||||
$(XFORM) $(XSRCDIR)/number.c $(SRCDIR)/number.c
|
||||
$(XSRCDIR)/numcomp.c: ../src/numcomp.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/numcomp.c $(XSRCDIR)/numcomp.c
|
||||
$(XFORM) $(XSRCDIR)/numcomp.c $(SRCDIR)/numcomp.c
|
||||
$(XSRCDIR)/numstr.c: ../src/numstr.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/numstr.c $(XSRCDIR)/numstr.c
|
||||
$(XFORM) $(XSRCDIR)/numstr.c $(SRCDIR)/numstr.c
|
||||
$(XSRCDIR)/port.c: ../src/port.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/port.c $(XSRCDIR)/port.c
|
||||
$(XFORM) $(XSRCDIR)/port.c $(SRCDIR)/port.c
|
||||
$(XSRCDIR)/portfun.c: ../src/portfun.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/portfun.c $(XSRCDIR)/portfun.c
|
||||
$(XFORM) $(XSRCDIR)/portfun.c $(SRCDIR)/portfun.c
|
||||
$(XSRCDIR)/print.c: ../src/print.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/print.c $(XSRCDIR)/print.c
|
||||
$(XFORM) $(XSRCDIR)/print.c $(SRCDIR)/print.c
|
||||
$(XSRCDIR)/rational.c: ../src/rational.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/rational.c $(XSRCDIR)/rational.c
|
||||
$(XFORM) $(XSRCDIR)/rational.c $(SRCDIR)/rational.c
|
||||
$(XSRCDIR)/read.c: ../src/read.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/read.c $(XSRCDIR)/read.c
|
||||
$(XFORM) $(XSRCDIR)/read.c $(SRCDIR)/read.c
|
||||
$(XSRCDIR)/regexp.c: ../src/regexp.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/regexp.c $(XSRCDIR)/regexp.c
|
||||
$(XFORM) $(XSRCDIR)/regexp.c $(SRCDIR)/regexp.c
|
||||
$(XSRCDIR)/sema.c: ../src/sema.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/sema.c $(XSRCDIR)/sema.c
|
||||
$(XFORM) $(XSRCDIR)/sema.c $(SRCDIR)/sema.c
|
||||
$(XSRCDIR)/setjmpup.c: ../src/setjmpup.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/setjmpup.c $(XSRCDIR)/setjmpup.c
|
||||
$(XFORM) $(XSRCDIR)/setjmpup.c $(SRCDIR)/setjmpup.c
|
||||
$(XSRCDIR)/string.c: ../src/string.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/string.c $(XSRCDIR)/string.c -I$(OBJDIR)
|
||||
$(XFORM_SETUP) --cpp "$(CPP) -I$(OBJDIR) $(CPPFLAGS)" -o $(XSRCDIR)/string.c $(SRCDIR)/string.c
|
||||
$(XSRCDIR)/struct.c: ../src/struct.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/struct.c $(XSRCDIR)/struct.c
|
||||
$(XFORM) $(XSRCDIR)/struct.c $(SRCDIR)/struct.c
|
||||
$(XSRCDIR)/stxobj.c: ../src/stxobj.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/stxobj.c $(XSRCDIR)/stxobj.c
|
||||
$(XFORM) $(XSRCDIR)/stxobj.c $(SRCDIR)/stxobj.c
|
||||
$(XSRCDIR)/symbol.c: ../src/symbol.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/symbol.c $(XSRCDIR)/symbol.c
|
||||
$(XFORM) $(XSRCDIR)/symbol.c $(SRCDIR)/symbol.c
|
||||
$(XSRCDIR)/syntax.c: ../src/syntax.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/syntax.c $(XSRCDIR)/syntax.c
|
||||
$(XFORM) $(XSRCDIR)/syntax.c $(SRCDIR)/syntax.c
|
||||
$(XSRCDIR)/thread.c: ../src/thread.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/thread.c $(XSRCDIR)/thread.c
|
||||
$(XFORM) $(XSRCDIR)/thread.c $(SRCDIR)/thread.c
|
||||
$(XSRCDIR)/type.c: ../src/type.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/type.c $(XSRCDIR)/type.c
|
||||
$(XFORM) $(XSRCDIR)/type.c $(SRCDIR)/type.c
|
||||
$(XSRCDIR)/vector.c: ../src/vector.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(SRCDIR)/vector.c $(XSRCDIR)/vector.c
|
||||
$(XFORM) $(XSRCDIR)/vector.c $(SRCDIR)/vector.c
|
||||
$(XSRCDIR)/foreign.c: ../../foreign/foreign.@LTO@ $(XFORMDEP)
|
||||
$(XFORM)" -I../../foreign/gcc/libffi/include -I${SRCDIR}/../../mzscheme/src" $(SRCDIR)/../../foreign/foreign.c $(XSRCDIR)/foreign.c
|
||||
$(XFORM_SETUP) --cpp "$(CPP) $(CPPFLAGS) -I../../foreign/gcc/libffi/include -I${SRCDIR}/../../mzscheme/src" -o $(XSRCDIR)/foreign.c $(SRCDIR)/../../foreign/foreign.c
|
||||
$(XSRCDIR)/main.c: ../main.@LTO@ $(XFORMDEP)
|
||||
$(XFORM) $(srcdir)/../main.c $(XSRCDIR)/main.c
|
||||
$(XFORM) $(XSRCDIR)/main.c $(srcdir)/../main.c
|
||||
|
||||
|
||||
salloc.@LTO@: $(XSRCDIR)/salloc.c
|
||||
|
@ -276,7 +277,7 @@ main.@LTO@: $(XSRCDIR)/main.c
|
|||
|
||||
gc2.@LTO@: $(srcdir)/gc2.c $(srcdir)/newgc.c $(srcdir)/compact.c $(srcdir)/newgc.c $(srcdir)/gc2.h \
|
||||
$(srcdir)/vm_osx.c $(srcdir)/vm_mmap.c $(srcdir)/vm_osk.c $(srcdir)/alloc_cache.c $(srcdir)/my_qsort.c \
|
||||
$(srcdir)/../include/scheme.h $(srcdir)/../src/schpriv.h
|
||||
$(srcdir)/weak.c $(srcdir)/../include/scheme.h $(srcdir)/../src/schpriv.h
|
||||
$(CC) $(CFLAGS) -c $(srcdir)/gc2.c -o gc2.@LTO@
|
||||
|
||||
FOREIGN_OBJS = ../../foreign/gcc/libffi/src/*.@LTO@ ../../foreign/gcc/libffi/src/*/*.@LTO@
|
||||
|
|
|
@ -159,6 +159,22 @@ MzScheme allocates the following kinds of memory objects:
|
|||
of weak pointers to collectable objects. See GC_malloc_weak_array()
|
||||
in gc2.h for more details.
|
||||
|
||||
* Ephemeron - The object has the following initial structure:
|
||||
|
||||
struct {
|
||||
short tag;
|
||||
short filler_used_for_hashing;
|
||||
void *key;
|
||||
void *val;
|
||||
}
|
||||
|
||||
See "Weak Box" above. The difference for an ephemeron is that
|
||||
the ephemeron must hold `val' strongly as long as the wealy-held
|
||||
`key' is accessible --- where `val' itself isn't traced unless
|
||||
both the ephemeron and `key' are reachable. (In particular,
|
||||
a reference from `val' to `key' doesn't prevent collection of
|
||||
`key'.)
|
||||
|
||||
* Immobile box - a longword-sized box that can contain a reference to
|
||||
a collectable object, but it not itself collectable or movable. An
|
||||
immobile box lets MzScheme refer to a collectable object (through
|
||||
|
|
|
@ -160,6 +160,7 @@ void **GC_variable_stack;
|
|||
|
||||
/********************* Type tags *********************/
|
||||
Type_Tag weak_box_tag = 42; /* set by client */
|
||||
Type_Tag ephemeron_tag = 42; /* set by client */
|
||||
|
||||
#define gc_weak_array_tag 256
|
||||
#define gc_on_free_list_tag 257
|
||||
|
@ -466,9 +467,10 @@ void GC_set_stack_base(void *base)
|
|||
stack_base = (unsigned long)base;
|
||||
}
|
||||
|
||||
void GC_init_type_tags(int count, int weakbox)
|
||||
void GC_init_type_tags(int count, int weakbox, int ephemeron)
|
||||
{
|
||||
weak_box_tag = weakbox;
|
||||
ephemeron_tag = ephemeron;
|
||||
}
|
||||
|
||||
void GC_register_traversers(Type_Tag tag, Size_Proc size, Mark_Proc mark, Fixup_Proc fixup,
|
||||
|
@ -632,160 +634,9 @@ static int size_on_free_list(void *p)
|
|||
/* weak arrays and boxes */
|
||||
/******************************************************************************/
|
||||
|
||||
/* The GC_Weak_Array structure is not externally visible, but
|
||||
clients expect a specific structure. See README for more
|
||||
information. */
|
||||
typedef struct GC_Weak_Array {
|
||||
Type_Tag type;
|
||||
short keyex;
|
||||
long count;
|
||||
void *replace_val;
|
||||
struct GC_Weak_Array *next;
|
||||
void *data[1]; /* must be the 5th longword! */
|
||||
} GC_Weak_Array;
|
||||
static int is_marked(void *p);
|
||||
|
||||
static GC_Weak_Array *weak_arrays;
|
||||
|
||||
static int size_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
static int mark_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
|
||||
gcMARK(a->replace_val);
|
||||
|
||||
a->next = weak_arrays;
|
||||
weak_arrays = a;
|
||||
|
||||
#if CHECKS
|
||||
/* For now, weak arrays only used for symbols and falses: */
|
||||
{
|
||||
void **data;
|
||||
int i;
|
||||
data = a->data;
|
||||
for (i = a->count; i--; ) {
|
||||
if (data[i]
|
||||
&& (*(short *)(data[i]) != 45)
|
||||
&& (*(short *)(data[i]) != 54))
|
||||
CRASH(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
static int fixup_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
int i;
|
||||
void **data;
|
||||
|
||||
gcFIXUP(a->replace_val);
|
||||
|
||||
data = a->data;
|
||||
for (i = a->count; i--; ) {
|
||||
if (data[i])
|
||||
gcFIXUP(data[i]);
|
||||
}
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
void *GC_malloc_weak_array(size_t size_in_bytes, void *replace_val)
|
||||
{
|
||||
GC_Weak_Array *w;
|
||||
|
||||
/* Allcation might trigger GC, so we use park: */
|
||||
park[0] = replace_val;
|
||||
|
||||
w = (GC_Weak_Array *)GC_malloc_one_tagged(size_in_bytes
|
||||
+ sizeof(GC_Weak_Array)
|
||||
- sizeof(void *));
|
||||
|
||||
replace_val = park[0];
|
||||
park[0] = NULL;
|
||||
|
||||
w->type = gc_weak_array_tag;
|
||||
w->replace_val = replace_val;
|
||||
w->count = (size_in_bytes >> LOG_WORD_SIZE);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
/* The GC_Weak_Box struct is not externally visible, but
|
||||
first three fields are mandated by the GC interface */
|
||||
typedef struct GC_Weak_Box {
|
||||
Type_Tag type;
|
||||
short keyex;
|
||||
void *val;
|
||||
/* The rest is up to us: */
|
||||
void **secondary_erase;
|
||||
int soffset;
|
||||
struct GC_Weak_Box *next;
|
||||
} GC_Weak_Box;
|
||||
|
||||
static GC_Weak_Box *weak_boxes;
|
||||
|
||||
static int size_weak_box(void *p)
|
||||
{
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
static int mark_weak_box(void *p)
|
||||
{
|
||||
GC_Weak_Box *wb = (GC_Weak_Box *)p;
|
||||
|
||||
gcMARK(wb->secondary_erase);
|
||||
|
||||
if (wb->val) {
|
||||
wb->next = weak_boxes;
|
||||
weak_boxes = wb;
|
||||
}
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
static int fixup_weak_box(void *p)
|
||||
{
|
||||
GC_Weak_Box *wb = (GC_Weak_Box *)p;
|
||||
|
||||
gcFIXUP(wb->secondary_erase);
|
||||
gcFIXUP(wb->val);
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
void *GC_malloc_weak_box(void *p, void **secondary, int soffset)
|
||||
{
|
||||
GC_Weak_Box *w;
|
||||
|
||||
/* Allcation might trigger GC, so we use park: */
|
||||
park[0] = p;
|
||||
park[1] = secondary;
|
||||
|
||||
w = (GC_Weak_Box *)GC_malloc_one_tagged(sizeof(GC_Weak_Box));
|
||||
|
||||
p = park[0];
|
||||
park[0] = NULL;
|
||||
secondary = (void **)park[1];
|
||||
park[1] = NULL;
|
||||
|
||||
w->type = weak_box_tag;
|
||||
w->val = p;
|
||||
w->secondary_erase = secondary;
|
||||
w->soffset = soffset;
|
||||
|
||||
return w;
|
||||
}
|
||||
#include "weak.c"
|
||||
|
||||
/******************************************************************************/
|
||||
/* finalization */
|
||||
|
@ -1037,7 +888,9 @@ static int is_marked(void *p)
|
|||
offset -= 1;
|
||||
|
||||
return OFFSET_COLOR(page->u.offsets, offset);
|
||||
} else
|
||||
} else if ((long)p & 0x1)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -3165,6 +3018,7 @@ static void check_ptr(void **a)
|
|||
if ((tag < 0) || (tag >= _num_tags_)
|
||||
|| (!size_table[tag]
|
||||
&& (tag != weak_box_tag)
|
||||
&& (tag != ephemeron_tag)
|
||||
&& (tag != gc_weak_array_tag)
|
||||
&& (tag != gc_on_free_list_tag))) {
|
||||
GCPRINT(GCOUTF, "bad tag: %d at %lx, references from %lx\n", tag, (long)p, (long)a);
|
||||
|
@ -3261,6 +3115,7 @@ static void init(void)
|
|||
{
|
||||
if (!initialized) {
|
||||
GC_register_traversers(weak_box_tag, size_weak_box, mark_weak_box, fixup_weak_box, 1, 0);
|
||||
GC_register_traversers(ephemeron_tag, size_ephemeron, mark_ephemeron, fixup_ephemeron, 1, 0);
|
||||
GC_register_traversers(gc_weak_array_tag, size_weak_array, mark_weak_array, fixup_weak_array, 0, 0);
|
||||
#if USE_FREELIST
|
||||
GC_register_traversers(gc_on_free_list_tag, size_on_free_list, size_on_free_list, size_on_free_list, 0, 0);
|
||||
|
@ -3363,8 +3218,6 @@ static void do_roots(int fixup)
|
|||
static void gcollect(int full)
|
||||
{
|
||||
int did_fnls;
|
||||
GC_Weak_Box *wb;
|
||||
GC_Weak_Array *wa;
|
||||
#if TIME
|
||||
struct rusage pre, post;
|
||||
#endif
|
||||
|
@ -3383,8 +3236,10 @@ static void gcollect(int full)
|
|||
|
||||
set_ending_tags();
|
||||
|
||||
weak_boxes = NULL;
|
||||
weak_arrays = NULL;
|
||||
init_weak_boxes();
|
||||
init_ephemerons();
|
||||
init_weak_arrays();
|
||||
|
||||
did_fnls = 0;
|
||||
|
||||
gray_first = NULL;
|
||||
|
@ -3520,6 +3375,10 @@ static void gcollect(int full)
|
|||
|
||||
iterations = 0;
|
||||
|
||||
/* Propagate, mark ready ephemerons */
|
||||
propagate_all_mpages();
|
||||
mark_ready_ephemerons();
|
||||
|
||||
/* Propagate, loop to do finalization */
|
||||
while (1) {
|
||||
|
||||
|
@ -3685,11 +3544,12 @@ static void gcollect(int full)
|
|||
gcMARK(f->p);
|
||||
f = f->next;
|
||||
}
|
||||
|
||||
mark_ready_ephemerons();
|
||||
}
|
||||
|
||||
did_fnls++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#if CHECKS
|
||||
|
@ -3722,33 +3582,9 @@ static void gcollect(int full)
|
|||
|
||||
/******************************************************/
|
||||
|
||||
/* Do weak boxes: */
|
||||
wb = weak_boxes;
|
||||
while (wb) {
|
||||
if (!is_marked(wb->val)) {
|
||||
wb->val = NULL;
|
||||
if (wb->secondary_erase) {
|
||||
*(wb->secondary_erase + wb->soffset) = NULL;
|
||||
wb->secondary_erase = NULL;
|
||||
}
|
||||
}
|
||||
wb = wb->next;
|
||||
}
|
||||
|
||||
/* Do weak arrays: */
|
||||
wa = weak_arrays;
|
||||
while (wa) {
|
||||
void **data;
|
||||
|
||||
data = wa->data;
|
||||
for (i = wa->count; i--; ) {
|
||||
void *p = data[i];
|
||||
if (p && !is_marked(p))
|
||||
data[i] = wa->replace_val;
|
||||
}
|
||||
|
||||
wa = wa->next;
|
||||
}
|
||||
zero_remaining_ephemerons();
|
||||
zero_weak_boxes();
|
||||
zero_weak_arrays();
|
||||
|
||||
/* Cleanup weak finalization links: */
|
||||
{
|
||||
|
@ -4648,11 +4484,13 @@ static long dump_info_array[BIGBLOCK_MIN_SIZE];
|
|||
#if KEEP_BACKPOINTERS
|
||||
# define MAX_FOUND_OBJECTS 5000
|
||||
int GC_show_trace = 0;
|
||||
int GC_show_finals = 0;
|
||||
int GC_trace_for_tag = 57;
|
||||
int GC_path_length_limit = 1000;
|
||||
static int found_object_count;
|
||||
static void *found_objects[MAX_FOUND_OBJECTS];
|
||||
void (*GC_for_each_found)(void *p) = NULL;
|
||||
char *(*GC_get_xtagged_name)(void *p) = NULL;
|
||||
#endif
|
||||
|
||||
static long scan_tagged_mpage(void **p, MPage *page)
|
||||
|
@ -4773,7 +4611,10 @@ void *print_out_pointer(const char *prefix, void *p)
|
|||
} else if (page->type == MTYPE_ATOMIC) {
|
||||
what = "ATOMIC";
|
||||
} else if (page->type == MTYPE_XTAGGED) {
|
||||
what = "XTAGGED";
|
||||
if (GC_get_xtagged_name)
|
||||
what = GC_get_xtagged_name(p);
|
||||
else
|
||||
what = "XTAGGED";
|
||||
} else if (page->type == MTYPE_MALLOCFREE) {
|
||||
what = "MALLOCED";
|
||||
} else {
|
||||
|
@ -5065,6 +4906,16 @@ void GC_dump(void)
|
|||
GC_trace_for_tag = 57;
|
||||
--avoid_collection;
|
||||
}
|
||||
if (GC_show_finals) {
|
||||
Fnl *f;
|
||||
avoid_collection++;
|
||||
GCPRINT(GCOUTF, "Begin Finalizations\n");
|
||||
for (f = fnls; f; f = f->next) {
|
||||
print_out_pointer("==@ ", f->p);
|
||||
}
|
||||
GCPRINT(GCOUTF, "End Finalizations\n");
|
||||
--avoid_collection;
|
||||
}
|
||||
if (GC_for_each_found)
|
||||
avoid_collection++;
|
||||
#endif
|
||||
|
|
|
@ -64,13 +64,14 @@ GC2_EXTERN void GC_add_roots(void *start, void *end);
|
|||
Called by MzScheme to install roots. The memory between
|
||||
`start' (inclusive) and `end' (exclusive) contains pointers. */
|
||||
|
||||
GC2_EXTERN void GC_init_type_tags(int count, int weakbox);
|
||||
GC2_EXTERN void GC_init_type_tags(int count, int weakbox, int ephemeron);
|
||||
/*
|
||||
Called by MzScheme to indicate the number of different type tags it
|
||||
uses, starting from 0. `count' is always less than 256. The weakbox
|
||||
argument is the value to be used for tagging weak box. (The GC has
|
||||
some freedom in the layout of a weak box, so it performs weak box
|
||||
traversals itself, but MzScheme gets to choose the tag.) */
|
||||
argument is the value to be used for tagging weak box, and the
|
||||
ephemeron is the value to tagging an ephemeron. (The GC has some
|
||||
freedom in the layout of a weak box or ephemeron, so it performs weak
|
||||
box traversals itself, but MzScheme gets to choose the tag.) */
|
||||
|
||||
GC2_EXTERN void GC_register_thread(void *, void *);
|
||||
/*
|
||||
|
@ -177,6 +178,10 @@ GC2_EXTERN void *GC_malloc_weak_box(void *p, void **secondary, int soffset);
|
|||
/*
|
||||
Allocate a weak box. See README for details. */
|
||||
|
||||
GC2_EXTERN void *GC_malloc_ephemeron(void *p, void *p2);
|
||||
/*
|
||||
Allocate an ephemeron. See README for details. */
|
||||
|
||||
GC2_EXTERN void **GC_malloc_immobile_box(void *p);
|
||||
GC2_EXTERN void GC_free_immobile_box(void **b);
|
||||
/*
|
||||
|
|
|
@ -1074,153 +1074,15 @@ inline static void reset_weak_finalizers(void)
|
|||
/*****************************************************************************/
|
||||
/* weak boxes and arrays */
|
||||
/*****************************************************************************/
|
||||
struct weak_box {
|
||||
unsigned short type;
|
||||
short keyex;
|
||||
void *val;
|
||||
void **secondary_erase;
|
||||
int soffset;
|
||||
struct weak_box *next;
|
||||
};
|
||||
|
||||
static const unsigned short gc_weak_array_tag = 256;
|
||||
static unsigned short weak_box_tag;
|
||||
static struct weak_box *weak_boxes = NULL;
|
||||
static unsigned short ephemeron_tag;
|
||||
|
||||
void *GC_malloc_weak_box(void *p, void **secondary, int soffset)
|
||||
{
|
||||
struct weak_box *wb;
|
||||
#define is_marked(p) marked(p)
|
||||
typedef short Type_Tag;
|
||||
|
||||
park[0] = p; park[1] = secondary;
|
||||
wb = GC_malloc_one_tagged(sizeof(struct weak_box));
|
||||
p = park[0]; secondary = park[1]; park[0] = park[1] = NULL;
|
||||
|
||||
wb->type = weak_box_tag; wb->val = p;
|
||||
wb->secondary_erase = secondary; wb->soffset = soffset;
|
||||
return wb;
|
||||
}
|
||||
|
||||
inline static int size_weak_box(void *p)
|
||||
{
|
||||
return gcBYTES_TO_WORDS(sizeof(struct weak_box));
|
||||
}
|
||||
|
||||
static int mark_weak_box(void *p)
|
||||
{
|
||||
struct weak_box *wb = (struct weak_box *)p;
|
||||
|
||||
gcMARK(wb->secondary_erase);
|
||||
wb->next = weak_boxes;
|
||||
weak_boxes = wb;
|
||||
if(!gc_full) gcMARK(wb->val);
|
||||
|
||||
return size_weak_box(p);
|
||||
}
|
||||
|
||||
static int repair_weak_box(void *p)
|
||||
{
|
||||
struct weak_box *wb = (struct weak_box *)p;
|
||||
|
||||
gcFIXUP(wb->secondary_erase);
|
||||
|
||||
return size_weak_box(p);
|
||||
}
|
||||
|
||||
inline static void clean_up_weak_boxes(void)
|
||||
{
|
||||
struct weak_box *work;
|
||||
|
||||
gcFIXUP(weak_boxes);
|
||||
for(work = weak_boxes; work; work = work->next) {
|
||||
if(!marked(work->val)) {
|
||||
work->val = NULL;
|
||||
if(work->secondary_erase)
|
||||
*(work->secondary_erase + work->soffset) = NULL;
|
||||
work->secondary_erase = NULL;
|
||||
} else {
|
||||
work->val = GC_resolve(work->val);
|
||||
}
|
||||
gcFIXUP(work->next);
|
||||
}
|
||||
weak_boxes = NULL;
|
||||
}
|
||||
|
||||
struct weak_array {
|
||||
unsigned short type;
|
||||
short keyex;
|
||||
long count;
|
||||
void *replace_val;
|
||||
struct weak_array *next;
|
||||
void *data[1];
|
||||
};
|
||||
|
||||
static unsigned short weak_array_tag = 256;
|
||||
static struct weak_array *weak_arrays = NULL;
|
||||
|
||||
void *GC_malloc_weak_array(size_t size, void *replace_val)
|
||||
{
|
||||
struct weak_array *wa;
|
||||
|
||||
park[0] = replace_val;
|
||||
wa = GC_malloc_one_tagged(size + sizeof(struct weak_array) - sizeof(void*));
|
||||
replace_val = park[0]; park[0] = NULL;
|
||||
|
||||
wa->type = weak_array_tag;
|
||||
wa->replace_val = replace_val;
|
||||
wa->count = gcBYTES_TO_WORDS(size);
|
||||
return wa;
|
||||
}
|
||||
|
||||
inline static int size_weak_array(void *p)
|
||||
{
|
||||
return gcBYTES_TO_WORDS(sizeof(struct weak_array)
|
||||
+ ((((struct weak_array *)p)->count - 1)
|
||||
* sizeof(void*)));
|
||||
}
|
||||
|
||||
static int mark_weak_array(void *p)
|
||||
{
|
||||
struct weak_array *wa = (struct weak_array *)p;
|
||||
|
||||
gcMARK(wa->replace_val);
|
||||
wa->next = weak_arrays;
|
||||
weak_arrays = wa;
|
||||
return size_weak_array(p);
|
||||
}
|
||||
|
||||
static int repair_weak_array(void *p)
|
||||
{
|
||||
struct weak_array *wa = (struct weak_array *)p;
|
||||
|
||||
gcFIXUP(wa->replace_val);
|
||||
return size_weak_array(p);
|
||||
}
|
||||
|
||||
inline static void clean_up_weak_arrays()
|
||||
{
|
||||
struct weak_array *work;
|
||||
|
||||
gcFIXUP(weak_arrays);
|
||||
for(work = weak_arrays; work; work = work->next) {
|
||||
void **data;
|
||||
int i;
|
||||
|
||||
for(data = work->data, i = work->count; i--; ) {
|
||||
void *p = data[i];
|
||||
|
||||
if(p) {
|
||||
if(!marked(p)) {
|
||||
GCDEBUG((DEBUGOUTF, "Replacing %p in %p because marked is %i (%p/%i)\n",
|
||||
p, work, marked(p), find_page(p), find_page(p)->previous_size));
|
||||
data[i] = work->replace_val;
|
||||
} else {
|
||||
data[i] = GC_resolve(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
gcFIXUP(work->next);
|
||||
}
|
||||
weak_arrays = NULL;
|
||||
}
|
||||
#include "weak.c"
|
||||
|
||||
/*****************************************************************************/
|
||||
/* thread list */
|
||||
|
@ -1835,11 +1697,13 @@ void designate_modified(void *p)
|
|||
|
||||
#include "sighand.c"
|
||||
|
||||
void GC_init_type_tags(int count, int weakbox)
|
||||
void GC_init_type_tags(int count, int weakbox, int ephemeron)
|
||||
{
|
||||
static int initialized = 0;
|
||||
|
||||
weak_box_tag = weakbox;
|
||||
ephemeron_tag = ephemeron;
|
||||
|
||||
if(!initialized) {
|
||||
initialized = 1;
|
||||
max_heap_size = determine_max_heap_size();
|
||||
|
@ -1848,10 +1712,12 @@ void GC_init_type_tags(int count, int weakbox)
|
|||
|
||||
resize_gen0(INIT_GEN0_SIZE);
|
||||
|
||||
GC_register_traversers(weakbox, size_weak_box, mark_weak_box,
|
||||
repair_weak_box, 0, 0);
|
||||
GC_register_traversers(weak_array_tag, size_weak_array, mark_weak_array,
|
||||
repair_weak_array, 0, 0);
|
||||
GC_register_traversers(weak_box_tag, size_weak_box, mark_weak_box,
|
||||
fixup_weak_box, 0, 0);
|
||||
GC_register_traversers(ephemeron_tag, size_ephemeron, mark_ephemeron,
|
||||
fixup_ephemeron, 0, 0);
|
||||
GC_register_traversers(gc_weak_array_tag, size_weak_array, mark_weak_array,
|
||||
fixup_weak_array, 0, 0);
|
||||
initialize_signal_handler();
|
||||
}
|
||||
}
|
||||
|
@ -2188,8 +2054,9 @@ static void prepare_pages_for_collection(void)
|
|||
}
|
||||
|
||||
/* we do this here because, well, why not? */
|
||||
weak_boxes = NULL;
|
||||
weak_arrays = NULL;
|
||||
init_weak_boxes();
|
||||
init_weak_arrays();
|
||||
init_ephemerons();
|
||||
}
|
||||
|
||||
static void mark_backpointers(void)
|
||||
|
@ -2545,9 +2412,9 @@ static void garbage_collect(int force_full)
|
|||
|
||||
/* now propagate/repair the marks we got from these roots, and do the
|
||||
finalizer passes */
|
||||
propagate_marks();
|
||||
check_finalizers(1); propagate_marks();
|
||||
check_finalizers(2); propagate_marks();
|
||||
mark_ready_ephemerons(); propagate_marks();
|
||||
check_finalizers(1); mark_ready_ephemerons(); propagate_marks();
|
||||
check_finalizers(2); mark_ready_ephemerons(); propagate_marks();
|
||||
if(gc_full) zero_weak_finalizers();
|
||||
do_ordered_level3(); propagate_marks();
|
||||
check_finalizers(3); propagate_marks();
|
||||
|
@ -2564,13 +2431,15 @@ static void garbage_collect(int force_full)
|
|||
clear_stack_pages();
|
||||
#endif
|
||||
|
||||
zero_weak_boxes();
|
||||
zero_weak_arrays();
|
||||
zero_remaining_ephemerons();
|
||||
|
||||
if(gc_full) do_heap_compact();
|
||||
|
||||
/* do some cleanup structures that either change state based on the
|
||||
heap state after collection or that become useless based on changes
|
||||
in state after collection */
|
||||
clean_up_weak_boxes();
|
||||
clean_up_weak_arrays();
|
||||
clean_up_thread_list();
|
||||
clean_up_owner_table();
|
||||
clean_up_account_hooks();
|
||||
|
|
326
src/mzscheme/gc2/weak.c
Normal file
326
src/mzscheme/gc2/weak.c
Normal file
|
@ -0,0 +1,326 @@
|
|||
|
||||
/*
|
||||
Provides:
|
||||
GC_malloc_weak_array
|
||||
size_weak_array, mark_weak_array, fixup_weak_array
|
||||
init_weak_arrays zero_weak_arrays
|
||||
GC_malloc_weak_box
|
||||
size_weak_box, mark_weak_box, fixup_weak_box
|
||||
init_weak_boxes zero_weak_boxes
|
||||
GC_malloc_ephemeron
|
||||
size_ephemeron, mark_ephemeron, fixup_ephemeron
|
||||
init_ephemerons mark_ready_ephemerons zero_remaining_ephemerons
|
||||
Requires:
|
||||
gc_weak_array_tag
|
||||
weak_box_tag
|
||||
ephemeron_tag
|
||||
is_marked(p)
|
||||
Type_Tag
|
||||
*/
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* weak arrays */
|
||||
/******************************************************************************/
|
||||
|
||||
/* The GC_Weak_Array structure is not externally visible, but
|
||||
clients expect a specific structure. See README for more
|
||||
information. */
|
||||
typedef struct GC_Weak_Array {
|
||||
Type_Tag type;
|
||||
short keyex;
|
||||
long count;
|
||||
void *replace_val;
|
||||
struct GC_Weak_Array *next;
|
||||
void *data[1]; /* must be the 5th longword! */
|
||||
} GC_Weak_Array;
|
||||
|
||||
static GC_Weak_Array *weak_arrays;
|
||||
|
||||
static int size_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
static int mark_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
|
||||
gcMARK(a->replace_val);
|
||||
|
||||
a->next = weak_arrays;
|
||||
weak_arrays = a;
|
||||
|
||||
#if CHECKS
|
||||
/* For now, weak arrays only used for symbols and falses: */
|
||||
{
|
||||
void **data;
|
||||
int i;
|
||||
data = a->data;
|
||||
for (i = a->count; i--; ) {
|
||||
if (data[i]
|
||||
&& (*(short *)(data[i]) != 45)
|
||||
&& (*(short *)(data[i]) != 54))
|
||||
CRASH(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
static int fixup_weak_array(void *p)
|
||||
{
|
||||
GC_Weak_Array *a = (GC_Weak_Array *)p;
|
||||
int i;
|
||||
void **data;
|
||||
|
||||
gcFIXUP(a->replace_val);
|
||||
|
||||
data = a->data;
|
||||
for (i = a->count; i--; ) {
|
||||
if (data[i])
|
||||
gcFIXUP(data[i]);
|
||||
}
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Array)
|
||||
+ ((a->count - 1) * sizeof(void *)));
|
||||
}
|
||||
|
||||
void *GC_malloc_weak_array(size_t size_in_bytes, void *replace_val)
|
||||
{
|
||||
GC_Weak_Array *w;
|
||||
|
||||
/* Allcation might trigger GC, so we use park: */
|
||||
park[0] = replace_val;
|
||||
|
||||
w = (GC_Weak_Array *)GC_malloc_one_tagged(size_in_bytes
|
||||
+ sizeof(GC_Weak_Array)
|
||||
- sizeof(void *));
|
||||
|
||||
replace_val = park[0];
|
||||
park[0] = NULL;
|
||||
|
||||
w->type = gc_weak_array_tag;
|
||||
w->replace_val = replace_val;
|
||||
w->count = (size_in_bytes >> LOG_WORD_SIZE);
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
void init_weak_arrays() {
|
||||
weak_arrays = NULL;
|
||||
}
|
||||
|
||||
static void zero_weak_arrays()
|
||||
{
|
||||
GC_Weak_Array *wa;
|
||||
int i;
|
||||
|
||||
wa = weak_arrays;
|
||||
while (wa) {
|
||||
void **data;
|
||||
|
||||
data = wa->data;
|
||||
for (i = wa->count; i--; ) {
|
||||
void *p = data[i];
|
||||
if (p && !is_marked(p))
|
||||
data[i] = wa->replace_val;
|
||||
}
|
||||
|
||||
wa = wa->next;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* weak boxes */
|
||||
/******************************************************************************/
|
||||
|
||||
/* The GC_Weak_Box struct is not externally visible, but
|
||||
first three fields are mandated by the GC interface */
|
||||
typedef struct GC_Weak_Box {
|
||||
Type_Tag type;
|
||||
short keyex;
|
||||
void *val;
|
||||
/* The rest is up to us: */
|
||||
void **secondary_erase;
|
||||
int soffset;
|
||||
struct GC_Weak_Box *next;
|
||||
} GC_Weak_Box;
|
||||
|
||||
static GC_Weak_Box *weak_boxes;
|
||||
|
||||
static int size_weak_box(void *p)
|
||||
{
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
static int mark_weak_box(void *p)
|
||||
{
|
||||
GC_Weak_Box *wb = (GC_Weak_Box *)p;
|
||||
|
||||
gcMARK(wb->secondary_erase);
|
||||
|
||||
if (wb->val) {
|
||||
wb->next = weak_boxes;
|
||||
weak_boxes = wb;
|
||||
}
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
static int fixup_weak_box(void *p)
|
||||
{
|
||||
GC_Weak_Box *wb = (GC_Weak_Box *)p;
|
||||
|
||||
gcFIXUP(wb->secondary_erase);
|
||||
gcFIXUP(wb->val);
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Weak_Box));
|
||||
}
|
||||
|
||||
void *GC_malloc_weak_box(void *p, void **secondary, int soffset)
|
||||
{
|
||||
GC_Weak_Box *w;
|
||||
|
||||
/* Allcation might trigger GC, so we use park: */
|
||||
park[0] = p;
|
||||
park[1] = secondary;
|
||||
|
||||
w = (GC_Weak_Box *)GC_malloc_one_tagged(sizeof(GC_Weak_Box));
|
||||
|
||||
p = park[0];
|
||||
park[0] = NULL;
|
||||
secondary = (void **)park[1];
|
||||
park[1] = NULL;
|
||||
|
||||
w->type = weak_box_tag;
|
||||
w->val = p;
|
||||
w->secondary_erase = secondary;
|
||||
w->soffset = soffset;
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
void init_weak_boxes() {
|
||||
weak_boxes = NULL;
|
||||
}
|
||||
|
||||
static void zero_weak_boxes()
|
||||
{
|
||||
GC_Weak_Box *wb;
|
||||
|
||||
wb = weak_boxes;
|
||||
while (wb) {
|
||||
if (!is_marked(wb->val)) {
|
||||
wb->val = NULL;
|
||||
if (wb->secondary_erase) {
|
||||
*(wb->secondary_erase + wb->soffset) = NULL;
|
||||
wb->secondary_erase = NULL;
|
||||
}
|
||||
}
|
||||
wb = wb->next;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* ephemeron */
|
||||
/******************************************************************************/
|
||||
|
||||
/* The GC_Ephemeron struct is not externally visible, but
|
||||
first three fields are mandated by the GC interface */
|
||||
typedef struct GC_Ephemeron {
|
||||
Type_Tag type;
|
||||
short keyex;
|
||||
void *key;
|
||||
void *val;
|
||||
/* The rest is up to us: */
|
||||
struct GC_Ephemeron *next;
|
||||
} GC_Ephemeron;
|
||||
|
||||
static GC_Ephemeron *ephemerons;
|
||||
|
||||
static int size_ephemeron(void *p)
|
||||
{
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Ephemeron));
|
||||
}
|
||||
|
||||
static int mark_ephemeron(void *p)
|
||||
{
|
||||
GC_Ephemeron *eph = (GC_Ephemeron *)p;
|
||||
|
||||
if (eph->val) {
|
||||
eph->next = ephemerons;
|
||||
ephemerons = eph;
|
||||
}
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Ephemeron));
|
||||
}
|
||||
|
||||
static int fixup_ephemeron(void *p)
|
||||
{
|
||||
GC_Ephemeron *eph = (GC_Ephemeron *)p;
|
||||
|
||||
gcFIXUP(eph->key);
|
||||
gcFIXUP(eph->val);
|
||||
|
||||
return gcBYTES_TO_WORDS(sizeof(GC_Ephemeron));
|
||||
}
|
||||
|
||||
void *GC_malloc_ephemeron(void *k, void *v)
|
||||
{
|
||||
GC_Ephemeron *eph;
|
||||
|
||||
/* Allcation might trigger GC, so we use park: */
|
||||
park[0] = k;
|
||||
park[1] = v;
|
||||
|
||||
eph = (GC_Ephemeron *)GC_malloc_one_tagged(sizeof(GC_Ephemeron));
|
||||
|
||||
k = park[0];
|
||||
park[0] = NULL;
|
||||
v = park[1];
|
||||
park[1] = NULL;
|
||||
|
||||
eph->type = ephemeron_tag;
|
||||
eph->key = k;
|
||||
eph->val = v;
|
||||
|
||||
return eph;
|
||||
}
|
||||
|
||||
void init_ephemerons() {
|
||||
ephemerons = NULL;
|
||||
}
|
||||
|
||||
static void mark_ready_ephemerons()
|
||||
{
|
||||
GC_Ephemeron *waiting = NULL, *next, *eph;
|
||||
|
||||
for (eph = ephemerons; eph; eph = next) {
|
||||
next = eph->next;
|
||||
if (is_marked(eph->key)) {
|
||||
gcMARK(eph->val);
|
||||
} else {
|
||||
eph->next = waiting;
|
||||
waiting = eph;
|
||||
}
|
||||
}
|
||||
ephemerons = waiting;
|
||||
}
|
||||
|
||||
static void zero_remaining_ephemerons()
|
||||
{
|
||||
GC_Ephemeron *eph;
|
||||
|
||||
/* After unordered finalization, any remaining ephemerons
|
||||
should be zeroed. */
|
||||
for (eph = ephemerons; eph; eph = eph->next) {
|
||||
eph->key = NULL;
|
||||
eph->val = NULL;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -429,6 +429,8 @@ scheme_make_exact_char_symbol
|
|||
scheme_symbol_name
|
||||
scheme_symbol_name_and_size
|
||||
scheme_symbol_val
|
||||
scheme_intern_exact_keyword
|
||||
scheme_intern_exact_char_keyword
|
||||
scheme_make_struct_values
|
||||
scheme_make_struct_names
|
||||
scheme_make_struct_type
|
||||
|
@ -466,6 +468,8 @@ scheme_box
|
|||
scheme_unbox
|
||||
scheme_set_box
|
||||
scheme_make_weak_box
|
||||
scheme_make_ephemeron
|
||||
scheme_ephemeron_value
|
||||
scheme_load
|
||||
scheme_load_extension
|
||||
scheme_register_extension_global
|
||||
|
|
|
@ -436,6 +436,8 @@ scheme_make_exact_char_symbol
|
|||
scheme_symbol_name
|
||||
scheme_symbol_name_and_size
|
||||
scheme_symbol_val
|
||||
scheme_intern_exact_keyword
|
||||
scheme_intern_exact_char_keyword
|
||||
scheme_make_struct_values
|
||||
scheme_make_struct_names
|
||||
scheme_make_struct_type
|
||||
|
@ -474,6 +476,8 @@ scheme_box
|
|||
scheme_unbox
|
||||
scheme_set_box
|
||||
scheme_make_weak_box
|
||||
scheme_make_ephemeron
|
||||
scheme_ephemeron_value
|
||||
scheme_load
|
||||
scheme_load_extension
|
||||
scheme_register_extension_global
|
||||
|
|
|
@ -421,6 +421,8 @@ EXPORTS
|
|||
scheme_symbol_name
|
||||
scheme_symbol_name_and_size
|
||||
scheme_symbol_val
|
||||
scheme_intern_exact_keyword
|
||||
scheme_intern_exact_char_keyword
|
||||
scheme_make_struct_values
|
||||
scheme_make_struct_names
|
||||
scheme_make_struct_type
|
||||
|
@ -458,6 +460,8 @@ EXPORTS
|
|||
scheme_unbox
|
||||
scheme_set_box
|
||||
scheme_make_weak_box
|
||||
scheme_make_ephemeron
|
||||
scheme_ephemeron_value
|
||||
scheme_load
|
||||
scheme_load_extension
|
||||
scheme_register_extension_global
|
||||
|
|
|
@ -386,6 +386,7 @@ typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Pr
|
|||
#define SCHEME_PATH_STRING_STR "path or string"
|
||||
|
||||
#define SCHEME_SYMBOLP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_symbol_type)
|
||||
#define SCHEME_KEYWORDP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_keyword_type)
|
||||
|
||||
#define SCHEME_STRSYMP(obj) (SCHEME_CHAR_STRINGP(obj) || SCHEME_SYMBOLP(obj))
|
||||
|
||||
|
@ -478,6 +479,8 @@ typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Pr
|
|||
#define SCHEME_PATH_LEN(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.tag_val)
|
||||
#define SCHEME_SYM_VAL(obj) (((Scheme_Symbol *)((Scheme_Simple_Object *)(obj)))->s)
|
||||
#define SCHEME_SYM_LEN(obj) (((Scheme_Symbol *)((Scheme_Simple_Object *)(obj)))->len)
|
||||
#define SCHEME_KEYWORD_VAL(obj) SCHEME_SYM_VAL(obj)
|
||||
#define SCHEME_KEYWORD_LEN(obj) SCHEME_SYM_LEN(obj)
|
||||
|
||||
#define SCHEME_SYMSTR_OFFSET(obj) ((unsigned long)SCHEME_SYM_VAL(obj)-(unsigned long)(obj))
|
||||
|
||||
|
@ -1546,6 +1549,8 @@ extern Scheme_Extension_Table *scheme_extension_table;
|
|||
#define SCHEME_SNF_PIPE_QUOTE 0x2
|
||||
#define SCHEME_SNF_NO_PIPE_QUOTE 0x4
|
||||
#define SCHEME_SNF_NEED_CASE 0x8
|
||||
#define SCHEME_SNF_KEYWORD 0x10
|
||||
#define SCHEME_SNF_NO_KEYWORDS 0x20
|
||||
|
||||
/* For use with scheme_make_struct_values et al.: */
|
||||
#define SCHEME_STRUCT_NO_TYPE 0x01
|
||||
|
|
|
@ -236,7 +236,7 @@ int MAIN(int argc, MAIN_char **MAIN_argv)
|
|||
|
||||
#if defined(MZ_PRECISE_GC)
|
||||
stack_start = (void *)&__gc_var_stack__;
|
||||
GC_init_type_tags(_scheme_last_type_, scheme_weak_box_type);
|
||||
GC_init_type_tags(_scheme_last_type_, scheme_weak_box_type, scheme_ephemeron_type);
|
||||
#endif
|
||||
|
||||
scheme_set_stack_base(stack_start, 1);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -787,6 +787,7 @@ void scheme_init_hash_key_procs(void)
|
|||
PROC(scheme_byte_string_type, hash_general);
|
||||
PROC(scheme_path_type, hash_general);
|
||||
PROC(scheme_symbol_type, hash_symbol);
|
||||
PROC(scheme_keyword_type, hash_symbol);
|
||||
PROC(scheme_null_type, hash_addr);
|
||||
PROC(scheme_pair_type, hash_general);
|
||||
PROC(scheme_wrap_chunk_type, hash_general);
|
||||
|
@ -816,6 +817,7 @@ void scheme_init_hash_key_procs(void)
|
|||
PROC(scheme_module_registry_type, hash_general);
|
||||
PROC(scheme_bucket_table_type, hash_general);
|
||||
PROC(scheme_weak_box_type, hash_general);
|
||||
PROC(scheme_ephemeron_type, hash_general);
|
||||
PROC(scheme_struct_type_type, hash_general);
|
||||
PROC(scheme_set_macro_type, hash_general);
|
||||
PROC(scheme_id_macro_type, hash_general);
|
||||
|
@ -1090,6 +1092,7 @@ long scheme_equal_hash_key(Scheme_Object *o)
|
|||
return k;
|
||||
}
|
||||
# ifndef MZ_PRECISE_GC
|
||||
case scheme_keyword_type:
|
||||
case scheme_symbol_type:
|
||||
{
|
||||
Scheme_Symbol *s = (Scheme_Symbol *)o;
|
||||
|
|
|
@ -108,6 +108,10 @@ static Scheme_Object *make_weak_box(int argc, Scheme_Object *argv[]);
|
|||
static Scheme_Object *weak_box_value(int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *weak_boxp(int argc, Scheme_Object *argv[]);
|
||||
|
||||
static Scheme_Object *make_ephemeron(int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *ephemeron_value(int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *ephemeronp(int argc, Scheme_Object *argv[]);
|
||||
|
||||
#define BOX "box"
|
||||
#define BOXP "box?"
|
||||
#define UNBOX "unbox"
|
||||
|
@ -503,6 +507,22 @@ scheme_init_list (Scheme_Env *env)
|
|||
1, 1, 1),
|
||||
env);
|
||||
|
||||
scheme_add_global_constant("make-ephemeron",
|
||||
scheme_make_prim_w_arity(make_ephemeron,
|
||||
"make-ephemeron",
|
||||
2, 2),
|
||||
env);
|
||||
scheme_add_global_constant("ephemeron-value",
|
||||
scheme_make_prim_w_arity(ephemeron_value,
|
||||
"ephemeron-value",
|
||||
1, 1),
|
||||
env);
|
||||
scheme_add_global_constant("ephemeron?",
|
||||
scheme_make_folding_prim(ephemeronp,
|
||||
"ephemeron?",
|
||||
1, 1, 1),
|
||||
env);
|
||||
|
||||
REGISTER_SO(weak_symbol);
|
||||
REGISTER_SO(equal_symbol);
|
||||
|
||||
|
@ -1698,3 +1718,183 @@ Scheme_Object * scheme_make_null (void)
|
|||
{
|
||||
return scheme_null;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
/* ephemerons */
|
||||
/************************************************************/
|
||||
|
||||
typedef struct Scheme_Ephemeron {
|
||||
Scheme_Object so;
|
||||
Scheme_Object *key, *val;
|
||||
struct Scheme_Ephemeron *next;
|
||||
} Scheme_Ephemeron;
|
||||
|
||||
#ifndef MZ_PRECISE_GC
|
||||
|
||||
static Scheme_Ephemeron *ephemerons, *done_ephemerons; /* not registered as a root! */
|
||||
|
||||
#ifdef USE_SENORA_GC
|
||||
# define GC_is_marked(p) GC_base(p)
|
||||
# define GC_did_mark_stack_overflow() 0
|
||||
#else
|
||||
extern MZ_DLLIMPORT int GC_is_marked(void *);
|
||||
extern MZ_DLLIMPORT int GC_did_mark_stack_overflow(void);
|
||||
#endif
|
||||
extern MZ_DLLIMPORT void GC_push_all_stack(void *, void *);
|
||||
extern MZ_DLLIMPORT void GC_flush_mark_stack(void);
|
||||
|
||||
#endif
|
||||
|
||||
Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val)
|
||||
{
|
||||
#ifdef MZ_PRECISE_GC
|
||||
return GC_malloc_ephemeron(key, val);
|
||||
#else
|
||||
Scheme_Ephemeron *e;
|
||||
|
||||
e = (Scheme_Ephemeron *)scheme_malloc_atomic(sizeof(Scheme_Ephemeron));
|
||||
e->so.type = scheme_ephemeron_type;
|
||||
e->next = ephemerons;
|
||||
ephemerons = e;
|
||||
e->key = key;
|
||||
e->val = val;
|
||||
|
||||
return (Scheme_Object *)e;
|
||||
#endif
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_ephemeron_value(Scheme_Object *o)
|
||||
{
|
||||
return ((Scheme_Ephemeron *)o)->val;
|
||||
}
|
||||
|
||||
#ifndef MZ_PRECISE_GC
|
||||
|
||||
static void set_ephemerons(Scheme_Ephemeron *ae, Scheme_Ephemeron *be, Scheme_Ephemeron *ce, Scheme_Ephemeron *de)
|
||||
{
|
||||
if (be) {
|
||||
Scheme_Ephemeron *e;
|
||||
for (e = be; e->next; e = e->next) { }
|
||||
be->next = ae;
|
||||
ae = be;
|
||||
}
|
||||
|
||||
if (ce)
|
||||
set_ephemerons(ae, ce, de, NULL);
|
||||
else if (de)
|
||||
set_ephemerons(ae, de, NULL, NULL);
|
||||
else
|
||||
ephemerons = ae;
|
||||
}
|
||||
|
||||
static int mark_ephemerons()
|
||||
{
|
||||
Scheme_Ephemeron *e, *ae, *be, *next;
|
||||
int did_one, mix, ever_done = 0;
|
||||
|
||||
mix = scheme_get_milliseconds();
|
||||
mix = mix >> 8;
|
||||
|
||||
do {
|
||||
did_one = 0;
|
||||
ae = be = NULL;
|
||||
|
||||
for (e = ephemerons; e; e = next) {
|
||||
next = e->next;
|
||||
|
||||
if (e->key) {
|
||||
if (!GC_is_marked(e)
|
||||
|| (!SCHEME_INTP(e->key) && !GC_is_marked(e->key))) {
|
||||
/* No reason to mark, yet. Randomly put this one back
|
||||
into one of the keep lists: */
|
||||
if (mix & 0x1) {
|
||||
e->next = ae;
|
||||
ae = e;
|
||||
} else {
|
||||
e->next = be;
|
||||
be = e;
|
||||
}
|
||||
mix += ((long)e >> 5) + ((long)e >> 2);
|
||||
} else {
|
||||
did_one = 1;
|
||||
ever_done = 1;
|
||||
GC_push_all_stack(&e->val, &e->val + 1);
|
||||
if (GC_did_mark_stack_overflow()) {
|
||||
/* printf("mark stack overflow\n"); */
|
||||
set_ephemerons(ae, be, done_ephemerons, e);
|
||||
return 0;
|
||||
} else {
|
||||
GC_flush_mark_stack();
|
||||
if (GC_did_mark_stack_overflow()) {
|
||||
/* printf("mark stack overflow (late)\n"); */
|
||||
set_ephemerons(ae, be, done_ephemerons, e);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/* Done with this one: */
|
||||
e->next = done_ephemerons;
|
||||
done_ephemerons = e;
|
||||
}
|
||||
} else {
|
||||
/* Ephemeron previously done, so drop it. This case
|
||||
shouldn't happen, because it should have been
|
||||
dropped earlier. */
|
||||
}
|
||||
}
|
||||
|
||||
/* Combine ae & be back into ephemerons list: */
|
||||
set_ephemerons(ae, be, NULL, NULL);
|
||||
} while (did_one);
|
||||
|
||||
return ever_done;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static Scheme_Object *make_ephemeron(int argc, Scheme_Object **argv)
|
||||
{
|
||||
return scheme_make_ephemeron(argv[0], argv[1]);
|
||||
}
|
||||
|
||||
static Scheme_Object *ephemeron_value(int argc, Scheme_Object **argv)
|
||||
{
|
||||
Scheme_Object *v;
|
||||
|
||||
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_ephemeron_type))
|
||||
scheme_wrong_type("ephemeron-value", "ephemeron", 0, argc, argv);
|
||||
v = scheme_ephemeron_value(argv[0]);
|
||||
|
||||
if (!v)
|
||||
return scheme_false;
|
||||
else
|
||||
return v;
|
||||
}
|
||||
|
||||
static Scheme_Object *ephemeronp(int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return (SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_ephemeron_type)
|
||||
? scheme_true
|
||||
: scheme_false);
|
||||
}
|
||||
|
||||
#ifndef MZ_PRECISE_GC
|
||||
|
||||
int scheme_propagate_ephemeron_marks()
|
||||
{
|
||||
return mark_ephemerons();
|
||||
}
|
||||
|
||||
void scheme_clear_ephemerons()
|
||||
{
|
||||
Scheme_Ephemeron *e;
|
||||
|
||||
for (e = ephemerons; e; e = e->next) {
|
||||
e->val = NULL;
|
||||
e->key = NULL;
|
||||
}
|
||||
|
||||
ephemerons = done_ephemerons;
|
||||
done_ephemerons = NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1240,10 +1240,14 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht,
|
|||
}
|
||||
}
|
||||
|
||||
if (SCHEME_SYMBOLP(obj))
|
||||
if (SCHEME_SYMBOLP(obj)
|
||||
|| SCHEME_KEYWORDP(obj))
|
||||
{
|
||||
int l;
|
||||
Scheme_Object *idx;
|
||||
int is_kw;
|
||||
|
||||
is_kw = SCHEME_KEYWORDP(obj);
|
||||
|
||||
if (compact)
|
||||
idx = scheme_hash_get(symtab, obj);
|
||||
|
@ -1259,12 +1263,14 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht,
|
|||
|
||||
weird = SCHEME_SYM_WEIRDP(obj);
|
||||
l = SCHEME_SYM_LEN(obj);
|
||||
if (!weird && (l < CPT_RANGE(SMALL_SYMBOL))) {
|
||||
if (!weird && !is_kw && (l < CPT_RANGE(SMALL_SYMBOL))) {
|
||||
unsigned char s[1];
|
||||
s[0] = l + CPT_SMALL_SYMBOL_START;
|
||||
print_this_string(pp, (char *)s, 0, 1);
|
||||
} else {
|
||||
print_compact(pp, (weird ? CPT_WEIRD_SYMBOL : CPT_SYMBOL));
|
||||
print_compact(pp, (is_kw
|
||||
? CPT_KEYWORD
|
||||
: (weird ? CPT_WEIRD_SYMBOL : CPT_SYMBOL)));
|
||||
if (weird) {
|
||||
print_compact_number(pp, SCHEME_SYM_UNINTERNEDP(obj) ? 1 : 0);
|
||||
}
|
||||
|
@ -1283,7 +1289,10 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht,
|
|||
} else if (notdisplay) {
|
||||
if (pp->honu_mode) {
|
||||
/* Honu symbol... */
|
||||
print_utf8_string(pp, "sym(", 0, 4);
|
||||
if (is_kw)
|
||||
print_utf8_string(pp, "key(", 0, 4);
|
||||
else
|
||||
print_utf8_string(pp, "sym(", 0, 4);
|
||||
{
|
||||
int i;
|
||||
/* Check for fast case: */
|
||||
|
@ -1308,16 +1317,23 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht,
|
|||
} else {
|
||||
const char *s;
|
||||
|
||||
if (is_kw)
|
||||
print_utf8_string(pp, "#:", 0, 2);
|
||||
s = scheme_symbol_name_and_size(obj, (unsigned int *)&l,
|
||||
((pp->can_read_pipe_quote
|
||||
? SCHEME_SNF_PIPE_QUOTE
|
||||
: SCHEME_SNF_NO_PIPE_QUOTE)
|
||||
| (pp->case_sens
|
||||
? 0
|
||||
: SCHEME_SNF_NEED_CASE)));
|
||||
: SCHEME_SNF_NEED_CASE)
|
||||
| (is_kw
|
||||
? SCHEME_SNF_KEYWORD
|
||||
: 0)));
|
||||
print_utf8_string(pp, s, 0, l);
|
||||
}
|
||||
} else {
|
||||
if (is_kw)
|
||||
print_utf8_string(pp, "#:", 0, 2);
|
||||
print_utf8_string(pp, (char *)obj, ((char *)(SCHEME_SYM_VAL(obj))) - ((char *)obj),
|
||||
SCHEME_SYM_LEN(obj));
|
||||
}
|
||||
|
|
|
@ -174,6 +174,13 @@ static Scheme_Object *read_symbol(int init_ch,
|
|||
Scheme_Object *indentation,
|
||||
ReadParams *params,
|
||||
Readtable *table);
|
||||
static Scheme_Object *read_keyword(int init_ch,
|
||||
Scheme_Object *port, Scheme_Object *stxsrc,
|
||||
long line, long col, long pos,
|
||||
Scheme_Hash_Table **ht,
|
||||
Scheme_Object *indentation,
|
||||
ReadParams *params,
|
||||
Readtable *table);
|
||||
static Scheme_Object *read_character(Scheme_Object *port, Scheme_Object *stcsrc,
|
||||
long line, long col, long pos,
|
||||
Scheme_Hash_Table **ht,
|
||||
|
@ -985,6 +992,11 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
|
|||
return read_symbol('#', port, stxsrc, line, col, pos, ht, indentation, params, table);
|
||||
}
|
||||
break;
|
||||
case ':':
|
||||
if (!params->honu_mode) {
|
||||
return read_keyword(-1, port, stxsrc, line, col, pos, ht, indentation, params, table);
|
||||
}
|
||||
break;
|
||||
case '(':
|
||||
if (!params->honu_mode) {
|
||||
return read_vector(port, stxsrc, line, col, pos, ')', -1, NULL, ht, indentation, params);
|
||||
|
@ -2732,7 +2744,7 @@ read_number_or_symbol(int init_ch, Scheme_Object *port,
|
|||
Scheme_Object *stxsrc, long line, long col, long pos,
|
||||
int is_float, int is_not_float,
|
||||
int radix, int radix_set,
|
||||
int is_symbol, int pipe_quote,
|
||||
int is_symbol, int is_kw, int pipe_quote,
|
||||
Scheme_Hash_Table **ht,
|
||||
Scheme_Object *indentation, ReadParams *params, Readtable *table)
|
||||
{
|
||||
|
@ -2825,12 +2837,12 @@ read_number_or_symbol(int init_ch, Scheme_Object *port,
|
|||
ch = scheme_getc_special_ok(port);
|
||||
if (ch == EOF) {
|
||||
scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), EOF, indentation,
|
||||
"read: EOF following `%c' in symbol", esc_ch);
|
||||
"read: EOF following `%c' in %s", esc_ch, is_kw ? "keyword" : "symbol");
|
||||
return NULL;
|
||||
} else if (ch == SCHEME_SPECIAL) {
|
||||
scheme_get_ready_read_special(port, stxsrc, ht);
|
||||
scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), SCHEME_SPECIAL, indentation,
|
||||
"read: non-character following `%c' in symbol", esc_ch);
|
||||
"read: non-character following `%c' in %s", esc_ch, is_kw ? "keyword" : "symbol");
|
||||
return NULL;
|
||||
}
|
||||
quoted = 1;
|
||||
|
@ -2897,7 +2909,8 @@ read_number_or_symbol(int init_ch, Scheme_Object *port,
|
|||
if (running_quote && (ch == SCHEME_SPECIAL)) {
|
||||
scheme_get_ready_read_special(port, stxsrc, ht);
|
||||
scheme_read_err(port, stxsrc, line, col, pos, SPAN(port, pos), SCHEME_SPECIAL, indentation,
|
||||
"read: non-character following `%c' in symbol", running_quote_ch);
|
||||
"read: non-character following `%c' in %s", running_quote_ch,
|
||||
is_kw ? "keyword" : "symbol");
|
||||
}
|
||||
|
||||
if (ungetc_ok)
|
||||
|
@ -2995,7 +3008,10 @@ read_number_or_symbol(int init_ch, Scheme_Object *port,
|
|||
"read: bad number: %5", buf);
|
||||
return NULL;
|
||||
}
|
||||
o = scheme_intern_exact_char_symbol(buf, i);
|
||||
if (is_kw) {
|
||||
o = scheme_intern_exact_char_keyword(buf, i);
|
||||
} else
|
||||
o = scheme_intern_exact_char_symbol(buf, i);
|
||||
}
|
||||
|
||||
if (stxsrc)
|
||||
|
@ -3016,7 +3032,7 @@ read_number(int init_ch,
|
|||
return read_number_or_symbol(init_ch,
|
||||
port, stxsrc, line, col, pos,
|
||||
is_float, is_not_float,
|
||||
radix, radix_set, 0,
|
||||
radix, radix_set, 0, 0,
|
||||
params->can_read_pipe_quote,
|
||||
ht, indentation, params, table);
|
||||
}
|
||||
|
@ -3030,7 +3046,21 @@ read_symbol(int init_ch,
|
|||
{
|
||||
return read_number_or_symbol(init_ch,
|
||||
port, stxsrc, line, col, pos,
|
||||
0, 0, 10, 0, 1,
|
||||
0, 0, 10, 0, 1, 0,
|
||||
params->can_read_pipe_quote,
|
||||
ht, indentation, params, table);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
read_keyword(int init_ch,
|
||||
Scheme_Object *port,
|
||||
Scheme_Object *stxsrc, long line, long col, long pos,
|
||||
Scheme_Hash_Table **ht,
|
||||
Scheme_Object *indentation, ReadParams *params, Readtable *table)
|
||||
{
|
||||
return read_number_or_symbol(init_ch,
|
||||
port, stxsrc, line, col, pos,
|
||||
0, 0, 10, 0, 1, 1,
|
||||
params->can_read_pipe_quote,
|
||||
ht, indentation, params, table);
|
||||
}
|
||||
|
@ -3791,6 +3821,16 @@ static Scheme_Object *read_compact(CPort *port, int use_stack)
|
|||
a particular compiled expression. */
|
||||
}
|
||||
break;
|
||||
case CPT_KEYWORD:
|
||||
l = read_compact_number(port);
|
||||
RANGE_CHECK_GETS(l);
|
||||
s = read_compact_chars(port, buffer, BLK_BUF_SIZE, l);
|
||||
v = scheme_intern_exact_keyword(s, l);
|
||||
|
||||
l = read_compact_number(port);
|
||||
RANGE_CHECK(l, < port->symtab_size);
|
||||
port->symtab[l] = v;
|
||||
break;
|
||||
case CPT_BYTE_STRING:
|
||||
l = read_compact_number(port);
|
||||
RANGE_CHECK_GETS(l);
|
||||
|
|
|
@ -931,6 +931,7 @@ static void count_managed(Scheme_Custodian *m, int *c, int *a, int *u, int *t,
|
|||
|
||||
#if MZ_PRECISE_GC_TRACE
|
||||
extern int GC_show_trace;
|
||||
extern int GC_show_finals;
|
||||
extern int GC_trace_for_tag;
|
||||
extern int GC_path_length_limit;
|
||||
extern void (*GC_for_each_found)(void *p);
|
||||
|
@ -1326,6 +1327,7 @@ Scheme_Object *scheme_dump_gc_stats(int c, Scheme_Object *p[])
|
|||
# if MZ_PRECISE_GC_TRACE
|
||||
GC_trace_for_tag = -1;
|
||||
GC_show_trace = 0;
|
||||
GC_show_finals = 0;
|
||||
GC_for_each_found = NULL;
|
||||
cons_accum_result = scheme_void;
|
||||
if (c && SCHEME_SYMBOLP(p[0])) {
|
||||
|
@ -1347,6 +1349,9 @@ Scheme_Object *scheme_dump_gc_stats(int c, Scheme_Object *p[])
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!strcmp("fnl", s))
|
||||
GC_show_finals = 1;
|
||||
} else if (SCHEME_INTP(p[0])) {
|
||||
GC_trace_for_tag = SCHEME_INT_VAL(p[0]);
|
||||
GC_show_trace = 1;
|
||||
|
@ -1435,6 +1440,7 @@ Scheme_Object *scheme_dump_gc_stats(int c, Scheme_Object *p[])
|
|||
scheme_console_printf("Begin Help\n");
|
||||
scheme_console_printf(" (dump-memory-stats sym) - prints paths to instances of type named by sym.\n");
|
||||
scheme_console_printf(" Example: (dump-memory-stats '<pair>)\n");
|
||||
scheme_console_printf(" (dump-memory-stats 'fnl) - prints not-yet-finalized objects.\n");
|
||||
scheme_console_printf(" (dump-memory-stats num) - prints paths to objects with tag num.\n");
|
||||
scheme_console_printf(" (dump-memory-stats -num) - prints paths to objects of size num.\n");
|
||||
scheme_console_printf(" (dump-memory-stats sym/num len) - limits path to size len.\n");
|
||||
|
|
|
@ -4,6 +4,7 @@ enum {
|
|||
CPT_SYMBOL,
|
||||
CPT_SYMREF,
|
||||
CPT_WEIRD_SYMBOL,
|
||||
CPT_KEYWORD,
|
||||
CPT_BYTE_STRING,
|
||||
CPT_CHAR_STRING,
|
||||
CPT_CHAR,
|
||||
|
@ -33,7 +34,7 @@ enum {
|
|||
_CPT_COUNT_
|
||||
};
|
||||
|
||||
#define CPT_SMALL_NUMBER_START 30
|
||||
#define CPT_SMALL_NUMBER_START 31
|
||||
#define CPT_SMALL_NUMBER_END 45
|
||||
|
||||
#define CPT_SMALL_SYMBOL_START 45
|
||||
|
|
|
@ -846,6 +846,9 @@ MZ_EXTERN const char *scheme_symbol_name(Scheme_Object *sym);
|
|||
MZ_EXTERN const char *scheme_symbol_name_and_size(Scheme_Object *sym, unsigned int *l, int flags);
|
||||
MZ_EXTERN char *scheme_symbol_val(Scheme_Object *sym);
|
||||
|
||||
MZ_EXTERN Scheme_Object *scheme_intern_exact_keyword(const char *name, unsigned int len);
|
||||
MZ_EXTERN Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, unsigned int len);
|
||||
|
||||
/*========================================================================*/
|
||||
/* structs */
|
||||
/*========================================================================*/
|
||||
|
@ -930,6 +933,9 @@ MZ_EXTERN void scheme_set_box(Scheme_Object *b, Scheme_Object *v);
|
|||
|
||||
MZ_EXTERN Scheme_Object *scheme_make_weak_box(Scheme_Object *v);
|
||||
|
||||
MZ_EXTERN Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val);
|
||||
MZ_EXTERN Scheme_Object *scheme_ephemeron_value(Scheme_Object *o);
|
||||
|
||||
MZ_EXTERN Scheme_Object *scheme_load(const char *file);
|
||||
MZ_EXTERN Scheme_Object *scheme_load_extension(const char *filename, Scheme_Env *env);
|
||||
MZ_EXTERN void scheme_register_extension_global(void *ptr, long size);
|
||||
|
|
|
@ -696,6 +696,8 @@ Scheme_Object *(*scheme_make_exact_char_symbol)(const mzchar *name, unsigned int
|
|||
const char *(*scheme_symbol_name)(Scheme_Object *sym);
|
||||
const char *(*scheme_symbol_name_and_size)(Scheme_Object *sym, unsigned int *l, int flags);
|
||||
char *(*scheme_symbol_val)(Scheme_Object *sym);
|
||||
Scheme_Object *(*scheme_intern_exact_keyword)(const char *name, unsigned int len);
|
||||
Scheme_Object *(*scheme_intern_exact_char_keyword)(const mzchar *name, unsigned int len);
|
||||
/*========================================================================*/
|
||||
/* structs */
|
||||
/*========================================================================*/
|
||||
|
@ -762,6 +764,8 @@ Scheme_Object *(*scheme_box)(Scheme_Object *v);
|
|||
Scheme_Object *(*scheme_unbox)(Scheme_Object *obj);
|
||||
void (*scheme_set_box)(Scheme_Object *b, Scheme_Object *v);
|
||||
Scheme_Object *(*scheme_make_weak_box)(Scheme_Object *v);
|
||||
Scheme_Object *(*scheme_make_ephemeron)(Scheme_Object *key, Scheme_Object *val);
|
||||
Scheme_Object *(*scheme_ephemeron_value)(Scheme_Object *o);
|
||||
Scheme_Object *(*scheme_load)(const char *file);
|
||||
Scheme_Object *(*scheme_load_extension)(const char *filename, Scheme_Env *env);
|
||||
void (*scheme_register_extension_global)(void *ptr, long size);
|
||||
|
|
|
@ -478,6 +478,8 @@
|
|||
scheme_extension_table->scheme_symbol_name = scheme_symbol_name;
|
||||
scheme_extension_table->scheme_symbol_name_and_size = scheme_symbol_name_and_size;
|
||||
scheme_extension_table->scheme_symbol_val = scheme_symbol_val;
|
||||
scheme_extension_table->scheme_intern_exact_keyword = scheme_intern_exact_keyword;
|
||||
scheme_extension_table->scheme_intern_exact_char_keyword = scheme_intern_exact_char_keyword;
|
||||
scheme_extension_table->scheme_make_struct_values = scheme_make_struct_values;
|
||||
scheme_extension_table->scheme_make_struct_names = scheme_make_struct_names;
|
||||
scheme_extension_table->scheme_make_struct_type = scheme_make_struct_type;
|
||||
|
@ -518,6 +520,8 @@
|
|||
scheme_extension_table->scheme_unbox = scheme_unbox;
|
||||
scheme_extension_table->scheme_set_box = scheme_set_box;
|
||||
scheme_extension_table->scheme_make_weak_box = scheme_make_weak_box;
|
||||
scheme_extension_table->scheme_make_ephemeron = scheme_make_ephemeron;
|
||||
scheme_extension_table->scheme_ephemeron_value = scheme_ephemeron_value;
|
||||
scheme_extension_table->scheme_load = scheme_load;
|
||||
scheme_extension_table->scheme_load_extension = scheme_load_extension;
|
||||
scheme_extension_table->scheme_register_extension_global = scheme_register_extension_global;
|
||||
|
|
|
@ -478,6 +478,8 @@
|
|||
#define scheme_symbol_name (scheme_extension_table->scheme_symbol_name)
|
||||
#define scheme_symbol_name_and_size (scheme_extension_table->scheme_symbol_name_and_size)
|
||||
#define scheme_symbol_val (scheme_extension_table->scheme_symbol_val)
|
||||
#define scheme_intern_exact_keyword (scheme_extension_table->scheme_intern_exact_keyword)
|
||||
#define scheme_intern_exact_char_keyword (scheme_extension_table->scheme_intern_exact_char_keyword)
|
||||
#define scheme_make_struct_values (scheme_extension_table->scheme_make_struct_values)
|
||||
#define scheme_make_struct_names (scheme_extension_table->scheme_make_struct_names)
|
||||
#define scheme_make_struct_type (scheme_extension_table->scheme_make_struct_type)
|
||||
|
@ -518,6 +520,8 @@
|
|||
#define scheme_unbox (scheme_extension_table->scheme_unbox)
|
||||
#define scheme_set_box (scheme_extension_table->scheme_set_box)
|
||||
#define scheme_make_weak_box (scheme_extension_table->scheme_make_weak_box)
|
||||
#define scheme_make_ephemeron (scheme_extension_table->scheme_make_ephemeron)
|
||||
#define scheme_ephemeron_value (scheme_extension_table->scheme_ephemeron_value)
|
||||
#define scheme_load (scheme_extension_table->scheme_load)
|
||||
#define scheme_load_extension (scheme_extension_table->scheme_load_extension)
|
||||
#define scheme_register_extension_global (scheme_extension_table->scheme_register_extension_global)
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
EXPECTED_PRIM_COUNT to the new value, and then USE_COMPILED_STARTUP
|
||||
can be set to 1 again. */
|
||||
|
||||
#define USE_COMPILED_STARTUP 1
|
||||
#define USE_COMPILED_STARTUP 0
|
||||
|
||||
#define EXPECTED_PRIM_COUNT 838
|
||||
#define EXPECTED_PRIM_COUNT 844
|
||||
|
||||
#ifdef MZSCHEME_SOMETHING_OMITTED
|
||||
# undef USE_COMPILED_STARTUP
|
||||
|
|
|
@ -105,6 +105,9 @@ void scheme_reset_finalizations(void);
|
|||
|
||||
extern unsigned long scheme_get_stack_base();
|
||||
|
||||
int scheme_propagate_ephemeron_marks();
|
||||
void scheme_clear_ephemerons();
|
||||
|
||||
#ifndef MZ_XFORM
|
||||
# define HIDE_FROM_XFORM(x) x
|
||||
#endif
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR 299
|
||||
#define MZSCHEME_VERSION_MINOR 402
|
||||
#define MZSCHEME_VERSION_MINOR 403
|
||||
|
||||
#define MZSCHEME_VERSION "299.402" _MZ_SPECIAL_TAG
|
||||
#define MZSCHEME_VERSION "299.403" _MZ_SPECIAL_TAG
|
||||
|
|
|
@ -141,7 +141,9 @@ static void init_push_copied_stacks(void)
|
|||
|
||||
static void update_push_copied_stacks(void)
|
||||
{
|
||||
push_copied_stacks(0);
|
||||
do {
|
||||
push_copied_stacks(0);
|
||||
} while (scheme_propagate_ephemeron_marks());
|
||||
}
|
||||
|
||||
void scheme_init_setjumpup(void)
|
||||
|
|
|
@ -61,150 +61,152 @@ enum {
|
|||
scheme_byte_string_type, /* 43 */
|
||||
scheme_path_type, /* 44 */
|
||||
scheme_symbol_type, /* 45 */
|
||||
scheme_null_type, /* 46 */
|
||||
scheme_pair_type, /* 47 */
|
||||
scheme_vector_type, /* 48 */
|
||||
scheme_inspector_type, /* 49 */
|
||||
scheme_input_port_type, /* 50 */
|
||||
scheme_output_port_type, /* 51 */
|
||||
scheme_eof_type, /* 52 */
|
||||
scheme_true_type, /* 53 */
|
||||
scheme_false_type, /* 54 */
|
||||
scheme_void_type, /* 55 */
|
||||
scheme_syntax_compiler_type, /* 56 */
|
||||
scheme_macro_type, /* 57 */
|
||||
scheme_box_type, /* 58 */
|
||||
scheme_thread_type, /* 59 */
|
||||
scheme_stx_offset_type, /* 60 */
|
||||
scheme_cont_mark_set_type, /* 61 */
|
||||
scheme_sema_type, /* 62 */
|
||||
scheme_hash_table_type, /* 63 */
|
||||
scheme_cpointer_type, /* 64 */
|
||||
scheme_weak_box_type, /* 65 */
|
||||
scheme_struct_type_type, /* 66 */
|
||||
scheme_module_index_type, /* 67 */
|
||||
scheme_set_macro_type, /* 68 */
|
||||
scheme_listener_type, /* 69 */
|
||||
scheme_namespace_type, /* 70 */
|
||||
scheme_config_type, /* 71 */
|
||||
scheme_stx_type, /* 72 */
|
||||
scheme_will_executor_type, /* 73 */
|
||||
scheme_custodian_type, /* 74 */
|
||||
scheme_random_state_type, /* 75 */
|
||||
scheme_regexp_type, /* 76 */
|
||||
scheme_bucket_type, /* 77 */
|
||||
scheme_bucket_table_type, /* 78 */
|
||||
scheme_subprocess_type, /* 79 */
|
||||
scheme_compilation_top_type, /* 80 */
|
||||
scheme_wrap_chunk_type, /* 81 */
|
||||
scheme_eval_waiting_type, /* 82 */
|
||||
scheme_tail_call_waiting_type, /* 83 */
|
||||
scheme_undefined_type, /* 84 */
|
||||
scheme_struct_property_type, /* 85 */
|
||||
scheme_multiple_values_type, /* 86 */
|
||||
scheme_placeholder_type, /* 87 */
|
||||
scheme_case_lambda_sequence_type, /* 88 */
|
||||
scheme_begin0_sequence_type, /* 89 */
|
||||
scheme_rename_table_type, /* 90 */
|
||||
scheme_module_type, /* 91 */
|
||||
scheme_svector_type, /* 92 */
|
||||
scheme_lazy_macro_type, /* 93 */
|
||||
scheme_resolve_prefix_type, /* 94 */
|
||||
scheme_security_guard_type, /* 95 */
|
||||
scheme_indent_type, /* 96 */
|
||||
scheme_udp_type, /* 97 */
|
||||
scheme_udp_evt_type, /* 98 */
|
||||
scheme_tcp_accept_evt_type, /* 99 */
|
||||
scheme_id_macro_type, /* 100 */
|
||||
scheme_evt_set_type, /* 101 */
|
||||
scheme_wrap_evt_type, /* 102 */
|
||||
scheme_handle_evt_type, /* 103 */
|
||||
scheme_nack_guard_evt_type, /* 104 */
|
||||
scheme_semaphore_repost_type, /* 105 */
|
||||
scheme_channel_type, /* 106 */
|
||||
scheme_channel_put_type, /* 107 */
|
||||
scheme_thread_resume_type, /* 108 */
|
||||
scheme_thread_suspend_type, /* 109 */
|
||||
scheme_thread_dead_type, /* 110 */
|
||||
scheme_poll_evt_type, /* 111 */
|
||||
scheme_nack_evt_type, /* 112 */
|
||||
scheme_module_registry_type, /* 113 */
|
||||
scheme_thread_set_type, /* 114 */
|
||||
scheme_string_converter_type, /* 115 */
|
||||
scheme_alarm_type, /* 116 */
|
||||
scheme_thread_cell_type, /* 117 */
|
||||
scheme_channel_syncer_type, /* 118 */
|
||||
scheme_special_comment_type, /* 119 */
|
||||
scheme_write_evt_type, /* 120 */
|
||||
scheme_always_evt_type, /* 121 */
|
||||
scheme_never_evt_type, /* 122 */
|
||||
scheme_progress_evt_type, /* 123 */
|
||||
scheme_certifications_type, /* 124 */
|
||||
scheme_already_comp_type, /* 125 */
|
||||
scheme_readtable_type, /* 126 */
|
||||
scheme_intdef_context_type, /* 127 */
|
||||
scheme_lexical_rib_type, /* 128 */
|
||||
scheme_thread_cell_values_type, /* 129 */
|
||||
scheme_keyword_type, /* 46 */
|
||||
scheme_null_type, /* 47 */
|
||||
scheme_pair_type, /* 48 */
|
||||
scheme_vector_type, /* 49 */
|
||||
scheme_inspector_type, /* 50 */
|
||||
scheme_input_port_type, /* 51 */
|
||||
scheme_output_port_type, /* 52 */
|
||||
scheme_eof_type, /* 53 */
|
||||
scheme_true_type, /* 54 */
|
||||
scheme_false_type, /* 55 */
|
||||
scheme_void_type, /* 56 */
|
||||
scheme_syntax_compiler_type, /* 57 */
|
||||
scheme_macro_type, /* 58 */
|
||||
scheme_box_type, /* 59 */
|
||||
scheme_thread_type, /* 60 */
|
||||
scheme_stx_offset_type, /* 61 */
|
||||
scheme_cont_mark_set_type, /* 62 */
|
||||
scheme_sema_type, /* 63 */
|
||||
scheme_hash_table_type, /* 64 */
|
||||
scheme_cpointer_type, /* 65 */
|
||||
scheme_weak_box_type, /* 66 */
|
||||
scheme_ephemeron_type, /* 67 */
|
||||
scheme_struct_type_type, /* 68 */
|
||||
scheme_module_index_type, /* 69 */
|
||||
scheme_set_macro_type, /* 70 */
|
||||
scheme_listener_type, /* 71 */
|
||||
scheme_namespace_type, /* 72 */
|
||||
scheme_config_type, /* 73 */
|
||||
scheme_stx_type, /* 74 */
|
||||
scheme_will_executor_type, /* 75 */
|
||||
scheme_custodian_type, /* 76 */
|
||||
scheme_random_state_type, /* 77 */
|
||||
scheme_regexp_type, /* 78 */
|
||||
scheme_bucket_type, /* 79 */
|
||||
scheme_bucket_table_type, /* 80 */
|
||||
scheme_subprocess_type, /* 81 */
|
||||
scheme_compilation_top_type, /* 82 */
|
||||
scheme_wrap_chunk_type, /* 83 */
|
||||
scheme_eval_waiting_type, /* 84 */
|
||||
scheme_tail_call_waiting_type, /* 85 */
|
||||
scheme_undefined_type, /* 86 */
|
||||
scheme_struct_property_type, /* 87 */
|
||||
scheme_multiple_values_type, /* 88 */
|
||||
scheme_placeholder_type, /* 89 */
|
||||
scheme_case_lambda_sequence_type, /* 90 */
|
||||
scheme_begin0_sequence_type, /* 91 */
|
||||
scheme_rename_table_type, /* 92 */
|
||||
scheme_module_type, /* 93 */
|
||||
scheme_svector_type, /* 94 */
|
||||
scheme_lazy_macro_type, /* 95 */
|
||||
scheme_resolve_prefix_type, /* 96 */
|
||||
scheme_security_guard_type, /* 97 */
|
||||
scheme_indent_type, /* 98 */
|
||||
scheme_udp_type, /* 99 */
|
||||
scheme_udp_evt_type, /* 100 */
|
||||
scheme_tcp_accept_evt_type, /* 101 */
|
||||
scheme_id_macro_type, /* 102 */
|
||||
scheme_evt_set_type, /* 103 */
|
||||
scheme_wrap_evt_type, /* 104 */
|
||||
scheme_handle_evt_type, /* 105 */
|
||||
scheme_nack_guard_evt_type, /* 106 */
|
||||
scheme_semaphore_repost_type, /* 107 */
|
||||
scheme_channel_type, /* 108 */
|
||||
scheme_channel_put_type, /* 109 */
|
||||
scheme_thread_resume_type, /* 110 */
|
||||
scheme_thread_suspend_type, /* 111 */
|
||||
scheme_thread_dead_type, /* 112 */
|
||||
scheme_poll_evt_type, /* 113 */
|
||||
scheme_nack_evt_type, /* 114 */
|
||||
scheme_module_registry_type, /* 115 */
|
||||
scheme_thread_set_type, /* 116 */
|
||||
scheme_string_converter_type, /* 117 */
|
||||
scheme_alarm_type, /* 118 */
|
||||
scheme_thread_cell_type, /* 119 */
|
||||
scheme_channel_syncer_type, /* 120 */
|
||||
scheme_special_comment_type, /* 121 */
|
||||
scheme_write_evt_type, /* 122 */
|
||||
scheme_always_evt_type, /* 123 */
|
||||
scheme_never_evt_type, /* 124 */
|
||||
scheme_progress_evt_type, /* 125 */
|
||||
scheme_certifications_type, /* 126 */
|
||||
scheme_already_comp_type, /* 127 */
|
||||
scheme_readtable_type, /* 128 */
|
||||
scheme_intdef_context_type, /* 129 */
|
||||
scheme_lexical_rib_type, /* 130 */
|
||||
scheme_thread_cell_values_type, /* 131 */
|
||||
|
||||
#ifdef MZTAG_REQUIRED
|
||||
_scheme_last_normal_type_, /* 130 */
|
||||
_scheme_last_normal_type_, /* 132 */
|
||||
|
||||
scheme_rt_comp_env, /* 131 */
|
||||
scheme_rt_constant_binding, /* 132 */
|
||||
scheme_rt_resolve_info, /* 133 */
|
||||
scheme_rt_compile_info, /* 134 */
|
||||
scheme_rt_cont_mark, /* 135 */
|
||||
scheme_rt_saved_stack, /* 136 */
|
||||
scheme_rt_reply_item, /* 137 */
|
||||
scheme_rt_closure_info, /* 138 */
|
||||
scheme_rt_overflow, /* 139 */
|
||||
scheme_rt_dyn_wind_cell, /* 140 */
|
||||
scheme_rt_cont_mark_chain, /* 141 */
|
||||
scheme_rt_dyn_wind_info, /* 142 */
|
||||
scheme_rt_dyn_wind, /* 143 */
|
||||
scheme_rt_dup_check, /* 144 */
|
||||
scheme_rt_thread_memory, /* 145 */
|
||||
scheme_rt_input_file, /* 146 */
|
||||
scheme_rt_input_fd, /* 147 */
|
||||
scheme_rt_oskit_console_input, /* 148 */
|
||||
scheme_rt_tested_input_file, /* 149 */
|
||||
scheme_rt_tested_output_file, /* 150 */
|
||||
scheme_rt_indexed_string, /* 151 */
|
||||
scheme_rt_output_file, /* 152 */
|
||||
scheme_rt_load_handler_data, /* 153 */
|
||||
scheme_rt_pipe, /* 154 */
|
||||
scheme_rt_beos_process, /* 155 */
|
||||
scheme_rt_system_child, /* 156 */
|
||||
scheme_rt_tcp, /* 157 */
|
||||
scheme_rt_write_data, /* 158 */
|
||||
scheme_rt_tcp_select_info, /* 159 */
|
||||
scheme_rt_namespace_option, /* 160 */
|
||||
scheme_rt_param_data, /* 161 */
|
||||
scheme_rt_will, /* 162 */
|
||||
scheme_rt_will_registration, /* 163 */
|
||||
scheme_rt_struct_proc_info, /* 164 */
|
||||
scheme_rt_linker_name, /* 165 */
|
||||
scheme_rt_param_map, /* 166 */
|
||||
scheme_rt_finalization, /* 167 */
|
||||
scheme_rt_finalizations, /* 168 */
|
||||
scheme_rt_cpp_object, /* 169 */
|
||||
scheme_rt_cpp_array_object, /* 170 */
|
||||
scheme_rt_stack_object, /* 171 */
|
||||
scheme_rt_preallocated_object, /* 172 */
|
||||
scheme_thread_hop_type, /* 173 */
|
||||
scheme_rt_srcloc, /* 174 */
|
||||
scheme_rt_evt, /* 175 */
|
||||
scheme_rt_syncing, /* 176 */
|
||||
scheme_rt_comp_prefix, /* 177 */
|
||||
scheme_rt_user_input, /* 178 */
|
||||
scheme_rt_user_output, /* 179 */
|
||||
scheme_rt_compact_port, /* 180 */
|
||||
scheme_rt_read_special_dw, /* 181 */
|
||||
scheme_rt_regwork, /* 182 */
|
||||
scheme_rt_buf_holder, /* 183 */
|
||||
scheme_rt_parameterization, /* 184 */
|
||||
scheme_rt_print_params, /* 185 */
|
||||
scheme_rt_read_params, /* 186 */
|
||||
scheme_rt_comp_env, /* 133 */
|
||||
scheme_rt_constant_binding, /* 134 */
|
||||
scheme_rt_resolve_info, /* 135 */
|
||||
scheme_rt_compile_info, /* 136 */
|
||||
scheme_rt_cont_mark, /* 137 */
|
||||
scheme_rt_saved_stack, /* 138 */
|
||||
scheme_rt_reply_item, /* 139 */
|
||||
scheme_rt_closure_info, /* 140 */
|
||||
scheme_rt_overflow, /* 141 */
|
||||
scheme_rt_dyn_wind_cell, /* 142 */
|
||||
scheme_rt_cont_mark_chain, /* 143 */
|
||||
scheme_rt_dyn_wind_info, /* 144 */
|
||||
scheme_rt_dyn_wind, /* 145 */
|
||||
scheme_rt_dup_check, /* 146 */
|
||||
scheme_rt_thread_memory, /* 147 */
|
||||
scheme_rt_input_file, /* 148 */
|
||||
scheme_rt_input_fd, /* 149 */
|
||||
scheme_rt_oskit_console_input, /* 150 */
|
||||
scheme_rt_tested_input_file, /* 151 */
|
||||
scheme_rt_tested_output_file, /* 152 */
|
||||
scheme_rt_indexed_string, /* 153 */
|
||||
scheme_rt_output_file, /* 154 */
|
||||
scheme_rt_load_handler_data, /* 155 */
|
||||
scheme_rt_pipe, /* 156 */
|
||||
scheme_rt_beos_process, /* 157 */
|
||||
scheme_rt_system_child, /* 158 */
|
||||
scheme_rt_tcp, /* 159 */
|
||||
scheme_rt_write_data, /* 160 */
|
||||
scheme_rt_tcp_select_info, /* 161 */
|
||||
scheme_rt_namespace_option, /* 162 */
|
||||
scheme_rt_param_data, /* 163 */
|
||||
scheme_rt_will, /* 164 */
|
||||
scheme_rt_will_registration, /* 165 */
|
||||
scheme_rt_struct_proc_info, /* 166 */
|
||||
scheme_rt_linker_name, /* 167 */
|
||||
scheme_rt_param_map, /* 168 */
|
||||
scheme_rt_finalization, /* 169 */
|
||||
scheme_rt_finalizations, /* 170 */
|
||||
scheme_rt_cpp_object, /* 171 */
|
||||
scheme_rt_cpp_array_object, /* 172 */
|
||||
scheme_rt_stack_object, /* 173 */
|
||||
scheme_rt_preallocated_object, /* 174 */
|
||||
scheme_thread_hop_type, /* 175 */
|
||||
scheme_rt_srcloc, /* 176 */
|
||||
scheme_rt_evt, /* 177 */
|
||||
scheme_rt_syncing, /* 178 */
|
||||
scheme_rt_comp_prefix, /* 179 */
|
||||
scheme_rt_user_input, /* 180 */
|
||||
scheme_rt_user_output, /* 181 */
|
||||
scheme_rt_compact_port, /* 182 */
|
||||
scheme_rt_read_special_dw, /* 183 */
|
||||
scheme_rt_regwork, /* 184 */
|
||||
scheme_rt_buf_holder, /* 185 */
|
||||
scheme_rt_parameterization, /* 186 */
|
||||
scheme_rt_print_params, /* 187 */
|
||||
scheme_rt_read_params, /* 188 */
|
||||
#endif
|
||||
|
||||
_scheme_last_type_
|
||||
|
|
|
@ -47,6 +47,7 @@ extern int GC_is_marked(void *);
|
|||
#endif
|
||||
|
||||
Scheme_Hash_Table *scheme_symbol_table = NULL;
|
||||
Scheme_Hash_Table *scheme_keyword_table = NULL;
|
||||
Scheme_Hash_Table *scheme_parallel_symbol_table = NULL;
|
||||
|
||||
unsigned long scheme_max_found_symbol_name;
|
||||
|
@ -59,6 +60,9 @@ static Scheme_Object *symbol_p_prim (int argc, Scheme_Object *argv[]);
|
|||
static Scheme_Object *string_to_symbol_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *string_to_uninterned_symbol_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *symbol_to_string_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *keyword_p_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *string_to_keyword_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *keyword_to_string_prim (int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *gensym(int argc, Scheme_Object *argv[]);
|
||||
|
||||
static int gensym_counter;
|
||||
|
@ -216,7 +220,9 @@ static void clean_one_symbol_table(Scheme_Hash_Table *symbol_table)
|
|||
static void clean_symbol_table(void)
|
||||
{
|
||||
clean_one_symbol_table(scheme_symbol_table);
|
||||
clean_one_symbol_table(scheme_keyword_table);
|
||||
clean_one_symbol_table(scheme_parallel_symbol_table);
|
||||
scheme_clear_ephemerons();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -249,9 +255,11 @@ void
|
|||
scheme_init_symbol_table ()
|
||||
{
|
||||
REGISTER_SO(scheme_symbol_table);
|
||||
REGISTER_SO(scheme_keyword_table);
|
||||
REGISTER_SO(scheme_parallel_symbol_table);
|
||||
|
||||
scheme_symbol_table = init_one_symbol_table();
|
||||
scheme_keyword_table = init_one_symbol_table();
|
||||
scheme_parallel_symbol_table = init_one_symbol_table();
|
||||
|
||||
#ifndef MZ_PRECISE_GC
|
||||
|
@ -287,6 +295,21 @@ scheme_init_symbol (Scheme_Env *env)
|
|||
1, 1),
|
||||
env);
|
||||
|
||||
scheme_add_global_constant("keyword?",
|
||||
scheme_make_folding_prim(keyword_p_prim,
|
||||
"keyword?",
|
||||
1, 1, 1),
|
||||
env);
|
||||
scheme_add_global_constant("string->keyword",
|
||||
scheme_make_prim_w_arity(string_to_keyword_prim,
|
||||
"string->keyword",
|
||||
1, 1), env);
|
||||
scheme_add_global_constant("keyword->string",
|
||||
scheme_make_prim_w_arity(keyword_to_string_prim,
|
||||
"keyword->string",
|
||||
1, 1),
|
||||
env);
|
||||
|
||||
scheme_add_global_constant("gensym",
|
||||
scheme_make_prim_w_arity(gensym,
|
||||
"gensym",
|
||||
|
@ -372,6 +395,28 @@ scheme_intern_exact_char_symbol(const mzchar *name, unsigned int len)
|
|||
return scheme_intern_exact_symbol_in_table(scheme_symbol_table, 0, bs, blen);
|
||||
}
|
||||
|
||||
Scheme_Object *
|
||||
scheme_intern_exact_keyword(const char *name, unsigned int len)
|
||||
{
|
||||
Scheme_Object *s;
|
||||
s = scheme_intern_exact_symbol_in_table(scheme_keyword_table, 0, name, len);
|
||||
if (s->type == scheme_symbol_type)
|
||||
s->type = scheme_keyword_type;
|
||||
return s;
|
||||
}
|
||||
|
||||
Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, unsigned int len)
|
||||
{
|
||||
char buf[64], *bs;
|
||||
long blen;
|
||||
Scheme_Object *s;
|
||||
bs = scheme_utf8_encode_to_buffer_len(name, len, buf, 64, &blen);
|
||||
s = scheme_intern_exact_symbol_in_table(scheme_keyword_table, 0, bs, blen);
|
||||
if (s->type == scheme_symbol_type)
|
||||
s->type = scheme_keyword_type;
|
||||
return s;
|
||||
}
|
||||
|
||||
#define MAX_SYMBOL_SIZE 256
|
||||
|
||||
Scheme_Object *
|
||||
|
@ -441,15 +486,20 @@ const char *scheme_symbol_name_and_size(Scheme_Object *sym, unsigned int *length
|
|||
&& (flags & SCHEME_SNF_FOR_TS)))
|
||||
|
||||
if (len) {
|
||||
digit_start = (isdigit((unsigned char)s[0]) || (s[0] == '.')
|
||||
|| (s[0] == '+') || (s[0] == '-'));
|
||||
if (s[0] == '#' && (len == 1 || s[1] != '%'))
|
||||
has_special = 1;
|
||||
if (s[0] == '.' && len == 1)
|
||||
has_special = 1;
|
||||
if (flags & SCHEME_SNF_KEYWORD) {
|
||||
digit_start = 0;
|
||||
} else {
|
||||
digit_start = (isdigit((unsigned char)s[0]) || (s[0] == '.')
|
||||
|| (s[0] == '+') || (s[0] == '-'));
|
||||
if (s[0] == '#' && (len == 1 || s[1] != '%'))
|
||||
has_special = 1;
|
||||
if (s[0] == '.' && len == 1)
|
||||
has_special = 1;
|
||||
}
|
||||
} else {
|
||||
digit_start = 0;
|
||||
has_space = 1;
|
||||
if (!(flags & SCHEME_SNF_KEYWORD))
|
||||
has_space = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
|
@ -607,6 +657,32 @@ symbol_to_string_prim (int argc, Scheme_Object *argv[])
|
|||
SCHEME_SYM_LEN(argv[0]));
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
keyword_p_prim (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return SCHEME_KEYWORDP(argv[0]) ? scheme_true : scheme_false;
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
string_to_keyword_prim (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
if (!SCHEME_CHAR_STRINGP(argv[0]))
|
||||
scheme_wrong_type("string->keyword", "string", 0, argc, argv);
|
||||
return scheme_intern_exact_char_keyword(SCHEME_CHAR_STR_VAL(argv[0]),
|
||||
SCHEME_CHAR_STRTAG_VAL(argv[0]));
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
keyword_to_string_prim (int argc, Scheme_Object *argv[])
|
||||
{
|
||||
if (!SCHEME_KEYWORDP(argv[0]))
|
||||
scheme_wrong_type("keyword->string", "keyword", 0, argc, argv);
|
||||
|
||||
return scheme_make_sized_offset_utf8_string((char *)(argv[0]),
|
||||
SCHEME_SYMSTR_OFFSET(argv[0]),
|
||||
SCHEME_SYM_LEN(argv[0]));
|
||||
}
|
||||
|
||||
static Scheme_Object *gensym(int argc, Scheme_Object *argv[])
|
||||
{
|
||||
char buffer[100], *str;
|
||||
|
|
|
@ -5365,13 +5365,14 @@ Scheme_Object *scheme_thread_cell_get(Scheme_Object *cell, Scheme_Thread_Cell_Ta
|
|||
|
||||
v = scheme_lookup_in_table(cells, (const char *)cell);
|
||||
if (v)
|
||||
return v;
|
||||
return scheme_ephemeron_value(v);
|
||||
else
|
||||
return ((Thread_Cell *)cell)->def_val;
|
||||
}
|
||||
|
||||
void scheme_thread_cell_set(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v)
|
||||
{
|
||||
v = scheme_make_ephemeron(cell, v);
|
||||
scheme_add_to_table(cells, (const char *)cell, (void *)v, 0);
|
||||
}
|
||||
|
||||
|
@ -5843,6 +5844,7 @@ static void make_initial_config(Scheme_Thread *p)
|
|||
init_param(cells, paramz, MZCONFIG_CAN_READ_DOT, scheme_true);
|
||||
init_param(cells, paramz, MZCONFIG_CAN_READ_QUASI, scheme_true);
|
||||
init_param(cells, paramz, MZCONFIG_READ_DECIMAL_INEXACT, scheme_true);
|
||||
init_param(cells, paramz, MZCONFIG_CAN_READ_READER, scheme_false);
|
||||
|
||||
init_param(cells, paramz, MZCONFIG_PRINT_GRAPH, scheme_false);
|
||||
init_param(cells, paramz, MZCONFIG_PRINT_STRUCT, scheme_false);
|
||||
|
|
|
@ -133,6 +133,7 @@ scheme_init_type (Scheme_Env *env)
|
|||
set_name(scheme_proc_struct_type, "<struct>");
|
||||
#endif
|
||||
set_name(scheme_symbol_type, "<symbol>");
|
||||
set_name(scheme_keyword_type, "<keyword>");
|
||||
set_name(scheme_syntax_compiler_type, "<syntax-compiler>");
|
||||
set_name(scheme_macro_type, "<macro>");
|
||||
set_name(scheme_lazy_macro_type, "<lazy-macro>");
|
||||
|
@ -149,6 +150,7 @@ scheme_init_type (Scheme_Env *env)
|
|||
set_name(scheme_multiple_values_type, "<multiple-values>");
|
||||
set_name(scheme_placeholder_type, "<placeholder>");
|
||||
set_name(scheme_weak_box_type, "<weak-box>");
|
||||
set_name(scheme_ephemeron_type, "<ephemeron>");
|
||||
set_name(scheme_rational_type, "<fractional-number>");
|
||||
set_name(scheme_complex_type, "<complex-number>");
|
||||
set_name(scheme_complex_izi_type, "<inexactly-real-number>");
|
||||
|
@ -455,6 +457,7 @@ void scheme_register_traversers(void)
|
|||
GC_REG_TRAV(scheme_byte_string_type, bstring_obj);
|
||||
GC_REG_TRAV(scheme_path_type, bstring_obj);
|
||||
GC_REG_TRAV(scheme_symbol_type, symbol_obj);
|
||||
GC_REG_TRAV(scheme_keyword_type, symbol_obj);
|
||||
GC_REG_TRAV(scheme_null_type, char_obj); /* small */
|
||||
GC_REG_TRAV(scheme_pair_type, cons_cell);
|
||||
GC_REG_TRAV(scheme_vector_type, vector_obj);
|
||||
|
|
|
@ -293,6 +293,7 @@ class wxFontNameItem : public wxObject
|
|||
};
|
||||
|
||||
wxFontNameItem::wxFontNameItem()
|
||||
: wxObject(WXGC_NO_CLEANUP)
|
||||
{
|
||||
screen = new wxSuffixMap;
|
||||
printing = new wxSuffixMap;
|
||||
|
|
|
@ -29,6 +29,10 @@ Authors: John R. Ellis and Jesse Hull
|
|||
#include <stddef.h>
|
||||
#include "wxGC.h"
|
||||
|
||||
#ifdef COMPACT_BACKTRACE_GC
|
||||
# include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef MPW_CPLUS
|
||||
extern "C" {
|
||||
typedef void (*GC_F_PTR)(void *, void *);
|
||||
|
@ -124,6 +128,15 @@ void GC_cleanup(void *obj, void *)
|
|||
gc *clean = (gc *)gcPTR_TO_OBJ(obj);
|
||||
|
||||
#ifdef MZ_PRECISE_GC
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
# if 0
|
||||
{
|
||||
char *s;
|
||||
s = clean->gcGetName();
|
||||
printf("CLeanup: %s\n", s ? s : "???");
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
GC_cpp_delete(clean);
|
||||
#else
|
||||
clean->~gc();
|
||||
|
@ -207,6 +220,11 @@ int GC_is_wx_object(void *v)
|
|||
|
||||
# define ZERO_OUT_DISPATCH 1
|
||||
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
static char *get_xtagged_name(void *p);
|
||||
extern char *(*GC_get_xtagged_name)(void *p);
|
||||
# endif
|
||||
|
||||
typedef struct {
|
||||
short tag;
|
||||
short filler_used_for_hashing;
|
||||
|
@ -247,6 +265,10 @@ static void initize(void)
|
|||
/* Initialize: */
|
||||
GC_mark_xtagged = mark_cpp_object;
|
||||
GC_fixup_xtagged = fixup_cpp_object;
|
||||
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
GC_get_xtagged_name = get_xtagged_name;
|
||||
# endif
|
||||
|
||||
is_initialized = 1;
|
||||
}
|
||||
|
@ -271,6 +293,24 @@ void GC_cpp_delete(gc *v)
|
|||
#endif
|
||||
}
|
||||
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
|
||||
static char name_buffer[256];
|
||||
|
||||
static char *get_xtagged_name(void *p)
|
||||
{
|
||||
char *s;
|
||||
s = ((gc *)gcPTR_TO_OBJ(p))->gcGetName();
|
||||
sprintf(name_buffer, "<%s>", (s ? s : "XTAGGED"));
|
||||
return name_buffer;
|
||||
}
|
||||
|
||||
char *gc::gcGetName() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
/**********************************************************************/
|
||||
|
|
|
@ -120,6 +120,9 @@ public:
|
|||
/* Overridden in each subclass: */
|
||||
virtual inline void gcMark();
|
||||
virtual inline void gcFixup();
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
virtual char *gcGetName();
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -53,6 +53,9 @@ class wxObject : public gc_cleanup
|
|||
wxObject(Bool cleanup);
|
||||
wxObject(Bool cleanup, WXTYPE t);
|
||||
virtual ~wxObject(void);
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
virtual char *gcGetName();
|
||||
# endif
|
||||
};
|
||||
|
||||
#endif // IN_CPROTO
|
||||
|
|
|
@ -658,6 +658,7 @@ wxbGauge::~wxbGauge (void)
|
|||
|
||||
|
||||
wbMenuItem::wbMenuItem()
|
||||
: wxObject(WXGC_NO_CLEANUP)
|
||||
{
|
||||
itemId = 0; itemName = NULL; topMenu = NULL; subMenu = NULL;
|
||||
menuBar = NULL; helpString = NULL;
|
||||
|
|
|
@ -46,3 +46,9 @@ wxObject::~wxObject(void)
|
|||
--wx_object_count;
|
||||
}
|
||||
|
||||
# ifdef COMPACT_BACKTRACE_GC
|
||||
char *wxObject::gcGetName()
|
||||
{
|
||||
wxGetTypeName(__type);
|
||||
}
|
||||
# endif
|
||||
|
|
|
@ -643,7 +643,7 @@ void wxCanvasDC::DrawPath(wxPath *p, double xoffset, double yoffset, int fillSty
|
|||
PolyHandle thePolygon = 0;
|
||||
|
||||
if (!Ok() || !cMacDC) return;
|
||||
|
||||
|
||||
if (anti_alias) {
|
||||
CGContextRef cg;
|
||||
CGMutablePathRef path;
|
||||
|
@ -1217,7 +1217,7 @@ Bool wxCanvasDC::Blit(double xdest, double ydest, double width, double height,
|
|||
dstbm = GetPortBitMapForCopyBits(theMacGrafPort);
|
||||
srcbm = GetPortBitMapForCopyBits(source->x_pixmap);
|
||||
|
||||
if (mask) {
|
||||
if (mask && !wxSubType(__type, wxTYPE_DC_PRINTER)) {
|
||||
const BitMap *maskbm;
|
||||
|
||||
maskbm = GetPortBitMapForCopyBits(mask->x_pixmap);
|
||||
|
|
|
@ -24,6 +24,7 @@ wxMenuItem::wxMenuItem
|
|||
(
|
||||
void
|
||||
)
|
||||
/* wbMenuItem uses WXGC_NO_CLEANUP */
|
||||
{
|
||||
checkable = FALSE;
|
||||
cIsChecked = FALSE;
|
||||
|
@ -37,6 +38,7 @@ wxMenuItem::wxMenuItem
|
|||
wxMenu* theParentMenu,
|
||||
Bool isCheckable
|
||||
)
|
||||
/* wbMenuItem uses WXGC_NO_CLEANUP */
|
||||
{
|
||||
checkable = isCheckable;
|
||||
cIsChecked = FALSE;
|
||||
|
|
|
@ -48,6 +48,9 @@ class wxObject : public WXGC_CLEANUP_CLASS
|
|||
wxObject(void);
|
||||
wxObject(Bool cleanup);
|
||||
virtual ~wxObject(void);
|
||||
#ifdef COMPACT_BACKTRACE_GC
|
||||
virtual char *gcGetName();
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -80,6 +80,9 @@ public:
|
|||
#ifdef MEMORY_USE_METHOD
|
||||
virtual long MemoryUse(void);
|
||||
#endif
|
||||
#ifdef COMPACT_BACKTRACE_GC
|
||||
virtual char *gcGetName();
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user