blob: 34084219020f1121c4d8edbb46b3de68ac29206f [file] [log] [blame]
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +00001/*
fpizlo@apple.com7b33e0c2014-04-15 20:26:16 +00002 * Copyright (C) 2012, 2013, 2014 Apple Inc. All rights reserved.
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +00003 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
ossy@webkit.orgbeb0de42014-02-17 19:00:03 +000027#include "DFGNodeFlags.h"
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +000028
29#if ENABLE(DFG_JIT)
30
fpizlo@apple.comfb7eff22014-02-11 01:45:50 +000031#include "JSCInlines.h"
fpizlo@apple.com96820432013-03-12 06:43:54 +000032#include <wtf/CommaPrinter.h>
fpizlo@apple.coma62d4822013-10-06 04:22:43 +000033#include <wtf/StringPrintStream.h>
fpizlo@apple.comd7897b12012-03-12 23:15:45 +000034
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +000035namespace JSC { namespace DFG {
36
fpizlo@apple.coma62d4822013-10-06 04:22:43 +000037void dumpNodeFlags(PrintStream& actualOut, NodeFlags flags)
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +000038{
fpizlo@apple.coma62d4822013-10-06 04:22:43 +000039 StringPrintStream out;
fpizlo@apple.com96820432013-03-12 06:43:54 +000040 CommaPrinter comma("|");
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +000041
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000042 if (flags & NodeResultMask) {
43 switch (flags & NodeResultMask) {
44 case NodeResultJS:
fpizlo@apple.com96820432013-03-12 06:43:54 +000045 out.print(comma, "JS");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000046 break;
47 case NodeResultNumber:
fpizlo@apple.com96820432013-03-12 06:43:54 +000048 out.print(comma, "Number");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000049 break;
fpizlo@apple.com7b33e0c2014-04-15 20:26:16 +000050 case NodeResultDouble:
51 out.print(comma, "Double");
52 break;
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000053 case NodeResultInt32:
fpizlo@apple.com96820432013-03-12 06:43:54 +000054 out.print(comma, "Int32");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000055 break;
msaboff@apple.com95894332014-01-29 19:18:54 +000056 case NodeResultInt52:
57 out.print(comma, "Int52");
58 break;
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000059 case NodeResultBoolean:
fpizlo@apple.com96820432013-03-12 06:43:54 +000060 out.print(comma, "Boolean");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000061 break;
62 case NodeResultStorage:
fpizlo@apple.com96820432013-03-12 06:43:54 +000063 out.print(comma, "Storage");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000064 break;
65 default:
oliver@apple.com5598c182013-01-23 22:25:07 +000066 RELEASE_ASSERT_NOT_REACHED();
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000067 break;
68 }
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000069 }
70
fpizlo@apple.com96820432013-03-12 06:43:54 +000071 if (flags & NodeMustGenerate)
72 out.print(comma, "MustGen");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000073
fpizlo@apple.com96820432013-03-12 06:43:54 +000074 if (flags & NodeHasVarArgs)
75 out.print(comma, "VarArgs");
fpizlo@apple.com2e1d8f12012-03-22 23:24:40 +000076
fpizlo@apple.com3d517672012-06-20 17:48:23 +000077 if (flags & NodeResultMask) {
fpizlo@apple.comdc36e832013-09-11 03:24:09 +000078 if (!(flags & NodeBytecodeUsesAsNumber) && !(flags & NodeBytecodeNeedsNegZero))
fpizlo@apple.com96820432013-03-12 06:43:54 +000079 out.print(comma, "PureInt");
fpizlo@apple.comdc36e832013-09-11 03:24:09 +000080 else if (!(flags & NodeBytecodeUsesAsNumber))
fpizlo@apple.com96820432013-03-12 06:43:54 +000081 out.print(comma, "PureInt(w/ neg zero)");
fpizlo@apple.comdc36e832013-09-11 03:24:09 +000082 else if (!(flags & NodeBytecodeNeedsNegZero))
fpizlo@apple.com96820432013-03-12 06:43:54 +000083 out.print(comma, "PureNum");
fpizlo@apple.comdc36e832013-09-11 03:24:09 +000084 if (flags & NodeBytecodeUsesAsOther)
fpizlo@apple.com96820432013-03-12 06:43:54 +000085 out.print(comma, "UseAsOther");
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +000086 }
mark.lam@apple.com00178fc2015-12-27 06:27:03 +000087
fpizlo@apple.comacdb63e2016-05-10 02:01:28 +000088 if (flags & NodeMayHaveDoubleResult)
89 out.print(comma, "MayHaveDoubleResult");
90
91 if (flags & NodeMayHaveNonNumberResult)
92 out.print(comma, "MayHaveNonNumberResult");
93
mark.lam@apple.comc1a72412016-01-05 23:08:58 +000094 if (flags & NodeMayOverflowInt52)
95 out.print(comma, "MayOverflowInt52");
96
mark.lam@apple.com00178fc2015-12-27 06:27:03 +000097 if (flags & NodeMayOverflowInt32InBaseline)
98 out.print(comma, "MayOverflowInt32InBaseline");
99
100 if (flags & NodeMayOverflowInt32InDFG)
101 out.print(comma, "MayOverflowInt32InDFG");
102
fpizlo@apple.com96509b72014-05-26 17:43:41 +0000103 if (flags & NodeMayNegZeroInBaseline)
104 out.print(comma, "MayNegZeroInBaseline");
105
106 if (flags & NodeMayNegZeroInDFG)
107 out.print(comma, "MayNegZeroInDFG");
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +0000108
fpizlo@apple.comdc36e832013-09-11 03:24:09 +0000109 if (flags & NodeBytecodeUsesAsInt)
fpizlo@apple.com96820432013-03-12 06:43:54 +0000110 out.print(comma, "UseAsInt");
fpizlo@apple.com40badfc2014-04-21 18:43:01 +0000111
112 if (flags & NodeBytecodeUsesAsArrayIndex)
113 out.print(comma, "ReallyWantsInt");
fpizlo@apple.comdeecc642012-03-25 00:46:21 +0000114
fpizlo@apple.com56026af2014-03-20 20:53:37 +0000115 if (flags & NodeIsFlushed)
116 out.print(comma, "IsFlushed");
117
fpizlo@apple.coma62d4822013-10-06 04:22:43 +0000118 CString string = out.toCString();
119 if (!string.length())
120 actualOut.print("<empty>");
121 else
122 actualOut.print(string);
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +0000123}
124
fpizlo@apple.comc35b8f72012-03-12 09:50:38 +0000125} } // namespace JSC::DFG
126
127#endif // ENABLE(DFG_JIT)
128