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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 | 226 |
227 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); | 227 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); |
228 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); | 228 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); |
229 | 229 |
230 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 230 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
231 | 231 |
232 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 232 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
233 | 233 |
234 | 234 |
235 // Defines the property being loaded from an object by a named load. This is | 235 // Defines the property being loaded from an object by a named load. This is |
236 // used as a parameter by JSLoadNamed and JSLoadGlobal operators. | 236 // used as a parameter by JSLoadNamed operators. |
237 class LoadNamedParameters final { | 237 class LoadNamedParameters final { |
238 public: | 238 public: |
239 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, | 239 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
240 LanguageMode language_mode, | 240 LanguageMode language_mode, |
241 ContextualMode contextual_mode) | 241 ContextualMode contextual_mode) |
242 : name_(name), | 242 : name_(name), |
243 feedback_(feedback), | 243 feedback_(feedback), |
244 language_mode_(language_mode), | 244 language_mode_(language_mode), |
245 contextual_mode_(contextual_mode) {} | 245 contextual_mode_(contextual_mode) {} |
246 | 246 |
(...skipping 12 matching lines...) Expand all Loading... |
259 | 259 |
260 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 260 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
261 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 261 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
262 | 262 |
263 size_t hash_value(LoadNamedParameters const&); | 263 size_t hash_value(LoadNamedParameters const&); |
264 | 264 |
265 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 265 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
266 | 266 |
267 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 267 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
268 | 268 |
269 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); | 269 |
| 270 // Defines the property being loaded from an object by a named load. This is |
| 271 // used as a parameter by JSLoadGlobal operator. |
| 272 class LoadGlobalParameters final { |
| 273 public: |
| 274 LoadGlobalParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 275 ContextualMode contextual_mode, int slot_index) |
| 276 : name_(name), |
| 277 feedback_(feedback), |
| 278 contextual_mode_(contextual_mode), |
| 279 slot_index_(slot_index) {} |
| 280 |
| 281 const Unique<Name>& name() const { return name_; } |
| 282 ContextualMode contextual_mode() const { return contextual_mode_; } |
| 283 |
| 284 const VectorSlotPair& feedback() const { return feedback_; } |
| 285 |
| 286 const int slot_index() const { return slot_index_; } |
| 287 |
| 288 private: |
| 289 const Unique<Name> name_; |
| 290 const VectorSlotPair feedback_; |
| 291 const ContextualMode contextual_mode_; |
| 292 const int slot_index_; |
| 293 }; |
| 294 |
| 295 bool operator==(LoadGlobalParameters const&, LoadGlobalParameters const&); |
| 296 bool operator!=(LoadGlobalParameters const&, LoadGlobalParameters const&); |
| 297 |
| 298 size_t hash_value(LoadGlobalParameters const&); |
| 299 |
| 300 std::ostream& operator<<(std::ostream&, LoadGlobalParameters const&); |
| 301 |
| 302 const LoadGlobalParameters& LoadGlobalParametersOf(const Operator* op); |
| 303 |
| 304 |
| 305 // Defines the property being stored to an object by a named store. This is |
| 306 // used as a parameter by JSStoreGlobal operator. |
| 307 class StoreGlobalParameters final { |
| 308 public: |
| 309 StoreGlobalParameters(LanguageMode language_mode, |
| 310 const VectorSlotPair& feedback, |
| 311 const Unique<Name>& name, int slot_index) |
| 312 : language_mode_(language_mode), |
| 313 name_(name), |
| 314 feedback_(feedback), |
| 315 slot_index_(slot_index) {} |
| 316 |
| 317 LanguageMode language_mode() const { return language_mode_; } |
| 318 const VectorSlotPair& feedback() const { return feedback_; } |
| 319 const Unique<Name>& name() const { return name_; } |
| 320 int slot_index() const { return slot_index_; } |
| 321 |
| 322 private: |
| 323 const LanguageMode language_mode_; |
| 324 const Unique<Name> name_; |
| 325 const VectorSlotPair feedback_; |
| 326 int slot_index_; |
| 327 }; |
| 328 |
| 329 bool operator==(StoreGlobalParameters const&, StoreGlobalParameters const&); |
| 330 bool operator!=(StoreGlobalParameters const&, StoreGlobalParameters const&); |
| 331 |
| 332 size_t hash_value(StoreGlobalParameters const&); |
| 333 |
| 334 std::ostream& operator<<(std::ostream&, StoreGlobalParameters const&); |
| 335 |
| 336 const StoreGlobalParameters& StoreGlobalParametersOf(const Operator* op); |
270 | 337 |
271 | 338 |
272 // Defines the property being loaded from an object. This is | 339 // Defines the property being loaded from an object. This is |
273 // used as a parameter by JSLoadProperty operators. | 340 // used as a parameter by JSLoadProperty operators. |
274 class LoadPropertyParameters final { | 341 class LoadPropertyParameters final { |
275 public: | 342 public: |
276 explicit LoadPropertyParameters(const VectorSlotPair& feedback, | 343 explicit LoadPropertyParameters(const VectorSlotPair& feedback, |
277 LanguageMode language_mode) | 344 LanguageMode language_mode) |
278 : feedback_(feedback), language_mode_(language_mode) {} | 345 : feedback_(feedback), language_mode_(language_mode) {} |
279 | 346 |
(...skipping 10 matching lines...) Expand all Loading... |
290 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 357 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
291 | 358 |
292 size_t hash_value(LoadPropertyParameters const&); | 359 size_t hash_value(LoadPropertyParameters const&); |
293 | 360 |
294 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 361 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
295 | 362 |
296 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 363 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
297 | 364 |
298 | 365 |
299 // Defines the property being stored to an object by a named store. This is | 366 // Defines the property being stored to an object by a named store. This is |
300 // used as a parameter by JSStoreNamed and JSStoreGlobal operators. | 367 // used as a parameter by JSStoreNamed operator. |
301 class StoreNamedParameters final { | 368 class StoreNamedParameters final { |
302 public: | 369 public: |
303 StoreNamedParameters(LanguageMode language_mode, | 370 StoreNamedParameters(LanguageMode language_mode, |
304 const VectorSlotPair& feedback, const Unique<Name>& name) | 371 const VectorSlotPair& feedback, const Unique<Name>& name) |
305 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | 372 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
306 | 373 |
307 LanguageMode language_mode() const { return language_mode_; } | 374 LanguageMode language_mode() const { return language_mode_; } |
308 const VectorSlotPair& feedback() const { return feedback_; } | 375 const VectorSlotPair& feedback() const { return feedback_; } |
309 const Unique<Name>& name() const { return name_; } | 376 const Unique<Name>& name() const { return name_; } |
310 | 377 |
311 private: | 378 private: |
312 const LanguageMode language_mode_; | 379 const LanguageMode language_mode_; |
313 const Unique<Name> name_; | 380 const Unique<Name> name_; |
314 const VectorSlotPair feedback_; | 381 const VectorSlotPair feedback_; |
315 }; | 382 }; |
316 | 383 |
317 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 384 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
318 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 385 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
319 | 386 |
320 size_t hash_value(StoreNamedParameters const&); | 387 size_t hash_value(StoreNamedParameters const&); |
321 | 388 |
322 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 389 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
323 | 390 |
324 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 391 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
325 | 392 |
326 const StoreNamedParameters& StoreGlobalParametersOf(const Operator* op); | |
327 | |
328 | 393 |
329 // Defines the property being stored to an object. This is used as a parameter | 394 // Defines the property being stored to an object. This is used as a parameter |
330 // by JSStoreProperty operators. | 395 // by JSStoreProperty operators. |
331 class StorePropertyParameters final { | 396 class StorePropertyParameters final { |
332 public: | 397 public: |
333 StorePropertyParameters(LanguageMode language_mode, | 398 StorePropertyParameters(LanguageMode language_mode, |
334 const VectorSlotPair& feedback) | 399 const VectorSlotPair& feedback) |
335 : language_mode_(language_mode), feedback_(feedback) {} | 400 : language_mode_(language_mode), feedback_(feedback) {} |
336 | 401 |
337 LanguageMode language_mode() const { return language_mode_; } | 402 LanguageMode language_mode() const { return language_mode_; } |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 const Operator* StoreNamed(LanguageMode language_mode, | 503 const Operator* StoreNamed(LanguageMode language_mode, |
439 const Unique<Name>& name, | 504 const Unique<Name>& name, |
440 const VectorSlotPair& feedback); | 505 const VectorSlotPair& feedback); |
441 | 506 |
442 const Operator* DeleteProperty(LanguageMode language_mode); | 507 const Operator* DeleteProperty(LanguageMode language_mode); |
443 | 508 |
444 const Operator* HasProperty(); | 509 const Operator* HasProperty(); |
445 | 510 |
446 const Operator* LoadGlobal(const Unique<Name>& name, | 511 const Operator* LoadGlobal(const Unique<Name>& name, |
447 const VectorSlotPair& feedback, | 512 const VectorSlotPair& feedback, |
448 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 513 ContextualMode contextual_mode = NOT_CONTEXTUAL, |
| 514 int slot_index = -1); |
449 const Operator* StoreGlobal(LanguageMode language_mode, | 515 const Operator* StoreGlobal(LanguageMode language_mode, |
450 const Unique<Name>& name, | 516 const Unique<Name>& name, |
451 const VectorSlotPair& feedback); | 517 const VectorSlotPair& feedback, |
| 518 int slot_index = -1); |
452 | 519 |
453 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 520 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
454 const Operator* StoreContext(size_t depth, size_t index); | 521 const Operator* StoreContext(size_t depth, size_t index); |
455 | 522 |
456 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 523 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
457 uint32_t check_bitset, | 524 uint32_t check_bitset, |
458 const VectorSlotPair& feedback, | 525 const VectorSlotPair& feedback, |
459 ContextualMode mode); | 526 ContextualMode mode); |
460 const Operator* LoadDynamicContext(const Handle<String>& name, | 527 const Operator* LoadDynamicContext(const Handle<String>& name, |
461 uint32_t check_bitset, size_t depth, | 528 uint32_t check_bitset, size_t depth, |
(...skipping 24 matching lines...) Expand all Loading... |
486 Zone* const zone_; | 553 Zone* const zone_; |
487 | 554 |
488 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 555 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
489 }; | 556 }; |
490 | 557 |
491 } // namespace compiler | 558 } // namespace compiler |
492 } // namespace internal | 559 } // namespace internal |
493 } // namespace v8 | 560 } // namespace v8 |
494 | 561 |
495 #endif // V8_COMPILER_JS_OPERATOR_H_ | 562 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |