OLD | NEW |
1 // Copyright (c) 2014, the Dartino project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dartino 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 #ifndef SRC_SHARED_GLOBALS_H_ | 5 #ifndef SRC_SHARED_GLOBALS_H_ |
6 #define SRC_SHARED_GLOBALS_H_ | 6 #define SRC_SHARED_GLOBALS_H_ |
7 | 7 |
8 #ifndef __STDC_FORMAT_MACROS | 8 #ifndef __STDC_FORMAT_MACROS |
9 #define __STDC_FORMAT_MACROS | 9 #define __STDC_FORMAT_MACROS |
10 #endif | 10 #endif |
11 | 11 |
12 #ifndef __STDC_LIMIT_MACROS | 12 #ifndef __STDC_LIMIT_MACROS |
13 #define __STDC_LIMIT_MACROS | 13 #define __STDC_LIMIT_MACROS |
14 #endif | 14 #endif |
15 | 15 |
16 #include <inttypes.h> | 16 #include <inttypes.h> |
17 #include <limits.h> | 17 #include <limits.h> |
18 #include <stddef.h> | 18 #include <stddef.h> |
19 #include <stdio.h> | 19 #include <stdio.h> |
20 #include <string.h> | 20 #include <string.h> |
21 | 21 |
22 // Types for native machine words. Guaranteed to be able to hold | 22 // Types for native machine words. Guaranteed to be able to hold |
23 // pointers and integers. | 23 // pointers and integers. |
24 #if defined(FLETCH64) && defined(FLETCH_TARGET_OS_WIN) | 24 #if defined(DARTINO64) && defined(DARTINO_TARGET_OS_WIN) |
25 typedef long long word; // NOLINT | 25 typedef long long word; // NOLINT |
26 typedef unsigned long long uword; // NOLINT | 26 typedef unsigned long long uword; // NOLINT |
27 #define WORD_C(n) n##LL | 27 #define WORD_C(n) n##LL |
28 #define UWORD_C(n) n##LL | 28 #define UWORD_C(n) n##LL |
29 #else | 29 #else |
30 typedef long word; // NOLINT | 30 typedef long word; // NOLINT |
31 typedef unsigned long uword; // NOLINT | 31 typedef unsigned long uword; // NOLINT |
32 #define WORD_C(n) n##L | 32 #define WORD_C(n) n##L |
33 #define UWORD_C(n) n##UL | 33 #define UWORD_C(n) n##UL |
34 #endif | 34 #endif |
35 | 35 |
36 // Introduce integer types with specific bit widths. | 36 // Introduce integer types with specific bit widths. |
37 typedef signed char int8; | 37 typedef signed char int8; |
38 typedef short int16; // NOLINT | 38 typedef short int16; // NOLINT |
39 typedef int int32; | 39 typedef int int32; |
40 | 40 |
41 typedef unsigned char uint8; | 41 typedef unsigned char uint8; |
42 typedef unsigned short uint16; // NOLINT | 42 typedef unsigned short uint16; // NOLINT |
43 typedef unsigned int uint32; | 43 typedef unsigned int uint32; |
44 | 44 |
45 // On Windows platforms, long is always 32 bit. | 45 // On Windows platforms, long is always 32 bit. |
46 #if defined(FLETCH64) && !defined(FLETCH_TARGET_OS_WIN) | 46 #if defined(DARTINO64) && !defined(DARTINO_TARGET_OS_WIN) |
47 typedef long int64; // NOLINT | 47 typedef long int64; // NOLINT |
48 typedef unsigned long uint64; // NOLINT | 48 typedef unsigned long uint64; // NOLINT |
49 #else | 49 #else |
50 typedef long long int int64; // NOLINT | 50 typedef long long int int64; // NOLINT |
51 typedef long long unsigned uint64; // NOLINT | 51 typedef long long unsigned uint64; // NOLINT |
52 #endif | 52 #endif |
53 | 53 |
54 #ifdef FLETCH_TARGET_OS_LK | 54 #ifdef DARTINO_TARGET_OS_LK |
55 typedef float fletch_double; | 55 typedef float dartino_double; |
56 typedef uint32 fletch_double_as_uint; | 56 typedef uint32 dartino_double_as_uint; |
57 #else | 57 #else |
58 typedef double fletch_double; | 58 typedef double dartino_double; |
59 typedef uint64 fletch_double_as_uint; | 59 typedef uint64 dartino_double_as_uint; |
60 #endif | 60 #endif |
61 | 61 |
62 // Byte sizes. | 62 // Byte sizes. |
63 const int kWordSize = sizeof(word); | 63 const int kWordSize = sizeof(word); |
64 const int kDoubleSize = sizeof(double); // NOLINT | 64 const int kDoubleSize = sizeof(double); // NOLINT |
65 const int kPointerSize = sizeof(void*); // NOLINT | 65 const int kPointerSize = sizeof(void*); // NOLINT |
66 | 66 |
67 #ifdef FLETCH64 | 67 #ifdef DARTINO64 |
68 const int kPointerSizeLog2 = 3; | 68 const int kPointerSizeLog2 = 3; |
69 const int kAlternativePointerSize = 4; | 69 const int kAlternativePointerSize = 4; |
70 #else | 70 #else |
71 const int kPointerSizeLog2 = 2; | 71 const int kPointerSizeLog2 = 2; |
72 const int kAlternativePointerSize = 8; | 72 const int kAlternativePointerSize = 8; |
73 #endif | 73 #endif |
74 | 74 |
75 // Bit sizes. | 75 // Bit sizes. |
76 const int kBitsPerByte = 8; | 76 const int kBitsPerByte = 8; |
77 const int kBitsPerByteLog2 = 3; | 77 const int kBitsPerByteLog2 = 3; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 // here means your D and S have different sizes. | 152 // here means your D and S have different sizes. |
153 char VerifySizesAreEqual[sizeof(D) == sizeof(S) ? 1 : -1]; | 153 char VerifySizesAreEqual[sizeof(D) == sizeof(S) ? 1 : -1]; |
154 USE(VerifySizesAreEqual); | 154 USE(VerifySizesAreEqual); |
155 | 155 |
156 D destination; | 156 D destination; |
157 memcpy(&destination, &source, sizeof(destination)); | 157 memcpy(&destination, &source, sizeof(destination)); |
158 return destination; | 158 return destination; |
159 } | 159 } |
160 | 160 |
161 #ifdef __has_builtin | 161 #ifdef __has_builtin |
162 #define FLETCH_HAS_BUILTIN_SADDL_OVERFLOW \ | 162 #define DARTINO_HAS_BUILTIN_SADDL_OVERFLOW \ |
163 (__has_builtin(__builtin_saddl_overflow)) | 163 (__has_builtin(__builtin_saddl_overflow)) |
164 #define FLETCH_HAS_BUILTIN_SSUBL_OVERFLOW \ | 164 #define DARTINO_HAS_BUILTIN_SSUBL_OVERFLOW \ |
165 (__has_builtin(__builtin_ssubl_overflow)) | 165 (__has_builtin(__builtin_ssubl_overflow)) |
166 #define FLETCH_HAS_BUILTIN_SMULL_OVERFLOW \ | 166 #define DARTINO_HAS_BUILTIN_SMULL_OVERFLOW \ |
167 (__has_builtin(__builtin_smull_overflow)) | 167 (__has_builtin(__builtin_smull_overflow)) |
168 #endif | 168 #endif |
169 | 169 |
170 #ifdef TEMP_FAILURE_RETRY | 170 #ifdef TEMP_FAILURE_RETRY |
171 #undef TEMP_FAILURE_RETRY | 171 #undef TEMP_FAILURE_RETRY |
172 #endif | 172 #endif |
173 // The definition below is copied from Linux and adapted to avoid lint | 173 // The definition below is copied from Linux and adapted to avoid lint |
174 // errors (type long int changed to intptr_t and do/while split on | 174 // errors (type long int changed to intptr_t and do/while split on |
175 // separate lines with body in {}s) and to also block signals. | 175 // separate lines with body in {}s) and to also block signals. |
176 #define TEMP_FAILURE_RETRY(expression) \ | 176 #define TEMP_FAILURE_RETRY(expression) \ |
177 ({ \ | 177 ({ \ |
178 intptr_t __result; \ | 178 intptr_t __result; \ |
179 do { \ | 179 do { \ |
180 __result = (expression); \ | 180 __result = (expression); \ |
181 } while ((__result == -1L) && (errno == EINTR)); \ | 181 } while ((__result == -1L) && (errno == EINTR)); \ |
182 __result; \ | 182 __result; \ |
183 }) | 183 }) |
184 | 184 |
185 #define VOID_TEMP_FAILURE_RETRY(expression) \ | 185 #define VOID_TEMP_FAILURE_RETRY(expression) \ |
186 (static_cast<void>(TEMP_FAILURE_RETRY(expression))) | 186 (static_cast<void>(TEMP_FAILURE_RETRY(expression))) |
187 | 187 |
188 #endif // SRC_SHARED_GLOBALS_H_ | 188 #endif // SRC_SHARED_GLOBALS_H_ |
OLD | NEW |