| Section 6.8.1 of the C-- spec states that form of a procedure call
| statement includes a calling convention, 'conv.' If the 'conv' is
| not specified, it is implicitly 'foreign "C--"'. Maybe the wording
| is a little too explicit: "C--" is the native calling convention so
| 'foreign "C--"' sounds like something different. There is no
| difference: all calls are "foreign" to the caller.
Again I'm confused. The form
x = %%foo( p, q )
in the C-- spec has *nothing* to do with foreign calls. Not a thing! Nor, does
it necessarily have anything to do with *calls*. It might be implemented by a
single inline machine instruction.
| As I (confusedly)
| understood it, the "runtime" might be as simple as a stack map;
| suspending the caller--saving the caller's state before a call--might
| mean that those parameters passed to the callee and any global
| variables not declared 'invariant' may change, especially their
| value. The C-- guarantee that primops do not have side-effects means
| that the caller state *never* has to be saved before the operation,
| while statements with side-effecting primops *may* require the caller
| state to be saved--for example, when the side-effect of the operator
| would potentially change the control flow. This is is where the Cmm
| implementation details come up: would the caller state *always* save
| (conversely, the %%op would generate a call) when the %%op contains
| code that might change the control flow? That would depend on how
| the control flow might change, as suggested in section 4.4 of your
| "C-- Extension..." paper, "Informing the optimiser." Does this sound
| correct?
I think I'm misunderstanding your question. Let me try again
* The primops in a C-- *expressions* have no side effects, and it's
unspecified what order they are done in.
* A %% op in a C-- *statement* (no more than one in one statement!) can have
side effects. The order in which C-- statements are executed is completely
specified by the control flow.
We don't need to speak of the C-- runtime at all in specifying this stuff.
Simon
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc