| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef PLATFORM_UTILS_H_ | 5 #ifndef PLATFORM_UTILS_H_ |
| 6 #define PLATFORM_UTILS_H_ | 6 #define PLATFORM_UTILS_H_ |
| 7 | 7 |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "platform/globals.h" | 9 #include "platform/globals.h" |
| 10 | 10 |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 // without the risk of integer overflow. | 164 // without the risk of integer overflow. |
| 165 static inline bool RangeCheck(intptr_t offset, | 165 static inline bool RangeCheck(intptr_t offset, |
| 166 intptr_t count, | 166 intptr_t count, |
| 167 intptr_t length) { | 167 intptr_t length) { |
| 168 return offset >= 0 && | 168 return offset >= 0 && |
| 169 count >= 0 && | 169 count >= 0 && |
| 170 length >= 0 && | 170 length >= 0 && |
| 171 count <= (length - offset); | 171 count <= (length - offset); |
| 172 } | 172 } |
| 173 | 173 |
| 174 static inline bool WillAddOverflow(int64_t a, int64_t b) { |
| 175 return ((b > 0) && (a > (kMaxInt64 - b))) || |
| 176 ((b < 0) && (a < (kMinInt64 - b))); |
| 177 } |
| 178 |
| 179 static inline bool WillSubOverflow(int64_t a, int64_t b) { |
| 180 return ((b > 0) && (a < (kMinInt64 + b))) || |
| 181 ((b < 0) && (a > (kMaxInt64 + b))); |
| 182 } |
| 183 |
| 184 |
| 174 // Utility functions for converting values from host endianess to | 185 // Utility functions for converting values from host endianess to |
| 175 // big or little endian values. | 186 // big or little endian values. |
| 176 static uint16_t HostToBigEndian16(uint16_t host_value); | 187 static uint16_t HostToBigEndian16(uint16_t host_value); |
| 177 static uint32_t HostToBigEndian32(uint32_t host_value); | 188 static uint32_t HostToBigEndian32(uint32_t host_value); |
| 178 static uint64_t HostToBigEndian64(uint64_t host_value); | 189 static uint64_t HostToBigEndian64(uint64_t host_value); |
| 179 static uint16_t HostToLittleEndian16(uint16_t host_value); | 190 static uint16_t HostToLittleEndian16(uint16_t host_value); |
| 180 static uint32_t HostToLittleEndian32(uint32_t host_value); | 191 static uint32_t HostToLittleEndian32(uint32_t host_value); |
| 181 static uint64_t HostToLittleEndian64(uint64_t host_value); | 192 static uint64_t HostToLittleEndian64(uint64_t host_value); |
| 182 | 193 |
| 183 static bool DoublesBitEqual(const double a, const double b) { | 194 static bool DoublesBitEqual(const double a, const double b) { |
| 184 return bit_cast<int64_t, double>(a) == bit_cast<int64_t, double>(b); | 195 return bit_cast<int64_t, double>(a) == bit_cast<int64_t, double>(b); |
| 185 } | 196 } |
| 186 }; | 197 }; |
| 187 | 198 |
| 188 } // namespace dart | 199 } // namespace dart |
| 189 | 200 |
| 190 #if defined(TARGET_OS_ANDROID) | 201 #if defined(TARGET_OS_ANDROID) |
| 191 #include "platform/utils_android.h" | 202 #include "platform/utils_android.h" |
| 192 #elif defined(TARGET_OS_LINUX) | 203 #elif defined(TARGET_OS_LINUX) |
| 193 #include "platform/utils_linux.h" | 204 #include "platform/utils_linux.h" |
| 194 #elif defined(TARGET_OS_MACOS) | 205 #elif defined(TARGET_OS_MACOS) |
| 195 #include "platform/utils_macos.h" | 206 #include "platform/utils_macos.h" |
| 196 #elif defined(TARGET_OS_WINDOWS) | 207 #elif defined(TARGET_OS_WINDOWS) |
| 197 #include "platform/utils_win.h" | 208 #include "platform/utils_win.h" |
| 198 #else | 209 #else |
| 199 #error Unknown target os. | 210 #error Unknown target os. |
| 200 #endif | 211 #endif |
| 201 | 212 |
| 202 #endif // PLATFORM_UTILS_H_ | 213 #endif // PLATFORM_UTILS_H_ |
| OLD | NEW |