Hi folks,

I'm curious about the implementation of the use-def/def-use chains in the 
TurboFan basic data structures used for IR representations.
I was wondering if you could point me to the ideas behind the 
implementation:

   - Why is there a need to keep used Nodes out of their Use objects? In 
   other words, why doesn't a Use object have a direct pointer to the 
   corresponding to-Node (i.e., input Node), but the input node is kept at 
   an offset which is in turn dependent on whether the inputs are stored out 
   of line or not? This way we would seem to achieve slightly better locality 
   when recursively visiting uses;
   - If Use objects impose high pressure on memory, would it be reasonable 
   to not keep the offset to the user in a Use object, but instead employ 
   the "waymarking" algorithm 
   <http://llvm.org/docs/ProgrammersManual.html#the-waymarking-algorithm> 
   (the one that is used in LLVM)? The algorithm relies on the alignment of 
   Use objects and basically encodes offsets/flags in least significant 
   bits of pointers in the array of Use objects for a specific user. It 
   would seem to save ~33% of space (on x86_64) for Use objects, slightly 
   sacrificing time to access the user. Given that there may be a huge number 
   of Use objects, it might be a reasonable alternative.

If the algorithm is sensible for V8, I'll be happy to implement it.

Thanks.

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to