atom
New()
//do something here
movable
New()
..()
//do something else here
Is five times as slow as:
atom
New()
//do something here
movable
New()
//do something here
//do something else here
The supercall look-up should exist at all. In my opinion, the compiler should use ..() as a compilation cue, find the compiled bytecode offset of the supercall proc, set the return position to the next token, jump to that code offset, and any returns will set the current ret value and jump back to the return offset.
What it looks like is currently going on, is the super proc is being looked up every time it's called.
DM's compiler should just be using jumpcodes to navigate functions. This should not have the kind of overhead we're seeing.
The overhead you're seeing is likely good 'ol function invocation overhead (in the form of having to allocate space for arguments, locals and other shenanigans).