[Vm-dev] [commit][3007] CogVM source as per VMMaker.oscog-eem.776
commits at squeakvm.org
commits at squeakvm.org
Thu Jun 19 21:13:00 UTC 2014
Revision: 3007
Author: eliot
Date: 2014-06-19 14:12:57 -0700 (Thu, 19 Jun 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.776
Add parameter 54 on Spur to answer totalFreeOldSpace.
Add checks to unix sqAllocateMemorySegmentOfSizeAboveAllocatedSizeInto to
avoid MAP_FIXED wiping out existing mappings.
Fix the odd syntax error in the image scripts.
Modified Paths:
--------------
branches/Cog/image/get2897spurvm.sh
branches/Cog/image/getsqueak45.sh
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspursrc/vm/interp.h
branches/Cog/nsspursrc/vm/vmCallback.h
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/nsspurstacksrc/vm/interp.h
branches/Cog/nsspurstacksrc/vm/vmCallback.h
branches/Cog/platforms/unix/vm/sqUnixMemory.c
branches/Cog/spursistasrc/vm/cointerp.c
branches/Cog/spursistasrc/vm/cointerp.h
branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursistasrc/vm/interp.h
branches/Cog/spursistasrc/vm/vmCallback.h
branches/Cog/spursrc/vm/cointerp.c
branches/Cog/spursrc/vm/cointerp.h
branches/Cog/spursrc/vm/gcc3x-cointerp.c
branches/Cog/spursrc/vm/interp.h
branches/Cog/spursrc/vm/vmCallback.h
branches/Cog/spurstacksrc/vm/gcc3x-interp.c
branches/Cog/spurstacksrc/vm/interp.c
branches/Cog/spurstacksrc/vm/interp.h
branches/Cog/spurstacksrc/vm/vmCallback.h
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/image/get2897spurvm.sh
===================================================================
--- branches/Cog/image/get2897spurvm.sh 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/image/get2897spurvm.sh 2014-06-19 21:12:57 UTC (rev 3007)
@@ -4,7 +4,7 @@
#set -v
. ./envvars.sh
-if wget --help >/dev/null ; then
+if wget --help >/dev/null; then
true
else
echo 'could not find wget. you can find instructions on how to install it on google.' 1>&2
Modified: branches/Cog/image/getsqueak45.sh
===================================================================
--- branches/Cog/image/getsqueak45.sh 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/image/getsqueak45.sh 2014-06-19 21:12:57 UTC (rev 3007)
@@ -5,7 +5,7 @@
ZIP=Squeak-4.5-All-in-One.zip
if [ "`md5 -q $ZIP`" != b90e0303ab61e928a5d997b22d18b468 ]
then
- if wget --help >/dev/null ; then
+ if wget --help >/dev/null; then
true
else
echo 'could not find wget. you can find instructions on how to install it on google.' 1>&2
@@ -13,7 +13,7 @@
fi
wget -c http://ftp.squeak.org/4.5/$ZIP
fi
- if unzip --help >/dev/null then
+ if unzip --help >/dev/null; then
true
else
echo 'could not find unzip. you can find instructions on how to install it on google.' 1>&2
Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspursrc/vm/cointerp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2242,7 +2242,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.775";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.776";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -54792,9 +54792,9 @@
1 arg: return the indicated VM parameter;
2 args: set the VM indicated parameter.
VM parameters are numbered as follows:
- 1 end of old-space (0-based, read-only)
- 2 end of young-space (read-only)
- 3 end of memory (read-only)
+ 1 end/size of old-space (0-based, read-only)
+ 2 end/size of young/new-space (read-only)
+ 3 end/size of heap (read-only)
4 nil (was allocationCount (read-only))
5 nil (was allocations between GCs (read-write)
6 survivor count tenuring threshold (read-write)
@@ -55062,11 +55062,14 @@
valuePointer13 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer13);
- for (i = 49; i <= 53; i += 1) {
+ for (i = 49; i <= 52; i += 1) {
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
+ /* begin storePointerUnchecked:ofObject:withValue: */
+ assert(!(isForwarded(result)));
+ longAtput((result + (BaseHeaderSize)) + (53 << 2), ((GIV(totalFreeOldSpace) << 1) | 1));
/* begin storePointer:ofObject:withValue: */
valuePointer27 = floatObjectOf(getHeapGrowthToSizeGCRatio());
assert(!(isForwarded(result)));
@@ -55309,6 +55312,10 @@
if (arg == 49) {
result = (((ioGetMaxExtSemTableSize()) << 1) | 1);
}
+ if ((arg == 54)
+ && (1)) {
+ result = ((GIV(totalFreeOldSpace) << 1) | 1);
+ }
if ((arg == 55)
&& (1)) {
result = floatObjectOf(getHeapGrowthToSizeGCRatio());
Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspursrc/vm/cointerp.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2245,7 +2245,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.775";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.776";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -54801,9 +54801,9 @@
1 arg: return the indicated VM parameter;
2 args: set the VM indicated parameter.
VM parameters are numbered as follows:
- 1 end of old-space (0-based, read-only)
- 2 end of young-space (read-only)
- 3 end of memory (read-only)
+ 1 end/size of old-space (0-based, read-only)
+ 2 end/size of young/new-space (read-only)
+ 3 end/size of heap (read-only)
4 nil (was allocationCount (read-only))
5 nil (was allocations between GCs (read-write)
6 survivor count tenuring threshold (read-write)
@@ -55071,11 +55071,14 @@
valuePointer13 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer13);
- for (i = 49; i <= 53; i += 1) {
+ for (i = 49; i <= 52; i += 1) {
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
+ /* begin storePointerUnchecked:ofObject:withValue: */
+ assert(!(isForwarded(result)));
+ longAtput((result + (BaseHeaderSize)) + (53 << 2), ((GIV(totalFreeOldSpace) << 1) | 1));
/* begin storePointer:ofObject:withValue: */
valuePointer27 = floatObjectOf(getHeapGrowthToSizeGCRatio());
assert(!(isForwarded(result)));
@@ -55318,6 +55321,10 @@
if (arg == 49) {
result = (((ioGetMaxExtSemTableSize()) << 1) | 1);
}
+ if ((arg == 54)
+ && (1)) {
+ result = ((GIV(totalFreeOldSpace) << 1) | 1);
+ }
if ((arg == 55)
&& (1)) {
result = floatObjectOf(getHeapGrowthToSizeGCRatio());
Modified: branches/Cog/nsspursrc/vm/interp.h
===================================================================
--- branches/Cog/nsspursrc/vm/interp.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspursrc/vm/interp.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/nsspursrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspursrc/vm/vmCallback.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspursrc/vm/vmCallback.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
#define VM_CALLBACK_INC 1
Modified: branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- StackInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ StackInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2026,7 +2026,7 @@
0 };
char * breakSelector;
sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.775";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.776";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -49169,9 +49169,9 @@
1 arg: return the indicated VM parameter;
2 args: set the VM indicated parameter.
VM parameters are numbered as follows:
- 1 end of old-space (0-based, read-only)
- 2 end of young-space (read-only)
- 3 end of memory (read-only)
+ 1 end/size of old-space (0-based, read-only)
+ 2 end/size of young/new-space (read-only)
+ 3 end/size of heap (read-only)
4 nil (was allocationCount (read-only))
5 nil (was allocations between GCs (read-write)
6 survivor count tenuring threshold (read-write)
@@ -49277,6 +49277,7 @@
sqInt valuePointer21;
sqInt valuePointer22;
sqInt valuePointer23;
+ sqInt valuePointer24;
sqInt valuePointer3;
sqInt valuePointer4;
sqInt valuePointer5;
@@ -49289,17 +49290,17 @@
if (GIV(argumentCount) == 0) {
result = instantiateClassindexableSize(longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassArray << 2)), paramsArraySize);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer = ((((GIV(freeStart) - (((eden()).start))) + (GIV(pastSpaceStart) - (((pastSpace()).start)))) << 1) | 1);
+ valuePointer1 = ((((GIV(freeStart) - (((eden()).start))) + (GIV(pastSpaceStart) - (((pastSpace()).start)))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (0 << 2), valuePointer);
+ longAtput((result + (BaseHeaderSize)) + (0 << 2), valuePointer1);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer1 = positive64BitIntegerFor(totalBytesInSegments());
+ valuePointer2 = positive64BitIntegerFor(totalBytesInSegments());
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (1 << 2), valuePointer1);
+ longAtput((result + (BaseHeaderSize)) + (1 << 2), valuePointer2);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer2 = positive64BitIntegerFor((((GIV(eden).limit)) - (((((GIV(futureSpace).start)) < ((GIV(pastSpace).start))) ? ((GIV(futureSpace).start)) : ((GIV(pastSpace).start))))) + (totalBytesInSegments()));
+ valuePointer3 = positive64BitIntegerFor((((GIV(eden).limit)) - (((((GIV(futureSpace).start)) < ((GIV(pastSpace).start))) ? ((GIV(futureSpace).start)) : ((GIV(pastSpace).start))))) + (totalBytesInSegments()));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (2 << 2), valuePointer2);
+ longAtput((result + (BaseHeaderSize)) + (2 << 2), valuePointer3);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (3 << 2), GIV(nilObj));
@@ -49307,9 +49308,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (4 << 2), GIV(nilObj));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer3 = (((((sqInt)(((scavengerTenuringThreshold()) * (((GIV(pastSpace).limit)) - ((GIV(pastSpace).start)))) / (8 * 4)))) << 1) | 1);
+ valuePointer4 = (((((sqInt)(((scavengerTenuringThreshold()) * (((GIV(pastSpace).limit)) - ((GIV(pastSpace).start)))) / (8 * 4)))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (5 << 2), valuePointer3);
+ longAtput((result + (BaseHeaderSize)) + (5 << 2), valuePointer4);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (6 << 2), ((GIV(statFullGCs) << 1) | 1));
@@ -49317,13 +49318,13 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (7 << 2), ((((GIV(statFullGCUsecs) + 500) / 1000) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer4 = (((GIV(statScavenges)) << 1) | 1);
+ valuePointer5 = (((GIV(statScavenges)) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (8 << 2), valuePointer4);
+ longAtput((result + (BaseHeaderSize)) + (8 << 2), valuePointer5);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer5 = (((((GIV(statScavengeGCUsecs)) + 500) / 1000) << 1) | 1);
+ valuePointer6 = (((((GIV(statScavengeGCUsecs)) + 500) / 1000) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (9 << 2), valuePointer5);
+ longAtput((result + (BaseHeaderSize)) + (9 << 2), valuePointer6);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (10 << 2), ((GIV(statTenures) << 1) | 1));
@@ -49333,9 +49334,9 @@
longAtput((result + (BaseHeaderSize)) + (i << 2), ConstZero);
}
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer6 = (((rememberedSetSize()) << 1) | 1);
+ valuePointer7 = (((rememberedSetSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (20 << 2), valuePointer6);
+ longAtput((result + (BaseHeaderSize)) + (20 << 2), valuePointer7);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (21 << 2), ((statRootTableOverflows << 1) | 1));
@@ -49349,9 +49350,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (24 << 2), ((GIV(growHeadroom) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer7 = (((ioHeartbeatMilliseconds()) << 1) | 1);
+ valuePointer8 = (((ioHeartbeatMilliseconds()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (25 << 2), valuePointer7);
+ longAtput((result + (BaseHeaderSize)) + (25 << 2), valuePointer8);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (26 << 2), ((GIV(statMarkCount) << 1) | 1));
@@ -49365,9 +49366,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (29 << 2), ((GIV(statCompactPassCount) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer8 = ((GIV(statGrowMemory) << 1) | 1);
+ valuePointer9 = ((GIV(statGrowMemory) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (30 << 2), valuePointer8);
+ longAtput((result + (BaseHeaderSize)) + (30 << 2), valuePointer9);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (0x1F << 2), ((statShrinkMemory << 1) | 1));
@@ -49396,9 +49397,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (39 << 2), ((BytesPerWord << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer9 = (((imageFormatVersion()) << 1) | 1);
+ valuePointer10 = (((imageFormatVersion()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (40 << 2), valuePointer9);
+ longAtput((result + (BaseHeaderSize)) + (40 << 2), valuePointer10);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (41 << 2), ((GIV(numStackPages) << 1) | 1));
@@ -49406,9 +49407,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (42 << 2), ((desiredNumStackPages << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer10 = (((((GIV(eden).limit)) - ((GIV(eden).start))) << 1) | 1);
+ valuePointer11 = (((((GIV(eden).limit)) - ((GIV(eden).start))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (43 << 2), valuePointer10);
+ longAtput((result + (BaseHeaderSize)) + (43 << 2), valuePointer11);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (44 << 2), ((desiredEdenBytes << 1) | 1));
@@ -49419,29 +49420,33 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (46 << 2), GIV(nilObj));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer11 = ((((GIV(preemptionYields)
+ valuePointer12 = ((((GIV(preemptionYields)
? 0
: 4)) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (47 << 2), valuePointer11);
+ longAtput((result + (BaseHeaderSize)) + (47 << 2), valuePointer12);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer12 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
+ valuePointer13 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer12);
- for (i = 49; i <= 53; i += 1) {
+ longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer13);
+ for (i = 49; i <= 52; i += 1) {
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
+ /* begin storePointerUnchecked:ofObject:withValue: */
+ valuePointer = ((GIV(totalFreeOldSpace) << 1) | 1);
+ assert(!(isForwarded(result)));
+ longAtput((result + (BaseHeaderSize)) + (53 << 2), valuePointer);
/* begin storePointer:ofObject:withValue: */
- valuePointer23 = floatObjectOf(getHeapGrowthToSizeGCRatio());
+ valuePointer24 = floatObjectOf(getHeapGrowthToSizeGCRatio());
assert(!(isForwarded(result)));
if (isOldObject(result)) {
/* most stores into young objects */
- if (((valuePointer23 & 3) == 0)
- && ((((usqInt) valuePointer23)) < (((usqInt) GIV(newSpaceLimit))))) {
+ if (((valuePointer24 & 3) == 0)
+ && ((((usqInt) valuePointer24)) < (((usqInt) GIV(newSpaceLimit))))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(result))) >> 29) & 1) != 0)) {
remember(result);
@@ -49451,32 +49456,32 @@
}
}
}
- longAtput((result + (BaseHeaderSize)) + (54 << 2), valuePointer23);
+ longAtput((result + (BaseHeaderSize)) + (54 << 2), valuePointer24);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer13 = positive64BitIntegerFor(GIV(statProcessSwitch));
+ valuePointer14 = positive64BitIntegerFor(GIV(statProcessSwitch));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (55 << 2), valuePointer13);
+ longAtput((result + (BaseHeaderSize)) + (55 << 2), valuePointer14);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer14 = positive64BitIntegerFor(GIV(statIOProcessEvents));
+ valuePointer15 = positive64BitIntegerFor(GIV(statIOProcessEvents));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (56 << 2), valuePointer14);
+ longAtput((result + (BaseHeaderSize)) + (56 << 2), valuePointer15);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer15 = positive64BitIntegerFor(GIV(statForceInterruptCheck));
+ valuePointer16 = positive64BitIntegerFor(GIV(statForceInterruptCheck));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (57 << 2), valuePointer15);
+ longAtput((result + (BaseHeaderSize)) + (57 << 2), valuePointer16);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer16 = positive64BitIntegerFor(GIV(statCheckForEvents));
+ valuePointer17 = positive64BitIntegerFor(GIV(statCheckForEvents));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (58 << 2), valuePointer16);
+ longAtput((result + (BaseHeaderSize)) + (58 << 2), valuePointer17);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer17 = positive64BitIntegerFor(GIV(statStackOverflow));
+ valuePointer18 = positive64BitIntegerFor(GIV(statStackOverflow));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (59 << 2), valuePointer17);
+ longAtput((result + (BaseHeaderSize)) + (59 << 2), valuePointer18);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer18 = positive64BitIntegerFor(GIV(statStackPageDivorce));
+ valuePointer19 = positive64BitIntegerFor(GIV(statStackPageDivorce));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (60 << 2), valuePointer18);
+ longAtput((result + (BaseHeaderSize)) + (60 << 2), valuePointer19);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (61 << 2), GIV(nilObj));
@@ -49487,13 +49492,13 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (0x3F << 2), ConstZero);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer19 = GIV(trueObj);
+ valuePointer20 = GIV(trueObj);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (64 << 2), valuePointer19);
+ longAtput((result + (BaseHeaderSize)) + (64 << 2), valuePointer20);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer20 = (((stackPageByteSize()) << 1) | 1);
+ valuePointer21 = (((stackPageByteSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (65 << 2), valuePointer20);
+ longAtput((result + (BaseHeaderSize)) + (65 << 2), valuePointer21);
for (i = 66; i <= 68; i += 1) {
/* reserved for more Cog-related info */
@@ -49503,13 +49508,13 @@
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer21 = (((VM_PROXY_MAJOR) << 1) | 1);
+ valuePointer22 = (((VM_PROXY_MAJOR) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (69 << 2), valuePointer21);
+ longAtput((result + (BaseHeaderSize)) + (69 << 2), valuePointer22);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer22 = (((VM_PROXY_MINOR) << 1) | 1);
+ valuePointer23 = (((VM_PROXY_MINOR) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (70 << 2), valuePointer22);
+ longAtput((result + (BaseHeaderSize)) + (70 << 2), valuePointer23);
assert(paramsArraySize == 71);
/* begin pop:thenPush: */
longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), result);
@@ -49666,6 +49671,10 @@
if (arg == 49) {
result = (((ioGetMaxExtSemTableSize()) << 1) | 1);
}
+ if ((arg == 54)
+ && (1)) {
+ result = ((GIV(totalFreeOldSpace) << 1) | 1);
+ }
if ((arg == 55)
&& (1)) {
result = floatObjectOf(getHeapGrowthToSizeGCRatio());
Modified: branches/Cog/nsspurstacksrc/vm/interp.c
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspurstacksrc/vm/interp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- StackInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ StackInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -2023,7 +2023,7 @@
0 };
char * breakSelector;
sqInt breakSelectorLength = -1;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.775";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreter_VMMaker.oscog-eem.776";
volatile int sendTrace;
sqInt suppressHeartbeatFlag;
@@ -49160,9 +49160,9 @@
1 arg: return the indicated VM parameter;
2 args: set the VM indicated parameter.
VM parameters are numbered as follows:
- 1 end of old-space (0-based, read-only)
- 2 end of young-space (read-only)
- 3 end of memory (read-only)
+ 1 end/size of old-space (0-based, read-only)
+ 2 end/size of young/new-space (read-only)
+ 3 end/size of heap (read-only)
4 nil (was allocationCount (read-only))
5 nil (was allocations between GCs (read-write)
6 survivor count tenuring threshold (read-write)
@@ -49268,6 +49268,7 @@
sqInt valuePointer21;
sqInt valuePointer22;
sqInt valuePointer23;
+ sqInt valuePointer24;
sqInt valuePointer3;
sqInt valuePointer4;
sqInt valuePointer5;
@@ -49280,17 +49281,17 @@
if (GIV(argumentCount) == 0) {
result = instantiateClassindexableSize(longAt((GIV(specialObjectsOop) + (BaseHeaderSize)) + (ClassArray << 2)), paramsArraySize);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer = ((((GIV(freeStart) - (((eden()).start))) + (GIV(pastSpaceStart) - (((pastSpace()).start)))) << 1) | 1);
+ valuePointer1 = ((((GIV(freeStart) - (((eden()).start))) + (GIV(pastSpaceStart) - (((pastSpace()).start)))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (0 << 2), valuePointer);
+ longAtput((result + (BaseHeaderSize)) + (0 << 2), valuePointer1);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer1 = positive64BitIntegerFor(totalBytesInSegments());
+ valuePointer2 = positive64BitIntegerFor(totalBytesInSegments());
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (1 << 2), valuePointer1);
+ longAtput((result + (BaseHeaderSize)) + (1 << 2), valuePointer2);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer2 = positive64BitIntegerFor((((GIV(eden).limit)) - (((((GIV(futureSpace).start)) < ((GIV(pastSpace).start))) ? ((GIV(futureSpace).start)) : ((GIV(pastSpace).start))))) + (totalBytesInSegments()));
+ valuePointer3 = positive64BitIntegerFor((((GIV(eden).limit)) - (((((GIV(futureSpace).start)) < ((GIV(pastSpace).start))) ? ((GIV(futureSpace).start)) : ((GIV(pastSpace).start))))) + (totalBytesInSegments()));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (2 << 2), valuePointer2);
+ longAtput((result + (BaseHeaderSize)) + (2 << 2), valuePointer3);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (3 << 2), GIV(nilObj));
@@ -49298,9 +49299,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (4 << 2), GIV(nilObj));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer3 = (((((sqInt)(((scavengerTenuringThreshold()) * (((GIV(pastSpace).limit)) - ((GIV(pastSpace).start)))) / (8 * 4)))) << 1) | 1);
+ valuePointer4 = (((((sqInt)(((scavengerTenuringThreshold()) * (((GIV(pastSpace).limit)) - ((GIV(pastSpace).start)))) / (8 * 4)))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (5 << 2), valuePointer3);
+ longAtput((result + (BaseHeaderSize)) + (5 << 2), valuePointer4);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (6 << 2), ((GIV(statFullGCs) << 1) | 1));
@@ -49308,13 +49309,13 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (7 << 2), ((((GIV(statFullGCUsecs) + 500) / 1000) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer4 = (((GIV(statScavenges)) << 1) | 1);
+ valuePointer5 = (((GIV(statScavenges)) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (8 << 2), valuePointer4);
+ longAtput((result + (BaseHeaderSize)) + (8 << 2), valuePointer5);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer5 = (((((GIV(statScavengeGCUsecs)) + 500) / 1000) << 1) | 1);
+ valuePointer6 = (((((GIV(statScavengeGCUsecs)) + 500) / 1000) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (9 << 2), valuePointer5);
+ longAtput((result + (BaseHeaderSize)) + (9 << 2), valuePointer6);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (10 << 2), ((GIV(statTenures) << 1) | 1));
@@ -49324,9 +49325,9 @@
longAtput((result + (BaseHeaderSize)) + (i << 2), ConstZero);
}
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer6 = (((rememberedSetSize()) << 1) | 1);
+ valuePointer7 = (((rememberedSetSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (20 << 2), valuePointer6);
+ longAtput((result + (BaseHeaderSize)) + (20 << 2), valuePointer7);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (21 << 2), ((statRootTableOverflows << 1) | 1));
@@ -49340,9 +49341,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (24 << 2), ((GIV(growHeadroom) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer7 = (((ioHeartbeatMilliseconds()) << 1) | 1);
+ valuePointer8 = (((ioHeartbeatMilliseconds()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (25 << 2), valuePointer7);
+ longAtput((result + (BaseHeaderSize)) + (25 << 2), valuePointer8);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (26 << 2), ((GIV(statMarkCount) << 1) | 1));
@@ -49356,9 +49357,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (29 << 2), ((GIV(statCompactPassCount) << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer8 = ((GIV(statGrowMemory) << 1) | 1);
+ valuePointer9 = ((GIV(statGrowMemory) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (30 << 2), valuePointer8);
+ longAtput((result + (BaseHeaderSize)) + (30 << 2), valuePointer9);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (0x1F << 2), ((statShrinkMemory << 1) | 1));
@@ -49387,9 +49388,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (39 << 2), ((BytesPerWord << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer9 = (((imageFormatVersion()) << 1) | 1);
+ valuePointer10 = (((imageFormatVersion()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (40 << 2), valuePointer9);
+ longAtput((result + (BaseHeaderSize)) + (40 << 2), valuePointer10);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (41 << 2), ((GIV(numStackPages) << 1) | 1));
@@ -49397,9 +49398,9 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (42 << 2), ((desiredNumStackPages << 1) | 1));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer10 = (((((GIV(eden).limit)) - ((GIV(eden).start))) << 1) | 1);
+ valuePointer11 = (((((GIV(eden).limit)) - ((GIV(eden).start))) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (43 << 2), valuePointer10);
+ longAtput((result + (BaseHeaderSize)) + (43 << 2), valuePointer11);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (44 << 2), ((desiredEdenBytes << 1) | 1));
@@ -49410,29 +49411,33 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (46 << 2), GIV(nilObj));
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer11 = ((((GIV(preemptionYields)
+ valuePointer12 = ((((GIV(preemptionYields)
? 0
: 4)) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (47 << 2), valuePointer11);
+ longAtput((result + (BaseHeaderSize)) + (47 << 2), valuePointer12);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer12 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
+ valuePointer13 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer12);
- for (i = 49; i <= 53; i += 1) {
+ longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer13);
+ for (i = 49; i <= 52; i += 1) {
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
+ /* begin storePointerUnchecked:ofObject:withValue: */
+ valuePointer = ((GIV(totalFreeOldSpace) << 1) | 1);
+ assert(!(isForwarded(result)));
+ longAtput((result + (BaseHeaderSize)) + (53 << 2), valuePointer);
/* begin storePointer:ofObject:withValue: */
- valuePointer23 = floatObjectOf(getHeapGrowthToSizeGCRatio());
+ valuePointer24 = floatObjectOf(getHeapGrowthToSizeGCRatio());
assert(!(isForwarded(result)));
if (isOldObject(result)) {
/* most stores into young objects */
- if (((valuePointer23 & 3) == 0)
- && ((((usqInt) valuePointer23)) < (((usqInt) GIV(newSpaceLimit))))) {
+ if (((valuePointer24 & 3) == 0)
+ && ((((usqInt) valuePointer24)) < (((usqInt) GIV(newSpaceLimit))))) {
/* begin possibleRootStoreInto: */
if (!(((((usqInt) (longAt(result))) >> 29) & 1) != 0)) {
remember(result);
@@ -49442,32 +49447,32 @@
}
}
}
- longAtput((result + (BaseHeaderSize)) + (54 << 2), valuePointer23);
+ longAtput((result + (BaseHeaderSize)) + (54 << 2), valuePointer24);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer13 = positive64BitIntegerFor(GIV(statProcessSwitch));
+ valuePointer14 = positive64BitIntegerFor(GIV(statProcessSwitch));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (55 << 2), valuePointer13);
+ longAtput((result + (BaseHeaderSize)) + (55 << 2), valuePointer14);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer14 = positive64BitIntegerFor(GIV(statIOProcessEvents));
+ valuePointer15 = positive64BitIntegerFor(GIV(statIOProcessEvents));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (56 << 2), valuePointer14);
+ longAtput((result + (BaseHeaderSize)) + (56 << 2), valuePointer15);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer15 = positive64BitIntegerFor(GIV(statForceInterruptCheck));
+ valuePointer16 = positive64BitIntegerFor(GIV(statForceInterruptCheck));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (57 << 2), valuePointer15);
+ longAtput((result + (BaseHeaderSize)) + (57 << 2), valuePointer16);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer16 = positive64BitIntegerFor(GIV(statCheckForEvents));
+ valuePointer17 = positive64BitIntegerFor(GIV(statCheckForEvents));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (58 << 2), valuePointer16);
+ longAtput((result + (BaseHeaderSize)) + (58 << 2), valuePointer17);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer17 = positive64BitIntegerFor(GIV(statStackOverflow));
+ valuePointer18 = positive64BitIntegerFor(GIV(statStackOverflow));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (59 << 2), valuePointer17);
+ longAtput((result + (BaseHeaderSize)) + (59 << 2), valuePointer18);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer18 = positive64BitIntegerFor(GIV(statStackPageDivorce));
+ valuePointer19 = positive64BitIntegerFor(GIV(statStackPageDivorce));
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (60 << 2), valuePointer18);
+ longAtput((result + (BaseHeaderSize)) + (60 << 2), valuePointer19);
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (61 << 2), GIV(nilObj));
@@ -49478,13 +49483,13 @@
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (0x3F << 2), ConstZero);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer19 = GIV(trueObj);
+ valuePointer20 = GIV(trueObj);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (64 << 2), valuePointer19);
+ longAtput((result + (BaseHeaderSize)) + (64 << 2), valuePointer20);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer20 = (((stackPageByteSize()) << 1) | 1);
+ valuePointer21 = (((stackPageByteSize()) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (65 << 2), valuePointer20);
+ longAtput((result + (BaseHeaderSize)) + (65 << 2), valuePointer21);
for (i = 66; i <= 68; i += 1) {
/* reserved for more Cog-related info */
@@ -49494,13 +49499,13 @@
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer21 = (((VM_PROXY_MAJOR) << 1) | 1);
+ valuePointer22 = (((VM_PROXY_MAJOR) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (69 << 2), valuePointer21);
+ longAtput((result + (BaseHeaderSize)) + (69 << 2), valuePointer22);
/* begin storePointerUnchecked:ofObject:withValue: */
- valuePointer22 = (((VM_PROXY_MINOR) << 1) | 1);
+ valuePointer23 = (((VM_PROXY_MINOR) << 1) | 1);
assert(!(isForwarded(result)));
- longAtput((result + (BaseHeaderSize)) + (70 << 2), valuePointer22);
+ longAtput((result + (BaseHeaderSize)) + (70 << 2), valuePointer23);
assert(paramsArraySize == 71);
/* begin pop:thenPush: */
longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), result);
@@ -49657,6 +49662,10 @@
if (arg == 49) {
result = (((ioGetMaxExtSemTableSize()) << 1) | 1);
}
+ if ((arg == 54)
+ && (1)) {
+ result = ((GIV(totalFreeOldSpace) << 1) | 1);
+ }
if ((arg == 55)
&& (1)) {
result = floatObjectOf(getHeapGrowthToSizeGCRatio());
Modified: branches/Cog/nsspurstacksrc/vm/interp.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/interp.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspurstacksrc/vm/interp.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
#define VM_PROXY_MAJOR 1
Modified: branches/Cog/nsspurstacksrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/nsspurstacksrc/vm/vmCallback.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
#define VM_CALLBACK_INC 1
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Mon Jun 16 13:39:58 PDT 2014
+ Thu Jun 19 14:10:46 PDT 2014
Modified: branches/Cog/platforms/unix/vm/sqUnixMemory.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixMemory.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/platforms/unix/vm/sqUnixMemory.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -331,6 +331,36 @@
#endif /* COGVM */
#if SPURVM
+/* Answer if any of the memory in the range [address, address + bytes) is used
+ * so as to make sure the MAP_FIXED below doesn't damage any existing mappings.
+ *
+ * See http://stackoverflow.com/questions/14943990
+ *
+ * One must do this separately for each page, because for regions larger than a
+ * single page, ENOMEM means that the region was not fully mapped and it might
+ * still be partially mapped.
+ *
+ * It seems to me (eem 6/18/2014 16:00) that madvise could be called, which
+ * would be cheaper. But it would have side-effects when applied to an
+ * existing mapping.
+ */
+static long
+address_space_used(char *address, long bytes)
+{
+ long offset = 0;
+ char pagestate;
+
+ while (offset < bytes) {
+ do {
+ if (mincore(address+offset, pageSize, &pagestate) >= 0)
+ return 1;
+ } while (errno == EAGAIN);
+ assert(errno == ENOMEM);
+ offset += pageSize;
+ }
+ return 0;
+}
+
/* Allocate a region of memory of al least size bytes, at or above minAddress.
* If the attempt fails, answer null. If the attempt succeeds, answer the
* start of the region and assign its size through allocatedSizePointer.
@@ -339,31 +369,43 @@
sqAllocateMemorySegmentOfSizeAboveAllocatedSizeInto(sqInt size, void *minAddress, sqInt *allocatedSizePointer)
{
void *alloc;
- long bytes = roundUpToPage(size);
+ char *address;
+ long bytes;
if (!pageSize) {
pageSize = getpagesize();
pageMask = pageSize - 1;
}
+ address = (char *)roundUpToPage((unsigned long)minAddress);
+ bytes = roundUpToPage(size);
*allocatedSizePointer = bytes;
- while ((char *)minAddress + bytes > (char *)minAddress) {
+ while ((unsigned long)(address + bytes) > (unsigned long)address) {
#if 0
- alloc = mmap((void *)roundUpToPage((unsigned long)minAddress), bytes,
- PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
+ alloc = mmap(address, bytes, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_PRIVATE, -1, 0);
#else
- alloc = mmap((void *)roundUpToPage((unsigned long)minAddress), bytes,
- PROT_READ | PROT_WRITE, MAP_ANON | MAP_FIXED | MAP_PRIVATE, -1, 0);
+ /* This is a mess. To be able to allocate lots of segments it appears
+ * we have to use MAP_FIXED, but MAP_FIXED will blow away any existing
+ * mappings, so we have to use mincore to scan the pages in the region
+ * to check there is no existing mapping there.
+ */
+ if (address_space_used(address, bytes)) {
+ address += bytes;
+ continue;
+ }
+ alloc = mmap(address, bytes, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_FIXED | MAP_PRIVATE, -1, 0);
#endif
if (alloc == MAP_FAILED) {
mmapErrno = errno;
perror("sqAllocateMemorySegmentOfSizeAboveAllocatedSizeInto mmap");
return 0;
}
- if (alloc >= minAddress)
+ if ((char *)alloc >= address)
return alloc;
if (munmap(alloc, bytes) != 0)
perror("sqAllocateMemorySegment... munmap");
- minAddress = (void *)((char *)minAddress + bytes);
+ address += bytes;
}
return 0;
}
Modified: branches/Cog/spursistasrc/vm/cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/spursistasrc/vm/cointerp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1338,7 +1338,7 @@
static void setSignalLowSpaceFlagAndSaveProcess(void);
static void setTraceFlagOnContextsFramesPageIfNeeded(sqInt aContext) NoDbgRegParms;
sqInt shiftForWord(void);
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
static sqInt shortPrintContext(sqInt aContext) NoDbgRegParms;
static sqInt shortPrintFrameAndCallers(char *theFP) NoDbgRegParms;
EXPORT(void) shortPrintFramesInPage(StackPage *thePage);
@@ -2237,7 +2237,7 @@
/* 574 */ (void (*)(void))0,
/* 575 */ (void (*)(void))0,
0 };
-const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.775]";
+const char *interpreterVersion = "Croquet Closure Cog VM [CoInterpreter VMMaker.oscog-eem.776]";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
volatile int sendTrace;
@@ -5429,6 +5429,7 @@
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
+ null;
goto l148;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -5443,7 +5444,7 @@
/* begin fetchNextBytecode */
currentBytecode = byteAtPointer(++localIP);
- /* return self */
+ null;
l148: /* end baseFrameReturn */;
goto l145;
}
@@ -49583,9 +49584,9 @@
1 arg: return the indicated VM parameter;
2 args: set the VM indicated parameter.
VM parameters are numbered as follows:
- 1 end of old-space (0-based, read-only)
- 2 end of young-space (read-only)
- 3 end of memory (read-only)
+ 1 end/size of old-space (0-based, read-only)
+ 2 end/size of young/new-space (read-only)
+ 3 end/size of heap (read-only)
4 nil (was allocationCount (read-only))
5 nil (was allocations between GCs (read-write)
6 survivor count tenuring threshold (read-write)
@@ -49853,11 +49854,14 @@
valuePointer13 = (((ioGetMaxExtSemTableSize()) << 1) | 1);
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (48 << 2), valuePointer13);
- for (i = 49; i <= 53; i += 1) {
+ for (i = 49; i <= 52; i += 1) {
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(result)));
longAtput((result + (BaseHeaderSize)) + (i << 2), GIV(nilObj));
}
+ /* begin storePointerUnchecked:ofObject:withValue: */
+ assert(!(isForwarded(result)));
+ longAtput((result + (BaseHeaderSize)) + (53 << 2), ((GIV(totalFreeOldSpace) << 1) | 1));
/* begin storePointer:ofObject:withValue: */
valuePointer27 = floatObjectOf(getHeapGrowthToSizeGCRatio());
assert(!(isForwarded(result)));
@@ -50100,6 +50104,10 @@
if (arg == 49) {
result = (((ioGetMaxExtSemTableSize()) << 1) | 1);
}
+ if ((arg == 54)
+ && (1)) {
+ result = ((GIV(totalFreeOldSpace) << 1) | 1);
+ }
if ((arg == 55)
&& (1)) {
result = floatObjectOf(getHeapGrowthToSizeGCRatio());
@@ -57863,7 +57871,7 @@
zero if no change
was possible. */
-static sqInt
+static usqInt
shortentoIndexableSize(sqInt objOop, sqInt indexableSize)
{
usqInt bytesAfter;
Modified: branches/Cog/spursistasrc/vm/cointerp.h
===================================================================
--- branches/Cog/spursistasrc/vm/cointerp.h 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/spursistasrc/vm/cointerp.h 2014-06-19 21:12:57 UTC (rev 3007)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-06-16 20:42:34 UTC (rev 3006)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c 2014-06-19 21:12:57 UTC (rev 3007)
@@ -2,11 +2,11 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
from
- CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97
+ CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.775 uuid: dd27f525-f775-49fc-8bf0-2463d78bfb97 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.776 uuid: baaa78fd-2c0b-4cde-a247-4c45097f296e " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -1341,7 +1341,7 @@
static void setSignalLowSpaceFlagAndSaveProcess(void);
static void setTraceFlagOnContextsFramesPageIfNeeded(sqInt aContext) NoDbgRegParms;
sqInt shiftForWord(void);
-static sqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
+static usqInt shortentoIndexableSize(sqInt objOop, sqInt indexableSize) NoDbgRegParms;
static sqInt shortPrintContext(sqInt aContext) NoDbgRegParms;
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list