Modularize -emit method

Description

As mentioned briefly via email, a critical failure of TEMJVM in terms of extensibility is that clients are unable to leverage the existing emitter code without duplicating it wholesale or altering the loaded copy of TEMJVM in place.

The feature/fragmented-emitter branch experiments with refactoring the various emit operations so that rather than using multimethods, they are represented as maps of :op keywords to simple functions taking an extra leading argument being the dispatch map or set of maps. Clients using TEMJVM then can recycle any and all code from the emitter itself simply by associng onto these mappings and using them. This may come at a performance penalty due to multimethod caching, however it should hugely reduce the verbosity of client code which doesn't have to define a mostly repetitive multimethod.

Environment

None

Assignee

Nicola Mometto

Reporter

Reid D McKenzie

Labels

None

Approval

None

Patch

None

Priority

Major
Configure