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_ARM64_LITHIUM_ARM64_H_ | 5 #ifndef V8_ARM64_LITHIUM_ARM64_H_ |
6 #define V8_ARM64_LITHIUM_ARM64_H_ | 6 #define V8_ARM64_LITHIUM_ARM64_H_ |
7 | 7 |
8 #include "src/hydrogen.h" | 8 #include "src/hydrogen.h" |
9 #include "src/lithium.h" | 9 #include "src/lithium.h" |
10 #include "src/lithium-allocator.h" | 10 #include "src/lithium-allocator.h" |
(...skipping 2527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2538 temps_[0] = temp; | 2538 temps_[0] = temp; |
2539 } | 2539 } |
2540 | 2540 |
2541 LOperand* temp() { return temps_[0]; } | 2541 LOperand* temp() { return temps_[0]; } |
2542 | 2542 |
2543 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFixedDouble, | 2543 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFixedDouble, |
2544 "store-keyed-fixed-double") | 2544 "store-keyed-fixed-double") |
2545 }; | 2545 }; |
2546 | 2546 |
2547 | 2547 |
2548 class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 0> { | 2548 class LStoreKeyedGeneric final : public LTemplateInstruction<0, 4, 2> { |
2549 public: | 2549 public: |
2550 LStoreKeyedGeneric(LOperand* context, | 2550 LStoreKeyedGeneric(LOperand* context, LOperand* object, LOperand* key, |
2551 LOperand* obj, | 2551 LOperand* value, LOperand* slot, LOperand* vector) { |
2552 LOperand* key, | |
2553 LOperand* value) { | |
2554 inputs_[0] = context; | 2552 inputs_[0] = context; |
2555 inputs_[1] = obj; | 2553 inputs_[1] = object; |
2556 inputs_[2] = key; | 2554 inputs_[2] = key; |
2557 inputs_[3] = value; | 2555 inputs_[3] = value; |
| 2556 temps_[0] = slot; |
| 2557 temps_[1] = vector; |
2558 } | 2558 } |
2559 | 2559 |
2560 LOperand* context() { return inputs_[0]; } | 2560 LOperand* context() { return inputs_[0]; } |
2561 LOperand* object() { return inputs_[1]; } | 2561 LOperand* object() { return inputs_[1]; } |
2562 LOperand* key() { return inputs_[2]; } | 2562 LOperand* key() { return inputs_[2]; } |
2563 LOperand* value() { return inputs_[3]; } | 2563 LOperand* value() { return inputs_[3]; } |
| 2564 LOperand* temp_slot() { return temps_[0]; } |
| 2565 LOperand* temp_vector() { return temps_[1]; } |
2564 | 2566 |
2565 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | 2567 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
2566 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) | 2568 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) |
2567 | 2569 |
2568 void PrintDataTo(StringStream* stream) override; | 2570 void PrintDataTo(StringStream* stream) override; |
2569 | 2571 |
2570 LanguageMode language_mode() { return hydrogen()->language_mode(); } | 2572 LanguageMode language_mode() { return hydrogen()->language_mode(); } |
2571 }; | 2573 }; |
2572 | 2574 |
2573 | 2575 |
(...skipping 16 matching lines...) Expand all Loading... |
2590 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | 2592 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
2591 | 2593 |
2592 void PrintDataTo(StringStream* stream) override; | 2594 void PrintDataTo(StringStream* stream) override; |
2593 | 2595 |
2594 Representation representation() const { | 2596 Representation representation() const { |
2595 return hydrogen()->field_representation(); | 2597 return hydrogen()->field_representation(); |
2596 } | 2598 } |
2597 }; | 2599 }; |
2598 | 2600 |
2599 | 2601 |
2600 class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 0> { | 2602 class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 2> { |
2601 public: | 2603 public: |
2602 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) { | 2604 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value, |
| 2605 LOperand* slot, LOperand* vector) { |
2603 inputs_[0] = context; | 2606 inputs_[0] = context; |
2604 inputs_[1] = object; | 2607 inputs_[1] = object; |
2605 inputs_[2] = value; | 2608 inputs_[2] = value; |
| 2609 temps_[0] = slot; |
| 2610 temps_[1] = vector; |
2606 } | 2611 } |
2607 | 2612 |
2608 LOperand* context() { return inputs_[0]; } | 2613 LOperand* context() { return inputs_[0]; } |
2609 LOperand* object() { return inputs_[1]; } | 2614 LOperand* object() { return inputs_[1]; } |
2610 LOperand* value() { return inputs_[2]; } | 2615 LOperand* value() { return inputs_[2]; } |
| 2616 LOperand* temp_slot() { return temps_[0]; } |
| 2617 LOperand* temp_vector() { return temps_[1]; } |
2611 | 2618 |
2612 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 2619 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
2613 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 2620 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
2614 | 2621 |
2615 void PrintDataTo(StringStream* stream) override; | 2622 void PrintDataTo(StringStream* stream) override; |
2616 | 2623 |
2617 Handle<Object> name() const { return hydrogen()->name(); } | 2624 Handle<Object> name() const { return hydrogen()->name(); } |
2618 LanguageMode language_mode() { return hydrogen()->language_mode(); } | 2625 LanguageMode language_mode() { return hydrogen()->language_mode(); } |
2619 }; | 2626 }; |
2620 | 2627 |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3233 | 3240 |
3234 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 3241 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
3235 }; | 3242 }; |
3236 | 3243 |
3237 #undef DECLARE_HYDROGEN_ACCESSOR | 3244 #undef DECLARE_HYDROGEN_ACCESSOR |
3238 #undef DECLARE_CONCRETE_INSTRUCTION | 3245 #undef DECLARE_CONCRETE_INSTRUCTION |
3239 | 3246 |
3240 } } // namespace v8::internal | 3247 } } // namespace v8::internal |
3241 | 3248 |
3242 #endif // V8_ARM64_LITHIUM_ARM64_H_ | 3249 #endif // V8_ARM64_LITHIUM_ARM64_H_ |
OLD | NEW |