[Vm-dev] [commit][3048] CogVM source as per VMMaker.oscog-eem.826

commits at squeakvm.org commits at squeakvm.org
Sat Jul 19 00:42:32 UTC 2014


Revision: 3048
Author:   eliot
Date:     2014-07-18 17:42:28 -0700 (Fri, 18 Jul 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.826

Fix the ZipPlugin (InflatePlugin&DeflatePlugin) to no longer depend on specific
instance sizes for ReadStream and WriteStream which allows some leniency in
redefining these classes.  Fixes occasionaly Monticello commit bugs with
large packages after loading Collections-eem.567.

Fix compilation warnings in stringForCString:

Add a -warnpid flag that causes warning to print the pid;
useful in debugging multi-image tests (i.e. magma).

Spur:
Fix bad bug in remapObj: that confused the test for old vs
new and hence tried to copyAndForward old objects.

Fix bug in processWeaklings that could remember a weak object twice.

Misc:
Nuke the sistasrc/plugins directory that was a symbolic link to src/plugins.
We deal with this in the makefiles these days.

Modified Paths:
--------------
    branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
    branches/Cog/build.macos32x86/squeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
    branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/interp.h
    branches/Cog/nsspurstacksrc/vm/vmCallback.h
    branches/Cog/platforms/Mac OS/vm/sqMacUnixCommandLineInterface.c
    branches/Cog/platforms/unix/vm/sqUnixMain.c
    branches/Cog/platforms/win32/vm/sqWin32Intel.c
    branches/Cog/platforms/win32/vm/sqWin32Window.c
    branches/Cog/sistasrc/vm/cointerp.c
    branches/Cog/sistasrc/vm/cointerp.h
    branches/Cog/sistasrc/vm/gcc3x-cointerp.c
    branches/Cog/sistasrc/vm/interp.h
    branches/Cog/sistasrc/vm/vmCallback.h
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/interp.h
    branches/Cog/spursistasrc/vm/vmCallback.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

Removed Paths:
-------------
    branches/Cog/sistasrc/plugins

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1455,6 +1455,8 @@
 				ARCHS = i386;
 				COPY_PHASE_STRIP = NO;
 				DEBUGGING_SYMBOLS = YES;
+				GCC_DYNAMIC_NO_PIC = YES;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 1;
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -1482,7 +1484,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = "Newspeak Virtual Machine";
 				SECTORDER_FLAGS = "";
@@ -1497,6 +1499,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUGVM=0",
 					"USE_GLOBAL_STRUCT=0",
@@ -1513,6 +1516,7 @@
 				ICC_FP_MODEL = src;
 				ICC_OPTLEVEL = size;
 				ICC_OPT_INLINE = dir;
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Assert;
@@ -1561,7 +1565,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PER_ARCH_CFLAGS_i386 = "";
 				PRODUCT_NAME = "Newspeak Virtual Machine";
@@ -1576,6 +1580,7 @@
 			buildSettings = {
 				ARCHS = i386;
 				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_AUTO_VECTORIZATION = NO;
 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 				GCC_ENABLE_SSE3_EXTENSIONS = YES;
@@ -1613,7 +1618,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PER_ARCH_CFLAGS_i386 = "-O3  -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium4  -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS";
 				PRODUCT_NAME = "Newspeak Virtual Machine";
@@ -1630,6 +1635,7 @@
 				ARCHS = i386;
 				COPY_PHASE_STRIP = NO;
 				DEBUGGING_SYMBOLS = YES;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 2;
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -1658,7 +1664,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = "Newspeak Virtual Machine";
 				SECTORDER_FLAGS = "";
@@ -1673,6 +1679,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"DEBUGVM=1",
 					"USE_GLOBAL_STRUCT=0",
@@ -1688,6 +1695,7 @@
 					$SRCROOT,
 				);
 				ICC_FP_MODEL = src;
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Development;
@@ -1696,6 +1704,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"NDEBUG=1",
 					"DEBUGVM=0",
@@ -1717,6 +1726,7 @@
 				ICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION = YES;
 				ICC_OPT_USE_ARCH_IA32 = archT;
 				ICC_PREDEFINE_GCC = gcc;
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Deployment;
@@ -1725,6 +1735,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"NDEBUG=1",
 					"USE_GLOBAL_STRUCT=0",
@@ -1740,6 +1751,7 @@
 				);
 				ICC_FP_MODEL = src;
 				ICC_OPTLEVEL = speed;
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = DeploymentSymbols;

Modified: branches/Cog/build.macos32x86/squeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/build.macos32x86/squeak.cog.spur/CoreVM.xcodeproj/project.pbxproj	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/build.macos32x86/squeak.cog.spur/CoreVM.xcodeproj/project.pbxproj	2014-07-19 00:42:28 UTC (rev 3048)
@@ -7,14 +7,10 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		73BC1BBB0F576864003412C5 /* cogit.c in Sources */ = {isa = PBXBuildFile; fileRef = 73BC1BB60F576864003412C5 /* cogit.c */; settings = {COMPILER_FLAGS = "-fno-inline"; }; };
-		73BC1BBC0F576864003412C5 /* cogit.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BB70F576864003412C5 /* cogit.h */; };
-		73BC1BBD0F576864003412C5 /* cogmethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BB80F576864003412C5 /* cogmethod.h */; };
-		73BC1BBE0F576864003412C5 /* gcc3x-cointerp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73BC1BB90F576864003412C5 /* gcc3x-cointerp.c */; };
-		73BC1BBF0F576864003412C5 /* cointerp.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BBA0F576864003412C5 /* cointerp.h */; };
 		733AC8DB0FEAAC4F007C6206 /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 733AC8DA0FEAAC4F007C6206 /* version.c */; };
 		733B2C37106AB74B004652BE /* sqExternalSemaphores.c in Sources */ = {isa = PBXBuildFile; fileRef = 733B2C36106AB74B004652BE /* sqExternalSemaphores.c */; };
 		7351A09B100963670035A878 /* sqUnixThreads.c in Sources */ = {isa = PBXBuildFile; fileRef = 7351A09A100963670035A878 /* sqUnixThreads.c */; };
+		735B4CA30E8069B7008FA2CA /* VMProfileMacSupportPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 735B4CA20E8069B7008FA2CA /* VMProfileMacSupportPlugin.c */; };
 		737888E713D0DE6500C5E1AD /* sqMemoryFence.h in Headers */ = {isa = PBXBuildFile; fileRef = 737888E513D0DE6500C5E1AD /* sqMemoryFence.h */; };
 		737888E813D0DE6500C5E1AD /* sqSCCSVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 737888E613D0DE6500C5E1AD /* sqSCCSVersion.h */; };
 		738FB1EA0EE4CF94004BEE42 /* ia32abicc.c in Sources */ = {isa = PBXBuildFile; fileRef = 738FB1E90EE4CF94004BEE42 /* ia32abicc.c */; };
@@ -24,6 +20,11 @@
 		739C6EDA112DCBD10049B7D3 /* sqAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 739C6ED8112DCBD10049B7D3 /* sqAssert.h */; };
 		73B54C530E55EFED00FE780C /* sqUnixVMProfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 73B54C520E55EFED00FE780C /* sqUnixVMProfile.c */; };
 		73B96E490E47D7A10079C51B /* sqUnixHeartbeat.c in Sources */ = {isa = PBXBuildFile; fileRef = 73B96E480E47D7A10079C51B /* sqUnixHeartbeat.c */; };
+		73BC1BBB0F576864003412C5 /* cogit.c in Sources */ = {isa = PBXBuildFile; fileRef = 73BC1BB60F576864003412C5 /* cogit.c */; settings = {COMPILER_FLAGS = "-fno-inline"; }; };
+		73BC1BBC0F576864003412C5 /* cogit.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BB70F576864003412C5 /* cogit.h */; };
+		73BC1BBD0F576864003412C5 /* cogmethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BB80F576864003412C5 /* cogmethod.h */; };
+		73BC1BBE0F576864003412C5 /* gcc3x-cointerp.c in Sources */ = {isa = PBXBuildFile; fileRef = 73BC1BB90F576864003412C5 /* gcc3x-cointerp.c */; };
+		73BC1BBF0F576864003412C5 /* cointerp.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BBA0F576864003412C5 /* cointerp.h */; };
 		73BC1BC70F57699F003412C5 /* sqCogStackAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 73BC1BC60F57699F003412C5 /* sqCogStackAlignment.h */; };
 		73DFFAC018D380C200C3C543 /* AioPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 73DFFABF18D380C200C3C543 /* AioPlugin.c */; };
 		94002C4409EB18EF003C4BF2 /* sqMemoryAccess.h in Headers */ = {isa = PBXBuildFile; fileRef = 94002C4209EB18EF003C4BF2 /* sqMemoryAccess.h */; };
@@ -240,7 +241,6 @@
 		A27729590CE7A8D300ABAFCA /* SoundPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A277292E0CE7A8D300ABAFCA /* SoundPlugin.c */; };
 		A277295A0CE7A8D300ABAFCA /* StarSqueakPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A27729300CE7A8D300ABAFCA /* StarSqueakPlugin.c */; };
 		A277295B0CE7A8D300ABAFCA /* UUIDPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A27729330CE7A8D300ABAFCA /* UUIDPlugin.c */; };
-		735B4CA30E8069B7008FA2CA /* VMProfileMacSupportPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 735B4CA20E8069B7008FA2CA /* VMProfileMacSupportPlugin.c */; };
 		A277295D0CE7A8D300ABAFCA /* ZipPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A27729370CE7A8D300ABAFCA /* ZipPlugin.c */; };
 		A27729770CE7A9AE00ABAFCA /* sqMacHostWindow.c in Sources */ = {isa = PBXBuildFile; fileRef = A27729750CE7A9AE00ABAFCA /* sqMacHostWindow.c */; };
 		A27729780CE7A9AE00ABAFCA /* sqMacHostWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A27729760CE7A9AE00ABAFCA /* sqMacHostWindow.h */; };
@@ -274,6 +274,7 @@
 		733AC8DA0FEAAC4F007C6206 /* version.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = version.c; sourceTree = "<group>"; };
 		733B2C36106AB74B004652BE /* sqExternalSemaphores.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = sqExternalSemaphores.c; sourceTree = "<group>"; };
 		7351A09A100963670035A878 /* sqUnixThreads.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sqUnixThreads.c; path = vm/sqUnixThreads.c; sourceTree = "<group>"; };
+		735B4CA20E8069B7008FA2CA /* VMProfileMacSupportPlugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = VMProfileMacSupportPlugin.c; path = VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c; sourceTree = "<group>"; };
 		737888E513D0DE6500C5E1AD /* sqMemoryFence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sqMemoryFence.h; sourceTree = "<group>"; };
 		737888E613D0DE6500C5E1AD /* sqSCCSVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sqSCCSVersion.h; sourceTree = "<group>"; };
 		738FB1E90EE4CF94004BEE42 /* ia32abicc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ia32abicc.c; path = IA32ABI/ia32abicc.c; sourceTree = "<group>"; };
@@ -383,7 +384,6 @@
 		A277292E0CE7A8D300ABAFCA /* SoundPlugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SoundPlugin.c; path = SoundPlugin/SoundPlugin.c; sourceTree = "<group>"; };
 		A27729300CE7A8D300ABAFCA /* StarSqueakPlugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = StarSqueakPlugin.c; path = StarSqueakPlugin/StarSqueakPlugin.c; sourceTree = "<group>"; };
 		A27729330CE7A8D300ABAFCA /* UUIDPlugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = UUIDPlugin.c; path = UUIDPlugin/UUIDPlugin.c; sourceTree = "<group>"; };
-		735B4CA20E8069B7008FA2CA /* VMProfileMacSupportPlugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = VMProfileMacSupportPlugin.c; path = VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c; sourceTree = "<group>"; };
 		A27729370CE7A8D300ABAFCA /* ZipPlugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ZipPlugin.c; path = ZipPlugin/ZipPlugin.c; sourceTree = "<group>"; };
 		A27729750CE7A9AE00ABAFCA /* sqMacHostWindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sqMacHostWindow.c; sourceTree = "<group>"; };
 		A27729760CE7A9AE00ABAFCA /* sqMacHostWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sqMacHostWindow.h; sourceTree = "<group>"; };
@@ -1366,6 +1366,8 @@
 				941A3BFA09AA144000C9D25A /* Frameworks */,
 				941A3C0409AA144000C9D25A /* Rez */,
 			);
+			buildRules = (
+			);
 			name = Squeak;
 			productInstallPath = "$(USER_APPS_DIR)";
 			productName = "Squeak VM OPT";
@@ -1634,7 +1636,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = Squeak;
 				SECTORDER_FLAGS = "";
@@ -1649,6 +1651,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"COGMTVM=0",
 					"DEBUGVM=0",
@@ -1664,6 +1667,7 @@
 				ICC_FP_MODEL = src;
 				ICC_OPTLEVEL = size;
 				ICC_OPT_INLINE = dir;
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Assert;
@@ -1711,7 +1715,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PER_ARCH_CFLAGS_i386 = "";
 				PRODUCT_NAME = Squeak;
@@ -1730,7 +1734,6 @@
 				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
-				GCC_MODEL_TUNING = "";
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"NDEBUG=1",
@@ -1764,7 +1767,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PER_ARCH_CFLAGS_i386 = "-O3  -falign-functions=16 -fno-gcse -mtune=prescott -march=pentium4  -mfpmath=sse -finline-functions -Wall -DUSE_INLINE_MEMORY_ACCESSORS";
 				PRODUCT_NAME = Squeak;
@@ -1809,7 +1812,7 @@
 				ICC_PREDEFINE_GCC = gcc;
 				INFOPLIST_FILE = CoreVM.plist;
 				MACOSX_DEPLOYMENT_TARGET = 10.5;
-				OTHER_LDFLAGS = "";
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				OTHER_REZFLAGS = "";
 				PRODUCT_NAME = Squeak;
 				SECTORDER_FLAGS = "";
@@ -1824,6 +1827,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"COGMTVM=0",
 					"DEBUGVM=1",
@@ -1838,6 +1842,7 @@
 					$SRCROOT,
 				);
 				ICC_FP_MODEL = src;
+				OTHER_LDFLAGS = "-Wl,-no_pie,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Development;
@@ -1846,6 +1851,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"NDEBUG=1",
 					"COGMTVM=0",
@@ -1867,6 +1873,7 @@
 				ICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION = YES;
 				ICC_OPT_USE_ARCH_IA32 = archT;
 				ICC_PREDEFINE_GCC = gcc;
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = Deployment;
@@ -1875,6 +1882,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				ARCHS = i386;
+				GCC_DYNAMIC_NO_PIC = YES;
 				GCC_PREPROCESSOR_DEFINITIONS = (
 					"NDEBUG=1",
 					"COGMTVM=0",
@@ -1889,6 +1897,7 @@
 				);
 				ICC_FP_MODEL = src;
 				ICC_OPTLEVEL = speed;
+				OTHER_LDFLAGS = "-Wl,-sectalign,__TEXT,__text,2000";
 				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
 			};
 			name = DeploymentSymbols;

Modified: branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.787 uuid: 4b38ebc1-339f-4523-a9fc-047923108211
+	VMPluginCodeGenerator VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
    from
-	DeflatePlugin VMMaker.oscog-eem.787 uuid: 4b38ebc1-339f-4523-a9fc-047923108211
+	DeflatePlugin VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
-static char __buildInfo[] = "DeflatePlugin VMMaker.oscog-eem.787 uuid: 4b38ebc1-339f-4523-a9fc-047923108211 " __DATE__ ;
+static char __buildInfo[] = "DeflatePlugin VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5 " __DATE__ ;
 
 
 
@@ -54,6 +54,8 @@
 /*** Function Prototypes ***/
 static sqInt comparewithmin(sqInt here, sqInt matchPos, sqInt minLength);
 static sqInt deflateBlockchainLengthgoodMatch(sqInt lastIndex, sqInt chainLength, sqInt goodMatch);
+static sqInt determineSizeOfReadStream(sqInt rcvr);
+static sqInt determineSizeOfWriteStream(sqInt rcvr);
 static sqInt encodeLiteral(sqInt lit);
 static sqInt encodeMatchdistance(sqInt length, sqInt dist);
 static sqInt findMatchlastLengthlastMatchchainLengthgoodMatch(sqInt here, sqInt lastLength, sqInt lastMatch, sqInt maxChainLength, sqInt goodMatch);
@@ -86,19 +88,21 @@
 #if !defined(SQUEAK_BUILTIN_PLUGIN)
 static sqInt (*byteSizeOf)(sqInt oop);
 static sqInt (*failed)(void);
+static sqInt (*fetchClassOf)(sqInt oop);
 static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
 static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
 static void * (*firstIndexableField)(sqInt oop);
+static sqInt (*instanceSizeOf)(sqInt classObj);
 static sqInt (*isBytes)(sqInt oop);
 static sqInt (*isPointers)(sqInt oop);
 static sqInt (*isWords)(sqInt oop);
 static sqInt (*methodArgumentCount)(void);
+static sqInt (*nilObject)(void);
 static sqInt (*pop)(sqInt nItems);
 static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
 static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
 static usqInt (*positive32BitValueOf)(sqInt oop);
 static sqInt (*primitiveFail)(void);
-static sqInt (*push)(sqInt object);
 static sqInt (*pushBool)(sqInt trueOrFalse);
 static sqInt (*pushInteger)(sqInt integerValue);
 static sqInt (*slotSizeOf)(sqInt oop);
@@ -106,22 +110,25 @@
 static sqInt (*stackObjectValue)(sqInt offset);
 static sqInt (*stackValue)(sqInt offset);
 static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
+static sqInt (*superclassOf)(sqInt classPointer);
 #else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
 extern sqInt byteSizeOf(sqInt oop);
 extern sqInt failed(void);
+extern sqInt fetchClassOf(sqInt oop);
 extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
 extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
 extern void * firstIndexableField(sqInt oop);
+extern sqInt instanceSizeOf(sqInt classObj);
 extern sqInt isBytes(sqInt oop);
 extern sqInt isPointers(sqInt oop);
 extern sqInt isWords(sqInt oop);
 extern sqInt methodArgumentCount(void);
+extern sqInt nilObject(void);
 extern sqInt pop(sqInt nItems);
 extern sqInt popthenPush(sqInt nItems, sqInt oop);
 extern sqInt positive32BitIntegerFor(sqInt integerValue);
 extern usqInt positive32BitValueOf(sqInt oop);
 extern sqInt primitiveFail(void);
-extern sqInt push(sqInt object);
 extern sqInt pushBool(sqInt trueOrFalse);
 extern sqInt pushInteger(sqInt integerValue);
 extern sqInt slotSizeOf(sqInt oop);
@@ -129,16 +136,19 @@
 extern sqInt stackObjectValue(sqInt offset);
 extern sqInt stackValue(sqInt offset);
 extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
+extern sqInt superclassOf(sqInt classPointer);
 extern
 #endif
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"ZipPlugin VMMaker.oscog-eem.787 (i)"
+	"ZipPlugin VMMaker.oscog-eem.826 (i)"
 #else
-	"ZipPlugin VMMaker.oscog-eem.787 (e)"
+	"ZipPlugin VMMaker.oscog-eem.826 (e)"
 #endif
 ;
+static sqInt readStreamInstSize;
+static sqInt writeStreamInstSize;
 static unsigned int zipBaseDistance[] = {
 /*0*/	0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
 /*20*/	1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
@@ -442,6 +452,48 @@
 }
 
 
+/*	Determine the inst size of the class above DeflateStream by
+	looking for the first class whose inst size is less than 13. */
+
+static sqInt
+determineSizeOfReadStream(sqInt rcvr)
+{
+    sqInt class;
+
+	class = fetchClassOf(rcvr);
+	while ((class != (nilObject()))
+	 && ((instanceSizeOf(class)) >= 13)) {
+		class = superclassOf(class);
+	}
+	if (class == (nilObject())) {
+		return 0;
+	}
+	readStreamInstSize = instanceSizeOf(class);
+	return 1;
+}
+
+
+/*	Determine the inst size of the class above DeflateStream or
+	ZipEncoder by looking for the first class whose inst size is less than 7. */
+
+static sqInt
+determineSizeOfWriteStream(sqInt rcvr)
+{
+    sqInt class;
+
+	class = fetchClassOf(rcvr);
+	while ((class != (nilObject()))
+	 && ((instanceSizeOf(class)) >= 7)) {
+		class = superclassOf(class);
+	}
+	if (class == (nilObject())) {
+		return 0;
+	}
+	writeStreamInstSize = instanceSizeOf(class);
+	return 1;
+}
+
+
 /*	Encode the given literal */
 
 static sqInt
@@ -657,6 +709,15 @@
 	if (!(isBytes(oop))) {
 		return 0;
 	}
+	if (writeStreamInstSize == 0) {
+		if (!(determineSizeOfWriteStream(rcvr))) {
+			return 0;
+		}
+		if ((slotSizeOf(rcvr)) < (writeStreamInstSize + 5)) {
+			writeStreamInstSize = 0;
+			return 0;
+		}
+	}
 	zipCollection = firstIndexableField(oop);
 	zipCollectionSize = byteSizeOf(oop);
 	zipPosition = fetchIntegerofObject(1, rcvr);
@@ -664,49 +725,49 @@
 	/* zipWriteLimit := interpreterProxy fetchInteger: 3 ofObject: rcvr. */
 
 	zipReadLimit = fetchIntegerofObject(2, rcvr);
-	oop = fetchPointerofObject(4, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 0, rcvr);
 	if (!((isWords(oop))
 		 && ((slotSizeOf(oop)) == DeflateHashTableSize))) {
 		return 0;
 	}
 	zipHashHead = firstIndexableField(oop);
-	oop = fetchPointerofObject(5, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 1, rcvr);
 	if (!((isWords(oop))
 		 && ((slotSizeOf(oop)) == DeflateWindowSize))) {
 		return 0;
 	}
 	zipHashTail = firstIndexableField(oop);
-	zipHashValue = fetchIntegerofObject(6, rcvr);
+	zipHashValue = fetchIntegerofObject(writeStreamInstSize + 2, rcvr);
 
-	/* zipBlockStart := interpreterProxy fetchInteger: 8 ofObject: rcvr. */
+	/* zipBlockStart := interpreterProxy fetchInteger: writeStreamInstSize + 4 ofObject: rcvr. */
 
-	zipBlockPos = fetchIntegerofObject(7, rcvr);
-	oop = fetchPointerofObject(9, rcvr);
+	zipBlockPos = fetchIntegerofObject(writeStreamInstSize + 3, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 5, rcvr);
 	if (!(isBytes(oop))) {
 		return 0;
 	}
 	zipLiteralSize = slotSizeOf(oop);
 	zipLiterals = firstIndexableField(oop);
-	oop = fetchPointerofObject(10, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 6, rcvr);
 	if (!((isWords(oop))
 		 && ((slotSizeOf(oop)) >= zipLiteralSize))) {
 		return 0;
 	}
 	zipDistances = firstIndexableField(oop);
-	oop = fetchPointerofObject(11, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 7, rcvr);
 	if (!((isWords(oop))
 		 && ((slotSizeOf(oop)) == DeflateMaxLiteralCodes))) {
 		return 0;
 	}
 	zipLiteralFreq = firstIndexableField(oop);
-	oop = fetchPointerofObject(12, rcvr);
+	oop = fetchPointerofObject(writeStreamInstSize + 8, rcvr);
 	if (!((isWords(oop))
 		 && ((slotSizeOf(oop)) == DeflateMaxDistanceCodes))) {
 		return 0;
 	}
 	zipDistanceFreq = firstIndexableField(oop);
-	zipLiteralCount = fetchIntegerofObject(13, rcvr);
-	zipMatchCount = fetchIntegerofObject(14, rcvr);
+	zipLiteralCount = fetchIntegerofObject(writeStreamInstSize + 9, rcvr);
+	zipMatchCount = fetchIntegerofObject(writeStreamInstSize + 10, rcvr);
 	return !(failed());
 }
 
@@ -715,8 +776,17 @@
 {
     sqInt oop;
 
+	if (writeStreamInstSize == 0) {
+		if (!(determineSizeOfWriteStream(rcvr))) {
+			return 0;
+		}
+		if ((slotSizeOf(rcvr)) < (writeStreamInstSize + 3)) {
+			writeStreamInstSize = 0;
+			return 0;
+		}
+	}
 	if (!((isPointers(rcvr))
-		 && ((slotSizeOf(rcvr)) >= 6))) {
+		 && ((slotSizeOf(rcvr)) >= (writeStreamInstSize + 3)))) {
 		return 0;
 	}
 	oop = fetchPointerofObject(0, rcvr);
@@ -730,8 +800,8 @@
 	/* zipWriteLimit := interpreterProxy fetchInteger: 3 ofObject: rcvr. */
 
 	zipReadLimit = fetchIntegerofObject(2, rcvr);
-	zipBitBuf = fetchIntegerofObject(4, rcvr);
-	zipBitPos = fetchIntegerofObject(5, rcvr);
+	zipBitBuf = fetchIntegerofObject(writeStreamInstSize + 1, rcvr);
+	zipBitPos = fetchIntegerofObject(writeStreamInstSize + 2, rcvr);
 	return !(failed());
 }
 
@@ -797,10 +867,10 @@
 
 		/* Store back modified values */
 
-		storeIntegerofObjectwithValue(6, rcvr, zipHashValue);
-		storeIntegerofObjectwithValue(7, rcvr, zipBlockPos);
-		storeIntegerofObjectwithValue(13, rcvr, zipLiteralCount);
-		storeIntegerofObjectwithValue(14, rcvr, zipMatchCount);
+		storeIntegerofObjectwithValue(writeStreamInstSize + 2, rcvr, zipHashValue);
+		storeIntegerofObjectwithValue(writeStreamInstSize + 3, rcvr, zipBlockPos);
+		storeIntegerofObjectwithValue(writeStreamInstSize + 9, rcvr, zipLiteralCount);
+		storeIntegerofObjectwithValue(writeStreamInstSize + 10, rcvr, zipMatchCount);
 	}
 	if (!(failed())) {
 		pop(4);
@@ -880,15 +950,24 @@
 	if (!(isPointers(rcvr))) {
 		return primitiveFail();
 	}
-	if ((slotSizeOf(rcvr)) < 9) {
+	if (readStreamInstSize == 0) {
+		if (!(determineSizeOfReadStream(rcvr))) {
+			return primitiveFail();
+		}
+		if ((slotSizeOf(rcvr)) < (readStreamInstSize + 8)) {
+			readStreamInstSize = 0;
+			return primitiveFail();
+		}
+	}
+	if ((slotSizeOf(rcvr)) < (readStreamInstSize + 8)) {
 		return primitiveFail();
 	}
 	zipReadLimit = fetchIntegerofObject(2, rcvr);
-	zipState = fetchIntegerofObject(3, rcvr);
-	zipBitBuf = fetchIntegerofObject(4, rcvr);
-	zipBitPos = fetchIntegerofObject(5, rcvr);
-	zipSourcePos = fetchIntegerofObject(7, rcvr);
-	zipSourceLimit = fetchIntegerofObject(8, rcvr);
+	zipState = fetchIntegerofObject(readStreamInstSize + 0, rcvr);
+	zipBitBuf = fetchIntegerofObject(readStreamInstSize + 1, rcvr);
+	zipBitPos = fetchIntegerofObject(readStreamInstSize + 2, rcvr);
+	zipSourcePos = fetchIntegerofObject(readStreamInstSize + 4, rcvr);
+	zipSourceLimit = fetchIntegerofObject(readStreamInstSize + 5, rcvr);
 	if (failed()) {
 		return null;
 	}
@@ -907,7 +986,7 @@
 	/* source */
 
 	zipCollectionSize = byteSizeOf(oop);
-	oop = fetchPointerofObject(6, rcvr);
+	oop = fetchPointerofObject(readStreamInstSize + 3, rcvr);
 	if (!(isBytes(oop))) {
 		return primitiveFail();
 	}
@@ -921,10 +1000,10 @@
 		/* store modified values back */
 
 		storeIntegerofObjectwithValue(2, rcvr, zipReadLimit + 1);
-		storeIntegerofObjectwithValue(3, rcvr, zipState);
-		storeIntegerofObjectwithValue(4, rcvr, zipBitBuf);
-		storeIntegerofObjectwithValue(5, rcvr, zipBitPos);
-		storeIntegerofObjectwithValue(7, rcvr, zipSourcePos + 1);
+		storeIntegerofObjectwithValue(readStreamInstSize + 0, rcvr, zipState);
+		storeIntegerofObjectwithValue(readStreamInstSize + 1, rcvr, zipBitBuf);
+		storeIntegerofObjectwithValue(readStreamInstSize + 2, rcvr, zipBitPos);
+		storeIntegerofObjectwithValue(readStreamInstSize + 4, rcvr, zipSourcePos + 1);
 		pop(2);
 	}
 }
@@ -976,8 +1055,7 @@
 		s2 = (s2 + s1) % 65521;
 	}
 	adler32 = (((usqInt) s2 << 16)) + s1;
-	pop(5);
-	push(positive32BitIntegerFor(adler32));
+	popthenPush(5, positive32BitIntegerFor(adler32));
 }
 
 
@@ -1292,8 +1370,8 @@
 l7:	/* end sendBlock:with:with:with: */;
 	if (!(failed())) {
 		storeIntegerofObjectwithValue(1, rcvr, zipPosition);
-		storeIntegerofObjectwithValue(4, rcvr, zipBitBuf);
-		storeIntegerofObjectwithValue(5, rcvr, zipBitPos);
+		storeIntegerofObjectwithValue(readStreamInstSize + 1, rcvr, zipBitBuf);
+		storeIntegerofObjectwithValue(readStreamInstSize + 2, rcvr, zipBitPos);
 	}
 	if (!(failed())) {
 		pop(5);
@@ -1538,19 +1616,21 @@
 #if !defined(SQUEAK_BUILTIN_PLUGIN)
 		byteSizeOf = interpreterProxy->byteSizeOf;
 		failed = interpreterProxy->failed;
+		fetchClassOf = interpreterProxy->fetchClassOf;
 		fetchIntegerofObject = interpreterProxy->fetchIntegerofObject;
 		fetchPointerofObject = interpreterProxy->fetchPointerofObject;
 		firstIndexableField = interpreterProxy->firstIndexableField;
+		instanceSizeOf = interpreterProxy->instanceSizeOf;
 		isBytes = interpreterProxy->isBytes;
 		isPointers = interpreterProxy->isPointers;
 		isWords = interpreterProxy->isWords;
 		methodArgumentCount = interpreterProxy->methodArgumentCount;
+		nilObject = interpreterProxy->nilObject;
 		pop = interpreterProxy->pop;
 		popthenPush = interpreterProxy->popthenPush;
 		positive32BitIntegerFor = interpreterProxy->positive32BitIntegerFor;
 		positive32BitValueOf = interpreterProxy->positive32BitValueOf;
 		primitiveFail = interpreterProxy->primitiveFail;
-		push = interpreterProxy->push;
 		pushBool = interpreterProxy->pushBool;
 		pushInteger = interpreterProxy->pushInteger;
 		slotSizeOf = interpreterProxy->slotSizeOf;
@@ -1558,6 +1638,7 @@
 		stackObjectValue = interpreterProxy->stackObjectValue;
 		stackValue = interpreterProxy->stackValue;
 		storeIntegerofObjectwithValue = interpreterProxy->storeIntegerofObjectwithValue;
+		superclassOf = interpreterProxy->superclassOf;
 #endif /* !defined(SQUEAK_BUILTIN_PLUGIN) */
 	}
 	return ok;

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
    from
-	CoInterpreter VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -35,25 +35,30 @@
 /* StackInterpreter class>>preambleCCode */
 /* Disable Intel compiler inlining of warning which is used for breakpoints */
 #pragma auto_inline off
+sqInt warnpid;
 void
 warning(char *s) { /* Print an error message but don't exit. */
-	printf("\n%s\n", s);
+	if (warnpid)
+		printf("\n%s pid %ld\n", s, warnpid);
+	else
+		printf("\n%s\n", s);
 }
 void
 warningat(char *s, int l) { /* ditto with line number. */
-#if 0
-	printf("\n%s %d\n", s, l);
-#else /* use alloca to call warning so one does not have to remember to set two breakpoints... */
+	/* use alloca to call warning so one does not have to remember to set two breakpoints... */
 	char *sl = alloca(strlen(s) + 16);
 	sprintf(sl, "%s %d", s, l);
 	warning(sl);
-#endif
 }
 #pragma auto_inline on
 
 void
-invalidCompactClassError(char *s) { /* Print a compact class index error message and exit. */
+invalidCompactClassError(char *s) { /* Print a (compact) class index error message and exit. */
+#if SPURVM
+	printf("\nClass %s does not have the required class index\n", s);
+#else
 	printf("\nClass %s does not have the required compact class index\n", s);
+#endif
 	exit(-1);
 }
 
@@ -2074,7 +2079,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.823";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.826";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42932,7 +42937,7 @@
 	len = strlen(aCString);
 	newString = instantiateClassindexableSize(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << ShiftForWord)), len);
 	if (!(newString == null)) {
-		strncpy(newString + (BaseHeaderSize), aCString, len);
+		strncpy(((char *) (newString + (BaseHeaderSize))), aCString, len);
 	}
 	return newString;
 }
@@ -52650,7 +52655,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -52751,11 +52756,11 @@
 		GIV(primFailCode) = reasonCode;
 		value = 0;
 	l8:	/* end stObject:at: */;
-		(!GIV(primFailCode)
-			? (/* begin pop:thenPush: */
-				longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value),
-				(GIV(stackPointer) = sp))
-			: 0);
+		if (!GIV(primFailCode)) {
+			/* begin pop:thenPush: */
+			longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value);
+			GIV(stackPointer) = sp;
+		}
 		return;
 	}
 	/* begin externalWriteBackHeadFramePointers */
@@ -52815,7 +52820,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -52840,7 +52845,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		(GIV(primFailCode) = PrimErrBadIndex);
+		GIV(primFailCode) = PrimErrBadIndex;
 		return;
 	}
 	value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
@@ -53021,11 +53026,11 @@
 		}
 		value;
 	l7:	/* end stObject:at:put: */;
-		(!GIV(primFailCode)
-			? (/* begin pop:thenPush: */
-				longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value),
-				(GIV(stackPointer) = sp))
-			: 0);
+		if (!GIV(primFailCode)) {
+			/* begin pop:thenPush: */
+			longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value);
+			GIV(stackPointer) = sp;
+		}
 		return;
 	}
 	/* begin externalWriteBackHeadFramePointers */
@@ -54338,7 +54343,7 @@
 	assert(pageListIsWellFormed());
 	
 	if (GIV(fullGCLock) > 0) {
-		(GIV(primFailCode) = PrimErrInappropriate);
+		GIV(primFailCode) = PrimErrInappropriate;
 		return;
 	}
 	incrementalGC();

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-07-19 00:42:28 UTC (rev 3048)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
    from
-	CoInterpreter VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -38,25 +38,30 @@
 /* StackInterpreter class>>preambleCCode */
 /* Disable Intel compiler inlining of warning which is used for breakpoints */
 #pragma auto_inline off
+sqInt warnpid;
 void
 warning(char *s) { /* Print an error message but don't exit. */
-	printf("\n%s\n", s);
+	if (warnpid)
+		printf("\n%s pid %ld\n", s, warnpid);
+	else
+		printf("\n%s\n", s);
 }
 void
 warningat(char *s, int l) { /* ditto with line number. */
-#if 0
-	printf("\n%s %d\n", s, l);
-#else /* use alloca to call warning so one does not have to remember to set two breakpoints... */
+	/* use alloca to call warning so one does not have to remember to set two breakpoints... */
 	char *sl = alloca(strlen(s) + 16);
 	sprintf(sl, "%s %d", s, l);
 	warning(sl);
-#endif
 }
 #pragma auto_inline on
 
 void
-invalidCompactClassError(char *s) { /* Print a compact class index error message and exit. */
+invalidCompactClassError(char *s) { /* Print a (compact) class index error message and exit. */
+#if SPURVM
+	printf("\nClass %s does not have the required class index\n", s);
+#else
 	printf("\nClass %s does not have the required compact class index\n", s);
+#endif
 	exit(-1);
 }
 
@@ -2077,7 +2082,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.823";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.826";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42941,7 +42946,7 @@
 	len = strlen(aCString);
 	newString = instantiateClassindexableSize(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassByteString << ShiftForWord)), len);
 	if (!(newString == null)) {
-		strncpy(newString + (BaseHeaderSize), aCString, len);
+		strncpy(((char *) (newString + (BaseHeaderSize))), aCString, len);
 	}
 	return newString;
 }
@@ -52659,7 +52664,7 @@
 
 	index = longAt(GIV(stackPointer));
 	if (!((index & 1))) {
-		(GIV(primFailCode) = PrimErrBadArgument);
+		GIV(primFailCode) = PrimErrBadArgument;
 		return;
 	}
 	index = (index >> 1);
@@ -52760,11 +52765,11 @@
 		GIV(primFailCode) = reasonCode;
 		value = 0;
 	l8:	/* end stObject:at: */;
-		(!GIV(primFailCode)
-			? (/* begin pop:thenPush: */
-				longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value),
-				(GIV(stackPointer) = sp))
-			: 0);
+		if (!GIV(primFailCode)) {
+			/* begin pop:thenPush: */
+			longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value);
+			GIV(stackPointer) = sp;
+		}
 		return;
 	}
 	/* begin externalWriteBackHeadFramePointers */
@@ -52824,7 +52829,7 @@
 		stSize = (sp1 >> 1);
 	l2:	/* end fetchStackPointerOf: */;
 		if (!(((index >= 1) && (index <= stSize)))) {
-			(GIV(primFailCode) = PrimErrBadIndex);
+			GIV(primFailCode) = PrimErrBadIndex;
 			return;
 		}
 		/* begin subscript:with:format: */
@@ -52849,7 +52854,7 @@
 	assert((senderOop & 1));
 	spouseFP = pointerForOop(senderOop - 1);
 	if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
-		(GIV(primFailCode) = PrimErrBadIndex);
+		GIV(primFailCode) = PrimErrBadIndex;
 		return;
 	}
 	value = ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())
@@ -53030,11 +53035,11 @@
 		}
 		value;
 	l7:	/* end stObject:at:put: */;
-		(!GIV(primFailCode)
-			? (/* begin pop:thenPush: */
-				longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value),
-				(GIV(stackPointer) = sp))
-			: 0);
+		if (!GIV(primFailCode)) {
+			/* begin pop:thenPush: */
+			longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), value);
+			GIV(stackPointer) = sp;
+		}
 		return;
 	}
 	/* begin externalWriteBackHeadFramePointers */
@@ -54347,7 +54352,7 @@
 	assert(pageListIsWellFormed());
 	
 	if (GIV(fullGCLock) > 0) {
-		(GIV(primFailCode) = PrimErrInappropriate);
+		GIV(primFailCode) = PrimErrInappropriate;
 		return;
 	}
 	incrementalGC();

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/vm/interp.h	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.823 uuid: 2d337398-d2dd-4715-9476-9a463c29efad
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-07-17 00:21:34 UTC (rev 3047)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-07-19 00:42:28 UTC (rev 3048)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.824 uuid: 2f058f16-c0e9-4231-b14a-fe2dadb19735
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
    from
-	CoInterpreter VMMaker.oscog-eem.824 uuid: 2f058f16-c0e9-4231-b14a-fe2dadb19735
+	CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.824 uuid: 2f058f16-c0e9-4231-b14a-fe2dadb19735 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.826 uuid: baaa71a3-d71b-4656-be88-ecc3e7b6afe5 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -35,25 +35,30 @@
 /* StackInterpreter class>>preambleCCode */
 /* Disable Intel compiler inlining of warning which is used for breakpoints */
 #pragma auto_inline off
+sqInt warnpid;
 void
 warning(char *s) { /* Print an error message but don't exit. */
-	printf("\n%s\n", s);
+	if (warnpid)
+		printf("\n%s pid %ld\n", s, warnpid);
+	else
+		printf("\n%s\n", s);
 }
 void
 warningat(char *s, int l) { /* ditto with line number. */
-#if 0
-	printf("\n%s %d\n", s, l);
-#else /* use alloca to call warning so one does not have to remember to set two breakpoints... */
+	/* use alloca to call warning so one does not have to remember to set two breakpoints... */
 	char *sl = alloca(strlen(s) + 16);
 	sprintf(sl, "%s %d", s, l);
 	warning(sl);
-#endif
 }
 #pragma auto_inline on
 
 void
-invalidCompactClassError(char *s) { /* Print a compact class index error message and exit. */
+invalidCompactClassError(char *s) { /* Print a (compact) class index error message and exit. */
+#if SPURVM
+	printf("\nClass %s does not have the required class index\n", s);
+#else
 	printf("\nClass %s does not have the required compact class index\n", s);
+#endif
 	exit(-1);
 }
 
@@ -2303,7 +2308,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.824";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.826";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -23858,6 +23863,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -25551,6 +25557,7 @@
 		/* begin allOldSpaceObjectsDo: */
 		/* begin allOldSpaceObjectsFrom:do: */
 		/* begin allOldSpaceEntitiesFrom:do: */
+		assert(isOldObject(GIV(nilObj)));
 		prevPrevObj1 = (prevObj1 = null);
 		objOop11 = GIV(nilObj);
 		while (1) {
@@ -31073,6 +31080,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -37906,6 +37914,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -38624,6 +38633,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -40230,7 +40240,8 @@
 			}
 			weakObj = referent;
 			if ((processWeakSurvivor(weakObj))
-			 && (isOldObject(weakObj))) {
+			 && ((isOldObject(weakObj))
+			 && (!(((((usqInt) (longAt(weakObj))) >> 29) & 1) != 0)))) {
 				remember(weakObj);
 			}
 			/* begin nextCorpseOrNil: */
@@ -40316,6 +40327,7 @@
 	assert(isNonImmediate(objOop));
 	assert(!(isYoungObject(objOop)));
 	assert(!(isRemembered(objOop)));
+	assert(!(isInRememberedSet(objOop)));
 	/* begin setIsRememberedOf:to: */
 	flag("endianness");
 	longAtput(objOop, (longAt(objOop)) | (1 << 29));
@@ -41080,6 +41092,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -41349,6 +41362,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -41559,6 +41573,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -41591,6 +41606,7 @@
 
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop = GIV(nilObj);
 	while (1) {
@@ -43366,6 +43382,7 @@
 	
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -43755,6 +43772,7 @@
 	freeChunk = GIV(firstFreeChunk);
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -44397,6 +44415,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -44812,6 +44831,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj11 = (prevObj11 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -44877,6 +44897,7 @@
 	: GIV(firstFreeChunk))));
 	firstOfFreeRun = (prevPrevFree = (prevFree = 0));
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(lowest));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop3 = lowest;
 	while (1) {
@@ -45612,6 +45633,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -45736,6 +45758,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -46925,6 +46948,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -48115,6 +48139,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop = GIV(nilObj);
 	while (1) {
@@ -48321,6 +48346,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -49648,6 +49674,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop = GIV(nilObj);
 	while (1) {
@@ -50043,6 +50070,7 @@
 	}
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop2 = GIV(nilObj);
 	while (1) {
@@ -50410,6 +50438,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -50558,6 +50587,7 @@
 	
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop1 = GIV(nilObj);
 	while (1) {
@@ -50698,6 +50728,7 @@
 	/* begin allHeapEntitiesDo: */
 	/* begin allOldSpaceEntitiesDo: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj = (prevObj = null);
 	objOop = GIV(nilObj);
 	while (1) {
@@ -50863,6 +50894,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -51251,6 +51283,7 @@
 	/* begin allOldSpaceObjectsDo: */
 	/* begin allOldSpaceObjectsFrom:do: */
 	/* begin allOldSpaceEntitiesFrom:do: */
+	assert(isOldObject(GIV(nilObj)));
 	prevPrevObj1 = (prevObj1 = null);
 	objOop11 = GIV(nilObj);
 	while (1) {
@@ -51472,15 +51505,15 @@
 	else {
 		resolvedObj = objOop;
 	}
-	if (!(GIV(scavengeInProgress)
-		 && (((resolvedObj & 3) == 0)
-		 && (isReallyYoungObject(resolvedObj))))) {
+	if (GIV(scavengeInProgress)
+	 && (((resolvedObj & 3) == 0)
+	 && (isReallyYoungObject(resolvedObj)))) {
 
 		/* a becommed or compacted object whose target is in old space, or a CogMethod. */
 
-		return resolvedObj;
+		return copyAndForward(resolvedObj);
 	}
-	return copyAndForward(resolvedObj);
+	return resolvedObj;
 }
 
 

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list