Hello.. I'm pretty sure that squeak fairly severely overinlines, in that in some places, its a good idea to inline a function and in other places it is not a good idea, because inlining in the other places leads to code bloat.
As my first attempt at it, I've attempted to build an interpreter with NO inlining. I have succeeded, although, with three problems: 1. A lot more compiler warnings from casting from int to pointer. 2. ../src/unix/util/gnuify has a check for no inlining, and fails. This had to be removed.
3. The following function, the '******' line is wrong. I'm not sure how to fix this; I just hacked the generated C file.
context: thisCntx hasSender: aContext "Does thisCntx have aContext in its sender chain?" | s nilOop | self inline: true. thisCntx == aContext ifTrue: [^ false]. nilOop _ nilObj. s _ self fetchPointer: SenderIndex ofObject: thisCntx. [s == nilOop] whileFalse: [s == aContext ifTrue: [^ true]. s _ s self fetchPointer: SenderIndex ofObject: s]. *********************************************** ^ false