[Timber] bug (?) in ASYNC implementation

Ivan Tarasov ivan.tarasov at gmail.com
Mon Oct 26 05:01:47 EDT 2009


I'm trying to understand what constitutes an RTS and how a Timber
program translated into C is actually executed. So, I'm reading the
RTS implementations' code.

In rtsARM/rts.c, in ASYNC implementation, lines 439-442 we can see the
following code:
            if (LESS(m->baseline, now)) {
                m->baseline = now;
                // debug("^");
            }
Same code is present in ASYNC implementation in rtsPOSIX/rts.c, lines 354-355

That means that if the absolute time value for the baseline for the
action to be scheduled is in the past, we set the baseline to the
current time. However, since all the time calculations are relative to
the baseline, that would mean that all the following actions to be
scheduled from the one being scheduled at the moment would "drift". Is
this an intended behavior? I'm not sure that's the right decision.

Ivan


More information about the Timber mailing list