> [Robin writes]
>
> Second example.
> if (!b)
> {
> b = a; // a being an ivar array.
> }
>
> Yep. That's an example of code that Sfx curently executes uncoditionally.
>
> Surely, it's either an i-rate assignment
If its a legal assignment, then the value of b will be different depending
on whether conditional or unconditional execution happens -- the point of
the example was to show that legal SAOL code can be written whose semantics
will change based on this implementation choice, and so we should consider
pinning it down in the spec.
> or it's an illegal statment due to an effective guard-rate restriction.
Just to short-circuit this one, rewrite as:
b = (!b) ? a : b;
but, more seriously, it sounds like you're suggesting that the:
"It is further not permissible for any statements in the governed block
of code to contain calls to opcodes that would be executed slower than
the guard expression"
aopcode foo () { }
asig a;
if (a)
{
foo();
}
In this case, foo() can't have i-rate or k-rate statements, because
these statements would violated the section I quoted from 5.8.6.6.4.
Meaning that "opcodes that would be executed slower than the guard expression"
doesn't only mean "no kopcode or iopcode" but also talks about the
rate of any statements in the UDO.
If this is what you were suggesting, then I think the whole discussion
here is moot -- UDO's that are guarded could never have slower statements,
it would always be an illegal construct.
--jl
-------------------------------------------------------------------------
John Lazzaro -- Research Specialist -- CS Division -- EECS -- UC Berkeley
lazzaro [at] cs [dot] berkeley [dot] edu www.cs.berkeley.edu/~lazzaro
-------------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Mon Jan 28 2002 - 12:03:56 EST