[prev in list] [next in list] [prev in thread] [next in thread] 

List:       squeak-vm-dev
Subject:    [Vm-dev] [commit][3118] CogVM source as per VMMaker.oscog-eem.915
From:       commits () squeakvm ! org
Date:       2014-10-31 0:33:10
Message-ID: E1Xk09N-0001zL-TZ () vps2 ! piumarta ! com
[Download RAW message or body]

 
Revision: 3118
Author:   eliot
Date:     2014-10-30 17:33:06 -0700 (Thu, 30 Oct 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.915

Spur: Fix processWeakSurvivor: so that it answers whether a weak object refers
to a young object.  The old version only scanned weak fields, igoring refs to
young objs from strong fields.

Move check for valid classes from findClassOfMethod: forReceiver: into
findClassContainingMethod:startingAt:, hence making
findClassOfMethod:forReceiver: et al more robust.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c

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

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -966,7 +966,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline;  static \
sqInt followFieldofObject(sqInt fieldIndex, sqInt anObject) NoDbgRegParms; @@ -1548,8 \
+1547,8 @@  _iss sqInt rememberedSetSize;
 _iss sqInt * rememberedSet;
 _iss usqInt freeListsMask;
-_iss sqInt classTableFirstPage;
 _iss sqInt profileProcess;
+_iss sqInt classTableFirstPage;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileSemaphore;
 _iss SpurContiguousObjStack unscannedEphemerons;
@@ -2338,7 +2337,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine \
CoInterpreterPrimitives_VMMaker.oscog-eem.914"; +const char *interpreterVersion = \
"Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.915";  sqInt \
minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;  volatile \
int sendTrace;  
@@ -42649,9 +42648,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -42660,7 +42664,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -48672,12 +48710,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt class;
@@ -65472,6 +65504,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -65539,59 +65574,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt rclass;
-    sqInt tagBits;
 
 	if ((((rcvr & 3) != 0)
 	 || (addressCouldBeObj(rcvr)))
 	 && (!(((rcvr & 3) == 0)
  && (((longAt(rcvr)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = rcvr & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l1;
+		rclass = findClassContainingMethodstartingAt(meth, fetchClassOf(rcvr));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(rcvr)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = rcvr;
-				goto l1;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l1;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l1;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l1:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(meth))
 		 && (((((usqInt) (longAt(meth))) >> 24) & 0x1F) >= 24))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -69075,14 +69072,10 @@
 static void
 printActivationNameForreceiverisBlockfirstTemporary(sqInt aMethod, sqInt anObject, \
sqInt isBlock, sqInt maybeMessage)  {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
     sqInt classObj;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
-    sqInt tagBits;
 
 	if (isBlock) {
 		print("[] in ");
@@ -69092,52 +69085,17 @@
 	 || (addressCouldBeObj(anObject)))
 	 && (!(((anObject & 3) == 0)
  && (((longAt(anObject)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = anObject & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l2;
+		rclass = findClassContainingMethodstartingAt(aMethod, fetchClassOf(anObject));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(anObject)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = anObject;
-				goto l2;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l2;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l2;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l2:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(aMethod))
 		 && (((((usqInt) (longAt(aMethod))) >> 24) & 0x1F) >= 24))) {
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, \
safeMethodClassOf(aMethod));  l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2014-10-31 00:33:06 UTC (rev 3118)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
                VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -969,7 +969,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline;  static \
sqInt followFieldofObject(sqInt fieldIndex, sqInt anObject) NoDbgRegParms; @@ -1551,8 \
+1550,8 @@  _iss sqInt rememberedSetSize;
 _iss sqInt * rememberedSet;
 _iss usqInt freeListsMask;
-_iss sqInt classTableFirstPage;
 _iss sqInt profileProcess;
+_iss sqInt classTableFirstPage;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileSemaphore;
 _iss SpurContiguousObjStack unscannedEphemerons;
@@ -2341,7 +2340,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Newspeak Virtual Machine \
CoInterpreterPrimitives_VMMaker.oscog-eem.914"; +const char *interpreterVersion = \
"Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.915";  sqInt \
minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;  volatile \
int sendTrace;  
@@ -42658,9 +42657,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -42669,7 +42673,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -48681,12 +48719,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt class;
@@ -65481,6 +65513,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -65548,59 +65583,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt rclass;
-    sqInt tagBits;
 
 	if ((((rcvr & 3) != 0)
 	 || (addressCouldBeObj(rcvr)))
 	 && (!(((rcvr & 3) == 0)
  && (((longAt(rcvr)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = rcvr & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l1;
+		rclass = findClassContainingMethodstartingAt(meth, fetchClassOf(rcvr));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(rcvr)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = rcvr;
-				goto l1;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l1;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l1;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l1:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(meth))
 		 && (((((usqInt) (longAt(meth))) >> 24) & 0x1F) >= 24))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -69084,14 +69081,10 @@
 static void
 printActivationNameForreceiverisBlockfirstTemporary(sqInt aMethod, sqInt anObject, \
sqInt isBlock, sqInt maybeMessage)  {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
     sqInt classObj;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
-    sqInt tagBits;
 
 	if (isBlock) {
 		print("[] in ");
@@ -69101,52 +69094,17 @@
 	 || (addressCouldBeObj(anObject)))
 	 && (!(((anObject & 3) == 0)
  && (((longAt(anObject)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = anObject & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l2;
+		rclass = findClassContainingMethodstartingAt(aMethod, fetchClassOf(anObject));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(anObject)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = anObject;
-				goto l2;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l2;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l2;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l2:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(aMethod))
 		 && (((((usqInt) (longAt(aMethod))) >> 24) & 0x1F) >= 24))) {
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, \
safeMethodClassOf(aMethod));  l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);

Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	StackInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	StackInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"StackInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -716,7 +716,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline;  static \
sqInt followFieldofObject(sqInt fieldIndex, sqInt anObject) NoDbgRegParms; @@ -1347,8 \
+1346,8 @@  _iss sqInt bytesPerPage;
 _iss usqInt freeListsMask;
 _iss sqInt profileProcess;
-_iss sqInt classTableFirstPage;
 _iss SpurContiguousObjStack unscannedEphemerons;
+_iss sqInt classTableFirstPage;
 _iss usqInt firstFreeChunk;
 _iss sqInt profileMethod;
 _iss StackPage * mostRecentlyUsedPage;
@@ -2086,7 +2085,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine \
StackInterpreterPrimitives_VMMaker.oscog-eem.914"; +const char *interpreterVersion = \
"Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.915";  \
volatile int sendTrace;  sqInt suppressHeartbeatFlag;
 
@@ -28707,9 +28706,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -28718,7 +28722,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -34747,12 +34785,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt class;
@@ -51624,6 +51656,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -51691,59 +51726,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt rclass;
-    sqInt tagBits;
 
 	if ((((rcvr & 3) != 0)
 	 || (addressCouldBeObj(rcvr)))
 	 && (!(((rcvr & 3) == 0)
  && (((longAt(rcvr)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = rcvr & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l1;
+		rclass = findClassContainingMethodstartingAt(meth, fetchClassOf(rcvr));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(rcvr)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = rcvr;
-				goto l1;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l1;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l1;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l1:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(meth))
 		 && (((((usqInt) (longAt(meth))) >> 24) & 0x1F) >= 24))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -57452,14 +57449,10 @@
 static void
 printActivationNameForreceiverisBlockfirstTemporary(sqInt aMethod, sqInt anObject, \
sqInt isBlock, sqInt maybeMessage)  {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
     sqInt classObj;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
-    sqInt tagBits;
 
 	if (isBlock) {
 		print("[] in ");
@@ -57469,52 +57462,17 @@
 	 || (addressCouldBeObj(anObject)))
 	 && (!(((anObject & 3) == 0)
  && (((longAt(anObject)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = anObject & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l2;
+		rclass = findClassContainingMethodstartingAt(aMethod, fetchClassOf(anObject));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(anObject)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = anObject;
-				goto l2;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l2;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l2;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l2:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(aMethod))
 		 && (((((usqInt) (longAt(aMethod))) >> 24) & 0x1F) >= 24))) {
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, \
safeMethodClassOf(aMethod));  l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);

Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/nsspurstacksrc/vm/interp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	StackInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	StackInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"StackInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -713,7 +713,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline;  static \
sqInt followFieldofObject(sqInt fieldIndex, sqInt anObject) NoDbgRegParms; @@ -1344,8 \
+1343,8 @@  _iss sqInt bytesPerPage;
 _iss usqInt freeListsMask;
 _iss sqInt profileProcess;
-_iss sqInt classTableFirstPage;
 _iss SpurContiguousObjStack unscannedEphemerons;
+_iss sqInt classTableFirstPage;
 _iss usqInt firstFreeChunk;
 _iss sqInt profileMethod;
 _iss StackPage * mostRecentlyUsedPage;
@@ -2083,7 +2082,7 @@
  0 };
 char * breakSelector;
 sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine \
StackInterpreterPrimitives_VMMaker.oscog-eem.914"; +const char *interpreterVersion = \
"Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.915";  \
volatile int sendTrace;  sqInt suppressHeartbeatFlag;
 
@@ -28698,9 +28697,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -28709,7 +28713,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -34738,12 +34776,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt class;
@@ -51615,6 +51647,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -51682,59 +51717,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt rclass;
-    sqInt tagBits;
 
 	if ((((rcvr & 3) != 0)
 	 || (addressCouldBeObj(rcvr)))
 	 && (!(((rcvr & 3) == 0)
  && (((longAt(rcvr)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = rcvr & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l1;
+		rclass = findClassContainingMethodstartingAt(meth, fetchClassOf(rcvr));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(rcvr)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = rcvr;
-				goto l1;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l1;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l1;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l1:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(meth))
 		 && (((((usqInt) (longAt(meth))) >> 24) & 0x1F) >= 24))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -57443,14 +57440,10 @@
 static void
 printActivationNameForreceiverisBlockfirstTemporary(sqInt aMethod, sqInt anObject, \
sqInt isBlock, sqInt maybeMessage)  {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
     sqInt classObj;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
-    sqInt tagBits;
 
 	if (isBlock) {
 		print("[] in ");
@@ -57460,52 +57453,17 @@
 	 || (addressCouldBeObj(anObject)))
 	 && (!(((anObject & 3) == 0)
  && (((longAt(anObject)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = anObject & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l2;
+		rclass = findClassContainingMethodstartingAt(aMethod, fetchClassOf(anObject));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(anObject)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = anObject;
-				goto l2;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l2;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l2;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l2:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(aMethod))
 		 && (((((usqInt) (longAt(aMethod))) >> 24) & 0x1F) >= 24))) {
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, \
safeMethodClassOf(aMethod));  l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Wed Oct 29 16:57:58 PDT 2014
   + Thu Oct 30 17:32:32 PDT 2014

Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/spursistasrc/vm/cointerp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -965,7 +965,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfClass(sqInt objOop) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline; @@ -1542,8 \
+1541,8 @@  _iss sqInt * freeLists;
 _iss sqInt rememberedSetSize;
 _iss sqInt * rememberedSet;
-_iss sqInt classTableFirstPage;
 _iss usqInt freeListsMask;
+_iss sqInt classTableFirstPage;
 _iss sqInt profileProcess;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileSemaphore;
@@ -2333,7 +2332,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives \
VMMaker.oscog-eem.914]"; +const char *interpreterVersion = "Croquet Closure Cog VM \
[CoInterpreterPrimitives VMMaker.oscog-eem.915]";  sqInt \
minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;  volatile \
int sendTrace;  
@@ -42958,9 +42957,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -42969,7 +42973,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -48981,12 +49019,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfClass(sqInt objOop)
 {
 	return (((longAt((objOop + BaseHeaderSize) + (InstanceSpecificationIndex << 2))) >> \
1)) & ((1 << 16) - 1); @@ -65650,6 +65682,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -65717,59 +65752,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt rclass;
-    sqInt tagBits;
 
 	if ((((rcvr & 3) != 0)
 	 || (addressCouldBeObj(rcvr)))
 	 && (!(((rcvr & 3) == 0)
  && (((longAt(rcvr)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = rcvr & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l1;
+		rclass = findClassContainingMethodstartingAt(meth, fetchClassOf(rcvr));
+		if (rclass != GIV(nilObj)) {
+			return rclass;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(rcvr)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = rcvr;
-				goto l1;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l1;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l1;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l1:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(meth, rclass);
-			if (rclass != GIV(nilObj)) {
-				return rclass;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(meth))
 		 && (((((usqInt) (longAt(meth))) >> 24) & 0x1F) >= 24))) {
 		return GIV(nilObj);
 	}
-	mclass = safeMethodClassOf(meth);
-	if (addressCouldBeClassObj(mclass)) {
-		return GIV(nilObj);
-	}
 	return findClassContainingMethodstartingAt(meth, safeMethodClassOf(meth));
 }
 
@@ -69257,14 +69254,10 @@
 static void
 printActivationNameForreceiverisBlockfirstTemporary(sqInt aMethod, sqInt anObject, \
sqInt isBlock, sqInt maybeMessage)  {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt classIndex;
     sqInt classObj;
-    sqInt classTablePage;
-    sqInt mclass;
     sqInt methClass;
     sqInt methodSel;
     sqInt rclass;
-    sqInt tagBits;
 
 	if (isBlock) {
 		print("[] in ");
@@ -69274,52 +69267,17 @@
 	 || (addressCouldBeObj(anObject)))
 	 && (!(((anObject & 3) == 0)
  && (((longAt(anObject)) & 0x3FFFFF) == 8)))) {
-		/* begin fetchClassOf: */
-		if (((tagBits = anObject & 3)) != 0) {
-			rclass = longAt((GIV(classTableFirstPage) + BaseHeaderSize) + (tagBits << 2));
-			goto l2;
+		rclass = findClassContainingMethodstartingAt(aMethod, fetchClassOf(anObject));
+		if (rclass != GIV(nilObj)) {
+			methClass = rclass;
+			goto l1;
 		}
-		/* begin fetchClassOfNonImm: */
-		classIndex = (longAt(anObject)) & 0x3FFFFF;
-		if (classIndex <= 0x1F) {
-			if (classIndex == 0x1F) {
-				rclass = anObject;
-				goto l2;
-			}
-			if (classIndex == 8) {
-				rclass = GIV(nilObj);
-				goto l2;
-			}
-		}
-		assert(classIndex >= (arrayClassIndexPun()));
-		/* begin classOrNilAtIndex: */
-		assert((classIndex <= (tagMask()))
-		 || (classIndex >= (arrayClassIndexPun())));
-		classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
                classIndex) >> 10) << 2));
-		if (classTablePage == GIV(nilObj)) {
-			rclass = GIV(nilObj);
-			goto l2;
-		}
-		rclass = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) - \
                1)) << 2));
-	l2:	/* end fetchClassOf: */;
-		if (addressCouldBeClassObj(rclass)) {
-			rclass = findClassContainingMethodstartingAt(aMethod, rclass);
-			if (rclass != GIV(nilObj)) {
-				methClass = rclass;
-				goto l1;
-			}
-		}
 	}
 	if (!((addressCouldBeObj(aMethod))
 		 && (((((usqInt) (longAt(aMethod))) >> 24) & 0x1F) >= 24))) {
 		methClass = GIV(nilObj);
 		goto l1;
 	}
-	mclass = safeMethodClassOf(aMethod);
-	if (addressCouldBeClassObj(mclass)) {
-		methClass = GIV(nilObj);
-		goto l1;
-	}
 	methClass = findClassContainingMethodstartingAt(aMethod, \
safeMethodClassOf(aMethod));  l1:	/* end findClassOfMethod:forReceiver: */;
 	methodSel = findSelectorOfMethod(aMethod);

Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/spursistasrc/vm/cointerp.h	2014-10-31 00:33:06 UTC (rev 3118)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
                VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
 
 

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-10-29 23:58:59 UTC (rev 3117)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2014-10-31 00:33:06 UTC (rev 3118)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 +	CCodeGeneratorGlobalStructure \
VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10  from
-	CoInterpreter VMMaker.oscog-eem.914 uuid: bda96e1c-f22e-4b32-9ee1-620740e1fec5
+	CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.914 uuid: \
bda96e1c-f22e-4b32-9ee1-620740e1fec5 " __DATE__ ; +static char __buildInfo[] = \
"CoInterpreter VMMaker.oscog-eem.915 uuid: 4159cf52-4807-4416-9da6-1c46ec5b9f10 " \
__DATE__ ;  char *__interpBuildInfo = __buildInfo;
 
 
@@ -968,7 +968,6 @@
 sqInt firstShortFormat(void);
 sqInt fixedFieldsFieldWidth(void);
 sqInt fixedFieldsOfClassFormatMask(void);
-static sqInt fixedFieldsOfClassFormat(sqInt classFormat) NoDbgRegParms;
 static sqInt fixedFieldsOfClass(sqInt objOop) NoDbgRegParms;
 static sqInt fixedFieldsOfformatlength(sqInt objOop, sqInt fmt, sqInt wordLength) \
NoDbgRegParms;  static sqInt fixFollowedFieldofObjectwithInitialValue(sqInt \
fieldIndex, sqInt anObject, sqInt initialValue) NoDbgRegParms NeverInline; @@ -1545,8 \
+1544,8 @@  _iss sqInt * freeLists;
 _iss sqInt rememberedSetSize;
 _iss sqInt * rememberedSet;
-_iss sqInt classTableFirstPage;
 _iss usqInt freeListsMask;
+_iss sqInt classTableFirstPage;
 _iss sqInt profileProcess;
 _iss sqInt longRunningPrimitiveCheckSemaphore;
 _iss sqInt profileSemaphore;
@@ -2336,7 +2335,7 @@
 /*540*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives \
VMMaker.oscog-eem.914]"; +const char *interpreterVersion = "Croquet Closure Cog VM \
[CoInterpreterPrimitives VMMaker.oscog-eem.915]";  sqInt \
minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;  volatile \
int sendTrace;  
@@ -42967,9 +42966,14 @@
 static sqInt
 processWeakSurvivor(sqInt weakObj)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt classFormat;
+    sqInt classIndex;
+    sqInt classPointer;
+    sqInt classTablePage;
     sqInt hasYoungReferents;
     sqInt i;
     sqInt iLimiT;
+    sqInt numStrongSlots;
     sqInt referent;
     sqInt referent1;
     sqInt weakObjShouldMourn;
@@ -42978,7 +42982,41 @@
 	/* N.B. generateToByDoLimitExpression:negative:on: guards against (unsigned)0 - 1 \
going +ve */  
 	weakObjShouldMourn = (hasYoungReferents = 0);
-	for (i = (fixedFieldsOfClassFormat(formatOfClass(fetchClassOfNonImm(weakObj)))), \
iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) { +	/* begin \
fixedFieldsOfClassFormat: */ +	/* begin formatOfClass: */
+	/* begin fetchClassOfNonImm: */
+	classIndex = (longAt(weakObj)) & 0x3FFFFF;
+	if (classIndex <= 0x1F) {
+		if (classIndex == 0x1F) {
+			classPointer = weakObj;
+			goto l1;
+		}
+		if (classIndex == 8) {
+			classPointer = GIV(nilObj);
+			goto l1;
+		}
+	}
+	assert(classIndex >= (arrayClassIndexPun()));
+	/* begin classOrNilAtIndex: */
+	assert((classIndex <= (tagMask()))
+	 || (classIndex >= (arrayClassIndexPun())));
+	classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + ((((usqInt) \
classIndex) >> 10) << 2)); +	if (classTablePage == GIV(nilObj)) {
+		classPointer = GIV(nilObj);
+		goto l1;
+	}
+	classPointer = longAt((classTablePage + BaseHeaderSize) + ((classIndex & ((1 << 10) \
- 1)) << 2)); +l1:	/* end fetchClassOfNonImm: */;
+	classFormat = ((longAt((classPointer + BaseHeaderSize) + \
(InstanceSpecificationIndex << 2))) >> 1); +	numStrongSlots = classFormat & ((1 << \
16) - 1); +	for (i = 0; i < numStrongSlots; i += 1) {
+		referent = longAt((weakObj + BaseHeaderSize) + (i << 2));
+		if (((referent & 3) == 0)
+		 && (isYoungObject(referent))) {
+			hasYoungReferents = 1;
+		}
+	}
+	for (i = numStrongSlots, iLimiT = ((numSlotsOf(weakObj)) - 1); i <= iLimiT; i += 1) \
{  
 		/* Referent could be forwarded due to scavenging or a become:, don't assume. */
 
@@ -48990,12 +49028,6 @@
 }
 
 static sqInt
-fixedFieldsOfClassFormat(sqInt classFormat)
-{
-	return classFormat & ((1 << 16) - 1);
-}
-
-static sqInt
 fixedFieldsOfClass(sqInt objOop)
 {
 	return (((longAt((objOop + BaseHeaderSize) + (InstanceSpecificationIndex << 2))) >> \
1)) & ((1 << 16) - 1); @@ -65659,6 +65691,9 @@
 	}
 	do {
 		assert(!(isForwarded(currClass)));
+		if (!(addressCouldBeClassObj(currClass))) {
+			return GIV(nilObj);
+		}
 		/* begin noFixupFollowField:ofObject: */
 		objOop1 = longAt((currClass + BaseHeaderSize) + (MethodDictionaryIndex << 2));
 		if (((objOop1 & 3) == 0)
@@ -65726,59 +65761,21 @@
 sqInt
 findClassOfMethodforReceiver(sqInt meth, sqInt rcvr)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT

@@ Diff output truncated at 50000 characters. @@


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic