Changeset 27695 in webkit for trunk/JavaScriptCore/kjs/nodes.h
- Timestamp:
- Nov 11, 2007, 4:34:37 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.h
r27678 r27695 136 136 137 137 protected: 138 Node(JSType) KJS_FAST_CALL; // used by ExpressionNode 138 139 Completion createErrorCompletion(ExecState *, ErrorType, const char *msg) KJS_FAST_CALL; 139 140 Completion createErrorCompletion(ExecState *, ErrorType, const char *msg, const Identifier &) KJS_FAST_CALL; … … 154 155 Completion rethrowException(ExecState*) KJS_FAST_CALL; 155 156 156 int m_line : 31;157 int m_line : 28; 157 158 bool m_mayHaveDeclarations : 1; 159 unsigned m_expectedReturnType : 3; // JSType 158 160 }; 159 161 160 162 class ExpressionNode : public Node { 161 163 public: 162 ExpressionNode() KJS_FAST_CALL { } 164 ExpressionNode() KJS_FAST_CALL : Node() {} 165 ExpressionNode(JSType expectedReturn) KJS_FAST_CALL 166 : Node(expectedReturn) {} 163 167 164 168 // Special constructor for cases where we overwrite an object in place. 165 169 ExpressionNode(PlacementNewAdoptType) KJS_FAST_CALL 166 : Node(PlacementNewAdopt) 167 { 168 } 170 : Node(PlacementNewAdopt) {} 169 171 170 172 virtual bool isNumber() const KJS_FAST_CALL { return false; } … … 173 175 virtual bool isBracketAccessorNode() const KJS_FAST_CALL { return false; } 174 176 virtual bool isDotAccessorNode() const KJS_FAST_CALL { return false; } 177 178 JSType expectedReturnType() const KJS_FAST_CALL { return static_cast<JSType>(m_expectedReturnType); } 175 179 176 180 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL = 0; … … 200 204 class NullNode : public ExpressionNode { 201 205 public: 202 NullNode() KJS_FAST_CALL {}206 NullNode() KJS_FAST_CALL : ExpressionNode(NullType) {} 203 207 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 204 208 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; … … 208 212 class FalseNode : public ExpressionNode { 209 213 public: 210 FalseNode() KJS_FAST_CALL {}214 FalseNode() KJS_FAST_CALL : ExpressionNode(BooleanType) {} 211 215 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 212 216 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return false; } … … 217 221 class TrueNode : public ExpressionNode { 218 222 public: 219 TrueNode() KJS_FAST_CALL {}223 TrueNode() KJS_FAST_CALL : ExpressionNode(BooleanType) {} 220 224 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 221 225 virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return true; } … … 226 230 class NumberNode : public ExpressionNode { 227 231 public: 228 NumberNode(double v) KJS_FAST_CALL : m_double(v) {}232 NumberNode(double v) KJS_FAST_CALL : ExpressionNode(NumberType), m_double(v) {} 229 233 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 230 234 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 248 252 virtual void setValue(double d) KJS_FAST_CALL { m_double = d; m_value = JSImmediate::from(d); ASSERT(m_value); } 249 253 private: 250 JSValue* m_value; 254 JSValue* m_value; // This is never a JSCell, only JSImmediate, thus no ProtectedPtr 251 255 }; 252 256 253 257 class StringNode : public ExpressionNode { 254 258 public: 255 StringNode(const UString *v) KJS_FAST_CALL { value = *v;}259 StringNode(const UString* v) KJS_FAST_CALL : ExpressionNode(StringType), m_value(*v) {} 256 260 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 257 261 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; … … 261 265 262 266 private: 263 UString value;267 UString m_value; 264 268 }; 265 269 266 270 class RegExpNode : public ExpressionNode { 267 271 public: 268 RegExpNode(const UString &p, const UString &f) KJS_FAST_CALL269 : pattern(p), flags(f) { }272 RegExpNode(const UString& pattern, const UString& flags) KJS_FAST_CALL 273 : m_pattern(pattern), m_flags(flags) { } 270 274 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 271 275 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 272 276 virtual Precedence precedence() const { return PrecPrimary; } 273 277 private: 274 UString pattern, flags; 278 UString m_pattern; 279 UString m_flags; 275 280 }; 276 281 … … 578 583 class PrePostResolveNode : public ExpressionNode { 579 584 public: 580 PrePostResolveNode(const Identifier& i) KJS_FAST_CALL : m_ident(i) {}585 PrePostResolveNode(const Identifier& i) KJS_FAST_CALL : ExpressionNode(NumberType), m_ident(i) {} 581 586 582 587 PrePostResolveNode(PlacementNewAdoptType) KJS_FAST_CALL … … 793 798 public: 794 799 TypeOfResolveNode(const Identifier &s) KJS_FAST_CALL 795 : m_ident(s) 796 { 797 } 800 : ExpressionNode(StringType), m_ident(s) {} 798 801 799 802 TypeOfResolveNode(PlacementNewAdoptType) KJS_FAST_CALL … … 801 804 , m_ident(PlacementNewAdopt) 802 805 { 806 m_expectedReturnType = StringType; 803 807 } 804 808 … … 820 824 LocalVarTypeOfNode(size_t i) KJS_FAST_CALL 821 825 : TypeOfResolveNode(PlacementNewAdopt) 822 { 826 { 827 m_expectedReturnType = StringType; 823 828 ASSERT(i != missingSymbolMarker()); 824 829 m_index = i; … … 830 835 class TypeOfValueNode : public ExpressionNode { 831 836 public: 832 TypeOfValueNode(ExpressionNode* e) KJS_FAST_CALL : m_expr(e) {}837 TypeOfValueNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(StringType), m_expr(e) {} 833 838 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 834 839 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 971 976 class UnaryPlusNode : public ExpressionNode { 972 977 public: 973 UnaryPlusNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {}978 UnaryPlusNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), m_expr(e) {} 974 979 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 975 980 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 977 982 virtual Precedence precedence() const { return PrecUnary; } 978 983 private: 984 RefPtr<ExpressionNode> m_expr; 985 }; 986 987 class NegateNode : public ExpressionNode { 988 public: 989 NegateNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), expr(e) {} 990 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 991 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 992 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; 993 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 994 virtual Precedence precedence() const { return PrecUnary; } 995 private: 979 996 RefPtr<ExpressionNode> expr; 980 997 }; 981 998 982 class NegateNode : public ExpressionNode { 983 public: 984 NegateNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {} 985 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 986 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 987 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; 999 class BitwiseNotNode : public ExpressionNode { 1000 public: 1001 BitwiseNotNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(NumberType), expr(e) {} 1002 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1003 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 988 1004 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 989 1005 virtual Precedence precedence() const { return PrecUnary; } … … 992 1008 }; 993 1009 994 class BitwiseNotNode : public ExpressionNode {995 public:996 BitwiseNotNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {}997 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL;998 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;999 virtual void streamTo(SourceStream&) const KJS_FAST_CALL;1000 virtual Precedence precedence() const { return PrecUnary; }1001 private:1002 RefPtr<ExpressionNode> expr;1003 };1004 1005 1010 class LogicalNotNode : public ExpressionNode { 1006 1011 public: 1007 LogicalNotNode(ExpressionNode* e) KJS_FAST_CALL : expr(e) {}1012 LogicalNotNode(ExpressionNode* e) KJS_FAST_CALL : ExpressionNode(BooleanType), expr(e) {} 1008 1013 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1009 1014 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1017 1022 class MultNode : public ExpressionNode { 1018 1023 public: 1019 MultNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL :term1(t1), term2(t2) {}1024 MultNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1020 1025 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1021 1026 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1031 1036 class DivNode : public ExpressionNode { 1032 1037 public: 1033 DivNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL :term1(t1), term2(t2) {}1038 DivNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1034 1039 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1035 1040 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1045 1050 class ModNode : public ExpressionNode { 1046 1051 public: 1047 ModNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL :term1(t1), term2(t2) {}1052 ModNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1048 1053 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1049 1054 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1059 1064 class AddNode : public ExpressionNode { 1060 1065 public: 1061 AddNode(ExpressionNode* t1, ExpressionNode*t2) KJS_FAST_CALL : term1(t1), term2(t2) {}1066 AddNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : term1(t1), term2(t2) {} 1062 1067 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1063 1068 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1065 1070 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1066 1071 virtual Precedence precedence() const { return PrecAdditive; } 1067 private: 1072 protected: 1073 AddNode(ExpressionNode* t1, ExpressionNode* t2, JSType expectedReturn) KJS_FAST_CALL : ExpressionNode(expectedReturn), term1(t1), term2(t2) {} 1068 1074 RefPtr<ExpressionNode> term1; 1069 1075 RefPtr<ExpressionNode> term2; 1070 1076 }; 1071 1077 1078 class AddNumbersNode : public AddNode { 1079 public: 1080 AddNumbersNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : AddNode(t1, t2, NumberType) {} 1081 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1082 virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL; 1083 private: 1084 ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*) KJS_FAST_CALL; 1085 }; 1086 1087 class AddStringLeftNode : public AddNode { 1088 public: 1089 AddStringLeftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : AddNode(t1, t2, StringType) {} 1090 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1091 }; 1092 1093 class AddStringRightNode : public AddNode { 1094 public: 1095 AddStringRightNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : AddNode(t1, t2, StringType) {} 1096 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1097 }; 1098 1099 class AddStringsNode : public AddNode { 1100 public: 1101 AddStringsNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : AddNode(t1, t2, StringType) {} 1102 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1103 }; 1104 1072 1105 class SubNode : public ExpressionNode { 1073 1106 public: 1074 SubNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL :term1(t1), term2(t2) {}1107 SubNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1075 1108 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1076 1109 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1086 1119 class LeftShiftNode : public ExpressionNode { 1087 1120 public: 1088 LeftShiftNode(ExpressionNode* t1, ExpressionNode*t2) KJS_FAST_CALL1089 : term1(t1), term2(t2) {}1121 LeftShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1122 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1090 1123 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1091 1124 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1099 1132 class RightShiftNode : public ExpressionNode { 1100 1133 public: 1101 RightShiftNode(ExpressionNode* t1, ExpressionNode*t2) KJS_FAST_CALL1102 : term1(t1), term2(t2) {}1134 RightShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1135 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1103 1136 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1104 1137 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1112 1145 class UnsignedRightShiftNode : public ExpressionNode { 1113 1146 public: 1114 UnsignedRightShiftNode(ExpressionNode* t1, ExpressionNode*t2) KJS_FAST_CALL1115 : term1(t1), term2(t2) {}1147 UnsignedRightShiftNode(ExpressionNode* t1, ExpressionNode* t2) KJS_FAST_CALL 1148 : ExpressionNode(NumberType), term1(t1), term2(t2) {} 1116 1149 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1117 1150 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1125 1158 class LessNode : public ExpressionNode { 1126 1159 public: 1127 LessNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1128 expr1(e1), expr2(e2) {}1160 LessNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1161 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1129 1162 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1130 1163 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1132 1165 virtual void streamTo(SourceStream&) const KJS_FAST_CALL; 1133 1166 virtual Precedence precedence() const { return PrecRelational; } 1134 pr ivate:1167 protected: 1135 1168 RefPtr<ExpressionNode> expr1; 1136 1169 RefPtr<ExpressionNode> expr2; 1137 1170 }; 1138 1171 1172 class LessNumbersNode : public LessNode { 1173 public: 1174 LessNumbersNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1175 : LessNode(e1, e2) {} 1176 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1177 }; 1178 1179 class LessStringsNode : public LessNode { 1180 public: 1181 LessStringsNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1182 : LessNode(e1, e2) {} 1183 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; 1184 }; 1185 1139 1186 class GreaterNode : public ExpressionNode { 1140 1187 public: … … 1181 1228 class InstanceOfNode : public ExpressionNode { 1182 1229 public: 1183 InstanceOfNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1184 expr1(e1), expr2(e2) {}1230 InstanceOfNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1231 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1185 1232 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1186 1233 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1210 1257 public: 1211 1258 EqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1212 :expr1(e1), expr2(e2) {}1259 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1213 1260 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1214 1261 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1224 1271 public: 1225 1272 NotEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1226 :expr1(e1), expr2(e2) {}1273 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1227 1274 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1228 1275 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1238 1285 public: 1239 1286 StrictEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1240 :expr1(e1), expr2(e2) {}1287 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1241 1288 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1242 1289 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1252 1299 public: 1253 1300 NotStrictEqualNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1254 :expr1(e1), expr2(e2) {}1301 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1255 1302 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1256 1303 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1265 1312 class BitAndNode : public ExpressionNode { 1266 1313 public: 1267 BitAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1268 expr1(e1), expr2(e2) {}1314 BitAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1315 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1269 1316 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1270 1317 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1278 1325 class BitOrNode : public ExpressionNode { 1279 1326 public: 1280 BitOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1281 expr1(e1), expr2(e2) {}1327 BitOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1328 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1282 1329 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1283 1330 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1291 1338 class BitXOrNode : public ExpressionNode { 1292 1339 public: 1293 BitXOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1294 expr1(e1), expr2(e2) {}1340 BitXOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1341 : ExpressionNode(NumberType), expr1(e1), expr2(e2) {} 1295 1342 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1296 1343 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1307 1354 class LogicalAndNode : public ExpressionNode { 1308 1355 public: 1309 LogicalAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1310 expr1(e1), expr2(e2) {}1356 LogicalAndNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1357 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1311 1358 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1312 1359 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL; … … 1321 1368 class LogicalOrNode : public ExpressionNode { 1322 1369 public: 1323 LogicalOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL :1324 expr1(e1), expr2(e2) {}1370 LogicalOrNode(ExpressionNode* e1, ExpressionNode* e2) KJS_FAST_CALL 1371 : ExpressionNode(BooleanType), expr1(e1), expr2(e2) {} 1325 1372 virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL; 1326 1373 virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
Note:
See TracChangeset
for help on using the changeset viewer.