Changeset 145489 in webkit for trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp
- Timestamp:
- Mar 11, 2013, 11:43:54 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGNodeFlags.cpp
r145323 r145489 29 29 #if ENABLE(DFG_JIT) 30 30 31 #include <wtf/ BoundsCheckedPointer.h>31 #include <wtf/CommaPrinter.h> 32 32 33 33 namespace JSC { namespace DFG { 34 34 35 const char* nodeFlagsAsString(NodeFlags flags)35 void dumpNodeFlags(PrintStream& out, NodeFlags flags) 36 36 { 37 if (!(flags ^ NodeDoesNotExit)) 38 return "<empty>"; 37 if (!(flags ^ NodeDoesNotExit)) { 38 out.print("<empty>"); 39 return; 40 } 39 41 40 static const int size = 128; 41 static char description[size]; 42 BoundsCheckedPointer<char> ptr(description, size); 43 44 bool hasPrinted = false; 42 CommaPrinter comma("|"); 45 43 46 44 if (flags & NodeResultMask) { 47 45 switch (flags & NodeResultMask) { 48 46 case NodeResultJS: 49 ptr.strcat("JS");47 out.print(comma, "JS"); 50 48 break; 51 49 case NodeResultNumber: 52 ptr.strcat("Number");50 out.print(comma, "Number"); 53 51 break; 54 52 case NodeResultInt32: 55 ptr.strcat("Int32");53 out.print(comma, "Int32"); 56 54 break; 57 55 case NodeResultBoolean: 58 ptr.strcat("Boolean");56 out.print(comma, "Boolean"); 59 57 break; 60 58 case NodeResultStorage: 61 ptr.strcat("Storage");59 out.print(comma, "Storage"); 62 60 break; 63 61 default: … … 65 63 break; 66 64 } 67 hasPrinted = true;68 65 } 69 66 70 if (flags & NodeMustGenerate) { 71 if (hasPrinted) 72 ptr.strcat("|"); 73 ptr.strcat("MustGen"); 74 hasPrinted = true; 67 if (flags & NodeMustGenerate) 68 out.print(comma, "MustGen"); 69 70 if (flags & NodeHasVarArgs) 71 out.print(comma, "VarArgs"); 72 73 if (flags & NodeClobbersWorld) 74 out.print(comma, "Clobbers"); 75 76 if (flags & NodeMightClobber) 77 out.print(comma, "MightClobber"); 78 79 if (flags & NodeResultMask) { 80 if (!(flags & NodeUsedAsNumber) && !(flags & NodeNeedsNegZero)) 81 out.print(comma, "PureInt"); 82 else if (!(flags & NodeUsedAsNumber)) 83 out.print(comma, "PureInt(w/ neg zero)"); 84 else if (!(flags & NodeNeedsNegZero)) 85 out.print(comma, "PureNum"); 86 if (flags & NodeUsedAsOther) 87 out.print(comma, "UseAsOther"); 75 88 } 76 89 77 if (flags & NodeHasVarArgs) { 78 if (hasPrinted) 79 ptr.strcat("|"); 80 ptr.strcat("VarArgs"); 81 hasPrinted = true; 82 } 90 if (flags & NodeMayOverflow) 91 out.print(comma, "MayOverflow"); 83 92 84 if (flags & NodeClobbersWorld) { 85 if (hasPrinted) 86 ptr.strcat("|"); 87 ptr.strcat("Clobbers"); 88 hasPrinted = true; 89 } 93 if (flags & NodeMayNegZero) 94 out.print(comma, "MayNegZero"); 90 95 91 if (flags & NodeMightClobber) { 92 if (hasPrinted) 93 ptr.strcat("|"); 94 ptr.strcat("MightClobber"); 95 hasPrinted = true; 96 } 96 if (flags & NodeUsedAsInt) 97 out.print(comma, "UseAsInt"); 97 98 98 if (flags & NodeResultMask) { 99 if (!(flags & NodeUsedAsNumber) && !(flags & NodeNeedsNegZero)) { 100 if (hasPrinted) 101 ptr.strcat("|"); 102 ptr.strcat("PureInt"); 103 hasPrinted = true; 104 } else if (!(flags & NodeUsedAsNumber)) { 105 if (hasPrinted) 106 ptr.strcat("|"); 107 ptr.strcat("PureInt(w/ neg zero)"); 108 hasPrinted = true; 109 } else if (!(flags & NodeNeedsNegZero)) { 110 if (hasPrinted) 111 ptr.strcat("|"); 112 ptr.strcat("PureNum"); 113 hasPrinted = true; 114 } 115 if (flags & NodeUsedAsOther) { 116 if (hasPrinted) 117 ptr.strcat("|"); 118 ptr.strcat("UseAsOther"); 119 hasPrinted = true; 120 } 121 } 99 if (!(flags & NodeDoesNotExit)) 100 out.print(comma, "CanExit"); 122 101 123 if (flags & NodeMayOverflow) { 124 if (hasPrinted) 125 ptr.strcat("|"); 126 ptr.strcat("MayOverflow"); 127 hasPrinted = true; 128 } 129 130 if (flags & NodeMayNegZero) { 131 if (hasPrinted) 132 ptr.strcat("|"); 133 ptr.strcat("MayNegZero"); 134 hasPrinted = true; 135 } 136 137 if (flags & NodeUsedAsInt) { 138 if (hasPrinted) 139 ptr.strcat("|"); 140 ptr.strcat("UseAsInt"); 141 hasPrinted = true; 142 } 143 144 if (!(flags & NodeDoesNotExit)) { 145 if (hasPrinted) 146 ptr.strcat("|"); 147 ptr.strcat("CanExit"); 148 hasPrinted = true; 149 } 150 151 if (flags & NodeExitsForward) { 152 if (hasPrinted) 153 ptr.strcat("|"); 154 ptr.strcat("NodeExitsForward"); 155 hasPrinted = true; 156 } 157 158 *ptr++ = 0; 159 160 return description; 102 if (flags & NodeExitsForward) 103 out.print(comma, "NodeExitsForward"); 161 104 } 162 163 105 164 106 } } // namespace JSC::DFG
Note:
See TracChangeset
for help on using the changeset viewer.