If the input quotation is a literal, or built up from curry and compose with terminal quotations literal, it is inlined at the call site.
For dynamic call sites, call( uses the following strategy:
•
Inline caching. If the quotation is the same as last time, just call it unsafely
•
Effect inference. Infer quotation's effect, caching it in the cached-effect slot, and compare it with declaration. If matches, call it unsafely.
•
Fallback. If the above doesn't work, call it and compare the datastack before and after to make sure it didn't mess anything up.
•
Inline caches and cached effects are invalidated whenever a macro is redefined, or a word's effect changes, by comparing a global counter against the counter value last observed. The counter is incremented by compiler.units.