assembly/profiling question
Stephen Weeks
MLton@sourcelight.com
Thu, 23 Aug 2001 19:59:47 -0700
> Besides that, it would require an array whose size is the
> same as the size of the program times 4. (The profiler uses this much.)
We want that for space profiling too. In fact, 2^32 could really be a
limitation in self compiles.
> If you are willing to do that, then it is only one extra indirection. You
> store the base address of the array minus _start in some cell, and then
> the store is to the contents of that word plus `.'.
Sounds excellent. I await Matthew's approval.
> I can understand the convenience of having the output file be in the same
> format (what ever that exactly means) as the mlprof.out file, but the data
> in memory can just be what ever and be traversed when the file is written out.
> A linked list is just fine. You follow the links into a new array, sort them
> and write it out. What is the problem?
No problem. What you say is true enough. It's just a question of the
complexity of the code introduced into the code generator and the performance
overhead. If we can come up with a scheme with only an extra instruction per
allocation, that would be ideal. Maybe what you suggested above works.
> Note, either way the code being space-prof'd is going to be slower, so you
> can just call a C function at each allocation point. This function can now
> compute where you are (from the return address) and just needs to get the
> size in some register.
I think the slowdown for this would be unnacceptable.