[Vm-dev] [commit][3211] CogVM source as per VMMaker.oscog-eem.1010
commits at squeakvm.org
commits at squeakvm.org
Tue Jan 6 22:58:52 UTC 2015
Revision: 3211
Author: eliot
Date: 2015-01-06 14:58:47 -0800 (Tue, 06 Jan 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1010
Fix slip in primitivePin. Also be lenient w.r.t. unpinning married contexts.
Move the check down into StackInterpreter's version. This allows e.g.
self allObjectsDo: [:o| o unpin]
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/spurstack64src/vm/gcc3x-interp.c
branches/Cog/spurstack64src/vm/interp.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 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -740,7 +740,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1502,6 +1501,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2353,7 +2353,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.1008";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1010";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -36159,58 +36159,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -76960,6 +76908,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/nsspursrc/vm/cointerp.h 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -743,7 +743,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1505,6 +1504,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2356,7 +2356,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.1008";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1010";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -36168,58 +36168,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -76969,6 +76917,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -489,7 +489,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileSemaphore(void);
@@ -1299,6 +1298,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2101,7 +2101,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1008";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1010";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -21999,58 +21999,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -67499,6 +67447,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/nsspurstacksrc/vm/interp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -486,7 +486,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileSemaphore(void);
@@ -1296,6 +1295,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2098,7 +2098,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1008";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1010";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -21990,58 +21990,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -67490,6 +67438,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Thu Jan 1 14:08:19 PST 2015
+ Tue Jan 6 14:58:34 PST 2015
Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursistasrc/vm/cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -739,7 +739,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1498,6 +1497,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2349,7 +2349,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.1008]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1010]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -9166,7 +9166,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -9226,7 +9226,7 @@
null;
goto l77;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -11963,7 +11963,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -12023,7 +12023,7 @@
null;
goto l183;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -29588,7 +29588,7 @@
primitiveBitShift(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -29635,7 +29635,7 @@
}
return;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -36406,58 +36406,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -77072,6 +77020,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursistasrc/vm/cointerp.h 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -742,7 +742,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1501,6 +1500,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2352,7 +2352,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.1008]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1010]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -9175,7 +9175,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -9235,7 +9235,7 @@
null;
goto l77;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -11972,7 +11972,7 @@
/* bytecodePrimBitShift */
{
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -12032,7 +12032,7 @@
null;
goto l183;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -29597,7 +29597,7 @@
primitiveBitShift(void)
{ DECL_MAYBE_SQ_GLOBAL_STRUCT
sqInt integerArgument;
- sqLong integerReceiver;
+ usqInt integerReceiver;
sqInt shifted;
char *sp;
@@ -29644,7 +29644,7 @@
}
return;
}
- shifted = ((unsigned sqLong)integerReceiver) >> (0 - integerArgument);
+ shifted = ((usqInt) integerReceiver) >> (0 - integerArgument);
}
shifted = positive32BitIntegerFor(shifted);
/* begin pop:thenPush: */
@@ -36415,58 +36415,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -77081,6 +77029,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/spursrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/cointerp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursrc/vm/cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -733,7 +733,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1490,6 +1489,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2340,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 = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1008]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1010]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -31311,58 +31311,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -71948,6 +71896,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/spursrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursrc/vm/cointerp.h 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursrc/vm/cointerp.h 2015-01-06 22:58:47 UTC (rev 3211)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -736,7 +736,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileStart(void);
@@ -1493,6 +1492,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2343,7 +2343,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.1008]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreterPrimitives VMMaker.oscog-eem.1010]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -31320,58 +31320,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 3) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 3) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
- }
- if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
- wasPinned = GIV(trueObj);
- /* begin setIsPinnedOf:to: */
- flag("endianness");
- longAtput(obj, (boolean == GIV(trueObj)
- ? (longAt(obj)) | (1 << 30)
- : (longAt(obj)) & ((unsigned int)~(1 << 30))));
- }
- else {
- wasPinned = GIV(falseObj);
- if (((boolean == GIV(trueObj))
- && (pinObject(obj))) == 0) {
- (GIV(primFailCode) = PrimErrNoMemory);
- return;
- }
- }
- /* begin pop:thenPush: */
- longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
- GIV(stackPointer) = sp;
-}
-
-
/* Primitive. Answer the last primitive method sampled by the profiler. */
EXPORT(sqInt)
@@ -71957,6 +71905,62 @@
}
+/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
+ argument. Answer whether the object was already pinned. N.B. pinning does
+ *not* prevent
+ an object from being garbage collected. */
+
+static void
+primitivePin(void)
+{ DECL_MAYBE_SQ_GLOBAL_STRUCT
+ sqInt boolean;
+ sqInt obj;
+ char *sp;
+ sqInt wasPinned;
+
+
+ obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+ if (((obj & 3) != 0)
+ || (((longAt(obj)) & (0x3FFFFF - 8)) == 0)) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ boolean = longAt(GIV(stackPointer));
+ if (!((boolean == GIV(falseObj))
+ || (boolean == GIV(trueObj)))) {
+ (GIV(primFailCode) = PrimErrBadArgument);
+ return;
+ }
+ if (((((usqInt) (longAt(obj))) >> 30) & 1) != 0) {
+ wasPinned = GIV(trueObj);
+ if (boolean != wasPinned) {
+ /* begin setIsPinnedOf:to: */
+ flag("endianness");
+ longAtput(obj, (longAt(obj)) & ((unsigned int)~(1 << 30)));
+ }
+ }
+ else {
+ wasPinned = GIV(falseObj);
+ if (boolean == GIV(trueObj)) {
+ if ((((obj & 3) == 0)
+ && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
+ && ((((longAt((obj + BaseHeaderSize) + (SenderIndex << (shiftForWord())))) & 1))
+ && (!(isWidowedContext(obj))))) {
+ (GIV(primFailCode) = PrimErrBadReceiver);
+ return;
+ }
+ if ((pinObject(obj)) == 0) {
+ (GIV(primFailCode) = PrimErrNoMemory);
+ return;
+ }
+ }
+ }
+ /* begin pop:thenPush: */
+ longAtput((sp = GIV(stackPointer) + (((GIV(argumentCount) + 1) - 1) * BytesPerWord)), wasPinned);
+ GIV(stackPointer) = sp;
+}
+
+
/* Primitive. Indicate the semaphore to be signalled for upon garbage
collection
*/
Modified: branches/Cog/spurstack64src/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-01-06 22:15:43 UTC (rev 3210)
+++ branches/Cog/spurstack64src/vm/gcc3x-interp.c 2015-01-06 22:58:47 UTC (rev 3211)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
from
- StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a
+ StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1008 uuid: e5b26122-f27e-498b-bc8a-70f5f0fc3e1a " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1010 uuid: 9065e685-b193-428f-9c7a-27ce1afe8c71 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -494,7 +494,6 @@
EXPORT(sqInt) primitivePathToUsing(void);
static void primitivePerformInSuperclass(void);
static void primitivePerformWithArgs(void);
-static void primitivePin(void);
EXPORT(sqInt) primitiveProfilePrimitive(void);
EXPORT(sqInt) primitiveProfileSample(void);
EXPORT(sqInt) primitiveProfileSemaphore(void);
@@ -1320,6 +1319,7 @@
EXPORT(sqInt) primitiveMakeEphemeron(void);
static void primitiveObjectPointsTo(void);
static void primitivePerform(void);
+static void primitivePin(void);
EXPORT(void) primitiveSetGCSemaphore(void);
static void primitiveSignalAtMilliseconds(void);
static void primitiveSignalAtUTCMicroseconds(void);
@@ -2121,7 +2121,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1008]";
+const char *interpreterVersion = "Croquet Closure Stack VM [StackInterpreterPrimitives VMMaker.oscog-eem.1010]";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -18724,57 +18724,6 @@
}
-/* Pin or unpin the receiver, i.e. make it immobile or mobile, based on the
- argument. Answer whether the object was already pinned. N.B. pinning does
- *not* prevent
- an object from being garbage collected. */
-
-static void
-primitivePin(void)
-{ DECL_MAYBE_SQ_GLOBAL_STRUCT
- sqInt boolean;
- sqInt obj;
- char *sp;
- sqInt wasPinned;
-
-
- obj = longAt(GIV(stackPointer) + (1 * BytesPerWord));
- if (((obj & 7) != 0)
- || ((((longAt(obj)) & (0x3FFFFF - 8)) == 0)
- || ((((obj & 7) == 0)
- && (((longAt(obj)) & 0x3FFFFF) == ClassMethodContextCompactIndex))
- && ((((((longAt((obj + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1))
- && (!(isWidowedContext(obj))))))) {
- (GIV(primFailCode) = PrimErrBadReceiver);
- return;
- }
- boolean = longAt(GIV(stackPointer));
- if (!((boolean == GIV(falseObj))
- || (boolean == GIV(trueObj)))) {
- (GIV(primFailCode) = PrimErrBadArgument);
- return;
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list