OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_COMPILER_JS_OPERATOR_H_ | 5 #ifndef V8_COMPILER_JS_OPERATOR_H_ |
6 #define V8_COMPILER_JS_OPERATOR_H_ | 6 #define V8_COMPILER_JS_OPERATOR_H_ |
7 | 7 |
8 #include "src/runtime/runtime.h" | 8 #include "src/runtime/runtime.h" |
9 #include "src/unique.h" | 9 #include "src/unique.h" |
10 | 10 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 | 216 |
217 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 217 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
218 | 218 |
219 | 219 |
220 // Defines the property being loaded from an object by a named load. This is | 220 // Defines the property being loaded from an object by a named load. This is |
221 // used as a parameter by JSLoadNamed operators. | 221 // used as a parameter by JSLoadNamed operators. |
222 class LoadNamedParameters final { | 222 class LoadNamedParameters final { |
223 public: | 223 public: |
224 LoadNamedParameters(const Unique<Name>& name, | 224 LoadNamedParameters(const Unique<Name>& name, |
225 const ResolvedFeedbackSlot& feedback, | 225 const ResolvedFeedbackSlot& feedback, |
| 226 LanguageMode language_mode, |
226 ContextualMode contextual_mode) | 227 ContextualMode contextual_mode) |
227 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 228 : name_(name), |
| 229 feedback_(feedback), |
| 230 language_mode_(language_mode), |
| 231 contextual_mode_(contextual_mode) {} |
228 | 232 |
229 const Unique<Name>& name() const { return name_; } | 233 const Unique<Name>& name() const { return name_; } |
| 234 LanguageMode language_mode() const { return language_mode_; } |
230 ContextualMode contextual_mode() const { return contextual_mode_; } | 235 ContextualMode contextual_mode() const { return contextual_mode_; } |
231 | 236 |
232 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 237 const ResolvedFeedbackSlot& feedback() const { return feedback_; } |
233 | 238 |
234 private: | 239 private: |
235 const Unique<Name> name_; | 240 const Unique<Name> name_; |
236 const ResolvedFeedbackSlot feedback_; | 241 const ResolvedFeedbackSlot feedback_; |
| 242 const LanguageMode language_mode_; |
237 const ContextualMode contextual_mode_; | 243 const ContextualMode contextual_mode_; |
238 }; | 244 }; |
239 | 245 |
240 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 246 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
241 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 247 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
242 | 248 |
243 size_t hash_value(LoadNamedParameters const&); | 249 size_t hash_value(LoadNamedParameters const&); |
244 | 250 |
245 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 251 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
246 | 252 |
247 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 253 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
248 | 254 |
249 | 255 |
250 // Defines the property being loaded from an object. This is | 256 // Defines the property being loaded from an object. This is |
251 // used as a parameter by JSLoadProperty operators. | 257 // used as a parameter by JSLoadProperty operators. |
252 class LoadPropertyParameters final { | 258 class LoadPropertyParameters final { |
253 public: | 259 public: |
254 explicit LoadPropertyParameters(const ResolvedFeedbackSlot& feedback) | 260 explicit LoadPropertyParameters(const ResolvedFeedbackSlot& feedback, |
255 : feedback_(feedback) {} | 261 LanguageMode language_mode) |
| 262 : feedback_(feedback), language_mode_(language_mode) {} |
256 | 263 |
257 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 264 const ResolvedFeedbackSlot& feedback() const { return feedback_; } |
258 | 265 |
| 266 LanguageMode language_mode() const { return language_mode_; } |
| 267 |
259 private: | 268 private: |
260 const ResolvedFeedbackSlot feedback_; | 269 const ResolvedFeedbackSlot feedback_; |
| 270 const LanguageMode language_mode_; |
261 }; | 271 }; |
262 | 272 |
263 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 273 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
264 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 274 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
265 | 275 |
266 size_t hash_value(LoadPropertyParameters const&); | 276 size_t hash_value(LoadPropertyParameters const&); |
267 | 277 |
268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 278 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
269 | 279 |
270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 280 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 PretenureFlag pretenure); | 371 PretenureFlag pretenure); |
362 const Operator* CreateLiteralArray(int literal_flags); | 372 const Operator* CreateLiteralArray(int literal_flags); |
363 const Operator* CreateLiteralObject(int literal_flags); | 373 const Operator* CreateLiteralObject(int literal_flags); |
364 | 374 |
365 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, | 375 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, |
366 LanguageMode language_mode); | 376 LanguageMode language_mode); |
367 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 377 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
368 | 378 |
369 const Operator* CallConstruct(int arguments); | 379 const Operator* CallConstruct(int arguments); |
370 | 380 |
371 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); | 381 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback, |
| 382 LanguageMode language_mode); |
372 const Operator* LoadNamed(const Unique<Name>& name, | 383 const Operator* LoadNamed(const Unique<Name>& name, |
373 const ResolvedFeedbackSlot& feedback, | 384 const ResolvedFeedbackSlot& feedback, |
| 385 LanguageMode language_mode, |
374 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 386 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
375 | 387 |
376 const Operator* StoreProperty(LanguageMode language_mode); | 388 const Operator* StoreProperty(LanguageMode language_mode); |
377 const Operator* StoreNamed(LanguageMode language_mode, | 389 const Operator* StoreNamed(LanguageMode language_mode, |
378 const Unique<Name>& name); | 390 const Unique<Name>& name); |
379 | 391 |
380 const Operator* DeleteProperty(LanguageMode language_mode); | 392 const Operator* DeleteProperty(LanguageMode language_mode); |
381 | 393 |
382 const Operator* HasProperty(); | 394 const Operator* HasProperty(); |
383 | 395 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 Zone* const zone_; | 429 Zone* const zone_; |
418 | 430 |
419 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 431 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
420 }; | 432 }; |
421 | 433 |
422 } // namespace compiler | 434 } // namespace compiler |
423 } // namespace internal | 435 } // namespace internal |
424 } // namespace v8 | 436 } // namespace v8 |
425 | 437 |
426 #endif // V8_COMPILER_JS_OPERATOR_H_ | 438 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |