Changes between Version 11 and Version 12 of squirrelfish

Mar 26, 2008 1:01:11 PM (15 years ago)



  • squirrelfish

    v11 v12  
    2222Investigating performance regressions caused by the introduction of new opcodes. In particular, a simple for loop with no body regresses about 25%. It seemed at first that this has to do with the fact that these instructions call arbitrary external functions, but some odd performance differences still occur without these calls. '''Done''': the regression seems to be related to inlining of large function bodies into Machine::privateExecute(). In order to solve this, we have to remove ALWAYS_INLINE from some larger functions, and move some opcodes out into individual functions marked NEVER_INLINE. This is suboptimal, and we still don't know the exact reason why it is happening, but hopefully it will be easy enough to work around for now. Geoff and I worked this out and he landed [ r31277], which fixes the problems we have seen thusfar.
     24Implementing all of the left-over binary operations. We don't have exception support yet, but I'll just add FIXME comments for the division by zero checks.
    2426Better code generation. We have been pondering whether to have a separate peephole optimization pass or to incorporate peephole optimization into code generation. Either way, we should look at some code generation algorithms based on tile matching. We also want to choose an approach that will be compatible with planned extensions, e.g. superinstructions.