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