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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 209 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
210 | 210 |
211 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 211 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
212 | 212 |
213 | 213 |
214 // Defines the property being loaded from an object by a named load. This is | 214 // Defines the property being loaded from an object by a named load. This is |
215 // used as a parameter by JSLoadNamed operators. | 215 // used as a parameter by JSLoadNamed operators. |
216 class LoadNamedParameters final { | 216 class LoadNamedParameters final { |
217 public: | 217 public: |
218 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, | 218 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 219 LanguageMode language_mode, |
219 ContextualMode contextual_mode) | 220 ContextualMode contextual_mode) |
220 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 221 : name_(name), |
| 222 feedback_(feedback), |
| 223 language_mode_(language_mode), |
| 224 contextual_mode_(contextual_mode) {} |
221 | 225 |
222 const Unique<Name>& name() const { return name_; } | 226 const Unique<Name>& name() const { return name_; } |
| 227 LanguageMode language_mode() const { return language_mode_; } |
223 ContextualMode contextual_mode() const { return contextual_mode_; } | 228 ContextualMode contextual_mode() const { return contextual_mode_; } |
224 | 229 |
225 const VectorSlotPair& feedback() const { return feedback_; } | 230 const VectorSlotPair& feedback() const { return feedback_; } |
226 | 231 |
227 private: | 232 private: |
228 const Unique<Name> name_; | 233 const Unique<Name> name_; |
229 const VectorSlotPair feedback_; | 234 const VectorSlotPair feedback_; |
| 235 const LanguageMode language_mode_; |
230 const ContextualMode contextual_mode_; | 236 const ContextualMode contextual_mode_; |
231 }; | 237 }; |
232 | 238 |
233 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 239 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
234 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 240 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
235 | 241 |
236 size_t hash_value(LoadNamedParameters const&); | 242 size_t hash_value(LoadNamedParameters const&); |
237 | 243 |
238 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 244 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
239 | 245 |
240 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 246 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
241 | 247 |
242 | 248 |
243 // Defines the property being loaded from an object. This is | 249 // Defines the property being loaded from an object. This is |
244 // used as a parameter by JSLoadProperty operators. | 250 // used as a parameter by JSLoadProperty operators. |
245 class LoadPropertyParameters final { | 251 class LoadPropertyParameters final { |
246 public: | 252 public: |
247 explicit LoadPropertyParameters(const VectorSlotPair& feedback) | 253 explicit LoadPropertyParameters(const VectorSlotPair& feedback, |
248 : feedback_(feedback) {} | 254 LanguageMode language_mode) |
| 255 : feedback_(feedback), language_mode_(language_mode) {} |
249 | 256 |
250 const VectorSlotPair& feedback() const { return feedback_; } | 257 const VectorSlotPair& feedback() const { return feedback_; } |
251 | 258 |
| 259 LanguageMode language_mode() const { return language_mode_; } |
| 260 |
252 private: | 261 private: |
253 const VectorSlotPair feedback_; | 262 const VectorSlotPair feedback_; |
| 263 const LanguageMode language_mode_; |
254 }; | 264 }; |
255 | 265 |
256 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 266 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
257 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 267 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
258 | 268 |
259 size_t hash_value(LoadPropertyParameters const&); | 269 size_t hash_value(LoadPropertyParameters const&); |
260 | 270 |
261 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 271 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
262 | 272 |
263 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 273 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 PretenureFlag pretenure); | 364 PretenureFlag pretenure); |
355 const Operator* CreateLiteralArray(int literal_flags); | 365 const Operator* CreateLiteralArray(int literal_flags); |
356 const Operator* CreateLiteralObject(int literal_flags); | 366 const Operator* CreateLiteralObject(int literal_flags); |
357 | 367 |
358 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, | 368 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, |
359 LanguageMode language_mode); | 369 LanguageMode language_mode); |
360 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 370 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
361 | 371 |
362 const Operator* CallConstruct(int arguments); | 372 const Operator* CallConstruct(int arguments); |
363 | 373 |
364 const Operator* LoadProperty(const VectorSlotPair& feedback); | 374 const Operator* LoadProperty(const VectorSlotPair& feedback, |
| 375 LanguageMode language_mode); |
365 const Operator* LoadNamed(const Unique<Name>& name, | 376 const Operator* LoadNamed(const Unique<Name>& name, |
366 const VectorSlotPair& feedback, | 377 const VectorSlotPair& feedback, |
| 378 LanguageMode language_mode, |
367 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 379 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
368 | 380 |
369 const Operator* StoreProperty(LanguageMode language_mode); | 381 const Operator* StoreProperty(LanguageMode language_mode); |
370 const Operator* StoreNamed(LanguageMode language_mode, | 382 const Operator* StoreNamed(LanguageMode language_mode, |
371 const Unique<Name>& name); | 383 const Unique<Name>& name); |
372 | 384 |
373 const Operator* DeleteProperty(LanguageMode language_mode); | 385 const Operator* DeleteProperty(LanguageMode language_mode); |
374 | 386 |
375 const Operator* HasProperty(); | 387 const Operator* HasProperty(); |
376 | 388 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 Zone* const zone_; | 422 Zone* const zone_; |
411 | 423 |
412 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 424 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
413 }; | 425 }; |
414 | 426 |
415 } // namespace compiler | 427 } // namespace compiler |
416 } // namespace internal | 428 } // namespace internal |
417 } // namespace v8 | 429 } // namespace v8 |
418 | 430 |
419 #endif // V8_COMPILER_JS_OPERATOR_H_ | 431 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |