Polymorphic Eval


Polymorphic Eval is the ability of chaining the execution of different interpreters from within the same interpreter. SMOP does it by having a level of indirection that is the "Interpreter Instance". This is an object that references to the "Current Continuation", and to which the instance delegates the running calls. The "Current Continuation" is simply the current state of some "Interpreter Implementation". And it can be changed by goto calls to implement Continuation Passing Style.

This is what enables SMOP to embed other interpreter runloops inside itself, so the default runloop can be replaced by the perl5 runloop as the current continuation and get back transparently. This feature is also important to enable the implementation of green threads, and to enable interrupt handling to do Continuation Passing Style with the current interpreter instance.