[commit] r2390 - OSCog source as per VMMaker.oscog-eem.70. Add Newspeak VM generation to VMMaker

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[commit] r2390 - OSCog source as per VMMaker.oscog-eem.70. Add Newspeak VM generation to VMMaker

commits-3
 
Author: eliot
Date: 2011-06-02 13:37:13 -0700 (Thu, 02 Jun 2011)
New Revision: 2390

Added:
   branches/Cog/cygwinbuild/Pharo.def.in
   branches/Cog/cygwinbuild/Pharo.ico
   branches/Cog/cygwinbuild/Pharo.rc
Modified:
   branches/Cog/image/VMMaker-Squeak4.1.changes
   branches/Cog/image/VMMaker-Squeak4.1.image
   branches/Cog/image/Workspace.text
   branches/Cog/image/Workspace2.text
   branches/Cog/macbuild/plugins.int
   branches/Cog/nssrc/vm/gcc3x-interp.c
   branches/Cog/nssrc/vm/interp.c
   branches/Cog/nssrc/vm/interp.h
   branches/Cog/nssrc/vm/vmCallback.h
   branches/Cog/scripts/mkvmarchives
   branches/Cog/scripts/uploadvms
   branches/Cog/src/vm/cointerp.c
   branches/Cog/src/vm/cointerp.h
   branches/Cog/src/vm/gcc3x-cointerp.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
Log:
OSCog source as per VMMaker.oscog-eem.70.  Add Newspeak VM generation to VMMaker
image.  Add Pharo icons to win build.  Generate VMs using transitive pruneUnr-
eachableMethods.  Rename QVMProfileMacSupportPlugin to VMProfileMacSupportPlugin


Added: branches/Cog/cygwinbuild/Pharo.def.in
===================================================================
--- branches/Cog/cygwinbuild/Pharo.def.in                        (rev 0)
+++ branches/Cog/cygwinbuild/Pharo.def.in 2011-06-02 20:37:13 UTC (rev 2390)
@@ -0,0 +1,3 @@
+; Set the total stack size to 4 megabytes (0x400000), reserving 4Mb and
+; committing 64k (0x10000)
+STACKSIZE 0x400000,0x10000

Added: branches/Cog/cygwinbuild/Pharo.ico
===================================================================
(Binary files differ)


Property changes on: branches/Cog/cygwinbuild/Pharo.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/Cog/cygwinbuild/Pharo.rc
===================================================================
--- branches/Cog/cygwinbuild/Pharo.rc                        (rev 0)
+++ branches/Cog/cygwinbuild/Pharo.rc 2011-06-02 20:37:13 UTC (rev 2390)
@@ -0,0 +1,37 @@
+#ifdef _WIN32
+1                       ICON    DISCARDABLE     "Pharo.ico"
+2                       ICON    DISCARDABLE     "Pharo.ico"
+3                       ICON    DISCARDABLE     "Pharo.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 1,0,15,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0xaL
+ FILEOS 0x10001L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904E4"    // Lang=US English, CharSet=Windows Multilin
+        BEGIN
+            VALUE "CompanyName", "pharo-project.org\0"
+            VALUE "FileDescription", "Pharo Cog Virtual Machine 1.0.15\0"
+            VALUE "FileVersion", "3.11.3\0"
+            VALUE "LegalCopyright", "Copyright \251 1996-2010. All Rights Reserved.\0"
+            VALUE "ProductName", "Pharo\0"
+            VALUE "ProductVersion", "1.0.15\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1252
+    END
+END
+#endif
\ No newline at end of file

Modified: branches/Cog/image/VMMaker-Squeak4.1.changes
===================================================================
--- branches/Cog/image/VMMaker-Squeak4.1.changes 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/image/VMMaker-Squeak4.1.changes 2011-06-02 20:37:13 UTC (rev 2390)
@@ -193678,4 +193678,159 @@
  FFIPlugin ReentrantARMFFIPlugin ReentrantFFIPlugin ReentrantPPCBEFFIPlugin
  NewsqueakIA32ABIPlugin NewsqueakIA32ABIPluginAttic)!
 
-----QUIT----{1 June 2011 . 4:49:44 pm} VMMaker-Squeak4.1.image priorSource: 7358714!
\ No newline at end of file
+----QUIT----{1 June 2011 . 4:49:44 pm} VMMaker-Squeak4.1.image priorSource: 7358714!
+
+----STARTUP----{2 June 2011 . 11:53:22 am} as /Users/eliot/Cog/oscogvm/image/VMMaker-Squeak4.1.image!
+
+
+'From Squeak4.1 of 17 April 2010 [latest update: #9957] on 2 June 2011 at 11:53:08 am'!
+!ObjectMemory methodsFor: 'gc -- compaction' stamp: 'eem 6/2/2011 11:52' prior: 41562934!
+existImmutableReferencesToForwardedInRangeFrom: memStart to: memEnd
+ "Answer if any immutable objects refer to any forwarded objects so that the become: primitives can fail if a become would update a reference from an immutable object."
+
+ | oop |
+ <inline: true>
+ 1 to: rootTableCount do:
+ [:i |
+ oop := rootTable at: i.
+ (oop < memStart or: [oop >= memEnd]) ifTrue:
+ ["Note: must not remap the fields of any object twice!!"
+ "remap this oop only if not in the memory range
+ covered below"
+ (self objectIsImmutableAndReferencesForwarded: oop) ifTrue:
+ [^true]]].
+
+ oop := self oopFromChunk: memStart.
+ [oop < memEnd] whileTrue:
+ [(self isFreeObject: oop) ifFalse:
+ [(self objectIsImmutableAndReferencesForwarded: oop) ifTrue:
+ [^true]].
+ oop := self objectAfterWhileForwarding: oop].
+ ^false! !
+
+----End fileIn of /Users/eliot/Cog/ObjectMemory-existImmutableReferencesToForwardedInRangeFromto.st----!
+!CCodeGenerator commentStamp: 'tpr 5/2/2003 14:30' prior: 34425829!
+This class oversees the translation of a subset of Smalltalk to C, allowing the comforts of Smalltalk during development and the efficiency and portability of C for the resulting interpreter.  
+See VMMaker for more useful info!
+
+----STARTUP----{2 June 2011 . 1:01:29 pm} as /Users/eliot/Cog/oscogvm/image/VMMaker-Squeak4.1.image!
+
+!InterpreterSimulatorMSB64 methodsFor: 'as yet unclassified' stamp: 'di 6/9/2004 12:17' prior: 40937807!
+byteSwapped: w
+ "Return the given integer with its bytes in the reverse order."
+
+ ^ (super byteSwapped: ((w bitShift: -32) bitAnd: 16rFFFFFFFF)) +
+  ((super byteSwapped: (w bitAnd: 16rFFFFFFFF)) bitShift: 32)! !
+!InterpreterSimulatorMSB64 methodsFor: 'as yet unclassified' stamp: 'di 7/3/2004 10:40' prior: 40938125!
+long32At: byteAddress
+ "Return the 32-bit word at byteAddress which must be 0 mod 4."
+
+ ^ super longAt: byteAddress! !
+!InterpreterSimulatorMSB64 methodsFor: 'as yet unclassified' stamp: 'di 7/3/2004 10:41' prior: 40938349!
+long32At: byteAddress put: a32BitValue
+ "Store the 32-bit value at byteAddress which must be 0 mod 4."
+
+ super longAt: byteAddress put: a32BitValue! !
+!InterpreterSimulatorMSB64 methodsFor: 'as yet unclassified' stamp: 'di 6/9/2004 15:43' prior: 40938605!
+longAt: byteAddress
+ "Note: Adjusted for Smalltalk's 1-based array indexing."
+
+ ^ ((super longAt: byteAddress) bitShift: 32) bitOr: (super longAt: byteAddress + 4)! !
+!InterpreterSimulatorMSB64 methodsFor: 'as yet unclassified' stamp: 'di 6/9/2004 15:48' prior: 40938877!
+longAt: byteAddress put: a64BitValue
+ "Note: Adjusted for Smalltalk's 1-based array indexing."
+
+ super longAt: byteAddress put: (a64BitValue bitShift: -32).
+ super longAt: byteAddress + 4 put: (a64BitValue bitAnd: 16rFFFFFFFF).
+ ^ a64BitValue! !
+!CCodeGenerator methodsFor: 'inlining' stamp: 'eem 6/2/2011 12:38' prior: 34372907!
+pruneUnreachableMethods
+ "Remove any methods that are not reachable. Retain methods needed by the translated classes - see implementors of requiredMethodNames"
+
+ | newMethods previousSize visited |
+ "add all the exported methods and all the called methods to the requiredSelectors"
+ "keep all the fake methods (macros and struct accessors; these are needed
+ to ensure correct code generation."
+
+ methods do: [ :m |
+ m export ifTrue:
+ [requiredSelectors add: m selector].
+ m isRealMethod ifFalse:
+ [requiredSelectors add: m selector]].
+
+ "Now compute the transitive closure..."
+ previousSize := requiredSelectors size.
+ visited := IdentitySet new: methods size.
+ [requiredSelectors do:
+ [:s|
+ (methods at: s ifAbsent: []) ifNotNil:
+ [:m|
+ (visited includes: m) ifFalse:
+ [visited add: m.
+ m isRealMethod ifTrue:
+ [requiredSelectors addAll: m allCalls]]]].
+ requiredSelectors size > previousSize]
+ whileTrue:
+ [previousSize := requiredSelectors size].
+
+ "build a new dictionary of methods from the collection of all the ones to keep"
+ newMethods := Dictionary new: requiredSelectors size.
+ requiredSelectors do:
+ [:sel|
+ methods at: sel ifPresent:[:meth| newMethods at: sel put: meth]].
+ methods := newMethods! !
+!CCodeGenerator methodsFor: 'public' stamp: 'eem 6/2/2011 12:27' prior: 34324168!
+removeUnneededBuiltins
+ | toRemove |
+ toRemove := Set new: 64.
+ methods keysDo:
+ [:sel|
+ (self builtin: sel) ifTrue:
+ [(requiredSelectors includes: sel) ifFalse:
+ [toRemove add: sel]]].
+ toRemove do:
+ [:sel| self removeMethodForSelector: sel]! !
+!CCodeGenerator methodsFor: 'inlining' stamp: 'eem 6/2/2011 12:27' prior: 34376588!
+retainMethods: aListOfSelectorsToKeep
+ "add aListOfSelectorsToKeep to requiredSelectors so that they will not be pruned"
+ requiredSelectors ifNil:[requiredSelectors := Set new:100].
+ requiredSelectors addAll: aListOfSelectorsToKeep.
+ ^aListOfSelectorsToKeep! !
+!InterpreterSimulatorLSB64 methodsFor: 'as yet unclassified' stamp: 'di 6/13/2004 10:56' prior: 40955181!
+long32At: byteAddress
+
+ "Return the 32-bit word at byteAddress which must be 0 mod 4."
+ | lowBits long |
+ lowBits := byteAddress bitAnd: 4.
+ long := self longAt: byteAddress - lowBits.
+ ^ lowBits = 4
+ ifTrue: [ long bitShift: -32 ]
+ ifFalse: [ long bitAnd: 16rFFFFFFFF ].
+! !
+!InterpreterSimulatorLSB64 methodsFor: 'as yet unclassified' stamp: 'di 6/13/2004 11:01' prior: 40955565!
+long32At: byteAddress put: a32BitValue
+ "Store the 32-bit value at byteAddress which must be 0 mod 4."
+ | lowBits long64 longAddress |
+ lowBits := byteAddress bitAnd: 4.
+ lowBits = 0
+ ifTrue:
+ [ "storing into LS word"
+ long64 := self longAt: byteAddress.
+ self longAt: byteAddress
+ put: ((long64 bitAnd: 16rFFFFFFFF00000000) bitOr: a32BitValue)
+ ]
+ ifFalse:
+ [longAddress := byteAddress - 4.
+ long64 := self longAt: longAddress.
+ self longAt: longAddress
+ put: ((long64 bitAnd: 16rFFFFFFFF) bitOr: (a32BitValue bitShift: 32))
+ ]! !
+
+"VMMaker"!
+
+----QUIT----{2 June 2011 . 1:04:20 pm} VMMaker-Squeak4.1.image priorSource: 8051921!
+
+----STARTUP----{2 June 2011 . 1:14:32 pm} as /Users/eliot/Cog/oscogvm/image/VMMaker-Squeak4.1.image!
+
+
+----QUIT----{2 June 2011 . 1:17:56 pm} VMMaker-Squeak4.1.image priorSource: 8058095!
\ No newline at end of file

Modified: branches/Cog/image/VMMaker-Squeak4.1.image
===================================================================
(Binary files differ)

Modified: branches/Cog/image/Workspace.text
===================================================================
--- branches/Cog/image/Workspace.text 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/image/Workspace.text 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,4 +1,4 @@
-This image is intended to build new CoInterpreter or StackInterpreter Cog VMs.
+This image is intended to build new CoInterpreter or StackInterpreter Cog VMs, and a Newspeak VM.
 The following doits create a single; source tree (../src) for all platforms.  Since they use a relative path they will work out of the box.  Generate the entire VM using them.
 
 x86 platforms:
@@ -20,6 +20,17 @@
  platformDir: (FileDirectory default / '../platforms') fullName
  excluding: (InterpreterPlugin withAllSubclasses collect: [:ea| ea name]))
 
+Newspeak VM:
+ (VMMaker
+ generate: NewspeakInterpreter
+ to: (FileDirectory default / '../nssrc') fullName
+ platformDir: (FileDirectory default / '../platforms') fullName
+ including:#( AsynchFilePlugin FloatArrayPlugin RePlugin BalloonEnginePlugin FloatMathPlugin
+ SecurityPlugin BMPReadWriterPlugin NewsqueakIA32ABIPlugin SocketPlugin
+ SoundPlugin BitBltSimulation JPEGReadWriter2Plugin SurfacePlugin DSAPlugin
+ JPEGReaderPlugin UUIDPlugin DropPlugin LargeIntegersPlugin UnixOSProcessPlugin
+ FileCopyPlugin Matrix2x3Plugin Win32OSProcessPlugin FilePlugin
+ MiscPrimitivePlugin InflatePlugin VMProfileMacSupportPlugin))
 To generate a single plugin you can use a VMMaker.
 
 To rebuild this image
Modified: branches/Cog/image/Workspace2.text
===================================================================
--- branches/Cog/image/Workspace2.text 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/image/Workspace2.text 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,4 +1,4 @@
-Remember, set to _your_ initials, then save as VMMaker-oscog.N
+Remember, set to _your_ initials, then save as VMMaker.oscog-initials.N
 (| user pw |
 Utilities setAuthorInitials.
 user := UIManager default request: 'Repository user name'.
@@ -6,7 +6,8 @@
 MCHttpRepository allSubInstancesDo: [ : rep |
  rep user: user;
  password: pw ].
-user = 'anon' ifTrue: [MCFileBasedRepository flushAllCaches])
+user = 'anon' ifTrue: [MCFileBasedRepository flushAllCaches].
+self halt: 'close me')
 
 Smalltalk condenseChanges.
 MCFileBasedRepository flushAllCaches
@@ -60,7 +61,8 @@
 
 "Purge irrelevant history from Cog VMMaker"
 (| vmmwc strings |
-strings := #(681 684 687 689 693 694 695 698 707) collect: [:n| '.', n].
+strings := #(681 684 687 689 693 694 695 698 707 710 711 719 735 737 739 738) collect: [:n| '.', n].
 vmmwc := MCWorkingCopy allManagers detect: [:p| p package name = 'VMMaker'].
 vmmwc instVarNamed: 'ancestry'
- put: (vmmwc ancestry copyReject: [:a| strings anySatisfy: [:ver| a name endsWith: ver]]))
\ No newline at end of file
+ put: (vmmwc ancestry copyReject: [:a| strings anySatisfy: [:ver| a name endsWith: ver]]).
+ self halt: 'close me')
\ No newline at end of file

Modified: branches/Cog/macbuild/plugins.int
===================================================================
--- branches/Cog/macbuild/plugins.int 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/macbuild/plugins.int 2011-06-02 20:37:13 UTC (rev 2390)
@@ -24,7 +24,6 @@
 Matrix2x3Plugin \
 MIDIPlugin \
 MiscPrimitivePlugin \
-QVMProfileMacSupportPlugin \
 RePlugin \
 SecurityPlugin \
 SerialPlugin \
@@ -34,4 +33,5 @@
 SoundPlugin \
 StarSqueakPlugin \
 SurfacePlugin \
-UUIDPlugin
+UUIDPlugin \
+VMProfileMacSupportPlugin \

Modified: branches/Cog/nssrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nssrc/vm/gcc3x-interp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/nssrc/vm/gcc3x-interp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- NewspeakInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ NewspeakInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "NewspeakInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "NewspeakInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -425,7 +425,6 @@
 sqInt isKindOf(sqInt oop, char *className);
 sqInt isMemberOf(sqInt oop, char *className);
 static sqInt lastPointerOf(sqInt oop);
-static sqInt lengthOfNameOfClass(sqInt classOop);
 sqInt lengthOf(sqInt oop);
 static sqInt lengthOfbaseHeaderformat(sqInt oop, sqInt hdr, sqInt fmt);
 sqInt literalCountOf(sqInt methodPointer);
@@ -447,7 +446,6 @@
 sqInt methodPrimitiveIndex(void);
 sqInt methodReturnValue(sqInt oop);
 EXPORT(sqInt) moduleUnloaded(char *aModuleName);
-static char * nameOfClass(sqInt classOop);
 sqInt nilObject(void);
 static sqInt nonWeakFieldsOf(sqInt oop);
 sqInt objectAfter(sqInt oop);
@@ -456,7 +454,6 @@
 sqInt objectExactlyBefore(sqInt oop);
 static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 static sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -800,13 +797,11 @@
 _iss sqInt nextWakeupTick;
 _iss sqInt growHeadroom;
 _iss sqInt statGrowMemory;
-_iss sqInt classNameIndex;
 _iss sqInt interruptCheckCounterFeedBackReset;
 _iss sqInt signalLowSpace;
 _iss usqInt compEnd;
 _iss sqInt freeLargeContexts;
 _iss sqInt lastTick;
-_iss sqInt metaclassSizeBytes;
 _iss sqInt pendingFinalizationSignals;
 _iss sqInt statMarkCount;
 _iss sqInt statShrinkMemory;
@@ -815,11 +810,12 @@
 _iss sqInt statCompMoveCount;
 _iss sqInt statMkFwdCount;
 _iss sqInt statSweepCount;
-_iss sqInt thisClassIndex;
+_iss sqInt classNameIndex;
 _iss sqInt forceTenureFlag;
 _iss usqLong gcStartUsecs;
 _iss sqInt interruptChecksEveryNms;
 _iss sqInt interruptPending;
+_iss sqInt metaclassSizeBytes;
 _iss usqLong statFullGCUsecs;
 _iss sqInt statFullGCs;
 _iss usqLong statIncrGCUsecs;
@@ -835,6 +831,7 @@
 _iss sqInt statGCEndTime;
 _iss usqLong statIGCDeltaUsecs;
 _iss sqInt statPendingFinalizationSignals;
+_iss sqInt thisClassIndex;
 _iss sqInt gcBiasToGrow;
 _iss sqInt gcBiasToGrowGCLimit;
 _iss sqInt gcSemaphoreIndex;
@@ -1455,7 +1452,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine [NewspeakInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Newspeak Virtual Machine [NewspeakInterpreter VMMaker.oscog-eem.70]";
 volatile int sendTrace;
 
 
@@ -13243,37 +13240,7 @@
  return (((((usqInt) methodHeader) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
 }
 
-static sqInt
-lengthOfNameOfClass(sqInt classOop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt header;
-    sqInt sz;
 
- if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
- return lengthOfNameOfClass(longAt((classOop + BaseHeaderSize) + (GIV(thisClassIndex) << ShiftForWord)));
- }
- /* begin lengthOf: */
- header = longAt(longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord)));
- /* begin lengthOf:baseHeader:format: */
- if ((header & TypeMask) == HeaderTypeSizeAndClass) {
- sz = (longAt((longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord))) - (BytesPerWord * 2))) & LongSizeMask;
- }
- else {
- sz = header & SizeMask;
- }
- sz -= header & Size4Bit;
- if (((((usqInt) header) >> 8) & 15) <= 4) {
- return ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- }
- if (((((usqInt) header) >> 8) & 15) < 8) {
- return ((usqInt) (sz - BaseHeaderSize)) >> 2;
- }
- else {
- return (sz - BaseHeaderSize) - (((((usqInt) header) >> 8) & 15) & 3);
- }
-}
-
-
 /* Return the number of indexable bytes or words in the given object. Assume
  the argument is not an integer. For a CompiledMethod, the size of the
  method header (in bytes) should be subtracted from the result.
@@ -14302,20 +14269,6 @@
 }
 
 
-/* Brain-damaged nameOfClass: for C VM. Does *not* answer Foo class for
- metaclasses. Use e.g. classIsMeta: to avoid being fooled. */
-
-static char *
-nameOfClass(sqInt classOop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
- return nameOfClass(longAt((classOop + BaseHeaderSize) + (GIV(thisClassIndex) << ShiftForWord)));
- }
- /* begin firstFixedField: */
- return ((void *) (pointerForOop((longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord))) + BaseHeaderSize)));
-}
-
-
 /* For access from BitBlt module & Cogit */
 
 sqInt
@@ -14591,61 +14544,6 @@
 }
 
 
-/* If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt c;
-    sqInt ccIndex;
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- okayOop(oop);
- oopHasOkayClass(oop);
- if (!(((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))) {
- return 1;
- }
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- c = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
- if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
- c = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
- goto l1;
- }
- else {
- c = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l1;
- }
-l1: /* end fetchClassOf: */;
- if ((c == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassMethodContext << ShiftForWord))))
- || (c == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockContext << ShiftForWord))))) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- okayOop(fieldOop);
- oopHasOkayClass(fieldOop);
- }
- i -= 1;
- }
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */

Modified: branches/Cog/nssrc/vm/interp.c
===================================================================
--- branches/Cog/nssrc/vm/interp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/nssrc/vm/interp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- NewspeakInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ NewspeakInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "NewspeakInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "NewspeakInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -422,7 +422,6 @@
 sqInt isKindOf(sqInt oop, char *className);
 sqInt isMemberOf(sqInt oop, char *className);
 static sqInt lastPointerOf(sqInt oop);
-static sqInt lengthOfNameOfClass(sqInt classOop);
 sqInt lengthOf(sqInt oop);
 static sqInt lengthOfbaseHeaderformat(sqInt oop, sqInt hdr, sqInt fmt);
 sqInt literalCountOf(sqInt methodPointer);
@@ -444,7 +443,6 @@
 sqInt methodPrimitiveIndex(void);
 sqInt methodReturnValue(sqInt oop);
 EXPORT(sqInt) moduleUnloaded(char *aModuleName);
-static char * nameOfClass(sqInt classOop);
 sqInt nilObject(void);
 static sqInt nonWeakFieldsOf(sqInt oop);
 sqInt objectAfter(sqInt oop);
@@ -453,7 +451,6 @@
 sqInt objectExactlyBefore(sqInt oop);
 static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 static sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -797,13 +794,11 @@
 _iss sqInt nextWakeupTick;
 _iss sqInt growHeadroom;
 _iss sqInt statGrowMemory;
-_iss sqInt classNameIndex;
 _iss sqInt interruptCheckCounterFeedBackReset;
 _iss sqInt signalLowSpace;
 _iss usqInt compEnd;
 _iss sqInt freeLargeContexts;
 _iss sqInt lastTick;
-_iss sqInt metaclassSizeBytes;
 _iss sqInt pendingFinalizationSignals;
 _iss sqInt statMarkCount;
 _iss sqInt statShrinkMemory;
@@ -812,11 +807,12 @@
 _iss sqInt statCompMoveCount;
 _iss sqInt statMkFwdCount;
 _iss sqInt statSweepCount;
-_iss sqInt thisClassIndex;
+_iss sqInt classNameIndex;
 _iss sqInt forceTenureFlag;
 _iss usqLong gcStartUsecs;
 _iss sqInt interruptChecksEveryNms;
 _iss sqInt interruptPending;
+_iss sqInt metaclassSizeBytes;
 _iss usqLong statFullGCUsecs;
 _iss sqInt statFullGCs;
 _iss usqLong statIncrGCUsecs;
@@ -832,6 +828,7 @@
 _iss sqInt statGCEndTime;
 _iss usqLong statIGCDeltaUsecs;
 _iss sqInt statPendingFinalizationSignals;
+_iss sqInt thisClassIndex;
 _iss sqInt gcBiasToGrow;
 _iss sqInt gcBiasToGrowGCLimit;
 _iss sqInt gcSemaphoreIndex;
@@ -1452,7 +1449,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine [NewspeakInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Newspeak Virtual Machine [NewspeakInterpreter VMMaker.oscog-eem.70]";
 volatile int sendTrace;
 
 
@@ -13239,37 +13236,7 @@
  return (((((usqInt) methodHeader) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
 }
 
-static sqInt
-lengthOfNameOfClass(sqInt classOop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt header;
-    sqInt sz;
 
- if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
- return lengthOfNameOfClass(longAt((classOop + BaseHeaderSize) + (GIV(thisClassIndex) << ShiftForWord)));
- }
- /* begin lengthOf: */
- header = longAt(longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord)));
- /* begin lengthOf:baseHeader:format: */
- if ((header & TypeMask) == HeaderTypeSizeAndClass) {
- sz = (longAt((longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord))) - (BytesPerWord * 2))) & LongSizeMask;
- }
- else {
- sz = header & SizeMask;
- }
- sz -= header & Size4Bit;
- if (((((usqInt) header) >> 8) & 15) <= 4) {
- return ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- }
- if (((((usqInt) header) >> 8) & 15) < 8) {
- return ((usqInt) (sz - BaseHeaderSize)) >> 2;
- }
- else {
- return (sz - BaseHeaderSize) - (((((usqInt) header) >> 8) & 15) & 3);
- }
-}
-
-
 /* Return the number of indexable bytes or words in the given object. Assume
  the argument is not an integer. For a CompiledMethod, the size of the
  method header (in bytes) should be subtracted from the result.
@@ -14298,20 +14265,6 @@
 }
 
 
-/* Brain-damaged nameOfClass: for C VM. Does *not* answer Foo class for
- metaclasses. Use e.g. classIsMeta: to avoid being fooled. */
-
-static char *
-nameOfClass(sqInt classOop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
- if ((sizeBitsOf(classOop)) == GIV(metaclassSizeBytes)) {
- return nameOfClass(longAt((classOop + BaseHeaderSize) + (GIV(thisClassIndex) << ShiftForWord)));
- }
- /* begin firstFixedField: */
- return ((void *) (pointerForOop((longAt((classOop + BaseHeaderSize) + (GIV(classNameIndex) << ShiftForWord))) + BaseHeaderSize)));
-}
-
-
 /* For access from BitBlt module & Cogit */
 
 sqInt
@@ -14587,61 +14540,6 @@
 }
 
 
-/* If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt c;
-    sqInt ccIndex;
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- okayOop(oop);
- oopHasOkayClass(oop);
- if (!(((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))) {
- return 1;
- }
- /* begin fetchClassOf: */
- if ((oop & 1)) {
- c = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord));
- goto l1;
- }
- if (((ccIndex = (((usqInt) (longAt(oop))) >> 12) & 31)) == 0) {
- c = (longAt(oop - BaseHeaderSize)) & AllButTypeMask;
- goto l1;
- }
- else {
- c = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l1;
- }
-l1: /* end fetchClassOf: */;
- if ((c == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassMethodContext << ShiftForWord))))
- || (c == (longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassBlockContext << ShiftForWord))))) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- okayOop(fieldOop);
- oopHasOkayClass(fieldOop);
- }
- i -= 1;
- }
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */

Modified: branches/Cog/nssrc/vm/interp.h
===================================================================
--- branches/Cog/nssrc/vm/interp.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/nssrc/vm/interp.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define NewspeakVM 1

Modified: branches/Cog/nssrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nssrc/vm/vmCallback.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/nssrc/vm/vmCallback.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/scripts/mkvmarchives
===================================================================
--- branches/Cog/scripts/mkvmarchives 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/scripts/mkvmarchives 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,6 +1,8 @@
 #!/bin/sh
+test -d Cog.app || mkdir Cog.app
 rm -rf Cog.app/* Cog.app.tgz
 (cd macbuild/Fast.app>/dev/null;tar cf - *)|(cd Cog.app;tar xvf -)
+test -d cogwin || mkdir cogwin
 rm -rf cogwin/* cogwin.zip
 ln cygwinbuild/build/vm/{Croquet.exe,Croquet.ini,Croquet.map} cogwin
 ln cygwinbuild/build/vm/*.dll cogwin

Modified: branches/Cog/scripts/uploadvms
===================================================================
--- branches/Cog/scripts/uploadvms 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/scripts/uploadvms 2011-06-02 20:37:13 UTC (rev 2390)
@@ -3,4 +3,4 @@
 echo $VER
 test -f README.$VER || vi README.$VER
 ssh -x [hidden email] mkdir mirandabanda.org/files/Cog/VM/VM.r$VER
-scp README.$VER Cog.app.tgz coglinux.tgz cogwin.zip [hidden email]:mirandabanda.org/files/Cog/VM/VM.r$VER
+scp README.$VER Cog.app.tgz coglinux.tgz cogwin.zip Newspeak\ Virtual\ Machine.app.zip nsvmwin.zip [hidden email]:mirandabanda.org/files/Cog/VM/VM.r$VER

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/src/vm/cointerp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- CoInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CoInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -203,7 +203,6 @@
 #define HeaderTypeShort 3
 #define HeaderTypeSizeAndClass 0
 #define IFrameSlots 7
-#define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
 #define LargeContextBit 0x40000
@@ -586,7 +585,6 @@
 sqInt isFloatObject(sqInt oop);
 static sqInt isFree(StackPage * self_in_isFree);
 static sqInt isFreeObject(sqInt oop);
-static sqInt isImmutableWhileForwarding(sqInt oop);
 sqInt isIndexable(sqInt oop);
 sqInt isInMemory(sqInt address);
 sqInt isIntegerObject(sqInt objectPointer);
@@ -684,10 +682,8 @@
 sqInt objectArg(sqInt index);
 sqInt objectBefore(sqInt address);
 sqInt objectExactlyBefore(sqInt oop);
-static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt objectIsOld(sqInt anObject);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -1869,7 +1865,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.70]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -18314,30 +18310,6 @@
  return ((longAt(oop)) & TypeMask) == HeaderTypeFree;
 }
 
-
-/* The given object may have its header word in a forwarding block. Find
- the value of the isImmutable flag in the object in spite of this obstacle. */
-
-static sqInt
-isImmutableWhileForwarding(sqInt oop)
-{
-    sqInt fwdBlock;
-    sqInt header;
-
- header = longAt(oop);
- if ((header & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header & AllButMarkBitAndTypeMask) << 1;
- if (DoAssertionChecks) {
- fwdBlockValidate(fwdBlock);
- }
- header = longAt(fwdBlock + BytesPerWord);
- }
- return (header & ImmutabilityBit) != 0;
-}
-
 sqInt
 isIndexable(sqInt oop)
 {
@@ -21928,86 +21900,6 @@
  return 0;
 }
 
-
-/* Answer if an object is immutable and references a forwarded object. Used
- to fail become for immutable referents of becomees. */
-/* Note: The given oop may be forwarded itself, which means that its real
- header is in its forwarding table entry.
- */
-
-static sqInt
-objectIsImmutableAndReferencesForwarded(sqInt oop)
-{
-    sqInt contextSize;
-    sqInt fieldOffset;
-    sqInt fieldOop;
-    sqInt fmt;
-    sqInt fwdBlock;
-    sqInt header;
-    sqInt header1;
-    sqInt methodHeader;
-    sqInt size;
-    sqInt sp;
-
- if (isImmutableWhileForwarding(oop)) {
- /* begin lastPointerWhileForwarding: */
- VM_LABEL(0lastPointerWhileForwarding);
- /* begin headerWhileForwardingOf: */
- header1 = longAt(oop);
- if ((header1 & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header1 & AllButMarkBitAndTypeMask) << 1;
- assert(fwdBlockValid(fwdBlock));
- header1 = longAt(fwdBlock + BytesPerWord);
- }
- header = header1;
- fmt = (((usqInt) header) >> 8) & 15;
- if (fmt <= 4) {
- if ((fmt == 3)
- && (((((usqInt) header) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- /* begin nacFetchStackPointerOf: */
- sp = longAt((oop + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
- if (!((sp & 1))) {
- contextSize = 0;
- goto l1;
- }
- contextSize = (sp >> 1);
- l1: /* end nacFetchStackPointerOf: */;
- assert((ReceiverIndex + contextSize) < (lengthOfbaseHeaderformat(oop, header, fmt)));
- fieldOffset = (CtxtTempFrameStart + contextSize) * BytesPerWord;
- goto l2;
- }
- size = ((header & TypeMask) == HeaderTypeSizeAndClass
- ? (longAt(oop - (BytesPerWord * 2))) & AllButTypeMask
- : header & SizeMask);
- fieldOffset = size - BaseHeaderSize;
- goto l2;
- }
- if (fmt < 12) {
- fieldOffset = 0;
- goto l2;
- }
- methodHeader = longAt(oop + BaseHeaderSize);
- if (isCogMethodReference(methodHeader)) {
- assert(((((CogMethod *) methodHeader)->cmType)) == CMMethod);
- methodHeader = (((CogMethod *) methodHeader)->methodHeader);
- }
- fieldOffset = (((((usqInt) methodHeader) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
- l2: /* end lastPointerWhileForwarding: */;
- while (fieldOffset >= BaseHeaderSize) {
- fieldOop = longAt(oop + fieldOffset);
- if (((fieldOop & 1) == 0)
- && (((longAt(fieldOop)) & MarkBit) != 0)) {
- return 1;
- }
- fieldOffset -= BytesPerWord;
- }
- }
- return 0;
-}
-
 sqInt
 objectIsOld(sqInt anObject)
 {
@@ -22031,61 +21923,6 @@
 }
 
 
-/* Check if the argument is an ok object.
- If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- if (!(okayOop(oop))) {
- return 0;
- }
- if (!(oopHasOkayClass(oop))) {
- return 0;
- }
- if (!((((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
- || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12))) {
- return 1;
- }
- if (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12) {
- i = (literalCountOf(oop)) - 1;
- }
- else {
- if (((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- if (!(okayOop(fieldOop))) {
- return 0;
- }
- if (!(oopHasOkayClass(fieldOop))) {
- return 0;
- }
- }
- i -= 1;
- }
- return 1;
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */
@@ -43390,7 +43227,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(0remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(1lastPointerWhileForwarding);
+ VM_LABEL(0lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header11 = longAt(oop);
  if ((header11 & MarkBit) != 0) {
@@ -43651,7 +43488,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(1remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(2lastPointerWhileForwarding);
+ VM_LABEL(1lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header11 = longAt(oop);
  if ((header11 & MarkBit) != 0) {

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/src/vm/cointerp.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 

Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/src/vm/gcc3x-cointerp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- CoInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CoInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -206,7 +206,6 @@
 #define HeaderTypeShort 3
 #define HeaderTypeSizeAndClass 0
 #define IFrameSlots 7
-#define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
 #define LargeContextBit 0x40000
@@ -589,7 +588,6 @@
 sqInt isFloatObject(sqInt oop);
 static sqInt isFree(StackPage * self_in_isFree);
 static sqInt isFreeObject(sqInt oop);
-static sqInt isImmutableWhileForwarding(sqInt oop);
 sqInt isIndexable(sqInt oop);
 sqInt isInMemory(sqInt address);
 sqInt isIntegerObject(sqInt objectPointer);
@@ -687,10 +685,8 @@
 sqInt objectArg(sqInt index);
 sqInt objectBefore(sqInt address);
 sqInt objectExactlyBefore(sqInt oop);
-static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt objectIsOld(sqInt anObject);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -1872,7 +1868,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.70]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -18318,30 +18314,6 @@
  return ((longAt(oop)) & TypeMask) == HeaderTypeFree;
 }
 
-
-/* The given object may have its header word in a forwarding block. Find
- the value of the isImmutable flag in the object in spite of this obstacle. */
-
-static sqInt
-isImmutableWhileForwarding(sqInt oop)
-{
-    sqInt fwdBlock;
-    sqInt header;
-
- header = longAt(oop);
- if ((header & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header & AllButMarkBitAndTypeMask) << 1;
- if (DoAssertionChecks) {
- fwdBlockValidate(fwdBlock);
- }
- header = longAt(fwdBlock + BytesPerWord);
- }
- return (header & ImmutabilityBit) != 0;
-}
-
 sqInt
 isIndexable(sqInt oop)
 {
@@ -21932,86 +21904,6 @@
  return 0;
 }
 
-
-/* Answer if an object is immutable and references a forwarded object. Used
- to fail become for immutable referents of becomees. */
-/* Note: The given oop may be forwarded itself, which means that its real
- header is in its forwarding table entry.
- */
-
-static sqInt
-objectIsImmutableAndReferencesForwarded(sqInt oop)
-{
-    sqInt contextSize;
-    sqInt fieldOffset;
-    sqInt fieldOop;
-    sqInt fmt;
-    sqInt fwdBlock;
-    sqInt header;
-    sqInt header1;
-    sqInt methodHeader;
-    sqInt size;
-    sqInt sp;
-
- if (isImmutableWhileForwarding(oop)) {
- /* begin lastPointerWhileForwarding: */
- VM_LABEL(0lastPointerWhileForwarding);
- /* begin headerWhileForwardingOf: */
- header1 = longAt(oop);
- if ((header1 & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header1 & AllButMarkBitAndTypeMask) << 1;
- assert(fwdBlockValid(fwdBlock));
- header1 = longAt(fwdBlock + BytesPerWord);
- }
- header = header1;
- fmt = (((usqInt) header) >> 8) & 15;
- if (fmt <= 4) {
- if ((fmt == 3)
- && (((((usqInt) header) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- /* begin nacFetchStackPointerOf: */
- sp = longAt((oop + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
- if (!((sp & 1))) {
- contextSize = 0;
- goto l1;
- }
- contextSize = (sp >> 1);
- l1: /* end nacFetchStackPointerOf: */;
- assert((ReceiverIndex + contextSize) < (lengthOfbaseHeaderformat(oop, header, fmt)));
- fieldOffset = (CtxtTempFrameStart + contextSize) * BytesPerWord;
- goto l2;
- }
- size = ((header & TypeMask) == HeaderTypeSizeAndClass
- ? (longAt(oop - (BytesPerWord * 2))) & AllButTypeMask
- : header & SizeMask);
- fieldOffset = size - BaseHeaderSize;
- goto l2;
- }
- if (fmt < 12) {
- fieldOffset = 0;
- goto l2;
- }
- methodHeader = longAt(oop + BaseHeaderSize);
- if (isCogMethodReference(methodHeader)) {
- assert(((((CogMethod *) methodHeader)->cmType)) == CMMethod);
- methodHeader = (((CogMethod *) methodHeader)->methodHeader);
- }
- fieldOffset = (((((usqInt) methodHeader) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
- l2: /* end lastPointerWhileForwarding: */;
- while (fieldOffset >= BaseHeaderSize) {
- fieldOop = longAt(oop + fieldOffset);
- if (((fieldOop & 1) == 0)
- && (((longAt(fieldOop)) & MarkBit) != 0)) {
- return 1;
- }
- fieldOffset -= BytesPerWord;
- }
- }
- return 0;
-}
-
 sqInt
 objectIsOld(sqInt anObject)
 {
@@ -22035,61 +21927,6 @@
 }
 
 
-/* Check if the argument is an ok object.
- If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- if (!(okayOop(oop))) {
- return 0;
- }
- if (!(oopHasOkayClass(oop))) {
- return 0;
- }
- if (!((((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
- || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12))) {
- return 1;
- }
- if (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12) {
- i = (literalCountOf(oop)) - 1;
- }
- else {
- if (((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- if (!(okayOop(fieldOop))) {
- return 0;
- }
- if (!(oopHasOkayClass(fieldOop))) {
- return 0;
- }
- }
- i -= 1;
- }
- return 1;
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */
@@ -43394,7 +43231,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(0remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(1lastPointerWhileForwarding);
+ VM_LABEL(0lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header11 = longAt(oop);
  if ((header11 & MarkBit) != 0) {
@@ -43655,7 +43492,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(1remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(2lastPointerWhileForwarding);
+ VM_LABEL(1lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header11 = longAt(oop);
  if ((header11 & MarkBit) != 0) {

Modified: branches/Cog/src/vm/interp.h
===================================================================
--- branches/Cog/src/vm/interp.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/src/vm/interp.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define COGVM 1

Modified: branches/Cog/src/vm/vmCallback.h
===================================================================
--- branches/Cog/src/vm/vmCallback.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/src/vm/vmCallback.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/stacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/stacksrc/vm/gcc3x-interp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/stacksrc/vm/gcc3x-interp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- StackInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ StackInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -174,7 +174,6 @@
 #define HeaderTypeGC 2
 #define HeaderTypeShort 3
 #define HeaderTypeSizeAndClass 0
-#define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
 #define LargeContextBit 0x40000
@@ -458,7 +457,6 @@
 sqInt isFloatObject(sqInt oop);
 static sqInt isFreeObject(sqInt oop);
 static sqInt isFree(StackPage *thePage);
-static sqInt isImmutableWhileForwarding(sqInt oop);
 sqInt isIndexable(sqInt oop);
 sqInt isInMemory(sqInt address);
 sqInt isIntegerObject(sqInt objectPointer);
@@ -531,9 +529,7 @@
 sqInt objectArg(sqInt index);
 sqInt objectBefore(sqInt address);
 sqInt objectExactlyBefore(sqInt oop);
-static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -1657,7 +1653,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.70]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -14421,30 +14417,6 @@
  return ((thePage->baseFP)) == 0;
 }
 
-
-/* The given object may have its header word in a forwarding block. Find
- the value of the isImmutable flag in the object in spite of this obstacle. */
-
-static sqInt
-isImmutableWhileForwarding(sqInt oop)
-{
-    sqInt fwdBlock;
-    sqInt header;
-
- header = longAt(oop);
- if ((header & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header & AllButMarkBitAndTypeMask) << 1;
- if (DoAssertionChecks) {
- fwdBlockValidate(fwdBlock);
- }
- header = longAt(fwdBlock + BytesPerWord);
- }
- return (header & ImmutabilityBit) != 0;
-}
-
 sqInt
 isIndexable(sqInt oop)
 {
@@ -17259,80 +17231,6 @@
 }
 
 
-/* Answer if an object is immutable and references a forwarded object. Used
- to fail become for immutable referents of becomees. */
-/* Note: The given oop may be forwarded itself, which means that its real
- header is in its forwarding table entry.
- */
-
-static sqInt
-objectIsImmutableAndReferencesForwarded(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt contextSize;
-    sqInt fieldOffset;
-    sqInt fieldOop;
-    sqInt fmt;
-    sqInt fwdBlock;
-    sqInt header;
-    sqInt header1;
-    sqInt size;
-    sqInt sp;
-
- if (isImmutableWhileForwarding(oop)) {
- /* begin lastPointerWhileForwarding: */
- VM_LABEL(0lastPointerWhileForwarding);
- /* begin headerWhileForwardingOf: */
- header1 = longAt(oop);
- if ((header1 & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header1 & AllButMarkBitAndTypeMask) << 1;
- assert(fwdBlockValid(fwdBlock));
- header1 = longAt(fwdBlock + BytesPerWord);
- }
- header = header1;
- fmt = (((usqInt) header) >> 8) & 15;
- if (fmt <= 4) {
- if ((fmt == 3)
- && (((((usqInt) header) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- /* begin nacFetchStackPointerOf: */
- sp = longAt((oop + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
- if (!((sp & 1))) {
- contextSize = 0;
- goto l1;
- }
- contextSize = (sp >> 1);
- l1: /* end nacFetchStackPointerOf: */;
- assert((ReceiverIndex + contextSize) < (lengthOfbaseHeaderformat(oop, header, fmt)));
- fieldOffset = (CtxtTempFrameStart + contextSize) * BytesPerWord;
- goto l2;
- }
- size = ((header & TypeMask) == HeaderTypeSizeAndClass
- ? (longAt(oop - (BytesPerWord * 2))) & AllButTypeMask
- : header & SizeMask);
- fieldOffset = size - BaseHeaderSize;
- goto l2;
- }
- if (fmt < 12) {
- fieldOffset = 0;
- goto l2;
- }
- fieldOffset = (((((usqInt) (longAt((oop + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
- l2: /* end lastPointerWhileForwarding: */;
- while (fieldOffset >= BaseHeaderSize) {
- fieldOop = longAt(oop + fieldOffset);
- if (((fieldOop & 1) == 0)
- && (((longAt(fieldOop)) & MarkBit) != 0)) {
- return 1;
- }
- fieldOffset -= BytesPerWord;
- }
- }
- return 0;
-}
-
-
 /* This message is deprecated but supported for a while via a tweak to
  sqVirtualMachine.[ch] Use fetchLong32, fetchLong64 or fetchPointer instead
  for new code
@@ -17345,61 +17243,6 @@
 }
 
 
-/* Check if the argument is an ok object.
- If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- if (!(okayOop(oop))) {
- return 0;
- }
- if (!(oopHasOkayClass(oop))) {
- return 0;
- }
- if (!((((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
- || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12))) {
- return 1;
- }
- if (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12) {
- i = ((((usqInt) (longAt((oop + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) - 1;
- }
- else {
- if (((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- if (!(okayOop(fieldOop))) {
- return 0;
- }
- if (!(oopHasOkayClass(fieldOop))) {
- return 0;
- }
- }
- i -= 1;
- }
- return 1;
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */
@@ -37328,7 +37171,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(0remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(1lastPointerWhileForwarding);
+ VM_LABEL(0lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header12 = longAt(oop);
  if ((header12 & MarkBit) != 0) {
@@ -37583,7 +37426,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(1remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(2lastPointerWhileForwarding);
+ VM_LABEL(1lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header12 = longAt(oop);
  if ((header12 & MarkBit) != 0) {

Modified: branches/Cog/stacksrc/vm/interp.c
===================================================================
--- branches/Cog/stacksrc/vm/interp.c 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/stacksrc/vm/interp.c 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
    from
- StackInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ StackInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -171,7 +171,6 @@
 #define HeaderTypeGC 2
 #define HeaderTypeShort 3
 #define HeaderTypeSizeAndClass 0
-#define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
 #define LargeContextBit 0x40000
@@ -455,7 +454,6 @@
 sqInt isFloatObject(sqInt oop);
 static sqInt isFreeObject(sqInt oop);
 static sqInt isFree(StackPage *thePage);
-static sqInt isImmutableWhileForwarding(sqInt oop);
 sqInt isIndexable(sqInt oop);
 sqInt isInMemory(sqInt address);
 sqInt isIntegerObject(sqInt objectPointer);
@@ -528,9 +526,7 @@
 sqInt objectArg(sqInt index);
 sqInt objectBefore(sqInt address);
 sqInt objectExactlyBefore(sqInt oop);
-static sqInt objectIsImmutableAndReferencesForwarded(sqInt oop);
 sqInt obsoleteDontUseThisFetchWordofObject(sqInt fieldIndex, sqInt oop);
-static sqInt okayFields(sqInt oop);
 static sqInt okayOop(sqInt signedOop);
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
@@ -1654,7 +1650,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.69]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.70]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -14417,30 +14413,6 @@
  return ((thePage->baseFP)) == 0;
 }
 
-
-/* The given object may have its header word in a forwarding block. Find
- the value of the isImmutable flag in the object in spite of this obstacle. */
-
-static sqInt
-isImmutableWhileForwarding(sqInt oop)
-{
-    sqInt fwdBlock;
-    sqInt header;
-
- header = longAt(oop);
- if ((header & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header & AllButMarkBitAndTypeMask) << 1;
- if (DoAssertionChecks) {
- fwdBlockValidate(fwdBlock);
- }
- header = longAt(fwdBlock + BytesPerWord);
- }
- return (header & ImmutabilityBit) != 0;
-}
-
 sqInt
 isIndexable(sqInt oop)
 {
@@ -17255,80 +17227,6 @@
 }
 
 
-/* Answer if an object is immutable and references a forwarded object. Used
- to fail become for immutable referents of becomees. */
-/* Note: The given oop may be forwarded itself, which means that its real
- header is in its forwarding table entry.
- */
-
-static sqInt
-objectIsImmutableAndReferencesForwarded(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt contextSize;
-    sqInt fieldOffset;
-    sqInt fieldOop;
-    sqInt fmt;
-    sqInt fwdBlock;
-    sqInt header;
-    sqInt header1;
-    sqInt size;
-    sqInt sp;
-
- if (isImmutableWhileForwarding(oop)) {
- /* begin lastPointerWhileForwarding: */
- VM_LABEL(0lastPointerWhileForwarding);
- /* begin headerWhileForwardingOf: */
- header1 = longAt(oop);
- if ((header1 & MarkBit) != 0) {
-
- /* oop is forwarded; get its real header from its forwarding table entry */
-
- fwdBlock = (header1 & AllButMarkBitAndTypeMask) << 1;
- assert(fwdBlockValid(fwdBlock));
- header1 = longAt(fwdBlock + BytesPerWord);
- }
- header = header1;
- fmt = (((usqInt) header) >> 8) & 15;
- if (fmt <= 4) {
- if ((fmt == 3)
- && (((((usqInt) header) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- /* begin nacFetchStackPointerOf: */
- sp = longAt((oop + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
- if (!((sp & 1))) {
- contextSize = 0;
- goto l1;
- }
- contextSize = (sp >> 1);
- l1: /* end nacFetchStackPointerOf: */;
- assert((ReceiverIndex + contextSize) < (lengthOfbaseHeaderformat(oop, header, fmt)));
- fieldOffset = (CtxtTempFrameStart + contextSize) * BytesPerWord;
- goto l2;
- }
- size = ((header & TypeMask) == HeaderTypeSizeAndClass
- ? (longAt(oop - (BytesPerWord * 2))) & AllButTypeMask
- : header & SizeMask);
- fieldOffset = size - BaseHeaderSize;
- goto l2;
- }
- if (fmt < 12) {
- fieldOffset = 0;
- goto l2;
- }
- fieldOffset = (((((usqInt) (longAt((oop + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) * BytesPerWord) + BaseHeaderSize;
- l2: /* end lastPointerWhileForwarding: */;
- while (fieldOffset >= BaseHeaderSize) {
- fieldOop = longAt(oop + fieldOffset);
- if (((fieldOop & 1) == 0)
- && (((longAt(fieldOop)) & MarkBit) != 0)) {
- return 1;
- }
- fieldOffset -= BytesPerWord;
- }
- }
- return 0;
-}
-
-
 /* This message is deprecated but supported for a while via a tweak to
  sqVirtualMachine.[ch] Use fetchLong32, fetchLong64 or fetchPointer instead
  for new code
@@ -17341,61 +17239,6 @@
 }
 
 
-/* Check if the argument is an ok object.
- If this is a pointers object, check that its fields are all okay oops. */
-
-static sqInt
-okayFields(sqInt oop)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt fieldOop;
-    sqInt i;
-
- if ((oop == null)
- || (oop == 0)) {
- return 1;
- }
- if ((oop & 1)) {
- return 1;
- }
- if (!(okayOop(oop))) {
- return 0;
- }
- if (!(oopHasOkayClass(oop))) {
- return 0;
- }
- if (!((((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
- || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12))) {
- return 1;
- }
- if (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12) {
- i = ((((usqInt) (longAt((oop + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) - 1;
- }
- else {
- if (((oop & 1) == 0)
- && (((((usqInt) (longAt(oop))) >> 12) & 31) == ClassMethodContextCompactIndex)) {
- i = (CtxtTempFrameStart + (fetchStackPointerOf(oop))) - 1;
- }
- else {
- i = (lengthOf(oop)) - 1;
- }
- }
- while (i >= 0) {
- fieldOop = longAt((oop + BaseHeaderSize) + (i << ShiftForWord));
- if (!((fieldOop & 1))) {
- if (!(okayOop(fieldOop))) {
- return 0;
- }
- if (!(oopHasOkayClass(fieldOop))) {
- return 0;
- }
- }
- i -= 1;
- }
- return 1;
-}
-
-
 /* Verify that the given oop is legitimate. Check address, header, and size
  but not class.
  */
@@ -37324,7 +37167,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(0remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(1lastPointerWhileForwarding);
+ VM_LABEL(0lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header12 = longAt(oop);
  if ((header12 & MarkBit) != 0) {
@@ -37579,7 +37422,7 @@
  /* begin remapFieldsAndClassOf: */
  VM_LABEL(1remapFieldsAndClassOf);
  /* begin lastPointerWhileForwarding: */
- VM_LABEL(2lastPointerWhileForwarding);
+ VM_LABEL(1lastPointerWhileForwarding);
  /* begin headerWhileForwardingOf: */
  header12 = longAt(oop);
  if ((header12 & MarkBit) != 0) {

Modified: branches/Cog/stacksrc/vm/interp.h
===================================================================
--- branches/Cog/stacksrc/vm/interp.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/stacksrc/vm/interp.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define STACKVM 1

Modified: branches/Cog/stacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/stacksrc/vm/vmCallback.h 2011-06-02 00:38:51 UTC (rev 2389)
+++ branches/Cog/stacksrc/vm/vmCallback.h 2011-06-02 20:37:13 UTC (rev 2390)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.69 uuid: fd9c171e-3731-4093-912d-ad8fefb4800c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.70 uuid: 36b63465-1b05-401f-bcb2-f9cae49422b8
  */
 
 #define VM_CALLBACK_INC 1

Reply | Threaded
Open this post in threaded view
|

Re: [commit] r2390 - OSCog source as per VMMaker.oscog-eem.70. Add Newspeak VM generation to VMMaker

Igor Stasenko

On 2 June 2011 23:37,  <[hidden email]> wrote:
>
> Author: eliot
> Date: 2011-06-02 13:37:13 -0700 (Thu, 02 Jun 2011)
> New Revision: 2390
>
> Added:
>   branches/Cog/cygwinbuild/Pharo.def.in
>   branches/Cog/cygwinbuild/Pharo.ico
>   branches/Cog/cygwinbuild/Pharo.rc

Hmm. Why?
I am missed some discussion somewhere?


--
Best regards,
Igor Stasenko AKA sig.
Reply | Threaded
Open this post in threaded view
|

Re: [commit] r2390 - OSCog source as per VMMaker.oscog-eem.70. Add Newspeak VM generation to VMMaker

Eliot Miranda-2
 


On Thu, Jun 2, 2011 at 3:26 PM, Igor Stasenko <[hidden email]> wrote:

On 2 June 2011 23:37,  <[hidden email]> wrote:
>
> Author: eliot
> Date: 2011-06-02 13:37:13 -0700 (Thu, 02 Jun 2011)
> New Revision: 2390
>
> Added:
>   branches/Cog/cygwinbuild/Pharo.def.in
>   branches/Cog/cygwinbuild/Pharo.ico
>   branches/Cog/cygwinbuild/Pharo.rc

Hmm. Why?
I am missed some discussion somewhere?

A mistake on my part.  They were there (from a test build of mine) and I just added them.  Feel free to nuke them or update them as you see fit.
 


--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: [commit] r2390 - OSCog source as per VMMaker.oscog-eem.70. Add Newspeak VM generation to VMMaker

Igor Stasenko

On 3 June 2011 01:41, Eliot Miranda <[hidden email]> wrote:

>
>
>
> On Thu, Jun 2, 2011 at 3:26 PM, Igor Stasenko <[hidden email]> wrote:
>>
>> On 2 June 2011 23:37,  <[hidden email]> wrote:
>> >
>> > Author: eliot
>> > Date: 2011-06-02 13:37:13 -0700 (Thu, 02 Jun 2011)
>> > New Revision: 2390
>> >
>> > Added:
>> >   branches/Cog/cygwinbuild/Pharo.def.in
>> >   branches/Cog/cygwinbuild/Pharo.ico
>> >   branches/Cog/cygwinbuild/Pharo.rc
>>
>> Hmm. Why?
>> I am missed some discussion somewhere?
>
> A mistake on my part.  They were there (from a test build of mine) and I just added them.  Feel free to nuke them or update them as you see fit.
>

Okay.

No, personally, i think its not worth putting these files to main branch.
Such kind of customization is not a functional one, and can live
aside, in separately maintained repository.

Because if we follow that road, then next day you will add icons for
newspeak, and tomorrow for something else etc etc..
And so a VM sources will turn into storage of different brands of same thing.

--
Best regards,
Igor Stasenko AKA sig.