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.
