[commit] r2552 - CogVM source as per VMMakerr.oscog-eem.159

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

[commit] r2552 - CogVM source as per VMMakerr.oscog-eem.159

commits-3
 
Author: eliot
Date: 2012-05-02 16:13:02 -0700 (Wed, 02 May 2012)
New Revision: 2552

Removed:
   branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c
   branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h
Modified:
   branches/Cog/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj
   branches/Cog/nscogsrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
   branches/Cog/nscogsrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
   branches/Cog/nscogsrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
   branches/Cog/nscogsrc/vm/cogit.c
   branches/Cog/nscogsrc/vm/cogit.h
   branches/Cog/nscogsrc/vm/cogmethod.h
   branches/Cog/nscogsrc/vm/cointerp.c
   branches/Cog/nscogsrc/vm/cointerp.h
   branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
   branches/Cog/nscogsrc/vm/interp.h
   branches/Cog/nscogsrc/vm/vmCallback.h
   branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
   branches/Cog/platforms/Mac OS/vm/sqMacEncoding.c
   branches/Cog/platforms/Mac OS/vm/sqMacMain.c
   branches/Cog/platforms/Mac OS/vm/sqMacUIEventsUniversal.c
   branches/Cog/platforms/unix/plugins/SocketPlugin/sqUnixSocket.c
   branches/Cog/platforms/unix/vm/sqUnixMain.c
   branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
   branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
   branches/Cog/src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
   branches/Cog/src/plugins/Klatt/Klatt.c
   branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
   branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
   branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
   branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
   branches/Cog/src/vm/cogit.c
   branches/Cog/src/vm/cogit.h
   branches/Cog/src/vm/cogmethod.h
   branches/Cog/src/vm/cointerp.c
   branches/Cog/src/vm/cointerp.h
   branches/Cog/src/vm/cointerpmt.c
   branches/Cog/src/vm/cointerpmt.h
   branches/Cog/src/vm/gcc3x-cointerp.c
   branches/Cog/src/vm/gcc3x-cointerpmt.c
   branches/Cog/src/vm/interp.h
   branches/Cog/src/vm/vmCallback.h
   branches/Cog/stackbuild/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj
   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:
CogVM source as per VMMakerr.oscog-eem.159
Plugins:
Fix ThreadedFFIPlugin's preambleCCode for Pharo's mingw config.
Merge fix for JPEGReadWriter2Plugin (http://bugs.squeak.org/view.php?id=7691)
Merge with VMMaker version s of plugins
        JPEGReaderPlugin,
        KlattSynthesizerPlugin
        Matrix2x3Plugin
        Mpeg3Plugin (and hence lose some support files)

Fix limitation in platforms/unix/plugins/SocketPlugin/sqUnixSocket.c which could
cause NetNameResolver localHostAddress to answer 0 (if host has a set hostname
not being honoured by local DNS servers).  Fix falls back to localhost.

Fix shift-enclose on Mac by translating to shifted unicode via UCKeyTranslate.

Allow unix & mac plats to write crash.log to current directory if compiled with
CRASH_DUMP_IN_CWD. (still need to fix Win).


Modified: branches/Cog/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj 2012-05-02 23:13:02 UTC (rev 2552)
@@ -37,7 +37,6 @@
  A2181C3810814EC700B8FC7A /* seek.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0810814EC700B8FC7A /* seek.c */; };
  A2181C3910814EC700B8FC7A /* slice.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0910814EC700B8FC7A /* slice.c */; };
  A2181C3A10814EC700B8FC7A /* vlc.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0B10814EC700B8FC7A /* vlc.c */; };
- A2181C421081506400B8FC7A /* sqMacFileBits.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C401081506400B8FC7A /* sqMacFileBits.c */; };
  A2181C46108150C800B8FC7A /* Mpeg3Plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */; };
 /* End PBXBuildFile section */
 
@@ -102,8 +101,6 @@
  A2181C0A10814EC700B8FC7A /* slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slice.h; sourceTree = "<group>"; };
  A2181C0B10814EC700B8FC7A /* vlc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vlc.c; sourceTree = "<group>"; };
  A2181C0C10814EC700B8FC7A /* vlc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vlc.h; sourceTree = "<group>"; };
- A2181C401081506400B8FC7A /* sqMacFileBits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacFileBits.c; path = "../../platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c"; sourceTree = SOURCE_ROOT; };
- A2181C411081506400B8FC7A /* sqMacFileBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sqMacFileBits.h; path = "../../platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h"; sourceTree = SOURCE_ROOT; };
  A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Mpeg3Plugin.c; path = ../../src/plugins/Mpeg3Plugin/Mpeg3Plugin.c; sourceTree = SOURCE_ROOT; };
  A2181C491081511C00B8FC7A /* Mpeg3Plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mpeg3Plugin.h; path = ../../platforms/Cross/plugins/Mpeg3Plugin/Mpeg3Plugin.h; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
@@ -135,8 +132,6 @@
  children = (
  A2181C491081511C00B8FC7A /* Mpeg3Plugin.h */,
  A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */,
- A2181C401081506400B8FC7A /* sqMacFileBits.c */,
- A2181C411081506400B8FC7A /* sqMacFileBits.h */,
  A2181BC610814EC700B8FC7A /* libmpeg */,
  A2181BC510814EA000B8FC7A /* config.h */,
  A2181BC410814E7000B8FC7A /* interp.h */,
@@ -331,7 +326,6 @@
  A2181C3810814EC700B8FC7A /* seek.c in Sources */,
  A2181C3910814EC700B8FC7A /* slice.c in Sources */,
  A2181C3A10814EC700B8FC7A /* vlc.c in Sources */,
- A2181C421081506400B8FC7A /* sqMacFileBits.c in Sources */,
  A2181C46108150C800B8FC7A /* Mpeg3Plugin.c in Sources */,
  );
  runOnlyForDeploymentPostprocessing = 0;

Modified: branches/Cog/nscogsrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- JPEGReadWriter2Plugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ JPEGReadWriter2Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463 " __DATE__ ;
+static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -38,6 +38,8 @@
 
 
 /*** Constants ***/
+#define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Function Prototypes ***/
@@ -68,9 +70,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "JPEGReadWriter2Plugin VMMaker.oscog-eem.105 (i)"
+ "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 (i)"
 #else
- "JPEGReadWriter2Plugin VMMaker.oscog-eem.105 (e)"
+ "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 
@@ -291,7 +293,7 @@
  sqInt dmv2;
  sqInt form;
  unsigned *  formBits;
- sqInt formBitsAsInt;
+ sqInt formBitsOops;
  sqInt formBitsSize;
  sqInt formDepth;
  sqInt formHeight;
@@ -384,8 +386,7 @@
  di;
  dmi;
  dmo;
- formBits = ((unsigned *) (interpreterProxy->fetchPointerofObject(0, form)));
- formBitsAsInt = interpreterProxy->fetchPointerofObject(0, form);
+ formBitsOops = interpreterProxy->fetchPointerofObject(0, form);
 
  /* Various parameter checks */
 
@@ -401,12 +402,13 @@
  formHeight = ((j_decompress_ptr)aJPEGDecompressStruct)->image_height;
  pixPerWord = 32 / formDepth;
  formPitch = ((formWidth + (pixPerWord - 1)) / pixPerWord) * 4;
- formBitsSize = interpreterProxy->byteSizeOf(formBitsAsInt);
- interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsAsInt))
+ formBitsSize = interpreterProxy->byteSizeOf(formBitsOops);
+ interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsOops))
  && (formBitsSize == (formPitch * formHeight)));
  if (interpreterProxy->failed()) {
  return null;
  }
+ formBits = interpreterProxy->firstIndexableField(formBitsOops);
 
  sourceSize = interpreterProxy->stSizeOf(interpreterProxy->stackValue(3));
  if (sourceSize == 0) {
@@ -456,7 +458,7 @@
 
  switch (formDepth) {
  case 32:
- for(i = 0, j = 1; i < rowStride; i +=(pcinfo->out_color_components), j++) {
+ for(i = 0, j = 0; i < rowStride; i +=(pcinfo->out_color_components), j++) {
  formPix = (255 << 24) | (buffer[0][i+rOff] << 16) | (buffer[0][i+gOff] << 8) | buffer[0][i+bOff];
  if (formPix == 0) formPix = 1;
  formBits [ ((pcinfo->output_scanline - 1) * (pcinfo->image_width)) + j ] = formPix;
@@ -464,7 +466,7 @@
  break;
 
  case 16:
- for(i = 0, j = 1; i < rowStride; i +=(pcinfo->out_color_components*2), j++) {
+ for(i = 0, j = 0; i < rowStride; i +=(pcinfo->out_color_components*2), j++) {
  r1 = buffer[0][i+rOff];
  r2 = buffer[0][i+rOff2];
  g1 = buffer[0][i+gOff];
@@ -530,7 +532,7 @@
  unsigned int destinationSize;
  sqInt form;
  unsigned *  formBits;
- sqInt formBitsAsInt;
+ sqInt formBitsOops;
  sqInt formBitsSize;
  sqInt formDepth;
  sqInt formHeight;
@@ -584,8 +586,7 @@
  j;
  formPix;
  destinationSize;
- formBits = ((unsigned *) (interpreterProxy->fetchPointerofObject(0, form)));
- formBitsAsInt = interpreterProxy->fetchPointerofObject(0, form);
+ formBitsOops = interpreterProxy->fetchPointerofObject(0, form);
  formWidth = interpreterProxy->fetchIntegerofObject(1, form);
  formHeight = interpreterProxy->fetchIntegerofObject(2, form);
 
@@ -601,12 +602,13 @@
  ;
  pixPerWord = 32 / formDepth;
  formPitch = ((formWidth + (pixPerWord - 1)) / pixPerWord) * 4;
- formBitsSize = interpreterProxy->byteSizeOf(formBitsAsInt);
- interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsAsInt))
+ formBitsSize = interpreterProxy->byteSizeOf(formBitsOops);
+ interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsOops))
  && (formBitsSize == (formPitch * formHeight)));
  if (interpreterProxy->failed()) {
  return null;
  }
+ formBits = interpreterProxy->firstIndexableField(formBitsOops);
 
  destinationSize = interpreterProxy->stSizeOf(interpreterProxy->stackValue(4));
  pcinfo = (j_compress_ptr)aJPEGCompressStruct;
@@ -641,7 +643,7 @@
  while (pcinfo->next_scanline < pcinfo->image_height) {
  switch (formDepth) {
  case 32:
- for(i = 0, j = 1; i < rowStride; i +=3, j++) {
+ for(i = 0, j = 0; i < rowStride; i +=3, j++) {
  formPix = formBits [ ((pcinfo->next_scanline) * formWidth) + j ];
  buffer[0][i] = (formPix >> 16) & 255;
  buffer[0][i+1] = (formPix >> 8) & 255;
@@ -649,7 +651,7 @@
  }
  break;
  case 16:
- for(i = 0, j = 1; i < rowStride; i +=6, j++) {
+ for(i = 0, j = 0; i < rowStride; i +=6, j++) {
  formPix = formBits [ ((pcinfo->next_scanline) * formWidth) / 2 + j ];
  buffer[0][i] = (formPix >> 23) & 248;
  buffer[0][i+1] = (formPix >> 18) & 248;

Modified: branches/Cog/nscogsrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- JPEGReaderPlugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ JPEGReaderPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "JPEGReaderPlugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463 " __DATE__ ;
+static char __buildInfo[] = "JPEGReaderPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -39,6 +39,7 @@
 /*** Constants ***/
 #define BlockWidthIndex 5
 #define BlueIndex 2
+#define BytesPerWord 4
 #define ConstBits 13
 #define CurrentXIndex 0
 #define CurrentYIndex 1
@@ -68,6 +69,7 @@
 #define MCUBlockIndex 4
 #define MCUWidthIndex 8
 #define MinComponentSize 11
+#define MULTIPLEBYTECODESETS 0
 #define Pass1Bits 2
 #define Pass1Div 0x800
 #define Pass2Div 0x40000
@@ -145,9 +147,9 @@
 static sqInt jsReadLimit;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "JPEGReaderPlugin VMMaker.oscog-eem.105 (i)"
+ "JPEGReaderPlugin VMMaker.oscog-eem.159 (i)"
 #else
- "JPEGReaderPlugin VMMaker.oscog-eem.105 (e)"
+ "JPEGReaderPlugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 static int *residuals;
@@ -171,7 +173,7 @@
     sqInt i;
     sqInt max;
 
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(oop))) {
@@ -181,7 +183,7 @@
  return 0;
  }
  arrayOop = interpreterProxy->fetchPointerofObject(MCUBlockIndex, oop);
- if ((arrayOop & 1)) {
+ if (interpreterProxy->isIntegerObject(arrayOop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(arrayOop))) {
@@ -193,7 +195,7 @@
  }
  for (i = 0; i <= (max - 1); i += 1) {
  blockOop = interpreterProxy->fetchPointerofObject(i, arrayOop);
- if ((blockOop & 1)) {
+ if (interpreterProxy->isIntegerObject(blockOop)) {
  return 0;
  }
  if (!(interpreterProxy->isWords(blockOop))) {
@@ -210,7 +212,7 @@
 static sqInt
 colorComponentfrom(int *aColorComponent, sqInt oop)
 {
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(oop))) {
@@ -802,7 +804,7 @@
  return 0;
  }
  oop = interpreterProxy->fetchPointerofObject(0, streamOop);
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isBytes(oop))) {

Modified: branches/Cog/nscogsrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- Matrix2x3Plugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463
+ Matrix2x3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "Matrix2x3Plugin VMMaker.oscog-eem.105 uuid: 79234f80-ee6a-404c-9e5c-2134e3b76463 " __DATE__ ;
+static char __buildInfo[] = "Matrix2x3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -37,6 +37,8 @@
 
 
 /*** Constants ***/
+#define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Function Prototypes ***/
@@ -74,9 +76,9 @@
 static double m23ResultY;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "Matrix2x3Plugin VMMaker.oscog-eem.105 (i)"
+ "Matrix2x3Plugin VMMaker.oscog-eem.159 (i)"
 #else
- "Matrix2x3Plugin VMMaker.oscog-eem.105 (e)"
+ "Matrix2x3Plugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 
@@ -142,25 +144,25 @@
  return interpreterProxy->primitiveFail();
  }
  oop = interpreterProxy->fetchPointerofObject(0, point);
- isInt = (oop & 1);
+ isInt = interpreterProxy->isIntegerObject(oop);
  if (!(isInt
  || (interpreterProxy->isFloatObject(oop)))) {
  return interpreterProxy->primitiveFail();
  }
  if (isInt) {
- m23ArgX = (oop >> 1);
+ m23ArgX = interpreterProxy->integerValueOf(oop);
  }
  else {
  m23ArgX = interpreterProxy->floatValueOf(oop);
  }
  oop = interpreterProxy->fetchPointerofObject(1, point);
- isInt = (oop & 1);
+ isInt = interpreterProxy->isIntegerObject(oop);
  if (!(isInt
  || (interpreterProxy->isFloatObject(oop)))) {
  return interpreterProxy->primitiveFail();
  }
  if (isInt) {
- m23ArgY = (oop >> 1);
+ m23ArgY = interpreterProxy->integerValueOf(oop);
  }
  else {
  m23ArgY = interpreterProxy->floatValueOf(oop);

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/cogit.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- StackToRegisterMappingCogit VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ StackToRegisterMappingCogit VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/cogit.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/cogmethod.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/cointerp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1916,7 +1916,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.157";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.159";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4305,7 +4305,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4526,7 +4526,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4572,7 +4572,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5241,7 +5241,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8923,7 +8923,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9508,6 +9508,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9529,7 +9530,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10267,7 +10269,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10977,7 +10979,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15096,7 +15098,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22605,7 +22607,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22877,7 +22879,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -26163,7 +26175,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26413,7 +26425,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26697,7 +26709,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41616,7 +41628,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41668,7 +41680,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42101,7 +42113,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42334,7 +42346,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -45230,7 +45242,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/cointerp.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1919,7 +1919,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.157";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.159";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4309,7 +4309,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4530,7 +4530,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4576,7 +4576,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5245,7 +5245,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8927,7 +8927,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9512,6 +9512,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9533,7 +9534,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10271,7 +10273,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10981,7 +10983,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15100,7 +15102,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22609,7 +22611,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22881,7 +22883,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -26167,7 +26179,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26417,7 +26429,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26701,7 +26713,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41620,7 +41632,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41672,7 +41684,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42105,7 +42117,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42338,7 +42350,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -45234,7 +45246,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/interp.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/nscogsrc/vm/vmCallback.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_CALLBACK_INC 1


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Tue Apr 17 23:13:00 PDT 2012
   + Wed May  2 16:06:54 PDT 2012

Deleted: branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c
===================================================================
--- branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,11 +0,0 @@
-/*
- *  sqMacFileBits.c
- *  mpeglibAudioVideo
- *
- *  Created by John M McIntosh on 15/02/06.
- *  Copyright 2006 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "sqMacFileBits.h"
-

Deleted: branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h
===================================================================
--- branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,15 +0,0 @@
-/*
- *  macFileNameBits.c
- *  FT2Plugin support
- *
- *  Created by John M McIntosh on 21/11/05.
- * Feb 15th, 2006, use sqFilenameFromString
- *
- */
-#include "sqVirtualMachine.h"
-
-extern struct VirtualMachine * interpreterProxy;
-
-void sqFilenameFromStringOpen(char *buffer,long fileIndex, long fileLength, int flag) {
- interpreterProxy->ioFilenamefromStringofLengthresolveAliases(buffer,fileIndex, fileLength, flag);
-}

Modified: branches/Cog/platforms/Mac OS/vm/sqMacEncoding.c
===================================================================
--- branches/Cog/platforms/Mac OS/vm/sqMacEncoding.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/Mac OS/vm/sqMacEncoding.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -10,8 +10,8 @@
 #include "sq.h"
 
 #include "sqMacEncoding.h"
-#include "sqMacUIConstants.h"
-#include "sqMacFileLogic.h"
+#include "sqMacUIConstants.h"
+#include "sqMacFileLogic.h"
 
 
     CFStringEncoding gCurrentVMEncoding=kCFStringEncodingMacRoman;
@@ -28,8 +28,8 @@
     CFStringGetCString (vmPathString, target, VMPATH_SIZE, encoding);
 }
 
-void SetVMPathFromCFString(CFMutableStringRef strRef) {    
-    if (vmPathString != NULL)  
+void SetVMPathFromCFString(CFMutableStringRef strRef) {
+    if (vmPathString != NULL)
         CFRelease(vmPathString);
  vmPathString = strRef;
  CFRetain(vmPathString);
@@ -37,7 +37,7 @@
 
 Boolean VMPathIsEmpty() {
     char path[VMPATH_SIZE + 1];
-     if (vmPathString == NULL)
+     if (vmPathString == NULL)
         return true;
     getVMPathWithEncoding(path,gCurrentVMEncoding);
     return (*path == 0x00);
@@ -51,13 +51,13 @@
     getImageNameWithEncoding(imageName,gCurrentVMEncoding);
     return imageName;
 }
-    
+
 void SetImageNameViaCFString(CFStringRef string) {
     char *ignore;
- // normalization because we get here from looking for file name in resource folder directly at startup time.
+ // normalization because we get here from looking for file name in resource folder directly at startup time.
  // HFS+ imposes Unicode2.1 decomposed UTF-8 encoding on all path elements
  CFMutableStringRef mutableStr= CFStringCreateMutableCopy(NULL, 0, string);
- if (gCurrentVMEncoding == kCFStringEncodingUTF8)
+ if (gCurrentVMEncoding == kCFStringEncodingUTF8)
  CFStringNormalize(mutableStr, kCFStringNormalizationFormKC); // pre-combined
     CFRetain(mutableStr);
  if (imageNameString != NULL)
@@ -68,7 +68,7 @@
 
 void SetImageNameViaString(char *string,UInt32 encoding) {
  CFStringRef path;
-
+
  if (imageNameString != NULL)
         CFRelease(imageNameString);
  path = CFStringCreateWithCString(NULL, string, encoding);
@@ -78,7 +78,7 @@
 
 
 Boolean ImageNameIsEmpty() {
-    if (imageNameString == NULL)
+    if (imageNameString == NULL)
         return true;
     return getImageName() == 0x00;
 }
@@ -112,15 +112,15 @@
       if (strcmp("iso-8859-1",string) == 0)
           gCurrentVMEncoding = kCFStringEncodingISOLatin1;
   }
-  
+
   char  *getEncodingType(UInt32 aType) {
-      if (aType == kCFStringEncodingMacRoman)
+      if (aType == kCFStringEncodingMacRoman)
           return (char *)&"macintosh";
-      if (aType == kCFStringEncodingUTF8)
+      if (aType == kCFStringEncodingUTF8)
           return (char *)&"UTF-8";
-      if (aType == kCFStringEncodingShiftJIS)
+      if (aType == kCFStringEncodingShiftJIS)
           return (char *)&"ShiftJIS";
-      if (aType == kCFStringEncodingISOLatin1)
+      if (aType == kCFStringEncodingISOLatin1)
           return (char *)&"Latin1";
       return (char *)&"macintosh";
   }

Modified: branches/Cog/platforms/Mac OS/vm/sqMacMain.c
===================================================================
--- branches/Cog/platforms/Mac OS/vm/sqMacMain.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/Mac OS/vm/sqMacMain.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -252,15 +252,14 @@
 }
 #pragma auto_inline on
 
-/* construct /dir/for/image/crash.dmp if a / in imageName else crash.dmp */
+static char vmLogDirA[PATH_MAX+1];
+
 static void
 getCrashDumpFilenameInto(char *buf)
 {
-  char *slash;
-
-  strcpy(buf,imageName);
-  slash = strrchr(buf,'/');
-  strcpy(slash ? slash + 1 : buf, "crash.dmp");
+ strcpy(buf,vmLogDirA);
+ vmLogDirA[0] && strcat(buf, "/");
+ strcat(buf, "crash.dmp");
 }
 
 static void
@@ -439,6 +438,18 @@
  }
  }
 
+ /* Set the directory into which to write the crash.dmp file. */
+ /* By default this is the image file's directory (strange but true). */
+#if CRASH_DUMP_IN_CWD
+ getcwd(vmLogDirA,PATH_MAX);
+#else
+ strcpy(vmLogDirA,getImageName());
+ if (strrchr(vmLogDirA,'/'))
+ *strrchr(vmLogDirA,'/') = 0;
+ else
+ getcwd(vmLogDirA,PATH_MAX);
+#endif
+
  /* read the image file and allocate memory for Squeak heap */
  f = sqImageFileOpen(getImageName(), "rb");
     if (gSqueakHeadless && f == NULL)
@@ -527,9 +538,18 @@
 
 /* Andreas' stubs */
 char* ioGetLogDirectory(void) { return ""; };
-sqInt ioSetLogDirectoryOfSize(void* lblIndex, sqInt sz){ return 1; }
 
+sqInt
+ioSetLogDirectoryOfSize(void *lblIndex, sqInt sz)
+{
+ if (sz >= PATH_MAX)
+ return 0;
+ strncpy(vmLogDirA, lblIndex, sz);
+ vmLogDirA[sz] = 0;
+ return 1;
+}
 
+
 char * GetAttributeString(int id) {
  /* This is a hook for getting various status strings back from
    the OS. In particular, it allows Squeak to be passed arguments

Modified: branches/Cog/platforms/Mac OS/vm/sqMacUIEventsUniversal.c
===================================================================
--- branches/Cog/platforms/Mac OS/vm/sqMacUIEventsUniversal.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/Mac OS/vm/sqMacUIEventsUniversal.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -60,10 +60,9 @@
 
 enum { KeyMapSize= 32 };
 
-typedef struct
-{
+typedef struct {
   int keyCode;
-  int keyChar;
+  long keyChar;
   int keyRepeated;
 } KeyMapping;
 
@@ -79,8 +78,8 @@
 void signalAnyInterestedParties(void);
 static sqKeyboardEvent *enterKeystroke (long type, long cc, long pc, UniChar utf32Char, long m);
 
-static int addToKeyMap(int keyCode, int keyChar);
-static int findInKeyMap(int keyCode);
+static int addToKeyMap(int keyCode, UniChar keyChar);
+static UniChar findInKeyMap(int keyCode);
 static int removeFromKeyMap(int keyCode);
 static int indexInKeyMap(int keyCode);
 static int findRepeatInKeyMap(int keyCode);
@@ -221,13 +220,11 @@
 sqInputEvent *
 nextEventPut(void)
 {
- sqInputEvent *evt;
- evt = eventBuffer + eventBufferPut;
+ sqInputEvent *evt = eventBuffer + eventBufferPut;
  eventBufferPut = (eventBufferPut + 1) % MAX_EVENT_BUFFER;
- if (eventBufferGet == eventBufferPut) {
+ if (eventBufferGet == eventBufferPut)
  /* buffer overflow; drop the last event */
  eventBufferGet = (eventBufferGet + 1) % MAX_EVENT_BUFFER;
- }
  return evt;
 }
 
@@ -789,13 +786,64 @@
     return result;
 }
 
+
+static TISInputSourceRef currentKeyboard = (TISInputSourceRef)-1;
+static UCKeyboardLayout *currentKeyboardLayout;
+
+static UCKeyboardLayout *
+getKeyboardLayout()
+{
+ TISInputSourceRef kbdNow = TISCopyCurrentKeyboardInputSource();
+
+ if (currentKeyboard != kbdNow) {
+ KeyboardLayoutRef keyLayout;
+ SInt32  keyLayoutKind;
+ CFDataRef uchr = (CFDataRef)TISGetInputSourceProperty
+ (kbdNow,
+ kTISPropertyUnicodeKeyLayoutData);
+ currentKeyboard = kbdNow;
+ currentKeyboardLayout = (const UCKeyboardLayout*)CFDataGetBytePtr(uchr);
+ KLGetCurrentKeyboardLayout(&keyLayout);
+ KLGetKeyboardLayoutProperty(keyLayout, kKLKind, (const void **)&keyLayoutKind);
+ //printf("\nKbd: %ld kind: %ld kKLKCHRKind %ld",
+ // kbdNow, keyLayoutKind, kKLKCHRKind); fflush(stdout);
+ }
+ return currentKeyboardLayout;
+}
+
+static UniChar
+shiftedUnicodeForEvent(EventRef event, UInt32 keyCode)
+{
+#define MaxStringLength 4
+ UInt32 deadKeyState = 0;
+ UInt32 keyboardType;
+ UniCharCount actualStringLength = 0;
+ UniChar unicodeString[MaxStringLength];
+    OSStatus result;
+
+ GetEventParameter(event, kEventParamKeyboardType, typeUInt32, NULL,
+  sizeof(keyboardType), NULL, &keyboardType);
+ result = UCKeyTranslate(getKeyboardLayout(),
+ keyCode, kUCKeyActionDown,
+ /* Only interested in the shift state, and
+ * UCKeyTranslate uses old-style Carbon modifiers. */
+ ModifierStateCarbon(event) & 8
+ ? 1 << (shiftKeyBit - 8)
+ : 0,
+ keyboardType, 0,
+ &deadKeyState,
+ MaxStringLength,
+ &actualStringLength, unicodeString);
+ return result == noErr ? unicodeString[0] : 0;
+}
+#undef MaxStringLength
+
 static pascal OSStatus
 MyWindowEventKBHandler(EventHandlerCallRef myHandler,
  EventRef event, void* userData)
 {
 #pragma unused(myHandler,userData)
     UInt32 whatHappened,keyCode,keyChar;
- SInt32 key;
     OSStatus result = eventNotHandledErr; /* report failure by default */
 
     if (!windowActive)
@@ -808,28 +856,32 @@
  GetEventParameter (event, kEventParamKeyCode, typeUInt32,NULL, sizeof(typeUInt32), NULL, &keyCode);
  /* See UCKeyTranslate in https://developer.apple.com/library/mac/#documentation/Carbon/reference/Unicode_Utilities_Ref/Reference/reference.html
  * for how to convert an event to one or more Unicode characters. e.g.
- * http://www.cocoabuilder.com/archive/cocoa/184332-key-number-to-unicode-string.html
+ * http://inquisitivecocoa.com/2009/04/05/key-code-translator/
  */
     switch (whatHappened) {
-        case kEventRawKeyDown:
- //fprintf(stdout,"\nrawkey down %i",ioMSecs()); fflush(stdout);
+        case kEventRawKeyDown: {
+ //printf("\nrawkey down %i ",ioMSecs()); fflush(stdout);
+ //This will work, but this appears unused. */
+ //addToKeyMap(keyCode, shiftedUnicodeForEvent(event,keyCode));
  addToKeyMap(keyCode, 0);
             result = eventNotHandledErr;
             break;
+ }
         case kEventRawKeyRepeat:
  //fprintf(stdout,"\nrawkey repeat %i",ioMSecs()); fflush(stdout);
  setRepeatInKeyMap(keyCode);
             result = eventNotHandledErr;
             break;
-        case kEventRawKeyUp:
+        case kEventRawKeyUp: {
+ UniChar key;
  //fprintf(stdout,"\nrawkey up %i",ioMSecs()); fflush(stdout);
- key = findInKeyMap(keyCode);
- if (key != -1) {
- enterKeystroke ( EventTypeKeyboard,keyCode, EventKeyUp, 0, ModifierStateCarbon(event));
- }
+ if ((key = findInKeyMap(keyCode)) != -1)
+ enterKeystroke(EventTypeKeyboard, keyCode, EventKeyUp,
+ key, ModifierStateCarbon(event));
  removeFromKeyMap(keyCode);
             result = eventNotHandledErr;
             break;
+ }
         case kEventRawKeyModifiersChanged:
             /* ok in this case we fake a mouse event to deal with the modifiers changing */
             if(inputSemaphoreIndex)
@@ -1151,10 +1203,14 @@
     modifiedUniChar = *uniCharBufPtr;
     buttonState = modifierBits =ModifierStateCarbon(actualEvent); //Capture option states
     if (((modifierBits >> 3) & 0x9) == 0x9) {  /* command and shift */
-            if ((modifiedUniChar >= 97) && (modifiedUniChar <= 122)) {
-                    /* convert ascii code of command-shift-letter to upper case */
-                    modifiedUniChar = modifiedUniChar - 32;
-            }
+        if ((modifiedUniChar >= 97) && (modifiedUniChar <= 122)) {
+            /* convert ascii code of command-shift-letter to upper case */
+            modifiedUniChar = modifiedUniChar - 32;
+        }
+ else { /* map potential punctuation character to shifted key. */
+ if (!(modifiedUniChar = shiftedUnicodeForEvent(actualEvent,macKeyCode)))
+ modifiedUniChar = *uniCharBufPtr; /* undo on error */
+ }
     }
 
  modifierBits = modifierBits >> 3;
@@ -1515,8 +1571,7 @@
 static sqKeyboardEvent *
 enterKeystroke(long type, long cc, long pc, UniChar utf32Code, long m)
 {
- sqKeyboardEvent *evt;
- evt = (sqKeyboardEvent*) nextEventPut();
+ sqKeyboardEvent *evt = (sqKeyboardEvent*)nextEventPut();
 
  /* first the basics */
  //fprintf(stdout,"\nKeyStroke time %i Type %i Value %i",ioMSecs(),pc,cc); fflush(stdout);
@@ -1529,7 +1584,7 @@
  evt->modifiers = m;
  evt->windowIndex = windowActive;
  evt->utf32Code = 0;
- if(pc == EventKeyChar) {
+ if (pc == EventKeyChar) {
  evt->utf32Code = utf32Code;
  if (!inputSemaphoreIndex) {
  int  keystate;
@@ -1555,9 +1610,9 @@
 
 
 static int
-addToKeyMap(int keyCode, int keyChar)
+addToKeyMap(int keyCode, UniChar keyChar)
 {
-  // fprintf(stdout, "\nAddToKeyMap T %i code %i char %i i %i",ioMSecs(),keyCode,keyChar,keyMapSize); fflush(stdout);
+  //fprintf(stdout, "\nAddToKeyMap T %i code %i char %i(%x,%c) i %i",ioMSecs(),keyCode,keyChar,keyChar,keyChar,keyMapSize); fflush(stdout);
   if (keyMapSize > KeyMapSize) { fprintf(stderr, "keymap overflow\n");  return -1; }
   keyMap[keyMapSize++]= (KeyMapping){ keyCode, keyChar, 0};
   return keyChar;
@@ -1573,7 +1628,7 @@
   return -1;
 }
 
-static int
+static UniChar
 findInKeyMap(int keyCode)
 {
   int idx= indexInKeyMap(keyCode);

Modified: branches/Cog/platforms/unix/plugins/SocketPlugin/sqUnixSocket.c
===================================================================
--- branches/Cog/platforms/unix/plugins/SocketPlugin/sqUnixSocket.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/unix/plugins/SocketPlugin/sqUnixSocket.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1302,7 +1302,7 @@
   /* this is JUST PLAIN WRONG (I mean the design in the image rather
      than the implementation here, which is probably correct
      w.r.t. the broken design) */
-  if (optionValueSize > sizeof(buf) - 1)
+  if (optionValueSize > (int)sizeof(buf) - 1)
     goto barf;
 
   memset((void *)buf, 0, sizeof(buf));
@@ -1371,7 +1371,6 @@
 
 void sqSocketBindToPort(SocketPtr s, int addr, int port)
 {
-  int result;
   struct sockaddr_in inaddr;
   privateSocketStruct *pss= PSP(s);
 
@@ -1393,10 +1392,8 @@
 
 void sqSocketSetReusable(SocketPtr s)
 {
-  char optionValue[256];
   size_t bufSize;
   unsigned char buf[4];
-  int err;
 
   if (!socketValid(s)) return;
 
@@ -1406,7 +1403,6 @@
     {
       PSP(s)->sockError= errno;
       interpreterProxy->success(false);
-      return;
     }
 }
 
@@ -1446,7 +1442,12 @@
 
 sqInt sqResolverAddrLookupResultSize(void) { return strlen(lastName); }
 sqInt sqResolverError(void) { return lastError; }
-sqInt sqResolverLocalAddress(void) { return nameToAddr(localHostName); }
+sqInt sqResolverLocalAddress(void)
+{ sqInt localaddr = nameToAddr(localHostName);
+ if (!localaddr)
+ localaddr = nameToAddr("localhost");
+ return localaddr;
+}
 sqInt sqResolverNameLookupResult(void) { return lastAddr; }
 
 void sqResolverAddrLookupResult(char *nameForAddress, sqInt nameSize)

Modified: branches/Cog/platforms/unix/vm/sqUnixMain.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixMain.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/platforms/unix/vm/sqUnixMain.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -85,6 +85,8 @@
        char   imageName[MAXPATHLEN+1]; /* full path to image */
 static char   vmName[MAXPATHLEN+1]; /* full path to vm */
        char   vmPath[MAXPATHLEN+1]; /* full path to image directory */
+static char   vmLogDirA[PATH_MAX+1]; /* where to write crash.dmp */
+
        char  *exeName; /* short vm name, e.g. "squeak" */
 
        int    argCnt= 0; /* global copies for access from plugins */
@@ -330,20 +332,31 @@
   }
 }
 
-static void recordFullPathForImageName(const char *localImageName)
+static void
+recordFullPathForImageName(const char *localImageName)
 {
-  struct stat s;
-  /* get canonical path to image */
-  if ((stat(localImageName, &s) == -1) || (realpath(localImageName, imageName) == 0))
-    pathCopyAbs(imageName, localImageName, sizeof(imageName));
+ struct stat s;
+ /* get canonical path to image */
+ if ((stat(localImageName, &s) == -1)
+ || (realpath(localImageName, imageName) == 0))
+ pathCopyAbs(imageName, localImageName, sizeof(imageName));
+
+ /* Set the directory into which to write the crash.dmp file. */
+ /* By default this is the image file's directory (strange but true). */
+#if CRASH_DUMP_IN_CWD
+ getcwd(vmLogDirA,PATH_MAX);
+#else
+ strcpy(vmLogDirA,imageName);
+ if (strrchr(vmLogDirA,'/'))
+ *strrchr(vmLogDirA,'/') = 0;
+ else
+ getcwd(vmLogDirA,PATH_MAX);
+#endif
 }
 
 /* vm access */
 
-sqInt imageNameSize(void)
-{
-  return strlen(imageName);
-}
+sqInt imageNameSize(void) { return strlen(imageName); }
 
 sqInt imageNameGetLength(sqInt sqImageNameIndex, sqInt length)
 {
@@ -379,20 +392,13 @@
 }
 
 
-char *getImageName(void)
-{
-  return imageName;
-}
+char *getImageName(void) { return imageName; }
 
 
 /*** VM Home Directory Path ***/
 
+sqInt vmPathSize(void) { return strlen(vmPath); }
 
-sqInt vmPathSize(void)
-{
-  return strlen(vmPath);
-}
-
 sqInt vmPathGetLength(sqInt sqVMPathIndex, sqInt length)
 {
   char *stVMPath= pointerForOop(sqVMPathIndex);
@@ -850,15 +856,12 @@
 }
 #pragma auto_inline on
 
-/* construct /dir/for/image/crash.dmp if a / in imageName else crash.dmp */
 static void
 getCrashDumpFilenameInto(char *buf)
 {
-  char *slash;
-
-  strcpy(buf,imageName);
-  slash = strrchr(buf,'/');
-  strcpy(slash ? slash + 1 : buf, "crash.dmp");
+ strcpy(buf,vmLogDirA);
+ vmLogDirA[0] && strcat(buf, "/");
+ strcat(buf, "crash.dmp");
 }
 
 static void

Modified: branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
===================================================================
--- branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- ADPCMCodecPlugin VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50
+ ADPCMCodecPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "ADPCMCodecPlugin VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50 " __DATE__ ;
+static char __buildInfo[] = "ADPCMCodecPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -59,6 +59,7 @@
 
 /*** Constants ***/
 #define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Variables ***/
@@ -69,9 +70,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "ADPCMCodecPlugin VMMaker.oscog-eem.144 (i)"
+ "ADPCMCodecPlugin VMMaker.oscog-eem.159 (i)"
 #else
- "ADPCMCodecPlugin VMMaker.oscog-eem.144 (e)"
+ "ADPCMCodecPlugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 

Modified: branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
===================================================================
--- branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- SmartSyntaxPluginCodeGenerator VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- JPEGReadWriter2Plugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ JPEGReadWriter2Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99 " __DATE__ ;
+static char __buildInfo[] = "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -38,6 +38,8 @@
 
 
 /*** Constants ***/
+#define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Function Prototypes ***/
@@ -68,9 +70,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "JPEGReadWriter2Plugin VMMaker-oscog.40 (i)"
+ "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 (i)"
 #else
- "JPEGReadWriter2Plugin VMMaker-oscog.40 (e)"
+ "JPEGReadWriter2Plugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 
@@ -291,7 +293,7 @@
  sqInt dmv2;
  sqInt form;
  unsigned *  formBits;
- sqInt formBitsAsInt;
+ sqInt formBitsOops;
  sqInt formBitsSize;
  sqInt formDepth;
  sqInt formHeight;
@@ -384,8 +386,7 @@
  di;
  dmi;
  dmo;
- formBits = ((unsigned *) (interpreterProxy->fetchPointerofObject(0, form)));
- formBitsAsInt = interpreterProxy->fetchPointerofObject(0, form);
+ formBitsOops = interpreterProxy->fetchPointerofObject(0, form);
 
  /* Various parameter checks */
 
@@ -401,12 +402,13 @@
  formHeight = ((j_decompress_ptr)aJPEGDecompressStruct)->image_height;
  pixPerWord = 32 / formDepth;
  formPitch = ((formWidth + (pixPerWord - 1)) / pixPerWord) * 4;
- formBitsSize = interpreterProxy->byteSizeOf(formBitsAsInt);
- interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsAsInt))
+ formBitsSize = interpreterProxy->byteSizeOf(formBitsOops);
+ interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsOops))
  && (formBitsSize == (formPitch * formHeight)));
  if (interpreterProxy->failed()) {
  return null;
  }
+ formBits = interpreterProxy->firstIndexableField(formBitsOops);
 
  sourceSize = interpreterProxy->stSizeOf(interpreterProxy->stackValue(3));
  if (sourceSize == 0) {
@@ -456,7 +458,7 @@
 
  switch (formDepth) {
  case 32:
- for(i = 0, j = 1; i < rowStride; i +=(pcinfo->out_color_components), j++) {
+ for(i = 0, j = 0; i < rowStride; i +=(pcinfo->out_color_components), j++) {
  formPix = (255 << 24) | (buffer[0][i+rOff] << 16) | (buffer[0][i+gOff] << 8) | buffer[0][i+bOff];
  if (formPix == 0) formPix = 1;
  formBits [ ((pcinfo->output_scanline - 1) * (pcinfo->image_width)) + j ] = formPix;
@@ -464,7 +466,7 @@
  break;
 
  case 16:
- for(i = 0, j = 1; i < rowStride; i +=(pcinfo->out_color_components*2), j++) {
+ for(i = 0, j = 0; i < rowStride; i +=(pcinfo->out_color_components*2), j++) {
  r1 = buffer[0][i+rOff];
  r2 = buffer[0][i+rOff2];
  g1 = buffer[0][i+gOff];
@@ -530,7 +532,7 @@
  unsigned int destinationSize;
  sqInt form;
  unsigned *  formBits;
- sqInt formBitsAsInt;
+ sqInt formBitsOops;
  sqInt formBitsSize;
  sqInt formDepth;
  sqInt formHeight;
@@ -584,8 +586,7 @@
  j;
  formPix;
  destinationSize;
- formBits = ((unsigned *) (interpreterProxy->fetchPointerofObject(0, form)));
- formBitsAsInt = interpreterProxy->fetchPointerofObject(0, form);
+ formBitsOops = interpreterProxy->fetchPointerofObject(0, form);
  formWidth = interpreterProxy->fetchIntegerofObject(1, form);
  formHeight = interpreterProxy->fetchIntegerofObject(2, form);
 
@@ -601,12 +602,13 @@
  ;
  pixPerWord = 32 / formDepth;
  formPitch = ((formWidth + (pixPerWord - 1)) / pixPerWord) * 4;
- formBitsSize = interpreterProxy->byteSizeOf(formBitsAsInt);
- interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsAsInt))
+ formBitsSize = interpreterProxy->byteSizeOf(formBitsOops);
+ interpreterProxy->success((interpreterProxy->isWordsOrBytes(formBitsOops))
  && (formBitsSize == (formPitch * formHeight)));
  if (interpreterProxy->failed()) {
  return null;
  }
+ formBits = interpreterProxy->firstIndexableField(formBitsOops);
 
  destinationSize = interpreterProxy->stSizeOf(interpreterProxy->stackValue(4));
  pcinfo = (j_compress_ptr)aJPEGCompressStruct;
@@ -641,7 +643,7 @@
  while (pcinfo->next_scanline < pcinfo->image_height) {
  switch (formDepth) {
  case 32:
- for(i = 0, j = 1; i < rowStride; i +=3, j++) {
+ for(i = 0, j = 0; i < rowStride; i +=3, j++) {
  formPix = formBits [ ((pcinfo->next_scanline) * formWidth) + j ];
  buffer[0][i] = (formPix >> 16) & 255;
  buffer[0][i+1] = (formPix >> 8) & 255;
@@ -649,7 +651,7 @@
  }
  break;
  case 16:
- for(i = 0, j = 1; i < rowStride; i +=6, j++) {
+ for(i = 0, j = 0; i < rowStride; i +=6, j++) {
  formPix = formBits [ ((pcinfo->next_scanline) * formWidth) / 2 + j ];
  buffer[0][i] = (formPix >> 23) & 248;
  buffer[0][i+1] = (formPix >> 18) & 248;

Modified: branches/Cog/src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
===================================================================
--- branches/Cog/src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- JPEGReaderPlugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ JPEGReaderPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "JPEGReaderPlugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99 " __DATE__ ;
+static char __buildInfo[] = "JPEGReaderPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -39,6 +39,7 @@
 /*** Constants ***/
 #define BlockWidthIndex 5
 #define BlueIndex 2
+#define BytesPerWord 4
 #define ConstBits 13
 #define CurrentXIndex 0
 #define CurrentYIndex 1
@@ -68,6 +69,7 @@
 #define MCUBlockIndex 4
 #define MCUWidthIndex 8
 #define MinComponentSize 11
+#define MULTIPLEBYTECODESETS 0
 #define Pass1Bits 2
 #define Pass1Div 0x800
 #define Pass2Div 0x40000
@@ -145,9 +147,9 @@
 static sqInt jsReadLimit;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "JPEGReaderPlugin VMMaker-oscog.40 (i)"
+ "JPEGReaderPlugin VMMaker.oscog-eem.159 (i)"
 #else
- "JPEGReaderPlugin VMMaker-oscog.40 (e)"
+ "JPEGReaderPlugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 static int *residuals;
@@ -171,7 +173,7 @@
     sqInt i;
     sqInt max;
 
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(oop))) {
@@ -181,7 +183,7 @@
  return 0;
  }
  arrayOop = interpreterProxy->fetchPointerofObject(MCUBlockIndex, oop);
- if ((arrayOop & 1)) {
+ if (interpreterProxy->isIntegerObject(arrayOop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(arrayOop))) {
@@ -193,7 +195,7 @@
  }
  for (i = 0; i <= (max - 1); i += 1) {
  blockOop = interpreterProxy->fetchPointerofObject(i, arrayOop);
- if ((blockOop & 1)) {
+ if (interpreterProxy->isIntegerObject(blockOop)) {
  return 0;
  }
  if (!(interpreterProxy->isWords(blockOop))) {
@@ -210,7 +212,7 @@
 static sqInt
 colorComponentfrom(int *aColorComponent, sqInt oop)
 {
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isPointers(oop))) {
@@ -247,7 +249,7 @@
  yComponent[CurrentYIndex] = 0;
  for (i = 0; i <= (jpegBitsSize - 1); i += 1) {
  /* begin nextSampleY */
- dx = curX = yComponent[CurrentXIndex];
+ dx = (curX = yComponent[CurrentXIndex]);
  dy = yComponent[CurrentYIndex];
  sx = yComponent[HScaleIndex];
  sy = yComponent[VScaleIndex];
@@ -320,7 +322,7 @@
  crComponent[CurrentYIndex] = 0;
  for (i = 0; i <= (jpegBitsSize - 1); i += 1) {
  /* begin nextSampleY */
- dx = curX = yComponent[CurrentXIndex];
+ dx = (curX = yComponent[CurrentXIndex]);
  dy = yComponent[CurrentYIndex];
  sx = yComponent[HScaleIndex];
  sy = yComponent[VScaleIndex];
@@ -342,7 +344,7 @@
  }
  y = sample;
  /* begin nextSampleCb */
- dx1 = curX1 = cbComponent[CurrentXIndex];
+ dx1 = (curX1 = cbComponent[CurrentXIndex]);
  dy1 = cbComponent[CurrentYIndex];
  sx1 = cbComponent[HScaleIndex];
  sy1 = cbComponent[VScaleIndex];
@@ -365,7 +367,7 @@
  cb = sample1;
  cb -= SampleOffset;
  /* begin nextSampleCr */
- dx2 = curX2 = crComponent[CurrentXIndex];
+ dx2 = (curX2 = crComponent[CurrentXIndex]);
  dy2 = crComponent[CurrentYIndex];
  sx2 = crComponent[HScaleIndex];
  sy2 = crComponent[VScaleIndex];
@@ -802,7 +804,7 @@
  return 0;
  }
  oop = interpreterProxy->fetchPointerofObject(0, streamOop);
- if ((oop & 1)) {
+ if (interpreterProxy->isIntegerObject(oop)) {
  return 0;
  }
  if (!(interpreterProxy->isBytes(oop))) {
@@ -846,7 +848,7 @@
     sqInt sx;
     sqInt sy;
 
- dx = curX = cbComponent[CurrentXIndex];
+ dx = (curX = cbComponent[CurrentXIndex]);
  dy = cbComponent[CurrentYIndex];
  sx = cbComponent[HScaleIndex];
  sy = cbComponent[VScaleIndex];
@@ -881,7 +883,7 @@
     sqInt sx;
     sqInt sy;
 
- dx = curX = crComponent[CurrentXIndex];
+ dx = (curX = crComponent[CurrentXIndex]);
  dy = crComponent[CurrentYIndex];
  sx = crComponent[HScaleIndex];
  sy = crComponent[VScaleIndex];
@@ -916,7 +918,7 @@
     sqInt sx;
     sqInt sy;
 
- dx = curX = aComponent[CurrentXIndex];
+ dx = (curX = aComponent[CurrentXIndex]);
  dy = aComponent[CurrentYIndex];
  sx = aComponent[HScaleIndex];
  sy = aComponent[VScaleIndex];
@@ -951,7 +953,7 @@
     sqInt sx;
     sqInt sy;
 
- dx = curX = yComponent[CurrentXIndex];
+ dx = (curX = yComponent[CurrentXIndex]);
  dy = yComponent[CurrentYIndex];
  sx = yComponent[HScaleIndex];
  sy = yComponent[VScaleIndex];
@@ -1033,7 +1035,7 @@
  yComponent[CurrentYIndex] = 0;
  for (i = 0; i <= (jpegBitsSize - 1); i += 1) {
  /* begin nextSampleY */
- dx = curX = yComponent[CurrentXIndex];
+ dx = (curX = yComponent[CurrentXIndex]);
  dy = yComponent[CurrentYIndex];
  sx = yComponent[HScaleIndex];
  sy = yComponent[VScaleIndex];
@@ -1157,7 +1159,7 @@
  crComponent[CurrentYIndex] = 0;
  for (i = 0; i <= (jpegBitsSize - 1); i += 1) {
  /* begin nextSampleY */
- dx = curX = yComponent[CurrentXIndex];
+ dx = (curX = yComponent[CurrentXIndex]);
  dy = yComponent[CurrentYIndex];
  sx = yComponent[HScaleIndex];
  sy = yComponent[VScaleIndex];
@@ -1179,7 +1181,7 @@
  }
  y = sample;
  /* begin nextSampleCb */
- dx1 = curX1 = cbComponent[CurrentXIndex];
+ dx1 = (curX1 = cbComponent[CurrentXIndex]);
  dy1 = cbComponent[CurrentYIndex];
  sx1 = cbComponent[HScaleIndex];
  sy1 = cbComponent[VScaleIndex];
@@ -1202,7 +1204,7 @@
  cb = sample1;
  cb -= SampleOffset;
  /* begin nextSampleCr */
- dx2 = curX2 = crComponent[CurrentXIndex];
+ dx2 = (curX2 = crComponent[CurrentXIndex]);
  dy2 = crComponent[CurrentYIndex];
  sx2 = crComponent[HScaleIndex];
  sy2 = crComponent[VScaleIndex];

Modified: branches/Cog/src/plugins/Klatt/Klatt.c
===================================================================
--- branches/Cog/src/plugins/Klatt/Klatt.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/Klatt/Klatt.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- KlattSynthesizerPlugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ KlattSynthesizerPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "KlattSynthesizerPlugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99 " __DATE__ ;
+static char __buildInfo[] = "KlattSynthesizerPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -65,6 +65,7 @@
 #define Btp 31
 #define Btz 33
 #define Bypass 39
+#define BytesPerWord 4
 #define Diplophonia 4
 #define Epsilon 0.0001
 #define F0 0
@@ -82,6 +83,7 @@
 #define Ftz 32
 #define Gain 51
 #define Jitter 2
+#define MULTIPLEBYTECODESETS 0
 #define PI 3.141592653589793
 #define R1c 12
 #define R1vp 3
@@ -177,9 +179,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "Klatt VMMaker-oscog.40 (i)"
+ "Klatt VMMaker.oscog-eem.159 (i)"
 #else
- "Klatt VMMaker-oscog.40 (e)"
+ "Klatt VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 static float nlast;
@@ -1198,7 +1200,7 @@
  aKlattFrame = ((float *) (interpreterProxy->firstIndexableField(oop)));
 l1: /* end checkedFloatPtrOf: */;
  /* begin checkedShortPtrOf: */
- oop1 = bufferOop = interpreterProxy->stackValue(1);
+ oop1 = (bufferOop = interpreterProxy->stackValue(1));
  interpreterProxy->success(interpreterProxy->isWords(oop1));
  if (interpreterProxy->failed()) {
  buffer = 0;
@@ -1362,7 +1364,7 @@
  turbulence = (linearFromdB(frame[Turbulence])) * 0.1;
  }
  else {
- voicing = parVoicing = turbulence = 0.0;
+ voicing = (parVoicing = (turbulence = 0.0));
  }
  friction = (linearFromdB(frame[Friction])) * 0.25;
  aspiration = (linearFromdB(frame[Aspiration])) * 0.05;
@@ -2538,7 +2540,7 @@
  turbulence = (linearFromdB(frame[Turbulence])) * 0.1;
  }
  else {
- voicing = parVoicing = turbulence = 0.0;
+ voicing = (parVoicing = (turbulence = 0.0));
  }
  friction = (linearFromdB(frame[Friction])) * 0.25;
  aspiration = (linearFromdB(frame[Aspiration])) * 0.05;

Modified: branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
===================================================================
--- branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- Matrix2x3Plugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99
+ Matrix2x3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "Matrix2x3Plugin VMMaker-oscog.40 uuid: 637db40c-33c6-4263-816e-1b8cc19e3c99 " __DATE__ ;
+static char __buildInfo[] = "Matrix2x3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -37,6 +37,8 @@
 
 
 /*** Constants ***/
+#define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Function Prototypes ***/
@@ -74,9 +76,9 @@
 static double m23ResultY;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "Matrix2x3Plugin VMMaker-oscog.40 (i)"
+ "Matrix2x3Plugin VMMaker.oscog-eem.159 (i)"
 #else
- "Matrix2x3Plugin VMMaker-oscog.40 (e)"
+ "Matrix2x3Plugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 
@@ -142,25 +144,25 @@
  return interpreterProxy->primitiveFail();
  }
  oop = interpreterProxy->fetchPointerofObject(0, point);
- isInt = (oop & 1);
+ isInt = interpreterProxy->isIntegerObject(oop);
  if (!(isInt
  || (interpreterProxy->isFloatObject(oop)))) {
  return interpreterProxy->primitiveFail();
  }
  if (isInt) {
- m23ArgX = (oop >> 1);
+ m23ArgX = interpreterProxy->integerValueOf(oop);
  }
  else {
  m23ArgX = interpreterProxy->floatValueOf(oop);
  }
  oop = interpreterProxy->fetchPointerofObject(1, point);
- isInt = (oop & 1);
+ isInt = interpreterProxy->isIntegerObject(oop);
  if (!(isInt
  || (interpreterProxy->isFloatObject(oop)))) {
  return interpreterProxy->primitiveFail();
  }
  if (isInt) {
- m23ArgY = (oop >> 1);
+ m23ArgY = interpreterProxy->integerValueOf(oop);
  }
  else {
  m23ArgY = interpreterProxy->floatValueOf(oop);
@@ -262,7 +264,7 @@
 
  ;
  /* begin loadArgumentMatrix: */
- matrix = result = interpreterProxy->stackObjectValue(0);
+ matrix = (result = interpreterProxy->stackObjectValue(0));
  if (interpreterProxy->failed()) {
  m3 = null;
  goto l1;
@@ -417,11 +419,11 @@
  originX = m23ArgX;
  originY = m23ArgY;
  matrix2x3InvertPoint(matrix);
- minX = maxX = m23ResultX;
+ minX = (maxX = m23ResultX);
 
  /* Load bottom-right point */
 
- minY = maxY = m23ResultY;
+ minY = (maxY = m23ResultY);
  loadArgumentPoint(interpreterProxy->fetchPointerofObject(1, srcOop));
  if (interpreterProxy->failed()) {
  return null;
@@ -612,11 +614,11 @@
  /* begin matrix2x3TransformPoint: */
  m23ResultX = ((m23ArgX * (matrix[0])) + (m23ArgY * (matrix[1]))) + (matrix[2]);
  m23ResultY = ((m23ArgX * (matrix[3])) + (m23ArgY * (matrix[4]))) + (matrix[5]);
- minX = maxX = m23ResultX;
+ minX = (maxX = m23ResultX);
 
  /* Load bottom-right point */
 
- minY = maxY = m23ResultY;
+ minY = (maxY = m23ResultY);
  loadArgumentPoint(interpreterProxy->fetchPointerofObject(1, srcOop));
  if (interpreterProxy->failed()) {
  return null;

Modified: branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
===================================================================
--- branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50
+ SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- Mpeg3Plugin VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50
+ Mpeg3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "Mpeg3Plugin VMMaker.oscog-eem.144 uuid: bafb8042-095a-42f3-9058-ee7bd133da50 " __DATE__ ;
+static char __buildInfo[] = "Mpeg3Plugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -39,6 +39,7 @@
 
 /*** Constants ***/
 #define BytesPerWord 4
+#define MULTIPLEBYTECODESETS 0
 
 
 /*** Function Prototypes ***/
@@ -98,9 +99,9 @@
 static sqInt maximumNumberOfFilesToWatch;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "Mpeg3Plugin VMMaker.oscog-eem.144 (i)"
+ "Mpeg3Plugin VMMaker.oscog-eem.159 (i)"
 #else
- "Mpeg3Plugin VMMaker.oscog-eem.144 (e)"
+ "Mpeg3Plugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 static mpeg3_t *mpegFiles[1024+1];
@@ -319,7 +320,7 @@
  return null;
  }
  sz = interpreterProxy->byteSizeOf(((sqInt)(long)(path) - 4));
- sqFilenameFromStringOpen(storage, path, sz);
+ interpreterProxy->ioFilenamefromStringofLengthresolveAliases(storage, path, sz, 1);
  result = mpeg3_check_sig(storage);
  _return_value = (result? interpreterProxy->trueObject(): interpreterProxy->falseObject());
  if (interpreterProxy->failed()) {
@@ -458,7 +459,7 @@
 primitiveMPEG3EndOfVideo(void)
 {
  sqInt aNumber;
- mpeg3_t *file;
+ mpeg3_t *  file;
  sqInt fileHandle;
  sqInt result;
  sqInt _return_value;
@@ -773,7 +774,7 @@
  return null;
  }
  sz = interpreterProxy->byteSizeOf(((sqInt)(long)(path) - 4));
- sqFilenameFromStringOpen(storage, path, sz);
+ interpreterProxy->ioFilenamefromStringofLengthresolveAliases(storage, path, sz, 1);
  mpeg3Oop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(), 4);
  index = ((mpeg3_t **) (interpreterProxy->firstIndexableField(mpeg3Oop)));
  *index = mpeg3_open(storage,0); makeFileEntry(*index);
@@ -913,18 +914,6 @@
  return null;
 }
 
-
-/* int mpeg3_read_frame(mpeg3_t *file,
- unsigned char **output_rows,
- int in_x,
- int in_y,
- int in_w,
- int in_h,
- int out_w,
- int out_h,
- int color_model,
- int stream) */
-
 EXPORT(sqInt)
 primitiveMPEG3ReadFrame(void)
 {
@@ -996,18 +985,6 @@
  return null;
 }
 
-
-/* int mpeg3_read_frame(mpeg3_t *file,
- unsigned char **output_rows,
- int in_x,
- int in_y,
- int in_w,
- int in_h,
- int out_w,
- int out_h,
- int color_model,
- int stream) */
-
 EXPORT(sqInt)
 primitiveMPEG3ReadFrameBufferOffset(void)
 {

Modified: branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
===================================================================
--- branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.145 uuid: 7f3d6fd8-ce44-45ac-82f8-d0ed70d6f188
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- SoundGenerationPlugin VMMaker.oscog-eem.145 uuid: 7f3d6fd8-ce44-45ac-82f8-d0ed70d6f188
+ SoundGenerationPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "SoundGenerationPlugin VMMaker.oscog-eem.145 uuid: 7f3d6fd8-ce44-45ac-82f8-d0ed70d6f188 " __DATE__ ;
+static char __buildInfo[] = "SoundGenerationPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -63,6 +63,7 @@
 #define IncrementFractionBits 16
 #define LoopIndexFractionMask 0x1FF
 #define LoopIndexScaleFactor 0x200
+#define MULTIPLEBYTECODESETS 0
 #define ScaledIndexOverflow 0x20000000
 #define ScaleFactor 0x8000
 
@@ -75,9 +76,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "SoundGenerationPlugin VMMaker.oscog-eem.145 (i)"
+ "SoundGenerationPlugin VMMaker.oscog-eem.159 (i)"
 #else
- "SoundGenerationPlugin VMMaker.oscog-eem.145 (e)"
+ "SoundGenerationPlugin VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 

Modified: branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
===================================================================
--- branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.142 uuid: 5b4312fa-5b57-4639-b12d-a45e13e5bbdc
+ VMPluginCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- ThreadedIA32FFIPlugin VMMaker.oscog-eem.142 uuid: 5b4312fa-5b57-4639-b12d-a45e13e5bbdc
+ ThreadedIA32FFIPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "ThreadedIA32FFIPlugin VMMaker.oscog-eem.142 uuid: 5b4312fa-5b57-4639-b12d-a45e13e5bbdc " __DATE__ ;
+static char __buildInfo[] = "ThreadedIA32FFIPlugin VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 
 
 
@@ -88,6 +88,9 @@
 # else
 # define PLATFORM_API_USES_CALLEE_POPS_CONVENTION 0
 # endif
+#endif /* defined(_X86_) || defined(i386) || defined(__i386) || defined(__i386__) */
+
+#if !defined(ALLOCA_LIES_SO_USE_GETSP)
 # if defined(__MINGW32__) && (__GNUC__ >= 3)
     /*
      * cygwin -mno-cygwin (MinGW) gcc 3.4.x's alloca is a library routine that answers
@@ -95,13 +98,11 @@
      * Grab the actual stack pointer to correct.
      */
 # define ALLOCA_LIES_SO_USE_GETSP 1
+# else
+# define ALLOCA_LIES_SO_USE_GETSP 0
 # endif
-#endif /* defined(_X86_) || defined(i386) || defined(__i386) || defined(__i386__) */
+#endif /* !defined(ALLOCA_LIES_SO_USE_GETSP) */
 
-#if !defined(ALLOCA_LIES_SO_USE_GETSP)
-# define ALLOCA_LIES_SO_USE_GETSP 0
-#endif
-
 /* The dispatchOn:in:with:with: generates an unwanted call on error.  Just squash it. */
 #define error(foo) 0
 
@@ -178,6 +179,7 @@
 #define FFITypeUnsignedByte 2
 #define FFITypeVoid 0
 #define MaxNumArgs 15
+#define MULTIPLEBYTECODESETS 0
 #define PrimErrBadArgument 3
 #define PrimErrBadMethod 12
 #define PrimErrBadNumArgs 5
@@ -276,9 +278,9 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
- "SqueakFFIPrims VMMaker.oscog-eem.142 (i)"
+ "SqueakFFIPrims VMMaker.oscog-eem.159 (i)"
 #else
- "SqueakFFIPrims VMMaker.oscog-eem.142 (e)"
+ "SqueakFFIPrims VMMaker.oscog-eem.159 (e)"
 #endif
 ;
 

Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cogit.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- StackToRegisterMappingCogit VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ StackToRegisterMappingCogit VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cogit.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 

Modified: branches/Cog/src/vm/cogmethod.h
===================================================================
--- branches/Cog/src/vm/cogmethod.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cogmethod.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGenerator VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 typedef struct {

Modified: branches/Cog/src/vm/cointerp.c
===================================================================
--- branches/Cog/src/vm/cointerp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cointerp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1906,7 +1906,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.157]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.159]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4295,7 +4295,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4516,7 +4516,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4562,7 +4562,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5015,7 +5015,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8682,7 +8682,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9267,6 +9267,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9288,7 +9289,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10026,7 +10028,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10597,7 +10599,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -14716,7 +14718,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -21929,7 +21931,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22201,7 +22203,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -25474,7 +25486,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -25724,7 +25736,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26008,7 +26020,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -40927,7 +40939,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -40979,7 +40991,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41412,7 +41424,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41645,7 +41657,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -44541,7 +44553,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/src/vm/cointerp.h
===================================================================
--- branches/Cog/src/vm/cointerp.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cointerp.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 

Modified: branches/Cog/src/vm/cointerpmt.c
===================================================================
--- branches/Cog/src/vm/cointerpmt.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cointerpmt.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreterMT VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreterMT VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2005,7 +2005,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.157]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.159]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -4396,7 +4396,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4617,7 +4617,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4663,7 +4663,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5116,7 +5116,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8783,7 +8783,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9368,6 +9368,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9389,7 +9390,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10186,7 +10188,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10934,7 +10936,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15265,7 +15267,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15982,7 +15984,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22689,7 +22691,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22961,7 +22963,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -26682,7 +26694,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26932,7 +26944,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -27216,7 +27228,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42299,7 +42311,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42393,7 +42405,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42831,7 +42843,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -43064,7 +43076,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/src/vm/cointerpmt.h
===================================================================
--- branches/Cog/src/vm/cointerpmt.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/cointerpmt.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 

Modified: branches/Cog/src/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/gcc3x-cointerp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1909,7 +1909,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.157]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.159]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4299,7 +4299,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4520,7 +4520,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4566,7 +4566,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5019,7 +5019,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8686,7 +8686,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9271,6 +9271,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9292,7 +9293,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10030,7 +10032,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10601,7 +10603,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -14720,7 +14722,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -21933,7 +21935,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22205,7 +22207,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -25478,7 +25490,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -25728,7 +25740,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26012,7 +26024,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -40931,7 +40943,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -40983,7 +40995,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41416,7 +41428,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -41649,7 +41661,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -44545,7 +44557,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/src/vm/gcc3x-cointerpmt.c
===================================================================
--- branches/Cog/src/vm/gcc3x-cointerpmt.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/gcc3x-cointerpmt.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- CoInterpreterMT VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CoInterpreterMT VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc " __DATE__ ;
+static char __buildInfo[] = "CoInterpreterMT VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2008,7 +2008,7 @@
  /* 575 */ (void (*)(void))0,
  0 };
 static void (*externalPrimitiveTable[MaxExternalPrimitiveTableSize + 1 /* 4097 */])(void);
-const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.157]";
+const char *interpreterVersion = "Croquet Closure Cog MT VM [CoInterpreterMT VMMaker.oscog-eem.159]";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 sqInt willNotThreadWarnCount;
@@ -4400,7 +4400,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4621,7 +4621,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -4667,7 +4667,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #        if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -5120,7 +5120,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #          if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -8787,7 +8787,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -9372,6 +9372,7 @@
 attemptToSwitchToMachineCode(sqInt bcpc)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aCompiledMethodHeader;
+    sqInt aMethodOop;
     sqInt closure;
     CogMethod *cogMethod;
     CogBlockMethod *cogMethod1;
@@ -9393,7 +9394,8 @@
  }
  if (methodHasCogMethod(GIV(method))) {
  /* begin cogMethodOf: */
- methodHeader = longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ aMethodOop = GIV(method);
+ methodHeader = longAt((aMethodOop + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
  assert((isNonIntegerObject(methodHeader))
  && ((((usqInt)methodHeader)) < (startOfMemory())));
  cogMethod = ((CogMethod *) methodHeader);
@@ -10190,7 +10192,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -10938,7 +10940,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15269,7 +15271,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -15986,7 +15988,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22693,7 +22695,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -22965,7 +22967,17 @@
 sqInt
 methodUsesAlternateBytecodeSet(sqInt aMethodObj)
 {
- return (((headerOf(aMethodObj)) >> 1)) < 0;
+    sqInt methodHeader;
+    sqInt methodHeader1;
+
+ /* begin headerIndicatesAlternateBytecodeSet: */
+ /* begin headerOf: */
+ methodHeader1 = longAt((aMethodObj + BaseHeaderSize) + (HeaderIndex << ShiftForWord));
+ methodHeader = (isCogMethodReference(methodHeader1)
+ ? (assert(((((CogMethod *) methodHeader1)->objectHeader)) == (nullHeaderForMachineCodeMethod())),
+ (((CogMethod *) methodHeader1)->methodHeader))
+ : methodHeader1);
+ return ((methodHeader >> 1)) < 0;
 }
 
 
@@ -26686,7 +26698,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -26936,7 +26948,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -27220,7 +27232,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42303,7 +42315,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42397,7 +42409,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -42835,7 +42847,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 
@@ -43068,7 +43080,7 @@
  assert(isOopCompiledMethod(GIV(method)));
 
 #    if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((headerOf(GIV(method))) >> 1)) < 0
+ bytecodeSetSelector = (methodUsesAlternateBytecodeSet(GIV(method))
  ? 256
  : 0);
 

Modified: branches/Cog/src/vm/interp.h
===================================================================
--- branches/Cog/src/vm/interp.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/interp.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/src/vm/vmCallback.h
===================================================================
--- branches/Cog/src/vm/vmCallback.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/src/vm/vmCallback.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.157 uuid: 9a11acbe-4a62-43ce-81de-934f351598cc
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_CALLBACK_INC 1

Modified: branches/Cog/stackbuild/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/stackbuild/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/stackbuild/macbuild/Mpeg3Plugin/Mpeg3Plugin.xcodeproj/project.pbxproj 2012-05-02 23:13:02 UTC (rev 2552)
@@ -37,7 +37,6 @@
  A2181C3810814EC700B8FC7A /* seek.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0810814EC700B8FC7A /* seek.c */; };
  A2181C3910814EC700B8FC7A /* slice.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0910814EC700B8FC7A /* slice.c */; };
  A2181C3A10814EC700B8FC7A /* vlc.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C0B10814EC700B8FC7A /* vlc.c */; };
- A2181C421081506400B8FC7A /* sqMacFileBits.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C401081506400B8FC7A /* sqMacFileBits.c */; };
  A2181C46108150C800B8FC7A /* Mpeg3Plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */; };
 /* End PBXBuildFile section */
 
@@ -102,8 +101,6 @@
  A2181C0A10814EC700B8FC7A /* slice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = slice.h; sourceTree = "<group>"; };
  A2181C0B10814EC700B8FC7A /* vlc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vlc.c; sourceTree = "<group>"; };
  A2181C0C10814EC700B8FC7A /* vlc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vlc.h; sourceTree = "<group>"; };
- A2181C401081506400B8FC7A /* sqMacFileBits.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacFileBits.c; path = "../../../platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.c"; sourceTree = SOURCE_ROOT; };
- A2181C411081506400B8FC7A /* sqMacFileBits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sqMacFileBits.h; path = "../../../platforms/Mac OS/plugins/Mpeg3Plugin/sqMacFileBits.h"; sourceTree = SOURCE_ROOT; };
  A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Mpeg3Plugin.c; path = ../../../src/plugins/Mpeg3Plugin/Mpeg3Plugin.c; sourceTree = SOURCE_ROOT; };
  A2181C491081511C00B8FC7A /* Mpeg3Plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mpeg3Plugin.h; path = ../../../platforms/Cross/plugins/Mpeg3Plugin/Mpeg3Plugin.h; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
@@ -135,8 +132,6 @@
  children = (
  A2181C491081511C00B8FC7A /* Mpeg3Plugin.h */,
  A2181C45108150C800B8FC7A /* Mpeg3Plugin.c */,
- A2181C401081506400B8FC7A /* sqMacFileBits.c */,
- A2181C411081506400B8FC7A /* sqMacFileBits.h */,
  A2181BC610814EC700B8FC7A /* libmpeg */,
  A2181BC510814EA000B8FC7A /* config.h */,
  A2181BC410814E7000B8FC7A /* interp.h */,
@@ -331,7 +326,6 @@
  A2181C3810814EC700B8FC7A /* seek.c in Sources */,
  A2181C3910814EC700B8FC7A /* slice.c in Sources */,
  A2181C3A10814EC700B8FC7A /* vlc.c in Sources */,
- A2181C421081506400B8FC7A /* sqMacFileBits.c in Sources */,
  A2181C46108150C800B8FC7A /* Mpeg3Plugin.c in Sources */,
  );
  runOnlyForDeploymentPostprocessing = 0;

Modified: branches/Cog/stacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/stacksrc/vm/gcc3x-interp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/stacksrc/vm/gcc3x-interp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- StackInterpreter VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ StackInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -188,6 +188,7 @@
 #define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
+#define KeyIndex 0
 #define LargeContextBit 0x40000
 #define LargeContextBytes 252
 #define LargeContextSize 252
@@ -519,6 +520,7 @@
 static sqInt loadImageSegmentFromoutPointers(sqInt segmentWordArray, sqInt outPointerArray);
 void loadInitialContext(void);
 void longPrintOop(sqInt oop);
+void longPrintReferencesTo(sqInt anOop);
 static sqInt lookupInMethodCacheSelclass(sqInt selector, sqInt class);
 static sqInt lookupMethodInClass(sqInt class);
 static sqInt lookupMethodInDictionary(sqInt dictionary);
@@ -537,6 +539,7 @@
 static sqInt markStackPageMostRecentlyUsed(StackPage *page);
 static sqInt markStackPageNextMostRecentlyUsed(StackPage *page);
 static sqInt marriedContextpointsTostackDeltaForCurrentFrame(sqInt spouseContext, sqInt anOop, sqInt stackDeltaForCurrentFrame);
+static void marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext);
 static sqInt marryFrameSP(char *theFP, char *theSP);
 sqInt maybeSplObj(sqInt index);
 sqInt methodArgumentCount(void);
@@ -564,6 +567,7 @@
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
 static sqInt oopHasOkayClass(sqInt signedOop);
+static sqInt oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop);
 static sqInt oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisLessThan(sqInt anOop, sqInt otherOop);
 static sqInt pageIndexFor(void *pointer);
@@ -971,16 +975,16 @@
 _iss usqInt youngStart;
 _iss sqInt messageSelector;
 _iss usqInt newMethod;
+_iss usqInt endOfMemory;
 _iss usqInt instructionPointer;
-_iss usqInt endOfMemory;
 _iss sqInt rootTableCount;
 _iss sqInt remapBufferCount;
 _iss sqInt trueObj;
 _iss sqInt falseObj;
 _iss StackPage * pages;
-_iss char * stackLimit;
 _iss sqInt lkupClass;
 _iss usqInt reserveStart;
+_iss char * stackLimit;
 _iss char * stackMemory;
 _iss sqInt bytesPerPage;
 _iss usqInt memoryLimit;
@@ -1010,12 +1014,12 @@
 _iss sqInt statGrowMemory;
 _iss sqInt statMarkCount;
 _iss sqInt classNameIndex;
+_iss sqInt coInterpreter;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lowSpaceThreshold;
 _iss sqInt profileSemaphore;
 _iss usqLong statGCEndUsecs;
 _iss sqInt statSweepCount;
-_iss sqInt coInterpreter;
 _iss usqInt compEnd;
 _iss sqInt metaclassSizeBytes;
 _iss sqInt pendingFinalizationSignals;
@@ -1326,7 +1330,7 @@
  /* 212 */ primitiveContextSize,
  /* 213 */ primitiveContextXray,
  /* 214 */ primitiveVoidVMState,
- /* 215 */ (void (*)(void))0,
+ /* 215 */ primitiveFlushCacheByMethod,
  /* 216 */ (void (*)(void))0,
  /* 217 */ (void (*)(void))0,
  /* 218 */ primitiveDoNamedPrimitiveWithArgs,
@@ -1690,7 +1694,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.152]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.159]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -7161,8 +7165,11 @@
  goto l92;
  }
  else {
- result = (((byteAt((rcvr + BaseHeaderSize) + (((index >> 1)) - 1))) << 1) | 1);
- goto l92;
+ if ((fmt < 12)
+ || (((index >> 1)) >= (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ result = (((byteAt((rcvr + BaseHeaderSize) + (((index >> 1)) - 1))) << 1) | 1);
+ goto l92;
+ }
  }
  }
  /* begin primitiveFailFor: */
@@ -7240,25 +7247,25 @@
  goto l94;
  }
  if (fmt >= 16) {
-
- /* Note fmt >= 16 is an artificial flag for strings */
-
- valToPut = asciiOfCharacter(value);
- if (!(!GIV(primFailCode))) {
+ if (!(isinstanceOfcompactClassIndex(value, longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord)), 0))) {
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l94;
  }
+ valToPut = longAt((value + BaseHeaderSize) + (CharacterValueIndex << ShiftForWord));
  }
  else {
+ if ((fmt >= 12)
+ && (((index >> 1)) < (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ GIV(primFailCode) = PrimErrBadIndex;
+ goto l94;
+ }
  valToPut = value;
  }
  if ((valToPut & 1)) {
  valToPut = (valToPut >> 1);
  if (!((valToPut >= 0)
  && (valToPut <= 255))) {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l94;
  }
  byteAtput((rcvr + BaseHeaderSize) + (((index >> 1)) - 1), valToPut);
@@ -9990,25 +9997,25 @@
  goto l1;
  }
  if (fmt >= 16) {
-
- /* Note fmt >= 16 is an artificial flag for strings */
-
- valToPut = asciiOfCharacter(value);
- if (!(!GIV(primFailCode))) {
+ if (!(isinstanceOfcompactClassIndex(value, longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord)), 0))) {
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l1;
  }
+ valToPut = longAt((value + BaseHeaderSize) + (CharacterValueIndex << ShiftForWord));
  }
  else {
+ if ((fmt >= 12)
+ && (index < (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ GIV(primFailCode) = PrimErrBadIndex;
+ goto l1;
+ }
  valToPut = value;
  }
  if ((valToPut & 1)) {
  valToPut = (valToPut >> 1);
  if (!((valToPut >= 0)
  && (valToPut <= 255))) {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l1;
  }
  byteAtput((rcvr + BaseHeaderSize) + (index - 1), valToPut);
@@ -10126,8 +10133,11 @@
  goto l1;
  }
  else {
- result = (((byteAt((rcvr + BaseHeaderSize) + (index - 1))) << 1) | 1);
- goto l1;
+ if ((fmt < 12)
+ || (index >= (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ result = (((byteAt((rcvr + BaseHeaderSize) + (index - 1))) << 1) | 1);
+ goto l1;
+ }
  }
  }
  /* begin primitiveFailFor: */
@@ -11531,7 +11541,6 @@
     char *theSP1;
     sqInt valuePointer;
 
- assert(theFP != GIV(framePointer));
  assert((GIV(stackPage) == 0)
  || (GIV(stackPage) == (mostRecentlyUsedPage())));
  /* begin stackPageFor: */
@@ -14410,13 +14419,9 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
-    StackPage *newPage;
     sqInt stackPageBytes;
     sqInt stackPagesBytes;
-    char *theFP;
     void *theStackMemory;
-    sqInt top;
 
  stackPageBytes = stackPageByteSize();
  stackPagesBytes = computeStackZoneSize();
@@ -14430,36 +14435,7 @@
  }
  activeProc = longAt(((longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))) + BaseHeaderSize) + (ValueIndex << ShiftForWord))) + BaseHeaderSize) + (ActiveProcessIndex << ShiftForWord));
  activeContext = longAt((activeProc + BaseHeaderSize) + (SuspendedContextIndex << ShiftForWord));
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(0marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
  ioInitHeartbeat();
  interpret();
  return null;
@@ -15152,7 +15128,8 @@
     StackPage *thePage;
     sqInt value;
 
- assert(isContext(aOnceMarriedContext));
+ assert((isContext(aOnceMarriedContext))
+ && (isMarriedOrWidowedContext(aOnceMarriedContext)));
  /* begin frameOfMarriedContext: */
  value = longAt((aOnceMarriedContext + BaseHeaderSize) + (SenderIndex << ShiftForWord));
  /* begin withoutSmallIntegerTags: */
@@ -15913,10 +15890,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
-    StackPage *newPage;
-    char *theFP;
-    sqInt top;
 
  if ((checkForLeaks & 1) != 0) {
  clearLeakMapAndMapAccessibleObjects();
@@ -15924,36 +15897,7 @@
  }
  activeProc = longAt(((longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))) + BaseHeaderSize) + (ValueIndex << ShiftForWord))) + BaseHeaderSize) + (ActiveProcessIndex << ShiftForWord));
  activeContext = longAt((activeProc + BaseHeaderSize) + (SuspendedContextIndex << ShiftForWord));
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(1marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
 }
 
 void
@@ -16057,6 +16001,134 @@
 }
 
 
+/* Scan the heap long printing the oops of any and all objects that refer to
+ anOop
+ */
+
+void
+longPrintReferencesTo(sqInt anOop)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt header;
+    sqInt header1;
+    sqInt header2;
+    sqInt i;
+    sqInt obj;
+    sqInt obj1;
+    sqInt oop;
+    sqInt prntObj;
+    sqInt sz;
+    sqInt sz1;
+    sqInt sz2;
+
+ prntObj = 0;
+ /* begin firstAccessibleObject */
+ obj1 = memory + (headerTypeBytes[(longAt(memory)) & TypeMask]);
+ while ((((usqInt) obj1)) < (((usqInt) GIV(freeStart)))) {
+ if (!(((longAt(obj1)) & TypeMask) == HeaderTypeFree)) {
+ oop = obj1;
+ goto l2;
+ }
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) obj1)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(obj1)) & TypeMask) == HeaderTypeFree) {
+ sz = (longAt(obj1)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header = longAt(obj1);
+ sz = ((header & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(obj1 - (BytesPerWord * 2))) & LongSizeMask
+ : header & SizeMask);
+ }
+ obj1 = (obj1 + sz) + (headerTypeBytes[(longAt(obj1 + sz)) & TypeMask]);
+ }
+ error("heap is empty");
+ oop = null;
+l2: /* end firstAccessibleObject */;
+ while (!(oop == null)) {
+ if ((((oop & 1) == 0)
+ && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
+ || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12)) {
+ 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) {
+ if (anOop == (longAt((oop + BaseHeaderSize) + (i << ShiftForWord)))) {
+ printHex(oop);
+ print(" @ ");
+ printNum(i);
+ /* begin cr */
+ printf("\n");
+ prntObj = 1;
+ i = 0;
+ }
+ i -= 1;
+ }
+ if (prntObj) {
+ prntObj = 0;
+ longPrintOop(oop);
+ }
+ }
+ /* begin accessibleObjectAfter: */
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) oop)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+ sz2 = (longAt(oop)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header2 = longAt(oop);
+ sz2 = ((header2 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+ : header2 & SizeMask);
+ }
+ obj = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+ while ((((usqInt) obj)) < (((usqInt) GIV(freeStart)))) {
+ if (!(((longAt(obj)) & TypeMask) == HeaderTypeFree)) {
+ oop = obj;
+ goto l1;
+ }
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) obj)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(obj)) & TypeMask) == HeaderTypeFree) {
+ sz1 = (longAt(obj)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header1 = longAt(obj);
+ sz1 = ((header1 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(obj - (BytesPerWord * 2))) & LongSizeMask
+ : header1 & SizeMask);
+ }
+ obj = (obj + sz1) + (headerTypeBytes[(longAt(obj + sz1)) & TypeMask]);
+ }
+ oop = null;
+ l1: /* end accessibleObjectAfter: */;
+ }
+}
+
+
 /* This method implements a simple method lookup cache. If an entry for the
  given selector and class is found in the cache, set the values of
  'newMethod' and 'primitiveFunctionPointer' and return true. Otherwise,
@@ -17396,6 +17468,49 @@
 }
 
 
+/* Establish aContext at the base of a new stackPage, make the stackPage the
+ active one and set-up the interreter registers. This is used to boot the
+ system and bring it back after a snapshot. */
+
+static void
+marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt aMethodObj;
+    StackPage *newPage;
+    char *theFP;
+    sqInt top;
+
+ assert(GIV(stackPage) == 0);
+ newPage = makeBaseFrameFor(aContext);
+ /* begin setStackPageAndLimit: */
+ GIV(stackPage) = newPage;
+ if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
+ GIV(stackLimit) = (GIV(stackPage)->stackLimit);
+ }
+ markStackPageMostRecentlyUsed(newPage);
+ GIV(framePointer) = (GIV(stackPage)->headFP);
+ GIV(stackPointer) = (GIV(stackPage)->headSP);
+ /* begin setMethod: */
+ /* begin iframeMethod: */
+ theFP = (GIV(stackPage)->headFP);
+ aMethodObj = longAt(theFP + FoxMethod);
+ GIV(method) = aMethodObj;
+ assert(isOopCompiledMethod(GIV(method)));
+
+#  if MULTIPLEBYTECODESETS
+ bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
+ ? 256
+ : 0);
+
+#  endif /* MULTIPLEBYTECODESETS */
+
+ /* begin popStack */
+ top = longAt(GIV(stackPointer));
+ GIV(stackPointer) += BytesPerWord;
+ GIV(instructionPointer) = ((sqInt) top);
+}
+
+
 /* Marry an unmarried frame. This means creating a spouse context
  initialized with a subset of the frame's state (state through the last
  argument) that references the frame. */
@@ -18124,6 +18239,17 @@
  method will be inlined during C translation. */
 
 static sqInt
+oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop)
+{
+ return (((usqInt) anOop)) >= (((usqInt) otherOop));
+}
+
+
+/* Compare two oop values, treating them as object memory locations.
+ Use #cCoerce:to: to ensure comparison of unsigned magnitudes. This
+ method will be inlined during C translation. */
+
+static sqInt
 oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop)
 {
  return ((((usqInt) anOop)) > (((usqInt) baseOop)))
@@ -32199,45 +32325,13 @@
 primitiveVoidVMState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
-    sqInt aMethodObj;
-    StackPage *newPage;
     char *sp;
-    char *theFP;
-    sqInt top;
 
  /* begin push: */
  longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
  GIV(stackPointer) = sp;
  activeContext = voidVMStateForSnapshot();
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
 }
 
 static void
@@ -32738,7 +32832,7 @@
  printf("\n");
  }
  else {
- print("widdowed (assuming framePointer valid)");
+ print("widowed (assuming framePointer valid)");
  /* begin cr */
  printf("\n");
  }
@@ -33668,6 +33762,17 @@
  goto l2;
  }
  printf("a(n) %.*s", nameLen, name);
+ if (((instanceSizeOf(classOop)) == (ValueIndex + 1))
+ && (((longAt((classOop + BaseHeaderSize) + (SuperclassIndex << ShiftForWord))) == (superclassOf(fetchClassOfNonInt(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))))))
+ && ((((longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord))) & 1) == 0)
+ && (((((usqInt) (longAt(longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord))))) >> 8) & 15) >= 8)))) {
+ /* begin space */
+ /* begin printChar: */
+ putchar(' ');
+ printOopShort(longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord)));
+ print(" -> ");
+ printHex(longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord)));
+ }
 l2: /* end printOopShortInner: */;
  flush();
 }
@@ -36308,7 +36413,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
     sqInt dataSize;
     sqInt fmt;
     sqInt header;
@@ -36316,7 +36420,6 @@
     sqInt header2;
     sqInt i;
     sqInt i1;
-    StackPage *newPage;
     sqInt object;
     sqInt object1;
     sqInt oop;
@@ -36331,8 +36434,6 @@
     sqInt stackIndex;
     sqInt sz;
     sqInt sz1;
-    char *theFP;
-    sqInt top;
 
  /* begin push: */
  object1 = GIV(instructionPointer);
@@ -36441,36 +36542,7 @@
  }
  longAtput((activeContext + BaseHeaderSize) + (StackPointerIndex << ShiftForWord), (((stackIndex - 1) << 1) | 1));
  }
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(2marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
  if (!GIV(primFailCode)) {
  /* begin push: */
  object = GIV(falseObj);
@@ -36861,40 +36933,40 @@
  sz -= hdr & Size4Bit;
  if (fmt <= 4) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- goto l1;
+ goto l2;
  }
  if (fmt < 8) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> 2;
- goto l1;
+ goto l2;
  }
  else {
  totalLength = (sz - BaseHeaderSize) - (fmt & 3);
- goto l1;
+ goto l2;
  }
-l1: /* end lengthOf:baseHeader:format: */;
+l2: /* end lengthOf:baseHeader:format: */;
  /* begin fixedFieldsOf:format:length: */
  if ((fmt > 4)
  || (fmt == 2)) {
  fixedFields = 0;
- goto l3;
+ goto l4;
  }
  if (fmt < 2) {
  fixedFields = totalLength;
- goto l3;
+ goto l4;
  }
  /* begin fetchClassOfNonInt: */
  if (((ccIndex = (((usqInt) (longAt(array))) >> 12) & 31)) == 0) {
  class = (longAt(array - BaseHeaderSize)) & AllButTypeMask;
- goto l4;
+ goto l3;
  }
  else {
  class = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l4;
+ goto l3;
  }
-l4: /* end fetchClassOfNonInt: */;
+l3: /* end fetchClassOfNonInt: */;
  classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
  fixedFields = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 63)) - 1;
-l3: /* end fixedFieldsOf:format:length: */;
+l4: /* end fixedFieldsOf:format:length: */;
  if ((fmt == 3)
  && (((((usqInt) hdr) >> 12) & 31) == ClassMethodContextCompactIndex)) {
  /* begin stackPointerForMaybeMarriedContext: */
@@ -36904,17 +36976,17 @@
  sp = stackPointerIndexForFrame(frameOfMarriedContext(array));
  assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array)));
  stSize = sp;
- goto l2;
+ goto l1;
  }
  /* begin fetchStackPointerOf: */
  sp1 = longAt((array + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
  if (!((sp1 & 1))) {
  stSize = 0;
- goto l2;
+ goto l1;
  }
  assert((ReceiverIndex + ((sp1 >> 1))) < (lengthOf(array)));
  stSize = (sp1 >> 1);
- l2: /* end stackPointerForMaybeMarriedContext: */;
+ l1: /* end stackPointerForMaybeMarriedContext: */;
  if (((((usqInt) index)) >= (((usqInt) 1)))
  && (((((usqInt) index)) <= (((usqInt) stSize)))
  && ((((longAt((array + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1))
@@ -36925,7 +36997,9 @@
  else {
  stSize = totalLength - fixedFields;
  }
- if (((((usqInt) index)) >= (((usqInt) 1)))
+ if ((oopisGreaterThanOrEqualTo(index, (fmt >= 12
+ ? ((((((usqInt) (longAt((array + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1
+ : 1)))
  && ((((usqInt) index)) <= (((usqInt) stSize)))) {
  /* begin subscript:with:format: */
  if (fmt <= 4) {
@@ -36978,40 +37052,40 @@
  sz -= hdr & Size4Bit;
  if (fmt <= 4) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- goto l1;
+ goto l2;
  }
  if (fmt < 8) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> 2;
- goto l1;
+ goto l2;
  }
  else {
  totalLength = (sz - BaseHeaderSize) - (fmt & 3);
- goto l1;
+ goto l2;
  }
-l1: /* end lengthOf:baseHeader:format: */;
+l2: /* end lengthOf:baseHeader:format: */;
  /* begin fixedFieldsOf:format:length: */
  if ((fmt > 4)
  || (fmt == 2)) {
  fixedFields = 0;
- goto l3;
+ goto l4;
  }
  if (fmt < 2) {
  fixedFields = totalLength;
- goto l3;
+ goto l4;
  }
  /* begin fetchClassOfNonInt: */
  if (((ccIndex = (((usqInt) (longAt(array))) >> 12) & 31)) == 0) {
  class = (longAt(array - BaseHeaderSize)) & AllButTypeMask;
- goto l4;
+ goto l3;
  }
  else {
  class = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l4;
+ goto l3;
  }
-l4: /* end fetchClassOfNonInt: */;
+l3: /* end fetchClassOfNonInt: */;
  classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
  fixedFields = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 63)) - 1;
-l3: /* end fixedFieldsOf:format:length: */;
+l4: /* end fixedFieldsOf:format:length: */;
  if ((fmt == 3)
  && (((((usqInt) hdr) >> 12) & 31) == ClassMethodContextCompactIndex)) {
  /* begin stackPointerForMaybeMarriedContext: */
@@ -37021,17 +37095,17 @@
  sp = stackPointerIndexForFrame(frameOfMarriedContext(array));
  assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array)));
  stSize = sp;
- goto l2;
+ goto l1;
  }
  /* begin fetchStackPointerOf: */
  sp1 = longAt((array + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
  if (!((sp1 & 1))) {
  stSize = 0;
- goto l2;
+ goto l1;
  }
  assert((ReceiverIndex + ((sp1 >> 1))) < (lengthOf(array)));
  stSize = (sp1 >> 1);
- l2: /* end stackPointerForMaybeMarriedContext: */;
+ l1: /* end stackPointerForMaybeMarriedContext: */;
  if (((((usqInt) index)) >= (((usqInt) 1)))
  && (((((usqInt) index)) <= (((usqInt) stSize)))
  && ((((longAt((array + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1))
@@ -37043,7 +37117,9 @@
  else {
  stSize = totalLength - fixedFields;
  }
- if (((((usqInt) index)) >= (((usqInt) 1)))
+ if ((oopisGreaterThanOrEqualTo(index, (fmt >= 12
+ ? ((((((usqInt) (longAt((array + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1
+ : 1)))
  && ((((usqInt) index)) <= (((usqInt) stSize)))) {
  /* begin subscript:with:storing:format: */
  VM_LABEL(2subscriptwithstoringformat);

Modified: branches/Cog/stacksrc/vm/interp.c
===================================================================
--- branches/Cog/stacksrc/vm/interp.c 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/stacksrc/vm/interp.c 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,9 +1,9 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
    from
- StackInterpreter VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ StackInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -185,6 +185,7 @@
 #define ImmutabilityBit 0x20000000
 #define InstanceSpecificationIndex 2
 #define InstructionPointerIndex 1
+#define KeyIndex 0
 #define LargeContextBit 0x40000
 #define LargeContextBytes 252
 #define LargeContextSize 252
@@ -516,6 +517,7 @@
 static sqInt loadImageSegmentFromoutPointers(sqInt segmentWordArray, sqInt outPointerArray);
 void loadInitialContext(void);
 void longPrintOop(sqInt oop);
+void longPrintReferencesTo(sqInt anOop);
 static sqInt lookupInMethodCacheSelclass(sqInt selector, sqInt class);
 static sqInt lookupMethodInClass(sqInt class);
 static sqInt lookupMethodInDictionary(sqInt dictionary);
@@ -534,6 +536,7 @@
 static sqInt markStackPageMostRecentlyUsed(StackPage *page);
 static sqInt markStackPageNextMostRecentlyUsed(StackPage *page);
 static sqInt marriedContextpointsTostackDeltaForCurrentFrame(sqInt spouseContext, sqInt anOop, sqInt stackDeltaForCurrentFrame);
+static void marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext);
 static sqInt marryFrameSP(char *theFP, char *theSP);
 sqInt maybeSplObj(sqInt index);
 sqInt methodArgumentCount(void);
@@ -561,6 +564,7 @@
 sqInt oopFromChunk(sqInt chunk);
 static sqInt oopHasAcceptableClass(sqInt signedOop);
 static sqInt oopHasOkayClass(sqInt signedOop);
+static sqInt oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop);
 static sqInt oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisLessThan(sqInt anOop, sqInt otherOop);
 static sqInt pageIndexFor(void *pointer);
@@ -968,16 +972,16 @@
 _iss usqInt youngStart;
 _iss sqInt messageSelector;
 _iss usqInt newMethod;
+_iss usqInt endOfMemory;
 _iss usqInt instructionPointer;
-_iss usqInt endOfMemory;
 _iss sqInt rootTableCount;
 _iss sqInt remapBufferCount;
 _iss sqInt trueObj;
 _iss sqInt falseObj;
 _iss StackPage * pages;
-_iss char * stackLimit;
 _iss sqInt lkupClass;
 _iss usqInt reserveStart;
+_iss char * stackLimit;
 _iss char * stackMemory;
 _iss sqInt bytesPerPage;
 _iss usqInt memoryLimit;
@@ -1007,12 +1011,12 @@
 _iss sqInt statGrowMemory;
 _iss sqInt statMarkCount;
 _iss sqInt classNameIndex;
+_iss sqInt coInterpreter;
 _iss sqInt lastMethodCacheProbeWrite;
 _iss sqInt lowSpaceThreshold;
 _iss sqInt profileSemaphore;
 _iss usqLong statGCEndUsecs;
 _iss sqInt statSweepCount;
-_iss sqInt coInterpreter;
 _iss usqInt compEnd;
 _iss sqInt metaclassSizeBytes;
 _iss sqInt pendingFinalizationSignals;
@@ -1323,7 +1327,7 @@
  /* 212 */ primitiveContextSize,
  /* 213 */ primitiveContextXray,
  /* 214 */ primitiveVoidVMState,
- /* 215 */ (void (*)(void))0,
+ /* 215 */ primitiveFlushCacheByMethod,
  /* 216 */ (void (*)(void))0,
  /* 217 */ (void (*)(void))0,
  /* 218 */ primitiveDoNamedPrimitiveWithArgs,
@@ -1687,7 +1691,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.152]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreter VMMaker.oscog-eem.159]";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -7157,8 +7161,11 @@
  goto l92;
  }
  else {
- result = (((byteAt((rcvr + BaseHeaderSize) + (((index >> 1)) - 1))) << 1) | 1);
- goto l92;
+ if ((fmt < 12)
+ || (((index >> 1)) >= (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ result = (((byteAt((rcvr + BaseHeaderSize) + (((index >> 1)) - 1))) << 1) | 1);
+ goto l92;
+ }
  }
  }
  /* begin primitiveFailFor: */
@@ -7236,25 +7243,25 @@
  goto l94;
  }
  if (fmt >= 16) {
-
- /* Note fmt >= 16 is an artificial flag for strings */
-
- valToPut = asciiOfCharacter(value);
- if (!(!GIV(primFailCode))) {
+ if (!(isinstanceOfcompactClassIndex(value, longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord)), 0))) {
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l94;
  }
+ valToPut = longAt((value + BaseHeaderSize) + (CharacterValueIndex << ShiftForWord));
  }
  else {
+ if ((fmt >= 12)
+ && (((index >> 1)) < (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ GIV(primFailCode) = PrimErrBadIndex;
+ goto l94;
+ }
  valToPut = value;
  }
  if ((valToPut & 1)) {
  valToPut = (valToPut >> 1);
  if (!((valToPut >= 0)
  && (valToPut <= 255))) {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l94;
  }
  byteAtput((rcvr + BaseHeaderSize) + (((index >> 1)) - 1), valToPut);
@@ -9986,25 +9993,25 @@
  goto l1;
  }
  if (fmt >= 16) {
-
- /* Note fmt >= 16 is an artificial flag for strings */
-
- valToPut = asciiOfCharacter(value);
- if (!(!GIV(primFailCode))) {
+ if (!(isinstanceOfcompactClassIndex(value, longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassCharacter << ShiftForWord)), 0))) {
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l1;
  }
+ valToPut = longAt((value + BaseHeaderSize) + (CharacterValueIndex << ShiftForWord));
  }
  else {
+ if ((fmt >= 12)
+ && (index < (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ GIV(primFailCode) = PrimErrBadIndex;
+ goto l1;
+ }
  valToPut = value;
  }
  if ((valToPut & 1)) {
  valToPut = (valToPut >> 1);
  if (!((valToPut >= 0)
  && (valToPut <= 255))) {
- /* begin primitiveFail */
- if (!GIV(primFailCode)) {
- GIV(primFailCode) = 1;
- }
+ GIV(primFailCode) = PrimErrBadArgument;
  goto l1;
  }
  byteAtput((rcvr + BaseHeaderSize) + (index - 1), valToPut);
@@ -10122,8 +10129,11 @@
  goto l1;
  }
  else {
- result = (((byteAt((rcvr + BaseHeaderSize) + (index - 1))) << 1) | 1);
- goto l1;
+ if ((fmt < 12)
+ || (index >= (((((((usqInt) (longAt((rcvr + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1))) {
+ result = (((byteAt((rcvr + BaseHeaderSize) + (index - 1))) << 1) | 1);
+ goto l1;
+ }
  }
  }
  /* begin primitiveFailFor: */
@@ -11527,7 +11537,6 @@
     char *theSP1;
     sqInt valuePointer;
 
- assert(theFP != GIV(framePointer));
  assert((GIV(stackPage) == 0)
  || (GIV(stackPage) == (mostRecentlyUsedPage())));
  /* begin stackPageFor: */
@@ -14406,13 +14415,9 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
-    StackPage *newPage;
     sqInt stackPageBytes;
     sqInt stackPagesBytes;
-    char *theFP;
     void *theStackMemory;
-    sqInt top;
 
  stackPageBytes = stackPageByteSize();
  stackPagesBytes = computeStackZoneSize();
@@ -14426,36 +14431,7 @@
  }
  activeProc = longAt(((longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))) + BaseHeaderSize) + (ValueIndex << ShiftForWord))) + BaseHeaderSize) + (ActiveProcessIndex << ShiftForWord));
  activeContext = longAt((activeProc + BaseHeaderSize) + (SuspendedContextIndex << ShiftForWord));
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(0marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
  ioInitHeartbeat();
  interpret();
  return null;
@@ -15148,7 +15124,8 @@
     StackPage *thePage;
     sqInt value;
 
- assert(isContext(aOnceMarriedContext));
+ assert((isContext(aOnceMarriedContext))
+ && (isMarriedOrWidowedContext(aOnceMarriedContext)));
  /* begin frameOfMarriedContext: */
  value = longAt((aOnceMarriedContext + BaseHeaderSize) + (SenderIndex << ShiftForWord));
  /* begin withoutSmallIntegerTags: */
@@ -15909,10 +15886,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
-    StackPage *newPage;
-    char *theFP;
-    sqInt top;
 
  if ((checkForLeaks & 1) != 0) {
  clearLeakMapAndMapAccessibleObjects();
@@ -15920,36 +15893,7 @@
  }
  activeProc = longAt(((longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))) + BaseHeaderSize) + (ValueIndex << ShiftForWord))) + BaseHeaderSize) + (ActiveProcessIndex << ShiftForWord));
  activeContext = longAt((activeProc + BaseHeaderSize) + (SuspendedContextIndex << ShiftForWord));
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(1marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
 }
 
 void
@@ -16053,6 +15997,134 @@
 }
 
 
+/* Scan the heap long printing the oops of any and all objects that refer to
+ anOop
+ */
+
+void
+longPrintReferencesTo(sqInt anOop)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt header;
+    sqInt header1;
+    sqInt header2;
+    sqInt i;
+    sqInt obj;
+    sqInt obj1;
+    sqInt oop;
+    sqInt prntObj;
+    sqInt sz;
+    sqInt sz1;
+    sqInt sz2;
+
+ prntObj = 0;
+ /* begin firstAccessibleObject */
+ obj1 = memory + (headerTypeBytes[(longAt(memory)) & TypeMask]);
+ while ((((usqInt) obj1)) < (((usqInt) GIV(freeStart)))) {
+ if (!(((longAt(obj1)) & TypeMask) == HeaderTypeFree)) {
+ oop = obj1;
+ goto l2;
+ }
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) obj1)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(obj1)) & TypeMask) == HeaderTypeFree) {
+ sz = (longAt(obj1)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header = longAt(obj1);
+ sz = ((header & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(obj1 - (BytesPerWord * 2))) & LongSizeMask
+ : header & SizeMask);
+ }
+ obj1 = (obj1 + sz) + (headerTypeBytes[(longAt(obj1 + sz)) & TypeMask]);
+ }
+ error("heap is empty");
+ oop = null;
+l2: /* end firstAccessibleObject */;
+ while (!(oop == null)) {
+ if ((((oop & 1) == 0)
+ && (((((usqInt) (longAt(oop))) >> 8) & 15) <= 4))
+ || (((((usqInt) (longAt(oop))) >> 8) & 15) >= 12)) {
+ 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) {
+ if (anOop == (longAt((oop + BaseHeaderSize) + (i << ShiftForWord)))) {
+ printHex(oop);
+ print(" @ ");
+ printNum(i);
+ /* begin cr */
+ printf("\n");
+ prntObj = 1;
+ i = 0;
+ }
+ i -= 1;
+ }
+ if (prntObj) {
+ prntObj = 0;
+ longPrintOop(oop);
+ }
+ }
+ /* begin accessibleObjectAfter: */
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) oop)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
+ sz2 = (longAt(oop)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header2 = longAt(oop);
+ sz2 = ((header2 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
+ : header2 & SizeMask);
+ }
+ obj = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+ while ((((usqInt) obj)) < (((usqInt) GIV(freeStart)))) {
+ if (!(((longAt(obj)) & TypeMask) == HeaderTypeFree)) {
+ oop = obj;
+ goto l1;
+ }
+ /* begin objectAfter: */
+ if (DoAssertionChecks) {
+ if ((((usqInt) obj)) >= (((usqInt) GIV(endOfMemory)))) {
+ error("no objects after the end of memory");
+ }
+ }
+ if (((longAt(obj)) & TypeMask) == HeaderTypeFree) {
+ sz1 = (longAt(obj)) & AllButTypeMask;
+ }
+ else {
+ /* begin sizeBitsOf: */
+ header1 = longAt(obj);
+ sz1 = ((header1 & TypeMask) == HeaderTypeSizeAndClass
+ ? (longAt(obj - (BytesPerWord * 2))) & LongSizeMask
+ : header1 & SizeMask);
+ }
+ obj = (obj + sz1) + (headerTypeBytes[(longAt(obj + sz1)) & TypeMask]);
+ }
+ oop = null;
+ l1: /* end accessibleObjectAfter: */;
+ }
+}
+
+
 /* This method implements a simple method lookup cache. If an entry for the
  given selector and class is found in the cache, set the values of
  'newMethod' and 'primitiveFunctionPointer' and return true. Otherwise,
@@ -17392,6 +17464,49 @@
 }
 
 
+/* Establish aContext at the base of a new stackPage, make the stackPage the
+ active one and set-up the interreter registers. This is used to boot the
+ system and bring it back after a snapshot. */
+
+static void
+marryContextInNewStackPageAndInitializeInterpreterRegisters(sqInt aContext)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt aMethodObj;
+    StackPage *newPage;
+    char *theFP;
+    sqInt top;
+
+ assert(GIV(stackPage) == 0);
+ newPage = makeBaseFrameFor(aContext);
+ /* begin setStackPageAndLimit: */
+ GIV(stackPage) = newPage;
+ if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
+ GIV(stackLimit) = (GIV(stackPage)->stackLimit);
+ }
+ markStackPageMostRecentlyUsed(newPage);
+ GIV(framePointer) = (GIV(stackPage)->headFP);
+ GIV(stackPointer) = (GIV(stackPage)->headSP);
+ /* begin setMethod: */
+ /* begin iframeMethod: */
+ theFP = (GIV(stackPage)->headFP);
+ aMethodObj = longAt(theFP + FoxMethod);
+ GIV(method) = aMethodObj;
+ assert(isOopCompiledMethod(GIV(method)));
+
+#  if MULTIPLEBYTECODESETS
+ bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
+ ? 256
+ : 0);
+
+#  endif /* MULTIPLEBYTECODESETS */
+
+ /* begin popStack */
+ top = longAt(GIV(stackPointer));
+ GIV(stackPointer) += BytesPerWord;
+ GIV(instructionPointer) = ((sqInt) top);
+}
+
+
 /* Marry an unmarried frame. This means creating a spouse context
  initialized with a subset of the frame's state (state through the last
  argument) that references the frame. */
@@ -18120,6 +18235,17 @@
  method will be inlined during C translation. */
 
 static sqInt
+oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop)
+{
+ return (((usqInt) anOop)) >= (((usqInt) otherOop));
+}
+
+
+/* Compare two oop values, treating them as object memory locations.
+ Use #cCoerce:to: to ensure comparison of unsigned magnitudes. This
+ method will be inlined during C translation. */
+
+static sqInt
 oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop)
 {
  return ((((usqInt) anOop)) > (((usqInt) baseOop)))
@@ -32195,45 +32321,13 @@
 primitiveVoidVMState(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
-    sqInt aMethodObj;
-    StackPage *newPage;
     char *sp;
-    char *theFP;
-    sqInt top;
 
  /* begin push: */
  longAtput((sp = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
  GIV(stackPointer) = sp;
  activeContext = voidVMStateForSnapshot();
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
 }
 
 static void
@@ -32734,7 +32828,7 @@
  printf("\n");
  }
  else {
- print("widdowed (assuming framePointer valid)");
+ print("widowed (assuming framePointer valid)");
  /* begin cr */
  printf("\n");
  }
@@ -33664,6 +33758,17 @@
  goto l2;
  }
  printf("a(n) %.*s", nameLen, name);
+ if (((instanceSizeOf(classOop)) == (ValueIndex + 1))
+ && (((longAt((classOop + BaseHeaderSize) + (SuperclassIndex << ShiftForWord))) == (superclassOf(fetchClassOfNonInt(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (SchedulerAssociation << ShiftForWord))))))
+ && ((((longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord))) & 1) == 0)
+ && (((((usqInt) (longAt(longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord))))) >> 8) & 15) >= 8)))) {
+ /* begin space */
+ /* begin printChar: */
+ putchar(' ');
+ printOopShort(longAt((oop + BaseHeaderSize) + (KeyIndex << ShiftForWord)));
+ print(" -> ");
+ printHex(longAt((oop + BaseHeaderSize) + (ValueIndex << ShiftForWord)));
+ }
 l2: /* end printOopShortInner: */;
  flush();
 }
@@ -36304,7 +36409,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt activeContext;
     sqInt activeProc;
-    sqInt aMethodObj;
     sqInt dataSize;
     sqInt fmt;
     sqInt header;
@@ -36312,7 +36416,6 @@
     sqInt header2;
     sqInt i;
     sqInt i1;
-    StackPage *newPage;
     sqInt object;
     sqInt object1;
     sqInt oop;
@@ -36327,8 +36430,6 @@
     sqInt stackIndex;
     sqInt sz;
     sqInt sz1;
-    char *theFP;
-    sqInt top;
 
  /* begin push: */
  object1 = GIV(instructionPointer);
@@ -36437,36 +36538,7 @@
  }
  longAtput((activeContext + BaseHeaderSize) + (StackPointerIndex << ShiftForWord), (((stackIndex - 1) << 1) | 1));
  }
- /* begin marryContextInNewStackPageAndInitializeInterpreterRegisters: */
- VM_LABEL(2marryContextInNewStackPageAndInitializeInterpreterRegisters);
- assert(GIV(stackPage) == 0);
- newPage = makeBaseFrameFor(activeContext);
- /* begin setStackPageAndLimit: */
- GIV(stackPage) = newPage;
- if (GIV(stackLimit) != (((char *) (((usqInt) -1))))) {
- GIV(stackLimit) = (GIV(stackPage)->stackLimit);
- }
- markStackPageMostRecentlyUsed(newPage);
- GIV(framePointer) = (GIV(stackPage)->headFP);
- GIV(stackPointer) = (GIV(stackPage)->headSP);
- /* begin setMethod: */
- /* begin iframeMethod: */
- theFP = (GIV(stackPage)->headFP);
- aMethodObj = longAt(theFP + FoxMethod);
- GIV(method) = aMethodObj;
- assert(isOopCompiledMethod(GIV(method)));
-
-#  if MULTIPLEBYTECODESETS
- bytecodeSetSelector = ((((longAt((GIV(method) + BaseHeaderSize) + (HeaderIndex << ShiftForWord))) >> 1)) < 0
- ? 256
- : 0);
-
-#  endif /* MULTIPLEBYTECODESETS */
-
- /* begin popStack */
- top = longAt(GIV(stackPointer));
- GIV(stackPointer) += BytesPerWord;
- GIV(instructionPointer) = ((sqInt) top);
+ marryContextInNewStackPageAndInitializeInterpreterRegisters(activeContext);
  if (!GIV(primFailCode)) {
  /* begin push: */
  object = GIV(falseObj);
@@ -36857,40 +36929,40 @@
  sz -= hdr & Size4Bit;
  if (fmt <= 4) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- goto l1;
+ goto l2;
  }
  if (fmt < 8) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> 2;
- goto l1;
+ goto l2;
  }
  else {
  totalLength = (sz - BaseHeaderSize) - (fmt & 3);
- goto l1;
+ goto l2;
  }
-l1: /* end lengthOf:baseHeader:format: */;
+l2: /* end lengthOf:baseHeader:format: */;
  /* begin fixedFieldsOf:format:length: */
  if ((fmt > 4)
  || (fmt == 2)) {
  fixedFields = 0;
- goto l3;
+ goto l4;
  }
  if (fmt < 2) {
  fixedFields = totalLength;
- goto l3;
+ goto l4;
  }
  /* begin fetchClassOfNonInt: */
  if (((ccIndex = (((usqInt) (longAt(array))) >> 12) & 31)) == 0) {
  class = (longAt(array - BaseHeaderSize)) & AllButTypeMask;
- goto l4;
+ goto l3;
  }
  else {
  class = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l4;
+ goto l3;
  }
-l4: /* end fetchClassOfNonInt: */;
+l3: /* end fetchClassOfNonInt: */;
  classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
  fixedFields = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 63)) - 1;
-l3: /* end fixedFieldsOf:format:length: */;
+l4: /* end fixedFieldsOf:format:length: */;
  if ((fmt == 3)
  && (((((usqInt) hdr) >> 12) & 31) == ClassMethodContextCompactIndex)) {
  /* begin stackPointerForMaybeMarriedContext: */
@@ -36900,17 +36972,17 @@
  sp = stackPointerIndexForFrame(frameOfMarriedContext(array));
  assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array)));
  stSize = sp;
- goto l2;
+ goto l1;
  }
  /* begin fetchStackPointerOf: */
  sp1 = longAt((array + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
  if (!((sp1 & 1))) {
  stSize = 0;
- goto l2;
+ goto l1;
  }
  assert((ReceiverIndex + ((sp1 >> 1))) < (lengthOf(array)));
  stSize = (sp1 >> 1);
- l2: /* end stackPointerForMaybeMarriedContext: */;
+ l1: /* end stackPointerForMaybeMarriedContext: */;
  if (((((usqInt) index)) >= (((usqInt) 1)))
  && (((((usqInt) index)) <= (((usqInt) stSize)))
  && ((((longAt((array + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1))
@@ -36921,7 +36993,9 @@
  else {
  stSize = totalLength - fixedFields;
  }
- if (((((usqInt) index)) >= (((usqInt) 1)))
+ if ((oopisGreaterThanOrEqualTo(index, (fmt >= 12
+ ? ((((((usqInt) (longAt((array + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1
+ : 1)))
  && ((((usqInt) index)) <= (((usqInt) stSize)))) {
  /* begin subscript:with:format: */
  if (fmt <= 4) {
@@ -36974,40 +37048,40 @@
  sz -= hdr & Size4Bit;
  if (fmt <= 4) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> ShiftForWord;
- goto l1;
+ goto l2;
  }
  if (fmt < 8) {
  totalLength = ((usqInt) (sz - BaseHeaderSize)) >> 2;
- goto l1;
+ goto l2;
  }
  else {
  totalLength = (sz - BaseHeaderSize) - (fmt & 3);
- goto l1;
+ goto l2;
  }
-l1: /* end lengthOf:baseHeader:format: */;
+l2: /* end lengthOf:baseHeader:format: */;
  /* begin fixedFieldsOf:format:length: */
  if ((fmt > 4)
  || (fmt == 2)) {
  fixedFields = 0;
- goto l3;
+ goto l4;
  }
  if (fmt < 2) {
  fixedFields = totalLength;
- goto l3;
+ goto l4;
  }
  /* begin fetchClassOfNonInt: */
  if (((ccIndex = (((usqInt) (longAt(array))) >> 12) & 31)) == 0) {
  class = (longAt(array - BaseHeaderSize)) & AllButTypeMask;
- goto l4;
+ goto l3;
  }
  else {
  class = longAt(((longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (CompactClasses << ShiftForWord))) + BaseHeaderSize) + ((ccIndex - 1) << ShiftForWord));
- goto l4;
+ goto l3;
  }
-l4: /* end fetchClassOfNonInt: */;
+l3: /* end fetchClassOfNonInt: */;
  classFormat = (longAt((class + BaseHeaderSize) + (InstanceSpecificationIndex << ShiftForWord))) - 1;
  fixedFields = (((((usqInt) classFormat) >> 11) & 192) + ((((usqInt) classFormat) >> 2) & 63)) - 1;
-l3: /* end fixedFieldsOf:format:length: */;
+l4: /* end fixedFieldsOf:format:length: */;
  if ((fmt == 3)
  && (((((usqInt) hdr) >> 12) & 31) == ClassMethodContextCompactIndex)) {
  /* begin stackPointerForMaybeMarriedContext: */
@@ -37017,17 +37091,17 @@
  sp = stackPointerIndexForFrame(frameOfMarriedContext(array));
  assert((ReceiverIndex + ((sp >> 1))) < (lengthOf(array)));
  stSize = sp;
- goto l2;
+ goto l1;
  }
  /* begin fetchStackPointerOf: */
  sp1 = longAt((array + BaseHeaderSize) + (StackPointerIndex << ShiftForWord));
  if (!((sp1 & 1))) {
  stSize = 0;
- goto l2;
+ goto l1;
  }
  assert((ReceiverIndex + ((sp1 >> 1))) < (lengthOf(array)));
  stSize = (sp1 >> 1);
- l2: /* end stackPointerForMaybeMarriedContext: */;
+ l1: /* end stackPointerForMaybeMarriedContext: */;
  if (((((usqInt) index)) >= (((usqInt) 1)))
  && (((((usqInt) index)) <= (((usqInt) stSize)))
  && ((((longAt((array + BaseHeaderSize) + (SenderIndex << ShiftForWord))) & 1))
@@ -37039,7 +37113,9 @@
  else {
  stSize = totalLength - fixedFields;
  }
- if (((((usqInt) index)) >= (((usqInt) 1)))
+ if ((oopisGreaterThanOrEqualTo(index, (fmt >= 12
+ ? ((((((usqInt) (longAt((array + BaseHeaderSize) + (HeaderIndex << ShiftForWord)))) >> 10) & 255) + LiteralStart) * BytesPerWord) + 1
+ : 1)))
  && ((((usqInt) index)) <= (((usqInt) stSize)))) {
  /* begin subscript:with:storing:format: */
  VM_LABEL(2subscriptwithstoringformat);

Modified: branches/Cog/stacksrc/vm/interp.h
===================================================================
--- branches/Cog/stacksrc/vm/interp.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/stacksrc/vm/interp.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/stacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/stacksrc/vm/vmCallback.h 2012-04-24 17:25:08 UTC (rev 2551)
+++ branches/Cog/stacksrc/vm/vmCallback.h 2012-05-02 23:13:02 UTC (rev 2552)
@@ -1,5 +1,5 @@
 /* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.152 uuid: d39d62b0-45ca-4621-8f67-e3981bbe1875
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.159 uuid: cbf7f95a-6fe2-4578-898e-47afb8524be4
  */
 
 #define VM_CALLBACK_INC 1