[Vm-dev] [commit][3303] Emergency patch for stupid slip in followForwardingPointersInStackZone.

commits at squeakvm.org commits at squeakvm.org
Thu Apr 2 17:48:16 UTC 2015


Revision: 3303
Author:   eliot
Date:     2015-04-02 10:48:13 -0700 (Thu, 02 Apr 2015)
Log Message:
-----------
Emergency patch for stupid slip in followForwardingPointersInStackZone.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c
    branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
    branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
    branches/Cog/platforms/win32/vm/sqWin32Heartbeat.c
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/gcc3x-cointerp.c

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -17438,9 +17438,7 @@
 				assert(addressIsInPage(thePage, theFP));
 				assert((theIPPtr == 0)
 				 || (addressIsInPage(thePage, ((void *)theIPPtr))));
-				offset = theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))));
+				offset = frameReceiverOffset(theFP);
 				while (theSP <= offset) {
 					oop = longAt(theSP);
 					if (((oop & 3) == 0)

Modified: branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/platforms/unix/vm/sqUnixHeartbeat.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -148,11 +148,21 @@
 void
 ioUpdateVMTimezone()
 {
+	updateMicrosecondClock();
+#ifdef HAVE_TM_GMTOFF
 	time_t utctt;
-	updateMicrosecondClock();
 	utctt = (get64(utcMicrosecondClock) - MicrosecondsFrom1901To1970)
 				/ MicrosecondsPerSecond;
 	vmGMTOffset = localtime(&utctt)->tm_gmtoff * MicrosecondsPerSecond;
+#else
+# ifdef HAVE_TIMEZONE
+  extern time_t timezone, altzone;
+  extern int daylight;
+  vmGMTOffset = -1 * (daylight ? altzone : timezone) * MicrosecondsPerSecond;
+# else
+#  error: cannot determine timezone correction
+# endif
+#endif
 }
 
 sqLong

Modified: branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -138,9 +138,9 @@
 void
 ioUpdateVMTimezone()
 {
+	updateMicrosecondClock();
 #ifdef HAVE_TM_GMTOFF
 	time_t utctt;
-	updateMicrosecondClock();
 	utctt = (get64(utcMicrosecondClock) - MicrosecondsFrom1901To1970)
 				/ MicrosecondsPerSecond;
 	vmGMTOffset = localtime(&utctt)->tm_gmtoff * MicrosecondsPerSecond;

Modified: branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -141,11 +141,21 @@
 void
 ioUpdateVMTimezone()
 {
+	updateMicrosecondClock();
+#ifdef HAVE_TM_GMTOFF
 	time_t utctt;
-	updateMicrosecondClock();
 	utctt = (get64(utcMicrosecondClock) - MicrosecondsFrom1901To1970)
 				/ MicrosecondsPerSecond;
 	vmGMTOffset = localtime(&utctt)->tm_gmtoff * MicrosecondsPerSecond;
+#else
+# ifdef HAVE_TIMEZONE
+  extern time_t timezone, altzone;
+  extern int daylight;
+  vmGMTOffset = -1 * (daylight ? altzone : timezone) * MicrosecondsPerSecond;
+# else
+#  error: cannot determine timezone correction
+# endif
+#endif
 }
 
 sqLong

Modified: branches/Cog/platforms/win32/vm/sqWin32Heartbeat.c
===================================================================
--- branches/Cog/platforms/win32/vm/sqWin32Heartbeat.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/platforms/win32/vm/sqWin32Heartbeat.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -215,6 +215,7 @@
 {
 	__int64 utcNow, localNow;
 
+	updateMicrosecondClock();
 	GetSystemTimeAsFileTime((FILETIME *)&utcNow);
 	FileTimeToLocalFileTime((FILETIME *)&utcNow,(FILETIME *)&localNow);
 	vmGMTOffset = (localNow - utcNow) / (__int64)TocksPerMicrosecond;

Modified: branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/spursistasrc/vm/gcc3x-cointerp.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -17884,9 +17884,7 @@
 				assert(addressIsInPage(thePage, theFP));
 				assert((theIPPtr == 0)
 				 || (addressIsInPage(thePage, ((void *)theIPPtr))));
-				offset = theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))));
+				offset = frameReceiverOffset(theFP);
 				while (theSP <= offset) {
 					oop = longAt(theSP);
 					if (((oop & 3) == 0)

Modified: branches/Cog/spursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/spursrc/vm/gcc3x-cointerp.c	2015-04-02 17:02:47 UTC (rev 3302)
+++ branches/Cog/spursrc/vm/gcc3x-cointerp.c	2015-04-02 17:48:13 UTC (rev 3303)
@@ -13062,9 +13062,7 @@
 				assert(addressIsInPage(thePage, theFP));
 				assert((theIPPtr == 0)
 				 || (addressIsInPage(thePage, ((void *)theIPPtr))));
-				offset = theFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
-	? ((mframeCogMethod(theFP))->cmNumArgs)
-	: byteAt((theFP + FoxIFrameFlags) + 1))));
+				offset = frameReceiverOffset(theFP);
 				while (theSP <= offset) {
 					oop = longAt(theSP);
 					if (((oop & 3) == 0)



More information about the Vm-dev mailing list