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 "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 3524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3535 object_ = Unique<Object>::CreateUninitialized( | 3535 object_ = Unique<Object>::CreateUninitialized( |
3536 isolate->factory()->NewNumber(double_value_, TENURED)); | 3536 isolate->factory()->NewNumber(double_value_, TENURED)); |
3537 } | 3537 } |
3538 AllowDeferredHandleDereference smi_check; | 3538 AllowDeferredHandleDereference smi_check; |
3539 DCHECK(has_int32_value_ || !object_.handle()->IsSmi()); | 3539 DCHECK(has_int32_value_ || !object_.handle()->IsSmi()); |
3540 return object_.handle(); | 3540 return object_.handle(); |
3541 } | 3541 } |
3542 | 3542 |
3543 bool IsSpecialDouble() const { | 3543 bool IsSpecialDouble() const { |
3544 return has_double_value_ && | 3544 return has_double_value_ && |
3545 (BitCast<int64_t>(double_value_) == BitCast<int64_t>(-0.0) || | 3545 (bit_cast<int64_t>(double_value_) == bit_cast<int64_t>(-0.0) || |
3546 FixedDoubleArray::is_the_hole_nan(double_value_) || | 3546 FixedDoubleArray::is_the_hole_nan(double_value_) || |
3547 std::isnan(double_value_)); | 3547 std::isnan(double_value_)); |
3548 } | 3548 } |
3549 | 3549 |
3550 bool NotInNewSpace() const { | 3550 bool NotInNewSpace() const { |
3551 return is_not_in_new_space_; | 3551 return is_not_in_new_space_; |
3552 } | 3552 } |
3553 | 3553 |
3554 bool ImmortalImmovable() const; | 3554 bool ImmortalImmovable() const; |
3555 | 3555 |
3556 bool IsCell() const { | 3556 bool IsCell() const { |
3557 return instance_type_ == CELL_TYPE || instance_type_ == PROPERTY_CELL_TYPE; | 3557 return instance_type_ == CELL_TYPE || instance_type_ == PROPERTY_CELL_TYPE; |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3641 bool HasObjectMap() const { return !object_map_.IsNull(); } | 3641 bool HasObjectMap() const { return !object_map_.IsNull(); } |
3642 Unique<Map> ObjectMap() const { | 3642 Unique<Map> ObjectMap() const { |
3643 DCHECK(HasObjectMap()); | 3643 DCHECK(HasObjectMap()); |
3644 return object_map_; | 3644 return object_map_; |
3645 } | 3645 } |
3646 | 3646 |
3647 virtual intptr_t Hashcode() OVERRIDE { | 3647 virtual intptr_t Hashcode() OVERRIDE { |
3648 if (has_int32_value_) { | 3648 if (has_int32_value_) { |
3649 return static_cast<intptr_t>(int32_value_); | 3649 return static_cast<intptr_t>(int32_value_); |
3650 } else if (has_double_value_) { | 3650 } else if (has_double_value_) { |
3651 return static_cast<intptr_t>(BitCast<int64_t>(double_value_)); | 3651 return static_cast<intptr_t>(bit_cast<int64_t>(double_value_)); |
3652 } else if (has_external_reference_value_) { | 3652 } else if (has_external_reference_value_) { |
3653 return reinterpret_cast<intptr_t>(external_reference_value_.address()); | 3653 return reinterpret_cast<intptr_t>(external_reference_value_.address()); |
3654 } else { | 3654 } else { |
3655 DCHECK(!object_.handle().is_null()); | 3655 DCHECK(!object_.handle().is_null()); |
3656 return object_.Hashcode(); | 3656 return object_.Hashcode(); |
3657 } | 3657 } |
3658 } | 3658 } |
3659 | 3659 |
3660 virtual void FinalizeUniqueness() OVERRIDE { | 3660 virtual void FinalizeUniqueness() OVERRIDE { |
3661 if (!has_double_value_ && !has_external_reference_value_) { | 3661 if (!has_double_value_ && !has_external_reference_value_) { |
(...skipping 10 matching lines...) Expand all Loading... |
3672 return object_.IsInitialized() && object_ == other; | 3672 return object_.IsInitialized() && object_ == other; |
3673 } | 3673 } |
3674 | 3674 |
3675 virtual bool DataEquals(HValue* other) OVERRIDE { | 3675 virtual bool DataEquals(HValue* other) OVERRIDE { |
3676 HConstant* other_constant = HConstant::cast(other); | 3676 HConstant* other_constant = HConstant::cast(other); |
3677 if (has_int32_value_) { | 3677 if (has_int32_value_) { |
3678 return other_constant->has_int32_value_ && | 3678 return other_constant->has_int32_value_ && |
3679 int32_value_ == other_constant->int32_value_; | 3679 int32_value_ == other_constant->int32_value_; |
3680 } else if (has_double_value_) { | 3680 } else if (has_double_value_) { |
3681 return other_constant->has_double_value_ && | 3681 return other_constant->has_double_value_ && |
3682 BitCast<int64_t>(double_value_) == | 3682 bit_cast<int64_t>(double_value_) == |
3683 BitCast<int64_t>(other_constant->double_value_); | 3683 bit_cast<int64_t>(other_constant->double_value_); |
3684 } else if (has_external_reference_value_) { | 3684 } else if (has_external_reference_value_) { |
3685 return other_constant->has_external_reference_value_ && | 3685 return other_constant->has_external_reference_value_ && |
3686 external_reference_value_ == | 3686 external_reference_value_ == |
3687 other_constant->external_reference_value_; | 3687 other_constant->external_reference_value_; |
3688 } else { | 3688 } else { |
3689 if (other_constant->has_int32_value_ || | 3689 if (other_constant->has_int32_value_ || |
3690 other_constant->has_double_value_ || | 3690 other_constant->has_double_value_ || |
3691 other_constant->has_external_reference_value_) { | 3691 other_constant->has_external_reference_value_) { |
3692 return false; | 3692 return false; |
3693 } | 3693 } |
(...skipping 4167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7861 }; | 7861 }; |
7862 | 7862 |
7863 | 7863 |
7864 | 7864 |
7865 #undef DECLARE_INSTRUCTION | 7865 #undef DECLARE_INSTRUCTION |
7866 #undef DECLARE_CONCRETE_INSTRUCTION | 7866 #undef DECLARE_CONCRETE_INSTRUCTION |
7867 | 7867 |
7868 } } // namespace v8::internal | 7868 } } // namespace v8::internal |
7869 | 7869 |
7870 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7870 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |