Jason --
Thanks for taking the time to look at this and comment on it.
> Actually you need to clarify what the semantics of an 'out' parameter are for S
> and P registers. 'out' should indicate whether the value of the register (ie.
> the value of the pointer) may change.
>
> For example, in :
>
> inline op set(PMC, NUM) {
> $1->vtable->set_number_native(interpreter, $1, $2);
> goto NEXT();
> }
>
> the PMC pointer passed in $1 will not be changed by the call to set, so
> depending on the language being compiled the PMC pointer may be cached across
> this op.
I was thinking of these semantics:
in - The value on entry into the op is used to determine the
the out value(s) (if any) and/or the next op.
out - The value is (potentially) changed by the op.
I had not made a distinction between the two cases for reference
types (STR and PMC):
value - The value of the referred-to thing is effected. I think
this is analogous to the semantics for value types
(INT, NUM), so it could easily be the default.
referent - The register's referrent is changed. Possibly we could
use refout for this, but then it begs the need for
refinout, but things start to feel pretty slippery at
this point.
I want to keep these annotations as concise as possible. I'll have to
think on that one some more.
Regards,
-- Gregor
____________________________________________________________________
/ Inspiration >> Innovation >> Excellence (TM) \
Gregor N. Purdy [EMAIL PROTECTED]
Focus Research, Inc. http://www.focusresearch.com/
8080 Beckett Center Drive #203 513-860-3570 vox
West Chester, OH 45069 513-860-3579 fax
\____________________________________________________________________/
[[EMAIL PROTECTED]]$ ping osama.taliban.af
PING osama.taliban.af (68.69.65.68) from 20.1.9.11 : 56 bytes of data.
>From 85.83.77.67: Time to live exceeded