Ben
thanks a lot for your effort!
I would love to get a little description of the new architecture.
Stef
YAY!! Thanks Esteban for integration, and Nicolai and Max for code
reviews.
To observe the new behaviour:
1. Tools > Process Browser
Observe at the top "(80) Delay Scheduling Process:
DelayMicrosecondScheduler>>runTimerEventLoop"
This based on the new primitive by Eliot that rolls over every
50,000 years.
2. System > Settings > System > Delay Scheduler - select
"DelayMillisecondScheduler"
3. Right-click back in Process Browser, and select [update list].
Observe at the top "(80) Delay Scheduling Process:
DelayMillisecondScheduler>>runTimerEventLoop"
This is the old primitive that rolls over every 6 days.
Actually not really very exciting to look at ;) - but there you go!
I'm glad its integrated. Now we'll see if any corner case bugs shake
out of the woodwork.
Note that the option list also includes "DelayScheduler". This is the
old scheduler I refactored out from the class side of Delay. This was
only kept as-is to smooth this integration step. It essentially
became DelayMillisecondScheduler and will be removed from that list to
allow some required cleanup to proceed.
In the "super fast delay" thread I'll advise that it is solved.
cheers -ben
On Tue, Mar 10, 2015 at 11:43 PM, Sven Van Caekenberghe <[email protected]
<mailto:[email protected]>> wrote:
> On 10 Mar 2015, at 16:31, GitHub <[email protected]
<mailto:[email protected]>> wrote:
>
> Branch: refs/heads/4.0
> Home: https://github.com/pharo-project/pharo-core
> Commit: bea5e5edece36093f82ab3a8854b61377dfbd0a1
>
https://github.com/pharo-project/pharo-core/commit/bea5e5edece36093f82ab3a8854b61377dfbd0a1
> Author: Jenkins Build Server <[email protected]
<mailto:[email protected]>>
> Date: 2015-03-10 (Tue, 10 Mar 2015)
>
> Changed paths:
> M Kernel.package/Delay.class/README.md
> R Kernel.package/Delay.class/class/enable new
code/newCodeEnabled.st
> A
Kernel.package/Delay.class/class/settings/delaySchedulerClass.st
> A
Kernel.package/Delay.class/class/settings/delaySchedulerClass_.st
> A Kernel.package/Delay.class/class/settings/systemSettingOn_.st
> M Kernel.package/Delay.class/definition.st <http://definition.st>
> R Kernel.package/Delay.class/instance/enable new
code/newCodeEnabled.st
> A
Kernel.package/Delay.class/instance/printing/millisecondsToGo.st
> M Kernel.package/Delay.class/instance/printing/printOn_.st
> A Kernel.package/Delay.class/instance/private -
scheduler/schedulerBeingWaitedOn.st
> A Kernel.package/Delay.class/instance/private -
scheduler/schedulerBeingWaitedOn_.st
> A Kernel.package/Delay.class/instance/private -
scheduler/schedulerResumptionTime.st
> A Kernel.package/Delay.class/instance/private -
scheduler/schedulerResumptionTime_.st
> A Kernel.package/Delay.class/instance/private -
scheduler/schedulerSignalWaitingProcess.st
> A Kernel.package/Delay.class/instance/private -
scheduler/scheduler_resumptionTime_.st
> M Kernel.package/Delay.class/instance/private/setDelay_.st
> M
Kernel.package/Delay.class/instance/private/setDelay_forSemaphore_.st
> M Kernel.package/Delay.class/instance/public/delayDuration.st
> A
Kernel.package/Delay.class/instance/public/millisecondDelayDuration.st
> A Kernel.package/DelayMicrosecondScheduler.class/README.md
> A
Kernel.package/DelayMicrosecondScheduler.class/definition.st
<http://definition.st>
> A Kernel.package/DelayMicrosecondScheduler.class/instance/low
priority processes/schedule_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/primitives/primSignal_atUTCMicroseconds_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/printing/millisecondsUntilResumptionTime_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/snapshotting/adjust_resumptionTimeOldBase_newBase_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/snapshotting/restoreResumptionTimes.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/snapshotting/saveResumptionTimes.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/snapshotting/startUp.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/handleTimerEvent_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/runTimerEventLoop.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/scheduleDelay_.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/startTimerEventLoop.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/stopTimerEventLoop.st
> A
Kernel.package/DelayMicrosecondScheduler.class/instance/timer
process/unscheduleDelay_.st
> A Kernel.package/DelayMillisecondScheduler.class/README.md
> A
Kernel.package/DelayMillisecondScheduler.class/definition.st
<http://definition.st>
> A Kernel.package/DelayMillisecondScheduler.class/instance/low
priority processes/schedule_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/primitives/primSignal_atMilliseconds_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/printing/millisecondsUntilResumptionTime_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/snapshotting/adjust_resumptionTimeOldBase_newBase_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/snapshotting/restoreResumptionTimes.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/snapshotting/saveResumptionTimes.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/handleTimerEvent_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/runTimerEventLoop.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/scheduleDelay_.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/startTimerEventLoop.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/stopTimerEventLoop.st
> A
Kernel.package/DelayMillisecondScheduler.class/instance/timer
process/unscheduleDelay_.st
> M Kernel.package/DelayScheduler.class/README.md
> M Kernel.package/DelayScheduler.class/instance/class
initialization/initialize.st <http://initialize.st>
> A
Kernel.package/DelayScheduler.class/instance/printing/millisecondsUntilResumptionTime_.st
> M
Kernel.package/DelayScheduler.class/instance/testing/nextWakeUpTime.st
> M Kernel.package/DelayScheduler.class/instance/timer
process/stopTimerEventLoop.st
> A
Kernel.package/DelayWaitTimeout.class/instance/signaling/schedulerSignalWaitingProcess.st
> A
Kernel.package/Duration.class/instance/converting/asMicroseconds.st
> A
Kernel.package/MonitorDelay.class/instance/private/schedulerSignalWaitingProcess.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/README.md
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/definition.st
<http://definition.st>
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/running/tearDown.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/support/busyWaitMilliseconds_.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testDurationLessThanMaxTicks.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testDurationMoreThanMaxTicks.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testForMilliseconds.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testForSeconds.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testMillisecondsToGo.st
> A
KernelTests.package/DelayMicrosecondSchedulerTest.class/instance/tests/testTestInterferenceWithSystemTimingSemaphore.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/README.md
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/definition.st
<http://definition.st>
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/running/tearDown.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/support/busyWaitMilliseconds_.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testDurationLessThanMaxTicks.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testDurationMoreThanMaxTicks.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testForMilliseconds.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testForSeconds.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testMillisecondsToGo.st
> A
KernelTests.package/DelayMillisecondSchedulerTest.class/instance/tests/testTestInterferenceWithSystemTimingSemaphore.st
> R KernelTests.package/DelaySchedulerTest.class/README.md
> R KernelTests.package/DelaySchedulerTest.class/definition.st
<http://definition.st>
> R
KernelTests.package/DelaySchedulerTest.class/instance/running/tearDown.st
> R
KernelTests.package/DelaySchedulerTest.class/instance/tests/testMaxTickLessThanDuration.st
> R
KernelTests.package/DelaySchedulerTest.class/instance/tests/testMaxTickMoreThanDuration.st
> R
KernelTests.package/DelaySchedulerTest.class/instance/tests/testTestInterferenceWithSystemTimingSemaphore.st
> R ScriptLoader40.package/ScriptLoader.class/instance/pharo -
scripts/script547.st <http://script547.st>
> A ScriptLoader40.package/ScriptLoader.class/instance/pharo -
scripts/script548.st <http://script548.st>
> R ScriptLoader40.package/ScriptLoader.class/instance/pharo -
updates/update40547.st <http://update40547.st>
> A ScriptLoader40.package/ScriptLoader.class/instance/pharo -
updates/update40548.st <http://update40548.st>
> M
ScriptLoader40.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
>
> Log Message:
> -----------
> 40548
> 14353 Delay refactoring (part 2) - change from milliseconds to
microseconds
> https://pharo.fogbugz.com/f/cases/14353
>
> http://files.pharo.org/image/40/40548.zip
a distinctive four-note "short-short-short-long" motif twice ;-)
it seems to work fine, great work Ben !
Sven