2017-02-25 2:08 GMT-03:00 Ben Coman <b...@openinworld.com>: > What happens if the wrong type object is passed to a lowcode method?
You should get an error. A Lowcode method checks the type of its argument when called from a normal Pharo method. When calling a Lowcode method from another Lowcode method, the type check happens in compilation time. The type check of the arguments is only removed when a Lowcode method is inlined. By default, each variable has the object type, which corresponds with any normal Pharo Object. > Unfortunately, when we did this work the 64 bits version of Spur was > incomplete and in an experimental state [and we were] not able to compare > the performance difference for floating point arithmetics against a > Smalltalk with support for immediate floating point objects > > Have you been able to do this performance comparison since the paper > was written? > I have not tried it. But, we now have the 64 bits Lowcode VM, which is used by Woden 2 by default on OS X. Currently I am just too lazy for doing this comparison, because there lot of more interesting things that can be done with Lowcode. Anyway, in theory most of the performance gain could be obtained from loops that need to manipulate memory pointers without bounds checks, instead of the small linear algebra that I am testing in that. I have not finished the support for the pointers in the Lowcode Opal Compiler, so I am quite sure we still are not getting all of the performance improvement that can be obtained with Lowcode. I am seriously thinking on remaking the Lowcode Opal Compiler, but using Slovim for generating more optimized code, and doing more aggressive inlining. Slovim is a LLVM style SSA intermediate representation that I am currently using for generating all of the shaders used by Woden 2. In Slovim I already have backends for SpirV, GLSL, the Metal Shader language, a x86 (and x86_64) machine code generator that I am refactoring. Now, I am only missing Lowcode backend, and we could be compiling actual C code alongside Pharo code in the near future. The only bad think about integrating C is its syntax. Because in C not everything is a expression, I do not believe it would be behave well in playground. Best regards, Ronie