| 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_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ |
| 6 #define V8_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_HYDROGEN_INSTRUCTIONS_H_ |
| 7 | 7 |
| 8 #include <cstring> | 8 #include <cstring> |
| 9 #include <iosfwd> | 9 #include <iosfwd> |
| 10 | 10 |
| (...skipping 5383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5394 | 5394 |
| 5395 HEnvironment* environment_; | 5395 HEnvironment* environment_; |
| 5396 int index_; | 5396 int index_; |
| 5397 HPhi* incoming_value_; | 5397 HPhi* incoming_value_; |
| 5398 }; | 5398 }; |
| 5399 | 5399 |
| 5400 | 5400 |
| 5401 class HLoadGlobalGeneric final : public HTemplateInstruction<2> { | 5401 class HLoadGlobalGeneric final : public HTemplateInstruction<2> { |
| 5402 public: | 5402 public: |
| 5403 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, | 5403 DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P3(HLoadGlobalGeneric, HValue*, |
| 5404 Handle<String>, bool); | 5404 Handle<String>, TypeofMode); |
| 5405 | 5405 |
| 5406 HValue* context() { return OperandAt(0); } | 5406 HValue* context() { return OperandAt(0); } |
| 5407 HValue* global_object() { return OperandAt(1); } | 5407 HValue* global_object() { return OperandAt(1); } |
| 5408 Handle<String> name() const { return name_; } | 5408 Handle<String> name() const { return name_; } |
| 5409 bool for_typeof() const { return for_typeof_; } | 5409 TypeofMode typeof_mode() const { return typeof_mode_; } |
| 5410 FeedbackVectorICSlot slot() const { return slot_; } | 5410 FeedbackVectorICSlot slot() const { return slot_; } |
| 5411 Handle<TypeFeedbackVector> feedback_vector() const { | 5411 Handle<TypeFeedbackVector> feedback_vector() const { |
| 5412 return feedback_vector_; | 5412 return feedback_vector_; |
| 5413 } | 5413 } |
| 5414 bool HasVectorAndSlot() const { return true; } | 5414 bool HasVectorAndSlot() const { return true; } |
| 5415 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, | 5415 void SetVectorAndSlot(Handle<TypeFeedbackVector> vector, |
| 5416 FeedbackVectorICSlot slot) { | 5416 FeedbackVectorICSlot slot) { |
| 5417 feedback_vector_ = vector; | 5417 feedback_vector_ = vector; |
| 5418 slot_ = slot; | 5418 slot_ = slot; |
| 5419 } | 5419 } |
| 5420 | 5420 |
| 5421 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT | 5421 std::ostream& PrintDataTo(std::ostream& os) const override; // NOLINT |
| 5422 | 5422 |
| 5423 Representation RequiredInputRepresentation(int index) override { | 5423 Representation RequiredInputRepresentation(int index) override { |
| 5424 return Representation::Tagged(); | 5424 return Representation::Tagged(); |
| 5425 } | 5425 } |
| 5426 | 5426 |
| 5427 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric) | 5427 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric) |
| 5428 | 5428 |
| 5429 private: | 5429 private: |
| 5430 HLoadGlobalGeneric(HValue* context, HValue* global_object, | 5430 HLoadGlobalGeneric(HValue* context, HValue* global_object, |
| 5431 Handle<String> name, bool for_typeof) | 5431 Handle<String> name, TypeofMode typeof_mode) |
| 5432 : name_(name), | 5432 : name_(name), |
| 5433 for_typeof_(for_typeof), | 5433 typeof_mode_(typeof_mode), |
| 5434 slot_(FeedbackVectorICSlot::Invalid()) { | 5434 slot_(FeedbackVectorICSlot::Invalid()) { |
| 5435 SetOperandAt(0, context); | 5435 SetOperandAt(0, context); |
| 5436 SetOperandAt(1, global_object); | 5436 SetOperandAt(1, global_object); |
| 5437 set_representation(Representation::Tagged()); | 5437 set_representation(Representation::Tagged()); |
| 5438 SetAllSideEffects(); | 5438 SetAllSideEffects(); |
| 5439 } | 5439 } |
| 5440 | 5440 |
| 5441 Handle<String> name_; | 5441 Handle<String> name_; |
| 5442 bool for_typeof_; | 5442 TypeofMode typeof_mode_; |
| 5443 Handle<TypeFeedbackVector> feedback_vector_; | 5443 Handle<TypeFeedbackVector> feedback_vector_; |
| 5444 FeedbackVectorICSlot slot_; | 5444 FeedbackVectorICSlot slot_; |
| 5445 }; | 5445 }; |
| 5446 | 5446 |
| 5447 | 5447 |
| 5448 class HAllocate final : public HTemplateInstruction<2> { | 5448 class HAllocate final : public HTemplateInstruction<2> { |
| 5449 public: | 5449 public: |
| 5450 static bool CompatibleInstanceTypes(InstanceType type1, | 5450 static bool CompatibleInstanceTypes(InstanceType type1, |
| 5451 InstanceType type2) { | 5451 InstanceType type2) { |
| 5452 return ComputeFlags(TENURED, type1) == ComputeFlags(TENURED, type2) && | 5452 return ComputeFlags(TENURED, type1) == ComputeFlags(TENURED, type2) && |
| (...skipping 2515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7968 }; | 7968 }; |
| 7969 | 7969 |
| 7970 | 7970 |
| 7971 | 7971 |
| 7972 #undef DECLARE_INSTRUCTION | 7972 #undef DECLARE_INSTRUCTION |
| 7973 #undef DECLARE_CONCRETE_INSTRUCTION | 7973 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7974 | 7974 |
| 7975 } } // namespace v8::internal | 7975 } } // namespace v8::internal |
| 7976 | 7976 |
| 7977 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7977 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |