Newly introduced nice debugging helper function, `structDump`
Hello WebKittens, I've added a new debugging helper, `WTF::structDump` to JSC `dataLog` debugging helper families[1]. This leverages clang's `__builtin_dump_struct` function[2] and generates debugging-friendly struct-dump for *any* struct / class without having any special code to these classes. Use case is, for example, ``` DFG::Node* node = ...; dataLogLn(structDump(*node)); // Or any instances of your classes / structs ``` then, it automatically generates the output like this, ``` JSC::DFG::Node { NodeOrigin origin = *0x10631d800 NodeType m_op = 59 unsigned int m_index = 323 AdjacencyList children = *0x10631d818 VirtualRegister m_virtualRegister = *0x10631d830 unsigned int m_refCount = 1 NodeFlags m_flags = 344069 SpeculatedType m_prediction = 206158430208 OpInfoWrapper m_opInfo = *0x10631d848 OpInfoWrapper m_opInfo2 = *0x10631d850 union (unnamed) m_misc = { Node * replacement = 0x0 unsigned int epoch = 0 } BasicBlock * owner = 0x1061177b0 } ``` Currently, only clang supports this builtin. On GCC, we will just use pointerDump which dumps a pointer hex value. There is a feature request bug in GCC[3], and once it gets implemented, we can support GCC too. Happy hacking! Best regards, -Yusuke Suzuki [1]: https://github.com/WebKit/WebKit/commit/3c94ba6d70070d52a469c04ece16da7d0edb... [2]: https://clang.llvm.org/docs/LanguageExtensions.html#builtin-dump-struct [3]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83161
participants (1)
-
Yusuke Suzuki