Next: , Previous: , Up: compiler   [Index]


17.23 Inserting engine checks

This compiler pass traverses all the function bodies and, if the body contains at least one jmpcall struct or one funcall struct (in which the operator is not a primref), it transforms the ?body into:

(seq
  (primopcall $do-event ())
  ?body)

the call to the primitive operation $do-event suspends the execution of Scheme code for the current internal process and enters an internal subprocess which can take actions asynchronously.

The following bindings are exported by the library (vicare compiler).

Function: pass-insert-engine-checks input

Perform code transformation traversing the whole hierarchy in input, which must be a codes struct representing recordised code; build and return a new codes struct.

Insert calls to the primitive operation $do-event when appropriate.