[squeak-dev] Anyone know the following about Slang?
tim Rowledge
tim at rowledge.org
Fri Jul 4 02:38:27 UTC 2008
As mentioned this is likely a bit of precautionary restriction
implemented way back, probably by John Maloney when at Apple. Any
cCode stuff stops inlining.
Given the fairly small set of types (ab)used you might specialise to
the form #declareCharStar: #foo etc and instead of catching the
various forms of #var:declareC: etc in TMethod>recordDeclarations it
would let them through. There'd be some ugly fixups elsewhere though,
guaranteed.
It has to be said that the current state of the Slang translation is
just insane. It was a fairly ugly hack to start with and has been
mangled, folded, spindled and mutilated ever since. As an example
gleaned whilst taking a quick look for a solution for you, consider
- TMethod>inlineCaseStatementBranchesIn:localizingVars: and its use
of #hasNoCCode and
- CCodeGenerator>collectInlineList and its non-use of hasCCode but a
mangled inline almost equivalent.
The textual inlining is terribly poorly factored and horribly hacked.
It makes decisions based on nonsense metrics like how many nodes in a
tree and are there more than an arbitrary magic number. The code
probably won't work if you don't inline! At least it didn't a while
back. The inlining/internalising of the bytecode loop is nasty,
resulting in near duplicates of many methods for no very good reason.
My guess - and it is only a guess based on a few limited experiments
ages ago - is that it would be smarter to drop the textual inlining
completely, make the inline: pragma result in placement of a gcc
__inline__ (or whatever the hell it is these days) on the function
declaration line and let the compiler handle it.
Or better yet, completely rewrite the whole damn thing to do the job
properly. Invent a better Slang. Add those bitfileds handling
capabilities you need, and structures.
tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Fractured Idiom:- MONAGE A TROIS - I am three years old
More information about the Squeak-dev
mailing list
|