OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 2155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2166 inline void set_the_hole(int index); | 2166 inline void set_the_hole(int index); |
2167 | 2167 |
2168 // Checking for the hole. | 2168 // Checking for the hole. |
2169 inline bool is_the_hole(int index); | 2169 inline bool is_the_hole(int index); |
2170 | 2170 |
2171 // Garbage collection support. | 2171 // Garbage collection support. |
2172 inline static int SizeFor(int length) { | 2172 inline static int SizeFor(int length) { |
2173 return kHeaderSize + length * kDoubleSize; | 2173 return kHeaderSize + length * kDoubleSize; |
2174 } | 2174 } |
2175 | 2175 |
2176 // The following can't be declared inline as const static | 2176 inline static bool is_the_hole_nan(double value); |
2177 // because they're 64-bit. | 2177 inline static double hole_nan_as_double(); |
2178 static uint64_t kCanonicalNonHoleNanLower32; | 2178 inline static double canonical_not_the_hole_nan_as_double(); |
2179 static uint64_t kCanonicalNonHoleNanInt64; | |
2180 static uint64_t kHoleNanInt64; | |
2181 | |
2182 inline static bool is_the_hole_nan(double value) { | |
2183 return BitCast<uint64_t, double>(value) == kHoleNanInt64; | |
2184 } | |
2185 | |
2186 inline static double hole_nan_as_double() { | |
2187 return BitCast<double, uint64_t>(kHoleNanInt64); | |
2188 } | |
2189 | |
2190 inline static double canonical_not_the_hole_nan_as_double() { | |
2191 return BitCast<double, uint64_t>(kCanonicalNonHoleNanInt64); | |
2192 } | |
2193 | 2179 |
2194 // Casting. | 2180 // Casting. |
2195 static inline FixedDoubleArray* cast(Object* obj); | 2181 static inline FixedDoubleArray* cast(Object* obj); |
2196 | 2182 |
2197 // Maximal allowed size, in bytes, of a single FixedDoubleArray. | 2183 // Maximal allowed size, in bytes, of a single FixedDoubleArray. |
2198 // Prevents overflowing size computations, as well as extreme memory | 2184 // Prevents overflowing size computations, as well as extreme memory |
2199 // consumption. | 2185 // consumption. |
2200 static const int kMaxSize = 512 * MB; | 2186 static const int kMaxSize = 512 * MB; |
2201 // Maximally allowed length of a FixedArray. | 2187 // Maximally allowed length of a FixedArray. |
2202 static const int kMaxLength = (kMaxSize - kHeaderSize) / kDoubleSize; | 2188 static const int kMaxLength = (kMaxSize - kHeaderSize) / kDoubleSize; |
(...skipping 4969 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7172 } else { | 7158 } else { |
7173 value &= ~(1 << bit_position); | 7159 value &= ~(1 << bit_position); |
7174 } | 7160 } |
7175 return value; | 7161 return value; |
7176 } | 7162 } |
7177 }; | 7163 }; |
7178 | 7164 |
7179 } } // namespace v8::internal | 7165 } } // namespace v8::internal |
7180 | 7166 |
7181 #endif // V8_OBJECTS_H_ | 7167 #endif // V8_OBJECTS_H_ |
OLD | NEW |