On Mon, Feb 23, 2009 at 07:05:39AM +0200, Igor Stasenko wrote:
i never took a look how method inliner works in code generator. But some of its discrepancies is a pain. Like unable to inline a method which having cCode, or c variables declarations/definitions.
I think I forgot to put this on Mantis (sorry), but look at VMMaker-dtl.103 on SqueakSource for the changes that allow inlining methods with embedded C code:
Name: VMMaker-dtl.103 Author: dtl Time: 24 September 2008, 11:23:59 pm UUID: b4f365aa-e032-49eb-83ca-11526fd5101e Ancestors: VMMaker-dtl.97
VMMaker 3.9.1 Supports #inline: directive for methods containing embedded C code (#cCode:). This includes fixes for Slang generation, case statement translation to C in the interp() loop, and various type declaration cleanups.
Low level methods with embedded C may now be inlined and translated, permitting functions that previously required external support code and C macros to be directly implemented in Slang.
A remaining caveat is that methods with #cCode: strings with references to method parameters must not request inlining, as the inliner may rename method parameters such that they no longer match variable names in the embedded C.
Dave