| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2154 int end_position() const; | 2154 int end_position() const; |
| 2155 int SourceSize() const { return end_position() - start_position(); } | 2155 int SourceSize() const { return end_position() - start_position(); } |
| 2156 bool is_expression() const { return IsExpression::decode(bitfield_); } | 2156 bool is_expression() const { return IsExpression::decode(bitfield_); } |
| 2157 bool is_anonymous() const { return IsAnonymous::decode(bitfield_); } | 2157 bool is_anonymous() const { return IsAnonymous::decode(bitfield_); } |
| 2158 bool is_classic_mode() const { return language_mode() == CLASSIC_MODE; } | 2158 bool is_classic_mode() const { return language_mode() == CLASSIC_MODE; } |
| 2159 LanguageMode language_mode() const; | 2159 LanguageMode language_mode() const; |
| 2160 | 2160 |
| 2161 int materialized_literal_count() { return materialized_literal_count_; } | 2161 int materialized_literal_count() { return materialized_literal_count_; } |
| 2162 int expected_property_count() { return expected_property_count_; } | 2162 int expected_property_count() { return expected_property_count_; } |
| 2163 int handler_count() { return handler_count_; } | 2163 int handler_count() { return handler_count_; } |
| 2164 bool has_only_simple_this_property_assignments() { | |
| 2165 return HasOnlySimpleThisPropertyAssignments::decode(bitfield_); | |
| 2166 } | |
| 2167 Handle<FixedArray> this_property_assignments() { | |
| 2168 return this_property_assignments_; | |
| 2169 } | |
| 2170 int parameter_count() { return parameter_count_; } | 2164 int parameter_count() { return parameter_count_; } |
| 2171 | 2165 |
| 2172 bool AllowsLazyCompilation(); | 2166 bool AllowsLazyCompilation(); |
| 2173 bool AllowsLazyCompilationWithoutContext(); | 2167 bool AllowsLazyCompilationWithoutContext(); |
| 2174 | 2168 |
| 2175 Handle<String> debug_name() const { | 2169 Handle<String> debug_name() const { |
| 2176 if (name_->length() > 0) return name_; | 2170 if (name_->length() > 0) return name_; |
| 2177 return inferred_name(); | 2171 return inferred_name(); |
| 2178 } | 2172 } |
| 2179 | 2173 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2214 } | 2208 } |
| 2215 | 2209 |
| 2216 protected: | 2210 protected: |
| 2217 FunctionLiteral(Isolate* isolate, | 2211 FunctionLiteral(Isolate* isolate, |
| 2218 Handle<String> name, | 2212 Handle<String> name, |
| 2219 Scope* scope, | 2213 Scope* scope, |
| 2220 ZoneList<Statement*>* body, | 2214 ZoneList<Statement*>* body, |
| 2221 int materialized_literal_count, | 2215 int materialized_literal_count, |
| 2222 int expected_property_count, | 2216 int expected_property_count, |
| 2223 int handler_count, | 2217 int handler_count, |
| 2224 bool has_only_simple_this_property_assignments, | |
| 2225 Handle<FixedArray> this_property_assignments, | |
| 2226 int parameter_count, | 2218 int parameter_count, |
| 2227 Type type, | 2219 Type type, |
| 2228 ParameterFlag has_duplicate_parameters, | 2220 ParameterFlag has_duplicate_parameters, |
| 2229 IsFunctionFlag is_function, | 2221 IsFunctionFlag is_function, |
| 2230 IsParenthesizedFlag is_parenthesized, | 2222 IsParenthesizedFlag is_parenthesized, |
| 2231 IsGeneratorFlag is_generator) | 2223 IsGeneratorFlag is_generator) |
| 2232 : Expression(isolate), | 2224 : Expression(isolate), |
| 2233 name_(name), | 2225 name_(name), |
| 2234 scope_(scope), | 2226 scope_(scope), |
| 2235 body_(body), | 2227 body_(body), |
| 2236 this_property_assignments_(this_property_assignments), | |
| 2237 inferred_name_(isolate->factory()->empty_string()), | 2228 inferred_name_(isolate->factory()->empty_string()), |
| 2238 materialized_literal_count_(materialized_literal_count), | 2229 materialized_literal_count_(materialized_literal_count), |
| 2239 expected_property_count_(expected_property_count), | 2230 expected_property_count_(expected_property_count), |
| 2240 handler_count_(handler_count), | 2231 handler_count_(handler_count), |
| 2241 parameter_count_(parameter_count), | 2232 parameter_count_(parameter_count), |
| 2242 function_token_position_(RelocInfo::kNoPosition) { | 2233 function_token_position_(RelocInfo::kNoPosition) { |
| 2243 bitfield_ = | 2234 bitfield_ = |
| 2244 HasOnlySimpleThisPropertyAssignments::encode( | |
| 2245 has_only_simple_this_property_assignments) | | |
| 2246 IsExpression::encode(type != DECLARATION) | | 2235 IsExpression::encode(type != DECLARATION) | |
| 2247 IsAnonymous::encode(type == ANONYMOUS_EXPRESSION) | | 2236 IsAnonymous::encode(type == ANONYMOUS_EXPRESSION) | |
| 2248 Pretenure::encode(false) | | 2237 Pretenure::encode(false) | |
| 2249 HasDuplicateParameters::encode(has_duplicate_parameters) | | 2238 HasDuplicateParameters::encode(has_duplicate_parameters) | |
| 2250 IsFunction::encode(is_function) | | 2239 IsFunction::encode(is_function) | |
| 2251 IsParenthesized::encode(is_parenthesized) | | 2240 IsParenthesized::encode(is_parenthesized) | |
| 2252 IsGenerator::encode(is_generator); | 2241 IsGenerator::encode(is_generator); |
| 2253 } | 2242 } |
| 2254 | 2243 |
| 2255 private: | 2244 private: |
| 2256 Handle<String> name_; | 2245 Handle<String> name_; |
| 2257 Scope* scope_; | 2246 Scope* scope_; |
| 2258 ZoneList<Statement*>* body_; | 2247 ZoneList<Statement*>* body_; |
| 2259 Handle<FixedArray> this_property_assignments_; | |
| 2260 Handle<String> inferred_name_; | 2248 Handle<String> inferred_name_; |
| 2261 AstProperties ast_properties_; | 2249 AstProperties ast_properties_; |
| 2262 | 2250 |
| 2263 int materialized_literal_count_; | 2251 int materialized_literal_count_; |
| 2264 int expected_property_count_; | 2252 int expected_property_count_; |
| 2265 int handler_count_; | 2253 int handler_count_; |
| 2266 int parameter_count_; | 2254 int parameter_count_; |
| 2267 int function_token_position_; | 2255 int function_token_position_; |
| 2268 | 2256 |
| 2269 unsigned bitfield_; | 2257 unsigned bitfield_; |
| 2270 class HasOnlySimpleThisPropertyAssignments: public BitField<bool, 0, 1> {}; | 2258 class IsExpression: public BitField<bool, 0, 1> {}; |
| 2271 class IsExpression: public BitField<bool, 1, 1> {}; | 2259 class IsAnonymous: public BitField<bool, 1, 1> {}; |
| 2272 class IsAnonymous: public BitField<bool, 2, 1> {}; | 2260 class Pretenure: public BitField<bool, 2, 1> {}; |
| 2273 class Pretenure: public BitField<bool, 3, 1> {}; | 2261 class HasDuplicateParameters: public BitField<ParameterFlag, 3, 1> {}; |
| 2274 class HasDuplicateParameters: public BitField<ParameterFlag, 4, 1> {}; | 2262 class IsFunction: public BitField<IsFunctionFlag, 4, 1> {}; |
| 2275 class IsFunction: public BitField<IsFunctionFlag, 5, 1> {}; | 2263 class IsParenthesized: public BitField<IsParenthesizedFlag, 5, 1> {}; |
| 2276 class IsParenthesized: public BitField<IsParenthesizedFlag, 6, 1> {}; | 2264 class IsGenerator: public BitField<IsGeneratorFlag, 6, 1> {}; |
| 2277 class IsGenerator: public BitField<IsGeneratorFlag, 7, 1> {}; | |
| 2278 }; | 2265 }; |
| 2279 | 2266 |
| 2280 | 2267 |
| 2281 class SharedFunctionInfoLiteral: public Expression { | 2268 class SharedFunctionInfoLiteral: public Expression { |
| 2282 public: | 2269 public: |
| 2283 DECLARE_NODE_TYPE(SharedFunctionInfoLiteral) | 2270 DECLARE_NODE_TYPE(SharedFunctionInfoLiteral) |
| 2284 | 2271 |
| 2285 Handle<SharedFunctionInfo> shared_function_info() const { | 2272 Handle<SharedFunctionInfo> shared_function_info() const { |
| 2286 return shared_function_info_; | 2273 return shared_function_info_; |
| 2287 } | 2274 } |
| (...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3090 VISIT_AND_RETURN(Throw, t) | 3077 VISIT_AND_RETURN(Throw, t) |
| 3091 } | 3078 } |
| 3092 | 3079 |
| 3093 FunctionLiteral* NewFunctionLiteral( | 3080 FunctionLiteral* NewFunctionLiteral( |
| 3094 Handle<String> name, | 3081 Handle<String> name, |
| 3095 Scope* scope, | 3082 Scope* scope, |
| 3096 ZoneList<Statement*>* body, | 3083 ZoneList<Statement*>* body, |
| 3097 int materialized_literal_count, | 3084 int materialized_literal_count, |
| 3098 int expected_property_count, | 3085 int expected_property_count, |
| 3099 int handler_count, | 3086 int handler_count, |
| 3100 bool has_only_simple_this_property_assignments, | |
| 3101 Handle<FixedArray> this_property_assignments, | |
| 3102 int parameter_count, | 3087 int parameter_count, |
| 3103 FunctionLiteral::ParameterFlag has_duplicate_parameters, | 3088 FunctionLiteral::ParameterFlag has_duplicate_parameters, |
| 3104 FunctionLiteral::Type type, | 3089 FunctionLiteral::Type type, |
| 3105 FunctionLiteral::IsFunctionFlag is_function, | 3090 FunctionLiteral::IsFunctionFlag is_function, |
| 3106 FunctionLiteral::IsParenthesizedFlag is_parenthesized, | 3091 FunctionLiteral::IsParenthesizedFlag is_parenthesized, |
| 3107 FunctionLiteral::IsGeneratorFlag is_generator) { | 3092 FunctionLiteral::IsGeneratorFlag is_generator) { |
| 3108 FunctionLiteral* lit = new(zone_) FunctionLiteral( | 3093 FunctionLiteral* lit = new(zone_) FunctionLiteral( |
| 3109 isolate_, name, scope, body, | 3094 isolate_, name, scope, body, |
| 3110 materialized_literal_count, expected_property_count, handler_count, | 3095 materialized_literal_count, expected_property_count, handler_count, |
| 3111 has_only_simple_this_property_assignments, this_property_assignments, | |
| 3112 parameter_count, type, has_duplicate_parameters, is_function, | 3096 parameter_count, type, has_duplicate_parameters, is_function, |
| 3113 is_parenthesized, is_generator); | 3097 is_parenthesized, is_generator); |
| 3114 // Top-level literal doesn't count for the AST's properties. | 3098 // Top-level literal doesn't count for the AST's properties. |
| 3115 if (is_function == FunctionLiteral::kIsFunction) { | 3099 if (is_function == FunctionLiteral::kIsFunction) { |
| 3116 visitor_.VisitFunctionLiteral(lit); | 3100 visitor_.VisitFunctionLiteral(lit); |
| 3117 } | 3101 } |
| 3118 return lit; | 3102 return lit; |
| 3119 } | 3103 } |
| 3120 | 3104 |
| 3121 SharedFunctionInfoLiteral* NewSharedFunctionInfoLiteral( | 3105 SharedFunctionInfoLiteral* NewSharedFunctionInfoLiteral( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 3135 private: | 3119 private: |
| 3136 Isolate* isolate_; | 3120 Isolate* isolate_; |
| 3137 Zone* zone_; | 3121 Zone* zone_; |
| 3138 Visitor visitor_; | 3122 Visitor visitor_; |
| 3139 }; | 3123 }; |
| 3140 | 3124 |
| 3141 | 3125 |
| 3142 } } // namespace v8::internal | 3126 } } // namespace v8::internal |
| 3143 | 3127 |
| 3144 #endif // V8_AST_H_ | 3128 #endif // V8_AST_H_ |
| OLD | NEW |