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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 V(Sar) \ | 158 V(Sar) \ |
159 V(SeqStringGetChar) \ | 159 V(SeqStringGetChar) \ |
160 V(SeqStringSetChar) \ | 160 V(SeqStringSetChar) \ |
161 V(Shl) \ | 161 V(Shl) \ |
162 V(Shr) \ | 162 V(Shr) \ |
163 V(Simulate) \ | 163 V(Simulate) \ |
164 V(StackCheck) \ | 164 V(StackCheck) \ |
165 V(StoreCodeEntry) \ | 165 V(StoreCodeEntry) \ |
166 V(StoreContextSlot) \ | 166 V(StoreContextSlot) \ |
167 V(StoreGlobalCell) \ | 167 V(StoreGlobalCell) \ |
168 V(StoreGlobalGeneric) \ | |
169 V(StoreKeyed) \ | 168 V(StoreKeyed) \ |
170 V(StoreKeyedGeneric) \ | 169 V(StoreKeyedGeneric) \ |
171 V(StoreNamedField) \ | 170 V(StoreNamedField) \ |
172 V(StoreNamedGeneric) \ | 171 V(StoreNamedGeneric) \ |
173 V(StringAdd) \ | 172 V(StringAdd) \ |
174 V(StringCharCodeAt) \ | 173 V(StringCharCodeAt) \ |
175 V(StringCharFromCode) \ | 174 V(StringCharFromCode) \ |
176 V(StringCompareAndBranch) \ | 175 V(StringCompareAndBranch) \ |
177 V(Sub) \ | 176 V(Sub) \ |
178 V(ThisFunction) \ | 177 V(ThisFunction) \ |
(...skipping 5555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5734 cell_(Unique<PropertyCell>::CreateUninitialized(cell)), | 5733 cell_(Unique<PropertyCell>::CreateUninitialized(cell)), |
5735 details_(details) { | 5734 details_(details) { |
5736 SetGVNFlag(kChangesGlobalVars); | 5735 SetGVNFlag(kChangesGlobalVars); |
5737 } | 5736 } |
5738 | 5737 |
5739 Unique<PropertyCell> cell_; | 5738 Unique<PropertyCell> cell_; |
5740 PropertyDetails details_; | 5739 PropertyDetails details_; |
5741 }; | 5740 }; |
5742 | 5741 |
5743 | 5742 |
5744 class HStoreGlobalGeneric : public HTemplateInstruction<3> { | |
5745 public: | |
5746 inline static HStoreGlobalGeneric* New(Zone* zone, | |
5747 HValue* context, | |
5748 HValue* global_object, | |
5749 Handle<Object> name, | |
5750 HValue* value, | |
5751 StrictModeFlag strict_mode_flag) { | |
5752 return new(zone) HStoreGlobalGeneric(context, global_object, | |
5753 name, value, strict_mode_flag); | |
5754 } | |
5755 | |
5756 HValue* context() { return OperandAt(0); } | |
5757 HValue* global_object() { return OperandAt(1); } | |
5758 Handle<Object> name() const { return name_; } | |
5759 HValue* value() { return OperandAt(2); } | |
5760 StrictModeFlag strict_mode_flag() { return strict_mode_flag_; } | |
5761 | |
5762 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; | |
5763 | |
5764 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { | |
5765 return Representation::Tagged(); | |
5766 } | |
5767 | |
5768 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric) | |
5769 | |
5770 private: | |
5771 HStoreGlobalGeneric(HValue* context, | |
5772 HValue* global_object, | |
5773 Handle<Object> name, | |
5774 HValue* value, | |
5775 StrictModeFlag strict_mode_flag) | |
5776 : name_(name), | |
5777 strict_mode_flag_(strict_mode_flag) { | |
5778 SetOperandAt(0, context); | |
5779 SetOperandAt(1, global_object); | |
5780 SetOperandAt(2, value); | |
5781 set_representation(Representation::Tagged()); | |
5782 SetAllSideEffects(); | |
5783 } | |
5784 | |
5785 Handle<Object> name_; | |
5786 StrictModeFlag strict_mode_flag_; | |
5787 }; | |
5788 | |
5789 | |
5790 class HLoadContextSlot V8_FINAL : public HUnaryOperation { | 5743 class HLoadContextSlot V8_FINAL : public HUnaryOperation { |
5791 public: | 5744 public: |
5792 enum Mode { | 5745 enum Mode { |
5793 // Perform a normal load of the context slot without checking its value. | 5746 // Perform a normal load of the context slot without checking its value. |
5794 kNoCheck, | 5747 kNoCheck, |
5795 // Load and check the value of the context slot. Deoptimize if it's the | 5748 // Load and check the value of the context slot. Deoptimize if it's the |
5796 // hole value. This is used for checking for loading of uninitialized | 5749 // hole value. This is used for checking for loading of uninitialized |
5797 // harmony bindings where we deoptimize into full-codegen generated code | 5750 // harmony bindings where we deoptimize into full-codegen generated code |
5798 // which will subsequently throw a reference error. | 5751 // which will subsequently throw a reference error. |
5799 kCheckDeoptimize, | 5752 kCheckDeoptimize, |
(...skipping 1776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7576 virtual bool IsDeletable() const V8_OVERRIDE { return true; } | 7529 virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
7577 }; | 7530 }; |
7578 | 7531 |
7579 | 7532 |
7580 #undef DECLARE_INSTRUCTION | 7533 #undef DECLARE_INSTRUCTION |
7581 #undef DECLARE_CONCRETE_INSTRUCTION | 7534 #undef DECLARE_CONCRETE_INSTRUCTION |
7582 | 7535 |
7583 } } // namespace v8::internal | 7536 } } // namespace v8::internal |
7584 | 7537 |
7585 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7538 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |