OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 V(StoreKeyed) \ | 137 V(StoreKeyed) \ |
138 V(StoreKeyedGeneric) \ | 138 V(StoreKeyedGeneric) \ |
139 V(StoreNamedField) \ | 139 V(StoreNamedField) \ |
140 V(StoreNamedGeneric) \ | 140 V(StoreNamedGeneric) \ |
141 V(StringAdd) \ | 141 V(StringAdd) \ |
142 V(StringCharCodeAt) \ | 142 V(StringCharCodeAt) \ |
143 V(StringCharFromCode) \ | 143 V(StringCharFromCode) \ |
144 V(StringCompareAndBranch) \ | 144 V(StringCompareAndBranch) \ |
145 V(Sub) \ | 145 V(Sub) \ |
146 V(ThisFunction) \ | 146 V(ThisFunction) \ |
147 V(ToFastProperties) \ | |
148 V(TransitionElementsKind) \ | 147 V(TransitionElementsKind) \ |
149 V(TrapAllocationMemento) \ | 148 V(TrapAllocationMemento) \ |
150 V(Typeof) \ | 149 V(Typeof) \ |
151 V(TypeofIsAndBranch) \ | 150 V(TypeofIsAndBranch) \ |
152 V(UnaryMathOperation) \ | 151 V(UnaryMathOperation) \ |
153 V(UnknownOSRValue) \ | 152 V(UnknownOSRValue) \ |
154 V(UseConst) \ | 153 V(UseConst) \ |
155 V(WrapReceiver) | 154 V(WrapReceiver) |
156 | 155 |
157 #define GVN_TRACKED_FLAG_LIST(V) \ | 156 #define GVN_TRACKED_FLAG_LIST(V) \ |
(...skipping 7153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7311 SetChangesFlag(kElementsPointer); | 7310 SetChangesFlag(kElementsPointer); |
7312 SetChangesFlag(kNewSpacePromotion); | 7311 SetChangesFlag(kNewSpacePromotion); |
7313 set_representation(Representation::Tagged()); | 7312 set_representation(Representation::Tagged()); |
7314 } | 7313 } |
7315 | 7314 |
7316 bool is_js_array_; | 7315 bool is_js_array_; |
7317 ElementsKind kind_; | 7316 ElementsKind kind_; |
7318 }; | 7317 }; |
7319 | 7318 |
7320 | 7319 |
7321 class HToFastProperties final : public HUnaryOperation { | |
7322 public: | |
7323 DECLARE_INSTRUCTION_FACTORY_P1(HToFastProperties, HValue*); | |
7324 | |
7325 Representation RequiredInputRepresentation(int index) override { | |
7326 return Representation::Tagged(); | |
7327 } | |
7328 | |
7329 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties) | |
7330 | |
7331 private: | |
7332 explicit HToFastProperties(HValue* value) : HUnaryOperation(value) { | |
7333 set_representation(Representation::Tagged()); | |
7334 SetChangesFlag(kNewSpacePromotion); | |
7335 | |
7336 // This instruction is not marked as kChangesMaps, but does | |
7337 // change the map of the input operand. Use it only when creating | |
7338 // object literals via a runtime call. | |
7339 DCHECK(value->IsCallRuntime()); | |
7340 #ifdef DEBUG | |
7341 const Runtime::Function* function = HCallRuntime::cast(value)->function(); | |
7342 DCHECK(function->function_id == Runtime::kCreateObjectLiteral); | |
7343 #endif | |
7344 } | |
7345 | |
7346 bool IsDeletable() const override { return true; } | |
7347 }; | |
7348 | |
7349 | |
7350 class HSeqStringGetChar final : public HTemplateInstruction<2> { | 7320 class HSeqStringGetChar final : public HTemplateInstruction<2> { |
7351 public: | 7321 public: |
7352 static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context, | 7322 static HInstruction* New(Isolate* isolate, Zone* zone, HValue* context, |
7353 String::Encoding encoding, HValue* string, | 7323 String::Encoding encoding, HValue* string, |
7354 HValue* index); | 7324 HValue* index); |
7355 | 7325 |
7356 Representation RequiredInputRepresentation(int index) override { | 7326 Representation RequiredInputRepresentation(int index) override { |
7357 return (index == 0) ? Representation::Tagged() | 7327 return (index == 0) ? Representation::Tagged() |
7358 : Representation::Integer32(); | 7328 : Representation::Integer32(); |
7359 } | 7329 } |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7595 | 7565 |
7596 | 7566 |
7597 | 7567 |
7598 #undef DECLARE_INSTRUCTION | 7568 #undef DECLARE_INSTRUCTION |
7599 #undef DECLARE_CONCRETE_INSTRUCTION | 7569 #undef DECLARE_CONCRETE_INSTRUCTION |
7600 | 7570 |
7601 } // namespace internal | 7571 } // namespace internal |
7602 } // namespace v8 | 7572 } // namespace v8 |
7603 | 7573 |
7604 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7574 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |