On the 0x212 day of Apache Harmony Yuri Kashnikoff wrote: > Hi! > I'am working on value-profiling implementation. Implementation in EM > is alredy avaible. Now I'am trying to implement and use it in JIT. I > can answer any questions about current implementation. I have used the > straigth algorithm (cacthing FIRST N values) as default and as > advanced algorithm the Top-N-Value algorithm from the B. Calder, P. > Feller "Value Profiling and Optimisation". I'll appreciate any > questions. Please review and comment.
Yuri, I reviewed the patch (a little) and have something nerdy to say. Pavel, sorry if it looks like stealing the interesting piece of code in front of you :), but I am just to put a set of quick-and-simple comments. Did not look in details. You can now focus on more in-depth things. Yuri, I really appreciate what you are diong (!!), and let's now become nerdy: * line 30 of the patch: needs an extra empty line, otherwise does not apply (you edited the patch by hand?:) * tabs should be converted to spaces (!!) (and overall indentation is *not* very beautiful) to be corrected, IMHO * include <vector>? really need it? :) * many lines are commented out (!!!) please, clean them up, or make it conditionally compiled, so the code looks cleaner, readable and supportable. * more comments are becoming the imminent desire of your single header * dos2unix? :) I am a nerd :) * NValueProfileCollector.cpp -> "no newline at end of file" -> build failed :) * ValueProfileCollector.h:48 TNV_ENTIRE should be added here to compile (after this and the above suggested changes it at least compiles) * we do not use 'int', use 'int32', 'uint32', 'int64', etc., please, it is a common convention within the DRLVM code * you do one global lock (profilesLock), that would be a *real crawl* :) Profiling is method-wise, I'd suggest a lock per method. How is that? * am I missing something here? ValueProfileCollector::addNewValue: //insert_into_tnv_table (last_value, num_times_profiled); to-do: (the only 'insert_blablabla' is commented-out, does it work?) * do you have an .emprofile to test your implementation? Would have been great! * why EM_PCTYPE updated, but ProfileType left as-is? is it intentional? * why a value is a mere 'int'? what about pointer profiling? it is different on IA-32 and x86_64. How would you write a portable piece of profiler? Not nerdy, just curious :) Yuri, could you, plz, update your 2 files and the patch according to my observations? (and discuss here on what you do not agree with, of course:) -- Egor Pasko, Intel Managed Runtime Division