freenode/#sicl - IRC Chatlog
Search
5:45:21
beach
Today, I think I need to finish the paper. But then, I also need to figure out what I did for argument parsing in MIR so that I know how to start off the register allocator.
6:04:41
splittist
beach: two small comments on your paper. You say a few things about the cost of operations on modern processors - perhaps there is a need for an example and/or cite (not least so future generations can decide if the technique still makes sense in the context of the processors they will use). Second - you might want to briefly say what a 'function object' consists of (since it's not the name, environment or code).
7:48:15
beach
Well, frodef made me put in the phrase about indirect branches being significantly more expensive than direct branches, and that is probably true, but I can't find anything to cite for that information.
9:21:35
beach
New version of the paper here: http://metamodular.com/SICL/call-site-optimization.pdf now citing references for modern processors, and explaining the contents of a function object.
9:28:12
beach
So this technique avoids 1. the indirection associating the name with the function object, 2. the indirection for accessing the entry point from the function object, and often 3. the access of the static environment, since frequently global functions have empty static environments.
9:28:42
beach
Given that unconditional direct jumps are really nearly free, we can't possibly lose here.
9:29:45
beach
And of course, as I explained, many more indirections are involved for the specific case of SICL, and all those indirections are avoided as well.