| 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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 V(MathFloorOfDiv) \ | 123 V(MathFloorOfDiv) \ |
| 124 V(MathMinMax) \ | 124 V(MathMinMax) \ |
| 125 V(MaybeGrowElements) \ | 125 V(MaybeGrowElements) \ |
| 126 V(Mod) \ | 126 V(Mod) \ |
| 127 V(Mul) \ | 127 V(Mul) \ |
| 128 V(OsrEntry) \ | 128 V(OsrEntry) \ |
| 129 V(Parameter) \ | 129 V(Parameter) \ |
| 130 V(Power) \ | 130 V(Power) \ |
| 131 V(Prologue) \ | 131 V(Prologue) \ |
| 132 V(PushArguments) \ | 132 V(PushArguments) \ |
| 133 V(RegExpLiteral) \ | |
| 134 V(Return) \ | 133 V(Return) \ |
| 135 V(Ror) \ | 134 V(Ror) \ |
| 136 V(Sar) \ | 135 V(Sar) \ |
| 137 V(SeqStringGetChar) \ | 136 V(SeqStringGetChar) \ |
| 138 V(SeqStringSetChar) \ | 137 V(SeqStringSetChar) \ |
| 139 V(Shl) \ | 138 V(Shl) \ |
| 140 V(Shr) \ | 139 V(Shr) \ |
| 141 V(Simulate) \ | 140 V(Simulate) \ |
| 142 V(StackCheck) \ | 141 V(StackCheck) \ |
| 143 V(StoreCodeEntry) \ | 142 V(StoreCodeEntry) \ |
| (...skipping 7251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7395 SetFlag(kUseGVN); | 7394 SetFlag(kUseGVN); |
| 7396 SetChangesFlag(kNewSpacePromotion); | 7395 SetChangesFlag(kNewSpacePromotion); |
| 7397 } | 7396 } |
| 7398 | 7397 |
| 7399 bool IsDeletable() const override { | 7398 bool IsDeletable() const override { |
| 7400 return !value()->ToNumberCanBeObserved(); | 7399 return !value()->ToNumberCanBeObserved(); |
| 7401 } | 7400 } |
| 7402 }; | 7401 }; |
| 7403 | 7402 |
| 7404 | 7403 |
| 7405 template <int V> | |
| 7406 class HMaterializedLiteral : public HTemplateInstruction<V> { | |
| 7407 public: | |
| 7408 HMaterializedLiteral<V>(int index, int depth, AllocationSiteMode mode) | |
| 7409 : literal_index_(index), depth_(depth), allocation_site_mode_(mode) { | |
| 7410 this->set_representation(Representation::Tagged()); | |
| 7411 } | |
| 7412 | |
| 7413 HMaterializedLiteral<V>(int index, int depth) | |
| 7414 : literal_index_(index), depth_(depth), | |
| 7415 allocation_site_mode_(DONT_TRACK_ALLOCATION_SITE) { | |
| 7416 this->set_representation(Representation::Tagged()); | |
| 7417 } | |
| 7418 | |
| 7419 int literal_index() const { return literal_index_; } | |
| 7420 int depth() const { return depth_; } | |
| 7421 AllocationSiteMode allocation_site_mode() const { | |
| 7422 return allocation_site_mode_; | |
| 7423 } | |
| 7424 | |
| 7425 private: | |
| 7426 bool IsDeletable() const final { return true; } | |
| 7427 | |
| 7428 int literal_index_; | |
| 7429 int depth_; | |
| 7430 AllocationSiteMode allocation_site_mode_; | |
| 7431 }; | |
| 7432 | |
| 7433 | |
| 7434 class HRegExpLiteral final : public HMaterializedLiteral<1> { | |
| 7435 public: | |
| 7436 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P4(HRegExpLiteral, | |
| 7437 Handle<FixedArray>, | |
| 7438 Handle<String>, | |
| 7439 Handle<String>, | |
| 7440 int); | |
| 7441 | |
| 7442 HValue* context() { return OperandAt(0); } | |
| 7443 Handle<FixedArray> literals() { return literals_; } | |
| 7444 Handle<String> pattern() { return pattern_; } | |
| 7445 Handle<String> flags() { return flags_; } | |
| 7446 | |
| 7447 Representation RequiredInputRepresentation(int index) override { | |
| 7448 return Representation::Tagged(); | |
| 7449 } | |
| 7450 | |
| 7451 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral) | |
| 7452 | |
| 7453 private: | |
| 7454 HRegExpLiteral(HValue* context, | |
| 7455 Handle<FixedArray> literals, | |
| 7456 Handle<String> pattern, | |
| 7457 Handle<String> flags, | |
| 7458 int literal_index) | |
| 7459 : HMaterializedLiteral<1>(literal_index, 0), | |
| 7460 literals_(literals), | |
| 7461 pattern_(pattern), | |
| 7462 flags_(flags) { | |
| 7463 SetOperandAt(0, context); | |
| 7464 SetAllSideEffects(); | |
| 7465 set_type(HType::JSObject()); | |
| 7466 } | |
| 7467 | |
| 7468 Handle<FixedArray> literals_; | |
| 7469 Handle<String> pattern_; | |
| 7470 Handle<String> flags_; | |
| 7471 }; | |
| 7472 | |
| 7473 | |
| 7474 class HTypeof final : public HTemplateInstruction<2> { | 7404 class HTypeof final : public HTemplateInstruction<2> { |
| 7475 public: | 7405 public: |
| 7476 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HTypeof, HValue*); | 7406 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HTypeof, HValue*); |
| 7477 | 7407 |
| 7478 HValue* context() const { return OperandAt(0); } | 7408 HValue* context() const { return OperandAt(0); } |
| 7479 HValue* value() const { return OperandAt(1); } | 7409 HValue* value() const { return OperandAt(1); } |
| 7480 | 7410 |
| 7481 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | 7411 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
| 7482 | 7412 |
| 7483 Representation RequiredInputRepresentation(int index) override { | 7413 Representation RequiredInputRepresentation(int index) override { |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7897 | 7827 |
| 7898 | 7828 |
| 7899 | 7829 |
| 7900 #undef DECLARE_INSTRUCTION | 7830 #undef DECLARE_INSTRUCTION |
| 7901 #undef DECLARE_CONCRETE_INSTRUCTION | 7831 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7902 | 7832 |
| 7903 } // namespace internal | 7833 } // namespace internal |
| 7904 } // namespace v8 | 7834 } // namespace v8 |
| 7905 | 7835 |
| 7906 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7836 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |