[commit][3052] CogVM source as per VMMaker.oscog-eem.831

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

[commit][3052] CogVM source as per VMMaker.oscog-eem.831

commits-3
 
Revision: 3052
Author:   eliot
Date:     2014-07-22 10:45:31 -0700 (Tue, 22 Jul 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.831

Spur:
Fix bug with class table management and two-way become.  Because two-way become
may do an in-place swap obj1 & obj2 in SpurMemoryManager>>doBecome:and:copyHash:
may not be forwarded after the inner become.  Hence they should not be followed
if not forwarded.  The bug manifested as Object's identityHash changing:
superclass is the first slot in a class. Following an unforwarded subclass of
object yields Object.  Setting the hash bits of the followed object smashes
Object's identityHash.

Thanks to Stephane Rollandin for finding the bug.

Modified Paths:
--------------
    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/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

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

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2311,7 +2311,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.830";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42466,14 +42466,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -42484,14 +42489,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -64375,7 +64385,7 @@
  index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
  aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
  if (!((index & 1))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
  return;
  }
  hdr = long64At(aContext);
@@ -64621,7 +64631,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  /* begin subscript:with:storing:format: */
@@ -64677,7 +64687,7 @@
  assert((senderOop & 1));
  spouseFP = pointerForOop(senderOop - 1);
  if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2314,7 +2314,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.830";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.831";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -42475,14 +42475,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -42493,14 +42498,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -64384,7 +64394,7 @@
  index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
  aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
  if (!((index & 1))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
  return;
  }
  hdr = long64At(aContext);
@@ -64630,7 +64640,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  /* begin subscript:with:storing:format: */
@@ -64686,7 +64696,7 @@
  assert((senderOop & 1));
  spouseFP = pointerForOop(senderOop - 1);
  if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/nsspursrc/vm/interp.h
===================================================================
--- branches/Cog/nsspursrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspursrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspursrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2062,7 +2062,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -30999,14 +30999,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent7 & 3) == 0)
- && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
- referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent7 & 3) == 0)
+ && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+ referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent7;
  }
- newObj2 = referent7;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -31017,14 +31022,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/interp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2059,7 +2059,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.830";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.831";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -30990,14 +30990,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent7 & 3) == 0)
- && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
- referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent7 & 3) == 0)
+ && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+ referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent7;
  }
- newObj2 = referent7;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -31008,14 +31013,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");

Modified: branches/Cog/nsspurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Jul 22 06:32:10 HST 2014
   + Tue Jul 22 07:44:01 HST 2014

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1116,7 +1116,7 @@
 sqInt removeGCRoot(sqInt *varLoc);
 static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms;
 static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms;
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress);
 sqInt shouldRemapObj(sqInt objOop);
 sqInt shouldRemapOop(sqInt oop);
@@ -2306,7 +2306,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 = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5494,6 +5494,7 @@
  GIV(framePointer) = localFP;
 
  ceEnterCogCodePopReceiverReg();
+ null;
  goto l147;
  }
  localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5508,7 +5509,7 @@
  /* begin fetchNextBytecode */
  currentBytecode = byteAtPointer(++localIP);
 
- /* return self */
+ null;
  l147: /* end baseFrameReturn */;
  goto l146;
  }
@@ -37293,14 +37294,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -37311,14 +37317,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -46455,7 +46466,7 @@
  zero if no change
  was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -58758,7 +58769,7 @@
 
  index = longAt(GIV(stackPointer));
  if (!((index & 1))) {
- (GIV(primFailCode) = PrimErrBadArgument);
+ GIV(primFailCode) = PrimErrBadArgument;
  return;
  }
  index = (index >> 1);
@@ -58975,7 +58986,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- (GIV(primFailCode) = PrimErrBadIndex);
+ GIV(primFailCode) = PrimErrBadIndex;
  return;
  }
  /* begin subscript:with:format: */
@@ -59000,7 +59011,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())

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1119,7 +1119,7 @@
 sqInt removeGCRoot(sqInt *varLoc);
 static void runLeakCheckerForFullGCexcludeUnmarkedNewSpaceObjsclassIndicesShouldBeValid(sqInt fullGCFlag, sqInt excludeUnmarkedNewSpaceObjs, sqInt classIndicesShouldBeValid) NoDbgRegParms;
 static void scavengingGCTenuringIf(sqInt tenuringCriterion) NoDbgRegParms;
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
 void shortPrintObjectsFromto(sqInt startAddress, sqInt endAddress);
 sqInt shouldRemapObj(sqInt objOop);
 sqInt shouldRemapOop(sqInt oop);
@@ -2309,7 +2309,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 = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -5503,6 +5503,7 @@
  GIV(framePointer) = localFP;
 
  ceEnterCogCodePopReceiverReg();
+ null;
  goto l147;
  }
  localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5517,7 +5518,7 @@
  /* begin fetchNextBytecode */
  currentBytecode = byteAtPointer(++localIP);
 
- /* return self */
+ null;
  l147: /* end baseFrameReturn */;
  goto l146;
  }
@@ -37302,14 +37303,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -37320,14 +37326,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -46464,7 +46475,7 @@
  zero if no change
  was possible. */
 
-static sqInt
+static usqInt
 shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
 {
     usqInt bytesAfter;
@@ -58767,7 +58778,7 @@
 
  index = longAt(GIV(stackPointer));
  if (!((index & 1))) {
- (GIV(primFailCode) = PrimErrBadArgument);
+ GIV(primFailCode) = PrimErrBadArgument;
  return;
  }
  index = (index >> 1);
@@ -58984,7 +58995,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- (GIV(primFailCode) = PrimErrBadIndex);
+ GIV(primFailCode) = PrimErrBadIndex;
  return;
  }
  /* begin subscript:with:format: */
@@ -59009,7 +59020,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())

Modified: branches/Cog/spursistasrc/vm/interp.h
===================================================================
--- branches/Cog/spursistasrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursistasrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursistasrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursistasrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2301,7 +2301,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 = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -37089,14 +37089,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -37107,14 +37112,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -58518,7 +58528,7 @@
 
  index = longAt(GIV(stackPointer));
  if (!((index & 1))) {
- (GIV(primFailCode) = PrimErrBadArgument);
+ GIV(primFailCode) = PrimErrBadArgument;
  return;
  }
  index = (index >> 1);
@@ -58735,7 +58745,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- (GIV(primFailCode) = PrimErrBadIndex);
+ GIV(primFailCode) = PrimErrBadIndex;
  return;
  }
  /* begin subscript:with:format: */
@@ -58760,7 +58770,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())
@@ -58823,7 +58833,7 @@
  index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
  aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
  if (!((index & 1))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
  return;
  }
  hdr = long64At(aContext);
@@ -59069,7 +59079,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  /* begin subscript:with:storing:format: */
@@ -59125,7 +59135,7 @@
  assert((senderOop & 1));
  spouseFP = pointerForOop(senderOop - 1);
  if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/cointerp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2304,7 +2304,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 = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.831]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -37098,14 +37098,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent9 & 3) == 0)
- && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
- referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent9 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent9 & 3) == 0)
+ && (((longAt(referent9)) & 0x3FFFFF) == 8)) {
+ referent9 = longAt((referent9 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent9;
  }
- newObj2 = referent9;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -37116,14 +37121,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -58527,7 +58537,7 @@
 
  index = longAt(GIV(stackPointer));
  if (!((index & 1))) {
- (GIV(primFailCode) = PrimErrBadArgument);
+ GIV(primFailCode) = PrimErrBadArgument;
  return;
  }
  index = (index >> 1);
@@ -58744,7 +58754,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- (GIV(primFailCode) = PrimErrBadIndex);
+ GIV(primFailCode) = PrimErrBadIndex;
  return;
  }
  /* begin subscript:with:format: */
@@ -58769,7 +58779,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())
@@ -58832,7 +58842,7 @@
  index = longAt(GIV(stackPointer) + (1 * BytesPerWord));
  aContext = longAt(GIV(stackPointer) + (2 * BytesPerWord));
  if (!((index & 1))) {
- GIV(primFailCode) = PrimErrBadArgument;
+ (GIV(primFailCode) = PrimErrBadArgument);
  return;
  }
  hdr = long64At(aContext);
@@ -59078,7 +59088,7 @@
  stSize = (sp1 >> 1);
  l2: /* end fetchStackPointerOf: */;
  if (!(((index >= 1) && (index <= stSize)))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  /* begin subscript:with:storing:format: */
@@ -59134,7 +59144,7 @@
  assert((senderOop & 1));
  spouseFP = pointerForOop(senderOop - 1);
  if (!(((index >= 1) && (index <= (stackPointerIndexForFrame(spouseFP)))))) {
- GIV(primFailCode) = PrimErrBadIndex;
+ (GIV(primFailCode) = PrimErrBadIndex);
  return;
  }
  if ((((usqInt)(longAt(spouseFP + FoxMethod)))) < (startOfMemory())) {

Modified: branches/Cog/spursrc/vm/interp.h
===================================================================
--- branches/Cog/spursrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spursrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spursrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/spurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/gcc3x-interp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2055,7 +2055,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -26473,14 +26473,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent7 & 3) == 0)
- && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
- referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent7 & 3) == 0)
+ && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+ referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent7;
  }
- newObj2 = referent7;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -26491,14 +26496,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");

Modified: branches/Cog/spurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.c 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/interp.c 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
    from
- StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2052,7 +2052,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.830]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.831]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -26464,14 +26464,19 @@
 
  /* o2 wasn't in the table; put it there */
 
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj1));
- referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
- while (((referent7 & 3) == 0)
- && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
- referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj1)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj1));
+ referent7 = longAt((obj1 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent7 & 3) == 0)
+ && (((longAt(referent7)) & 0x3FFFFF) == 8)) {
+ referent7 = longAt((referent7 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj2 = referent7;
  }
- newObj2 = referent7;
+ else {
+ newObj2 = obj1;
+ }
  assert((rawHashBitsOf(newObj2)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");
@@ -26482,14 +26487,19 @@
  }
  else {
  if (o2ClassIndex != 0) {
- /* begin followForwarded: */
- assert(isUnambiguouslyForwarder(obj2));
- referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
- while (((referent13 & 3) == 0)
- && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
- referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ if (((longAt(obj2)) & (0x3FFFFF - 8)) == 0) {
+ /* begin followForwarded: */
+ assert(isUnambiguouslyForwarder(obj2));
+ referent13 = longAt((obj2 + (BaseHeaderSize)) + (0 << 2));
+ while (((referent13 & 3) == 0)
+ && (((longAt(referent13)) & 0x3FFFFF) == 8)) {
+ referent13 = longAt((referent13 + (BaseHeaderSize)) + (0 << 2));
+ }
+ newObj1 = referent13;
  }
- newObj1 = referent13;
+ else {
+ newObj1 = obj2;
+ }
  assert((rawHashBitsOf(newObj1)) == 0);
  /* begin setHashBitsOf:to: */
  flag("endianness");

Modified: branches/Cog/spurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/spurstacksrc/vm/interp.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/interp.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/spurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/spurstacksrc/vm/vmCallback.h 2014-07-22 16:38:54 UTC (rev 3051)
+++ branches/Cog/spurstacksrc/vm/vmCallback.h 2014-07-22 17:45:31 UTC (rev 3052)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.830 uuid: ad7e3584-5924-4500-be7c-ea7ebac3f71c
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.831 uuid: c231d214-1763-4c79-9b58-a5bf3385b0c9
  */
 
 #define VM_CALLBACK_INC 1