[squeak-dev] The Inbox: Chronology-Core-cmm.54.mcz

Chris Muller asqueaker at gmail.com
Fri May 1 03:37:27 UTC 2020


Hi Levente,

Here's an alternative which addresses all of your concerns.

 - Chris


On Thu, Apr 30, 2020 at 10:35 PM <commits at source.squeak.org> wrote:

> Chris Muller uploaded a new version of Chronology-Core to project The
> Inbox:
> http://source.squeak.org/inbox/Chronology-Core-cmm.54.mcz
>
> ==================== Summary ====================
>
> Name: Chronology-Core-cmm.54
> Author: cmm
> Time: 30 April 2020, 10:35:37.087886 pm
> UUID: aea28e1f-8f45-4621-938d-61349776e465
> Ancestors: Chronology-Core-nice.52
>
> - Let #primUtcMicrosecondClock provide access to primitive 240.
> - Let #utcMicrosecondClock be based on the Smalltalk epoch, 1/1/1901 @
> 00:00:00.
> - Three legacy senders were left alone pending discussion whether they can
> use the new #utcMicrosecondClock.
> - Provide DateAndTime class>>#fromUtcMicrosecondClock:, as a supplement to
> Time class>>#utcMicrosecondClock.
>
> =============== Diff against Chronology-Core-nice.52 ===============
>
> Item was added:
> + ----- Method: DateAndTime class>>fromUtcMicrosecondClock: (in category
> 'smalltalk-80') -----
> + fromUtcMicrosecondClock: anInteger
> +       "Answer a DateAndTime the specified microseconds after the Squeak
> epoch: 1/1/1901 @ 00:00:00."
> +       ^ self
> +               utcMicroseconds: anInteger
> +               offset: self localOffsetSeconds!
>
> Item was changed:
>   ----- Method: Time class>>estimateHighResClockTicksPerMillisecond (in
> category 'clock') -----
>   estimateHighResClockTicksPerMillisecond
>
>         | t0 t1 t2 t3 |
>
>         "Count the ticks ellapsed during a 10ms busy loop"
> +       t0 := Time primUtcMicrosecondClock + 200.
> +       [Time primUtcMicrosecondClock >= t0] whileFalse.
> -       t0 := Time utcMicrosecondClock + 200.
> -       [Time utcMicrosecondClock >= t0] whileFalse.
>         t1 := self highResClock.
> +       [Time primUtcMicrosecondClock >= (t0 + 10000)] whileFalse.
> +       t1 := self highResClock - t1 * 1000 // (Time
> primUtcMicrosecondClock - t0).
> -       [Time utcMicrosecondClock >= (t0 + 10000)] whileFalse.
> -       t1 := self highResClock - t1 * 1000 // (Time utcMicrosecondClock -
> t0).
>
>         "Count the ticks ellapsed during a 20ms busy loop"
> +       t0 := Time primUtcMicrosecondClock + 200.
> +       [Time primUtcMicrosecondClock >= t0] whileFalse.
> -       t0 := Time utcMicrosecondClock + 200.
> -       [Time utcMicrosecondClock >= t0] whileFalse.
>         t2 := self highResClock.
> +       [Time primUtcMicrosecondClock >= (t0 + 20000)] whileFalse.
> +       t2 := self highResClock - t2 * 1000 // (Time
> primUtcMicrosecondClock - t0).
> -       [Time utcMicrosecondClock >= (t0 + 20000)] whileFalse.
> -       t2 := self highResClock - t2 * 1000 // (Time utcMicrosecondClock -
> t0).
>
>         "Count the ticks ellapsed during a 30ms busy loop"
> +       t0 := Time primUtcMicrosecondClock + 200.
> +       [Time primUtcMicrosecondClock >= t0] whileFalse.
> -       t0 := Time utcMicrosecondClock + 200.
> -       [Time utcMicrosecondClock >= t0] whileFalse.
>         t3 := self highResClock.
> +       [Time primUtcMicrosecondClock >= (t0 + 30000)] whileFalse.
> +       t3 := self highResClock - t3 * 1000 // (Time
> primUtcMicrosecondClock - t0).
> -       [Time utcMicrosecondClock >= (t0 + 30000)] whileFalse.
> -       t3 := self highResClock - t3 * 1000 // (Time utcMicrosecondClock -
> t0).
>
>         "Take the median of the 3 estimates as the best"
>         ^ t1 <= t2
>                 ifTrue: [t2 <= t3
>                                 ifTrue: [t2]
>                                 ifFalse: [t1 <= t3
>                                                 ifTrue: [t3]
>                                                 ifFalse: [t1]]]
>                 ifFalse: [t1 <= t3
>                                 ifTrue: [t1]
>                                 ifFalse: [t2 <= t3
>                                                 ifTrue: [t3]
>                                                 ifFalse: [t2]]]!
>
> Item was changed:
>   ----- Method: Time class>>localMicrosecondClock (in category 'clock')
> -----
>   localMicrosecondClock
>         "Answer the local microseconds since the Smalltalk epoch (January
> 1st 1901, the start of the 20th century).
>          The value is derived from the current UTC wallclock time and the
> image's current notion of time zone."
> +       ^self primUtcMicrosecondClock + (DateAndTime localOffset asSeconds
> * 1000000)!
> -       ^self utcMicrosecondClock + (DateAndTime localOffset asSeconds *
> 1000000)!
>
> Item was changed:
>   ----- Method: Time class>>millisecondClockValue (in category 'general
> inquiries') -----
>   millisecondClockValue
>         "Answer the value of the millisecond clock."
>
> +       ^self primUtcMicrosecondClock // 1000!
> -       ^self utcMicrosecondClock // 1000!
>
> Item was added:
> + ----- Method: Time class>>primUtcMicrosecondClock (in category
> 'private') -----
> + primUtcMicrosecondClock
> +       "Answer the UTC microseconds since the Smalltalk epoch (January
> 1st 1901, the start of the 20th century).
> +        The value is derived from the Posix epoch with a constant offset
> corresponding to elapsed microseconds
> +        between the two epochs according to RFC 868."
> +       <primitive: 240>
> +       ^0!
>
> Item was changed:
>   ----- Method: Time class>>utcMicrosecondClock (in category 'clock') -----
>   utcMicrosecondClock
>         "Answer the UTC microseconds since the Smalltalk epoch (January
> 1st 1901, the start of the 20th century).
>          The value is derived from the Posix epoch with a constant offset
> corresponding to elapsed microseconds
>          between the two epochs according to RFC 868."
> +       ^ self primUtcMicrosecondClock - (DateAndTime
> daysFromSmalltalkEpochToPosixEpoch*MicrosecondsInDay)!
> -       <primitive: 240>
> -       ^0!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200430/942804f9/attachment.html>


More information about the Squeak-dev mailing list