On 27 Aug 2014, at 17:53, Camille Teruel <camille.teruel@gmail.com> wrote:
Hi all,
With Opal, if you want to customize how methods are compiled into a class you can override #compilerClass on class-side: MyClass class>>#compilerClass ^ MySpecialCompiler
However this custom compiler is not taken into account when compiling methods on the class-side: MyClass class compilerClass ---> OpalCompiler I was expecting to have the same compiler class for the metaclass. The consequence is that right now there is no way to specialize how methods are compiled in *one* metaclass. Is it on purpose or is it a bug?
This is a bug, clearly.
Also is there cases where one wants instance-side methods and class-side methods to be compiled with different compiler classes? I hope not⦠but the, could be interesting (e.g. when experimenting). If the overhead is not large, this would be nice.
My rough guess is that in most cases you want the same compiler class, but I don't fell confortable forcing that. So I propose to add a method #classSideCompilerClass: Class>>#classSideCompilerClass ^ self compilerClass
Then compilerClass can be implemented for metaclasses: Metaclass>>#compilerClass ^ self instanceSide classSideCompilerClass
Likewise, if I override compilerClass, it is taken into account for both instance-side and class-side methods but I can still say that I want a different compiler for class-side methods by overriding classSideCompilerClass. Tell me what you think about it and if you're ok, I open a bug entry with the slice.
Yes, this looks good! Marcus