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 3070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3081 } | 3081 } |
3082 bool HasSmiValue() const { return HasSmiValueField::decode(bit_field_); } | 3082 bool HasSmiValue() const { return HasSmiValueField::decode(bit_field_); } |
3083 bool HasDoubleValue() const { | 3083 bool HasDoubleValue() const { |
3084 return HasDoubleValueField::decode(bit_field_); | 3084 return HasDoubleValueField::decode(bit_field_); |
3085 } | 3085 } |
3086 double DoubleValue() const { | 3086 double DoubleValue() const { |
3087 DCHECK(HasDoubleValue()); | 3087 DCHECK(HasDoubleValue()); |
3088 return double_value_; | 3088 return double_value_; |
3089 } | 3089 } |
3090 uint64_t DoubleValueAsBits() const { | 3090 uint64_t DoubleValueAsBits() const { |
3091 uint64_t bits; | |
3092 DCHECK(HasDoubleValue()); | 3091 DCHECK(HasDoubleValue()); |
3093 STATIC_ASSERT(sizeof(bits) == sizeof(double_value_)); | 3092 return bit_cast<uint64_t>(double_value_); |
3094 std::memcpy(&bits, &double_value_, sizeof(bits)); | |
3095 return bits; | |
3096 } | 3093 } |
3097 bool IsTheHole() const { | 3094 bool IsTheHole() const { |
3098 if (HasDoubleValue() && DoubleValueAsBits() == kHoleNanInt64) { | 3095 if (HasDoubleValue() && DoubleValueAsBits() == kHoleNanInt64) { |
3099 return true; | 3096 return true; |
3100 } | 3097 } |
3101 return object_.IsInitialized() && | 3098 return object_.IsInitialized() && |
3102 object_.IsKnownGlobal(isolate()->heap()->the_hole_value()); | 3099 object_.IsKnownGlobal(isolate()->heap()->the_hole_value()); |
3103 } | 3100 } |
3104 bool HasNumberValue() const { return HasDoubleValue(); } | 3101 bool HasNumberValue() const { return HasDoubleValue(); } |
3105 int32_t NumberValueAsInteger32() const { | 3102 int32_t NumberValueAsInteger32() const { |
(...skipping 3653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6759 bool IsDeletable() const override { return true; } | 6756 bool IsDeletable() const override { return true; } |
6760 }; | 6757 }; |
6761 | 6758 |
6762 #undef DECLARE_INSTRUCTION | 6759 #undef DECLARE_INSTRUCTION |
6763 #undef DECLARE_CONCRETE_INSTRUCTION | 6760 #undef DECLARE_CONCRETE_INSTRUCTION |
6764 | 6761 |
6765 } // namespace internal | 6762 } // namespace internal |
6766 } // namespace v8 | 6763 } // namespace v8 |
6767 | 6764 |
6768 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6765 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |