On 25 April 2010 15:04, Stéphane Ducasse <[email protected]> wrote: > super cool :) > Questions: > - does it work on mac, linux..?
Currently supported is only Win32 platform. It should be easy to port plugin on any other platform, which based on x86 architecture. Porting plugin on x64 or other archs will require additional work. Also, it requires a change in VM virtual memory allocation (a memory, which used for squeak object memory), to allow execution of native code. It won't work on platforms, where VM will be unable to control what regions of memory is executable and what is not (as well as any other JIT implementation). > - how to enable it? 1. Build a VM with NativeBoost plugin, and you have it. Also, plugin can be made external, so you can use it as any other plugin. 2. On image side , it requires a small change to CompiledMethodTrailer, to add a new trailer kind for methods, to allow methods to hold a native code and to easily work with it (encode/decode etc). You can put any native code (bytes) into a method's trailer from any sourse. Just make sure that your method using a NativeBoost's primitive: <primitive: 'primitiveNativeCall' module: 'NativeBoostPlugin'> > - why did you choose ffi and not alien? You don't need either of them to run native code. FFI stands for Foreign Function Interface, and NativeBoost project will have own interface for generating foreign function calls using native code. It having dependencies from FFI-Kernel package, but ultimately, they can be avoided. Its using FFI to simply not duplicate the code and for some testing. > - does it work on pharo? It can be used in any fork , where we already having a compiled methods trailers adopted. Pharo is supported. > - what is the representation that you use to convert it to assembly? > byteocde or ast > if AST which one? RBAst? > A NativeBoost package using AsmJit library (http://www.squeaksource.com/AsmJit) for generating native code. Its been ported from AsmJit project (http://code.google.com/p/asmjit/) written in C. By using a small AsmJit library you can emit almost any x86 instruction directly to generate native code from them. So, there currently no any platform-neutral DSL (and therefore AST) for representing a native code in more platform-neutral and abstract way. An AsmJit can be used as a basis for making a more advanced/abstract compiler/parser, as well as one can use any other JIT implementation which can translate some intermediate instructions into native code. > Stef > Thanks for questions! -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
