[Vm-dev] [commit][2704] CogVM source as per VMMaker.oscog-eem.274.

commits at squeakvm.org commits at squeakvm.org
Tue Mar 19 15:55:33 UTC 2013


Revision: 2704
Author:   eliot
Date:     2013-03-19 08:55:25 -0700 (Tue, 19 Mar 2013)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.274.

Fix PC-mapping for NewspeakV4.  Absent receiver sends must not be maped twice,
once for IsNSSend and once for IsSend.  So introduce class vars that state
whether instructioon set uses PushImplicitReceiver (NSSendIsPCAnnotated is true)
or SendAbsentImplicit (NSSendIsPCAnnotated is false).

More info on optimizations to defeat for gcc 4.x compilation.

Modified Paths:
--------------
    branches/Cog/cygwinbuild/HowToBuild
    branches/Cog/macbuild/HowToBuild
    branches/Cog/nscogbuild/cygwinbuild/HowToBuild
    branches/Cog/nscogbuild/unixbuild/HowToBuild
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/unixbuild/HowToBuild

Added Paths:
-----------
    branches/Cog/nscogbuild/macbuild/HowToBuild

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

Modified: branches/Cog/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/cygwinbuild/HowToBuild	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/cygwinbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -30,6 +30,7 @@
    evalautes to the cygwin gcc 3.4.x not the MinGW gcc 2.95.x (try gcc -v).
 
    Caution: if your default gcc is too recent (gcc-4), compilation may fail.
+   See below, Optimization level and gcc version.
    In this case, you should rather use the following commmand
      make  CC=gcc-3 LD=gcc-3 DLLWRAP='dllwrap -mno-cygwin --driver-name gcc-3'
    
@@ -81,3 +82,14 @@
 and build the plugin either via make (for the entire VM) or just
   $ cd ROOT/cygwinbuild
   $ make build/vm/BochsIA32Plugin.dll
+
+Optimization level and gcc version
+----------------------------------
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+See http://smallissimo.blogspot.fr/2013/02/compiling-squeak-cog-virtual-machine-on.html

Modified: branches/Cog/macbuild/HowToBuild
===================================================================
--- branches/Cog/macbuild/HowToBuild	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/macbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -40,3 +40,19 @@
    macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm).
 
 N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir.
+
+
+Optimization level and gcc version
+----------------------------------
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+
+Clang
+-----
+So far Clang only works at -O1.  So it may also be subject to some of the same
+issues as gcc.  Please report back successes with clang, especially at -O2.

Modified: branches/Cog/nscogbuild/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/nscogbuild/cygwinbuild/HowToBuild	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/nscogbuild/cygwinbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -31,6 +31,7 @@
    evalautes to the cygwin gcc 3.4.x not the MinGW gcc 2.95.x (try gcc -v).
 
    Caution: if your default gcc is too recent (gcc-4), compilation may fail.
+   See below, Optimization level and gcc version.
    In this case, you should rather use the following commmand
      make  CC=gcc-3 LD=gcc-3 DLLWRAP='dllwrap -mno-cygwin --driver-name gcc-3'
    
@@ -81,3 +82,14 @@
 and build the plugin either via make (for the entire VM) or just
   $ cd ROOT/nscogbuild/cygwinbuild
   $ make build/vm/BochsIA32Plugin.dll
+
+Optimization level and gcc version
+----------------------------------
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+See http://smallissimo.blogspot.fr/2013/02/compiling-squeak-cog-virtual-machine-on.html

Added: branches/Cog/nscogbuild/macbuild/HowToBuild
===================================================================
--- branches/Cog/nscogbuild/macbuild/HowToBuild	                        (rev 0)
+++ branches/Cog/nscogbuild/macbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -0,0 +1,127 @@
+How To Build On Linux
+---------------------
+
+Contents:
+	- Checking out sources
+	- How to build the Cog Croquet VM on Unix
+	- Testing an external plugin has completely linked
+	- Compiling in 32-bit mode on a 64-bit linux
+	- Testing an external plugin has completely linked
+	- N.B. Please read: Optimization level and gcc version
+
+
+Checking out sources
+-------------------------------
+To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image
+which contains
+http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.changes
+http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.image
+Start up VMMaker-Squeak4.1.image.  In it is a workspace containing a doit that
+uses something like generate:and:to:platformDir:excluding:.  Doit.
+
+
+How to build the Cog Croquet VM on Unix
+-------------------------------
+1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 & libxt source))
+2. Check out the following sources from svn (if you haven't already - if you're
+   reading this in unixbuild its likely you've already got the sources)
+     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms
+     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src
+     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild
+3. Open a shell, cd into the unixbuild/bld directory and execute
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+     make install prefix=WhereYouWantTheVmToGo
+
+	N.B. If you're on a 64-bit linux read 3e below!!
+	N.B. On Ubuntu *do not* supply "LIBS=-lpthread", i.e. use
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0"
+
+4. At the end of it you'll get a new VM in the path provided via -prefix
+
+N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir.
+
+
+3a. For an assert-enabled VM do
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O1 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+
+3b. For a full debug VM do
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g3 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=1" LIBS=-lpthread
+
+3c. For a multi-threaded VM open a shell and cd to the mtbld directory.  Then
+   execute
+     ../../platforms/unix/config/configure INTERP=cointerpmt --without-npsqueak CFLAGS="-g -O2 -msse2 -DNDEBUG -DCOGMTVM=1 -DDEBUGVM=0 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1" LIBS=-lpthread
+     make squeakmt
+     make installmt prefix=WhereYouWantTheVmToGo
+
+N.B.  As of early 2010 the linux pthreads implementation doesn't appear to
+provide a way of setting priorities for the default thread scheduling policy
+SCHED_OTHER (unlike e.g. Mac OS X) and doesn't appear to allow changing the
+policy to one that does (e.g. SCHED_RR).  So for now we use the itimer
+scheme.  See platforms/unix/vm/sqUnixHeartbeat.c
+
+3d. If you want to get the Cog VM simulator working you'll need to build the
+BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll
+need to first build bochs.  First check-out the processor simulator source tree
+containing Bochs:
+     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
+Then build libraries linuxbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/linuxbochs
+  $ ./conf.COG
+  $ ../bochs/makeem
+and build the plugin via
+  $ cd ROOT/unixbuild/bld/BochsIA32Plugin
+  $ make
+
+3e. (see Compiling in 32-bit mode on a 64-bit linux below)
+If you're building the VM on a 64-bit OS, you'll need a compiler which can
+compile and link to 32-bit binaries. On most Linuxes the gcc-multilib package
+provides the 32-bit compiler and the ia32-libs provides the 32-bit libraries.
+You'll also have to add the -m32 switch to all gcc & g++ invocations.  The
+easiest way to do this is to add CC="gcc -m32" & CXX="g++ -m32" to the configure
+script:
+     ../../platforms/unix/config/configure CC="gcc -m32" CXX="g++ -m32" --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+To run a 32-bit VM on a 64-bit OS, you'll also need the 32-bit libraries
+provided by the ia32-libs package.
+
+Compiling in 32-bit mode on a 64-bit linux
+-------------------------------
+Follow 3e. above.  Also note that according to Paul DeBruicker the following
+packages need to be installed to compile in 32-bt mode on 64-bit ubuntu.  YMMV.
+
+build-essential
+lib32asound2-dev
+libgl1-mesa-dev
+libglu1-mesa-dev
+ia32-libs
+gcc-multilib
+g++multilib
+
+In addition phil at highoctane.be installed libc6dev-i386.
+
+This in itself may not be enough, but persistence will pay off.  See for example
+http://permalink.gmane.org/gmane.comp.lang.smalltalk.pharo.devel/75198.
+
+
+Testing an external plugin has completely linked
+-------------------------------
+You may find that an external plugin compiles and links but does not load.
+This is usually because it contans undefined symbols.  To find undefined
+symbols, remake the plugin, capturing the link step and then supply
+	-Wl,--warn-unresolved-symbols -Wl,--no-allow-shlib-undefined
+when manually repeating the link command
+
+
+Optimization level and gcc version
+----------------------------------
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+
+Clang
+-----
+So far Clang only works at -O1.  So it may also be subject to some of the same
+issues as gcc.  Please report back successes with clang, especially at -O2.

Modified: branches/Cog/nscogbuild/unixbuild/HowToBuild
===================================================================
--- branches/Cog/nscogbuild/unixbuild/HowToBuild	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/nscogbuild/unixbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -87,9 +87,13 @@
 
 Optimization level and gcc version
 ----------------------------------
-There are issues with gcc version > 4.2.1.  One must include -fno-caller-saves
-with these versions. e.g.
-     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
 See http://smallissimo.blogspot.fr/2013/02/compiling-squeak-cog-virtual-machine-on.html
 
 There appear to be issues with 3.4.x gcc version on RedHat.  In particular

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/nscogsrc/vm/cogit.c	2013-03-19 15:55:25 UTC (rev 2704)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.270 uuid: 014f0153-bb02-49b7-b544-d8f3ac2deef6
+	CCodeGenerator VMMaker.oscog-eem.274 uuid: 559311c1-938a-409c-9ee4-e17fb0e2b85f
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid: 014f0153-bb02-49b7-b544-d8f3ac2deef6
+	StackToRegisterMappingCogit VMMaker.oscog-eem.274 uuid: 559311c1-938a-409c-9ee4-e17fb0e2b85f
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid: 014f0153-bb02-49b7-b544-d8f3ac2deef6 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.274 uuid: 559311c1-938a-409c-9ee4-e17fb0e2b85f " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -119,6 +119,7 @@
 #define AlignmentNops 2
 #define AllButTypeMask 0xFFFFFFFCUL
 #define AltBlockCreationBytecodeSize 3
+#define AltNSSendIsPCAnnotated 0
 #define AndCqR 85
 #define AndCwR 92
 #define AndRR 78
@@ -293,6 +294,7 @@
 #define NewspeakVM 1
 #define Nop 8
 #define NotFullyInitialized -1
+#define NSSendIsPCAnnotated 1
 #define NumObjRefsInRuntime 2
 #define NumSendTrampolines 4
 #define NumTrampolines 58
@@ -842,7 +844,7 @@
 static sqInt isJumpAt(AbstractInstruction * self_in_isJumpAt, sqInt pc);
 static sqInt isLongJump(AbstractInstruction * self_in_isLongJump);
 static sqInt isPCDependent(AbstractInstruction * self_in_isPCDependent);
-static sqInt isPCMappedAnnotation(sqInt annotation);
+static sqInt isPCMappedAnnotationalternateInstructionSet(sqInt annotation, sqInt isAlternateInstSet);
 sqInt isPCWithinMethodZone(char *address);
 static sqInt isQuick(AbstractInstruction * self_in_isQuick, unsigned long operand);
 sqInt isSendReturnPC(sqInt retpc);
@@ -10075,7 +10077,7 @@
 
 /*	Cached implicit receiver implementation. Caller looks like
 	mov selector, ClassReg
-	call cePushImplicitReceiver
+	call ceImplicitReceiverTrampoline
 	br continue
 	Lclass	.word
 	Lmixin:	.word
@@ -10083,7 +10085,12 @@
 	If class matches class of receiver then mixin contains either 0 or the
 	implicit receiver.
 	If 0, answer the actual receiver. This is done in the trampoline.
-	See generateNewspeakRuntime. */
+	See generateNewspeakRuntime.
+	
+	N.B. For PC mapping either this is used for SendAbsentImplicit or for
+	PushAbsentReceiver but not both. So any Newspeak instruction set has to
+	choose either SendAbsentImplicit
+	or PushAbsentReceiver. See isPCMappedAnnotation:alternateInstructionSet: */
 /*	Cached implicit receiver implementation. Caller looks like
 	mov selector, ClassReg
 	call cePushImplicitReceiver
@@ -14295,11 +14302,14 @@
 }
 
 static sqInt
-isPCMappedAnnotation(sqInt annotation)
+isPCMappedAnnotationalternateInstructionSet(sqInt annotation, sqInt isAlternateInstSet)
 {
-	return ((annotation == IsSendCall)
-	 || (annotation == IsNSSendCall))
-	 || (annotation == HasBytecodePC);
+	return (annotation == IsSendCall)
+			 || (((annotation == IsNSSendCall)
+		 && ((isAlternateInstSet
+			? AltNSSendIsPCAnnotated
+			: NSSendIsPCAnnotated)))
+			 || (annotation == HasBytecodePC));
 }
 
 sqInt
@@ -14822,9 +14832,12 @@
 		if (mapByte >= FirstAnnotation) {
 			annotation = ((usqInt) mapByte) >> AnnotationShift;
 			mcpc += mapByte & DisplacementMask;
-			if (((annotation == IsSendCall)
-	 || (annotation == IsNSSendCall))
-			 || (annotation == HasBytecodePC)) {
+			if ((annotation == IsSendCall)
+							 || (((annotation == IsNSSendCall)
+				 && ((bsOffset > 0
+					? AltNSSendIsPCAnnotated
+					: NSSendIsPCAnnotated)))
+							 || (annotation == HasBytecodePC))) {
 							while (1) {
 					byte = (fetchByteofObject(bcpc, aMethodObj)) + bsOffset;
 					descriptor = generatorAt(byte);
@@ -14835,7 +14848,7 @@
 					}
 					else {
 						if (((descriptor->isReturn))
-						 && (bcpc > latestContinuation)) {
+						 && (bcpc >= latestContinuation)) {
 							return 0;
 						}
 						if ((isBranch(descriptor))
@@ -16367,7 +16380,7 @@
 		return 0;
 	}
 	annotation = (&(annotations[annotationIndex - 1]));
-	if (!(isPCMappedAnnotation((annotation->annotation)))) {
+	if (!(isPCMappedAnnotationalternateInstructionSet((annotation->annotation), bytecodeSetOffset > 0))) {
 		return 0;
 	}
 	prevIndex = opcodeIndex - 1;

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/nscogsrc/vm/cogit.h	2013-03-19 15:55:25 UTC (rev 2704)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.270 uuid: 014f0153-bb02-49b7-b544-d8f3ac2deef6
+	CCodeGenerator VMMaker.oscog-eem.274 uuid: 559311c1-938a-409c-9ee4-e17fb0e2b85f
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/nscogsrc/vm/cogmethod.h	2013-03-19 15:55:25 UTC (rev 2704)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.270 uuid: 014f0153-bb02-49b7-b544-d8f3ac2deef6
+	CCodeGenerator VMMaker.oscog-eem.274 uuid: 559311c1-938a-409c-9ee4-e17fb0e2b85f
  */
 
 typedef struct {


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Fri Mar  8 15:40:04 PST 2013
   + Tue Mar 19 08:54:50 PDT 2013

Modified: branches/Cog/unixbuild/HowToBuild
===================================================================
--- branches/Cog/unixbuild/HowToBuild	2013-03-12 01:59:18 UTC (rev 2703)
+++ branches/Cog/unixbuild/HowToBuild	2013-03-19 15:55:25 UTC (rev 2704)
@@ -113,9 +113,13 @@
 
 Optimization level and gcc version
 ----------------------------------
-There are issues with gcc version > 4.2.1.  One must include -fno-caller-saves
-with these versions. e.g.
-     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
+There are issues with gcc version > 4.2.1.  Any of the following flags may break the build at -O2:
+-ftree-pre
+-fpartial-inlining
+-fcaller-saves
+
+So turn them off.  e.g.
+     ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
 See http://smallissimo.blogspot.fr/2013/02/compiling-squeak-cog-virtual-machine-on.html
 
 There appear to be issues with 3.4.x gcc version on RedHat.  In particular



More information about the Vm-dev mailing list