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

Reply via email to