Schwab,Wilhelm K writes: > Bryce, > > I'll play dumb here - actually, I'm not playing in this case :) > > The little I know about Exupery comes from FAQs. In the past at least, you > cautioned against enabling dynamic compiling of methods, at least in > production. How does that square with full-inlining? Are they different > concepts, or have thing improved enough that you are now confident enough to > throw the switch? Full-inlining sounds like it could consume a lot of > space. Is that a concern, or does the selection of what it compiles keep it > manageable? How does it decide what to compile, and (more relevant to my > dumb questions) how does that differ from the dynamic compilation? > > Please don't feel attacked - I'm simply trying to understand what is > hopefully just around the corner.
What's changed is I've fixed a few bugs. It's possible that Exupery is reliable. I've yet done enough testing to be sure but since the last fix I haven't yet seen Exupery cause a crash. I'm confident enough to throw the switch. By full inlining all I mean is the ability to inline entire methods. Exupery will already dynamically inline the primitives it compiles to machine code. Dynamic inlining is the critical optimisation to allow further optimisations, without it the compiler can only see a method or a block at a time. It can't see where the loops are as they're probably in a different method as with #do: loops. This really limits the optimisations that can be performed later. Full inlining will be driven by profiling so it's only the hot spots that should get inlined, at least after I've tuned the profiler. Inlining can sometimes reduce the amount of code executed. For small methods it's easy to spend more code on the message send than is consumed by the method body. Initially it's likely the profiler will make bad inlining decisions like the current profiler will compile every method seen eventually which is probably bad for performance, compiling everything at least doesn't avoid compiling infrequent methods that may trigger a compiler bug. Full method inlining is a form of dynamic compilation. It lets the dynamic compiler inline entire methods when it sees the need. Bryce. _______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
