I plan to add integration with compiler/browser for assembler methods.
The benefits is obvious:
- prevent submitting valid smalltalk but invalid asm code
- showing an error messages at point, where error is.
- support for primitives.
- automatic recompile-and-replace support
To indicate that currently submitted method is assembler, developer
just need to put
<assembler> pragma in code.
I will place some 'awful hacks' in Compiler to react on this pragma
and redirect all further processing to my classes.
By default, if no extra pragmas found, the code will be compiled by
Exupery and registered as anonymous primitive, which will be invoked
when interpreter enters this method.
Additional pragmas can indicate a different calling conventions, or
declaring a named primitive, which then can be used by other methods
and other things yet to think of :)
Also, putting a custom bytecode in compiled method, instead of one,
which can be a result of parsing assembler code as smalltalk code can
be more useful for error handling e.t.c.
So, basically, an assembler methods will be a secret weapon to deal
with anything which is speed crtitical (even comparing to Exupery
compiled methods) and/or requires special processing, which available
only at lowest levels - like interrupts, task switching, callbacks,
native stack manipulation e.t.c.
Currently, some of these areas can be covered only by plugins -
forcing you to write slang/C code and be dependent on C compiler.
Exupery mailing list
[hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/exupery