[Vm-dev] [commit][2726] Ugh. Make the !defined(SA_NODEFER)
compare-and-swap code comprehensible (i hope).
commits at squeakvm.org
commits at squeakvm.org
Thu Apr 25 18:39:00 UTC 2013
Revision: 2726
Author: eliot
Date: 2013-04-25 11:38:59 -0700 (Thu, 25 Apr 2013)
Log Message:
-----------
Ugh. Make the !defined(SA_NODEFER) compare-and-swap code comprehensible (i hope).
Modified Paths:
--------------
branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
Modified: branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c 2013-04-25 18:34:40 UTC (rev 2725)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c 2013-04-25 18:38:59 UTC (rev 2726)
@@ -350,10 +350,10 @@
heartbeat_handler(int sig, struct siginfo *sig_info, void *context)
{
#if !defined(SA_NODEFER)
- { int zeroAndPreviousHandlingHeartbeat = 0;
- sqCompareAndSwapRes(handling_heartbeat,zeroAndPreviousHandlingHeartbeat,
- 1,zeroAndPreviousHandlingHeartbeat);
- if (zeroAndPreviousHandlingHeartbeat)
+ { int zero = 0;
+ int previouslyHandlingHeartbeat;
+ sqCompareAndSwapRes(handling_heartbeat,zero,1,previouslyHandlingHeartbeat);
+ if (previouslyHandlingHeartbeat)
return;
}
Modified: branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c 2013-04-25 18:34:40 UTC (rev 2725)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c 2013-04-25 18:38:59 UTC (rev 2726)
@@ -480,10 +480,10 @@
}
#if !defined(SA_NODEFER)
- { int zeroAndPreviousHandlingHeartbeat = 0;
- sqCompareAndSwapRes(handling_heartbeat,zeroAndPreviousHandlingHeartbeat,
- 1,zeroAndPreviousHandlingHeartbeat);
- if (zeroAndPreviousHandlingHeartbeat)
+ { int zero = 0;
+ int previouslyHandlingHeartbeat;
+ sqCompareAndSwapRes(handling_heartbeat,zero,1,previouslyHandlingHeartbeat);
+ if (previouslyHandlingHeartbeat)
return;
}
More information about the Vm-dev
mailing list