[Vm-dev] Re: primitiveDigitCompare is slow (was: Re: [squeak-dev] The Inbox: Kernel-dtl.1015.mcz)

Levente Uzonyi leves at caesar.elte.hu
Sat Apr 16 22:36:46 UTC 2016


I just played around a bit with the code generator and I think there other 
reasons why the code is slow:
- the use of function calls instead of macros for isIntegerObject, 
slotSizeOf, success, failed, stackValue. I suspect that the VM internally 
uses macros for these in numbered primitives.
- #cDigitCompare:with:len: doesn't get inlined, even though it's a tail 
call. That's probably a limitation of the Slang inliner, or a bug.

Some functions are generated as static, even though they are never called, 
because they have been inlined during the code generation. E.g.: 
#digitCompareLarge:with:.
While this doesn't have a direct effect on execution time, it may affect 
the CPU cache.
I think the best would be to not generate any C code from such methods.

Levente


More information about the Vm-dev mailing list