#include "config.h"
#include "DFGNodeFlags.h"
#if ENABLE(DFG_JIT)
#include <wtf/CommaPrinter.h>
namespace JSC { namespace DFG {
void dumpNodeFlags(PrintStream& out, NodeFlags flags)
{
if (!(flags ^ NodeDoesNotExit)) {
out.print("<empty>");
return;
}
CommaPrinter comma("|");
if (flags & NodeResultMask) {
switch (flags & NodeResultMask) {
case NodeResultJS:
out.print(comma, "JS");
break;
case NodeResultNumber:
out.print(comma, "Number");
break;
case NodeResultInt32:
out.print(comma, "Int32");
break;
case NodeResultBoolean:
out.print(comma, "Boolean");
break;
case NodeResultStorage:
out.print(comma, "Storage");
break;
default:
RELEASE_ASSERT_NOT_REACHED();
break;
}
}
if (flags & NodeMustGenerate)
out.print(comma, "MustGen");
if (flags & NodeHasVarArgs)
out.print(comma, "VarArgs");
if (flags & NodeClobbersWorld)
out.print(comma, "Clobbers");
if (flags & NodeMightClobber)
out.print(comma, "MightClobber");
if (flags & NodeResultMask) {
if (!(flags & NodeUsedAsNumber) && !(flags & NodeNeedsNegZero))
out.print(comma, "PureInt");
else if (!(flags & NodeUsedAsNumber))
out.print(comma, "PureInt(w/ neg zero)");
else if (!(flags & NodeNeedsNegZero))
out.print(comma, "PureNum");
if (flags & NodeUsedAsOther)
out.print(comma, "UseAsOther");
}
if (flags & NodeMayOverflow)
out.print(comma, "MayOverflow");
if (flags & NodeMayNegZero)
out.print(comma, "MayNegZero");
if (flags & NodeUsedAsInt)
out.print(comma, "UseAsInt");
if (!(flags & NodeDoesNotExit))
out.print(comma, "CanExit");
if (flags & NodeExitsForward)
out.print(comma, "NodeExitsForward");
}
} }
#endif // ENABLE(DFG_JIT)