[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