V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
build_config.h
1
// Copyright 2014 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_BASE_BUILD_CONFIG_H_
6
#define V8_BASE_BUILD_CONFIG_H_
7
8
#include "include/v8config.h"
9
10
// Processor architecture detection. For more info on what's defined, see:
11
// http://msdn.microsoft.com/en-us/library/b0084kay.aspx
12
// http://www.agner.org/optimize/calling_conventions.pdf
13
// or with gcc, run: "echo | gcc -E -dM -"
14
#if defined(_M_X64) || defined(__x86_64__)
15
#define V8_HOST_ARCH_X64 1
16
#if defined(__x86_64__) && __SIZEOF_POINTER__ == 4 // Check for x32.
17
#define V8_HOST_ARCH_32_BIT 1
18
#else
19
#define V8_HOST_ARCH_64_BIT 1
20
#endif
21
#elif defined(_M_IX86) || defined(__i386__)
22
#define V8_HOST_ARCH_IA32 1
23
#define V8_HOST_ARCH_32_BIT 1
24
#elif defined(__AARCH64EL__) || defined(_M_ARM64)
25
#define V8_HOST_ARCH_ARM64 1
26
#define V8_HOST_ARCH_64_BIT 1
27
#elif defined(__ARMEL__)
28
#define V8_HOST_ARCH_ARM 1
29
#define V8_HOST_ARCH_32_BIT 1
30
#elif defined(__mips64)
31
#define V8_HOST_ARCH_MIPS64 1
32
#define V8_HOST_ARCH_64_BIT 1
33
#elif defined(__MIPSEB__) || defined(__MIPSEL__)
34
#define V8_HOST_ARCH_MIPS 1
35
#define V8_HOST_ARCH_32_BIT 1
36
#elif defined(__PPC__) || defined(_ARCH_PPC)
37
#define V8_HOST_ARCH_PPC 1
38
#if defined(__PPC64__) || defined(_ARCH_PPC64)
39
#define V8_HOST_ARCH_64_BIT 1
40
#else
41
#define V8_HOST_ARCH_32_BIT 1
42
#endif
43
#elif defined(__s390__) || defined(__s390x__)
44
#define V8_HOST_ARCH_S390 1
45
#if defined(__s390x__)
46
#define V8_HOST_ARCH_64_BIT 1
47
#else
48
#define V8_HOST_ARCH_32_BIT 1
49
#endif
50
#else
51
#error "Host architecture was not detected as supported by v8"
52
#endif
53
54
#if defined(__ARM_ARCH_7A__) || \
55
defined(__ARM_ARCH_7R__) || \
56
defined(__ARM_ARCH_7__)
57
# define CAN_USE_ARMV7_INSTRUCTIONS 1
58
#ifdef __ARM_ARCH_EXT_IDIV__
59
#define CAN_USE_SUDIV 1
60
#endif
61
# ifndef CAN_USE_VFP3_INSTRUCTIONS
62
#define CAN_USE_VFP3_INSTRUCTIONS 1
63
# endif
64
#endif
65
66
#if defined(__ARM_ARCH_8A__)
67
#define CAN_USE_ARMV7_INSTRUCTIONS 1
68
#define CAN_USE_SUDIV 1
69
# define CAN_USE_ARMV8_INSTRUCTIONS 1
70
#ifndef CAN_USE_VFP3_INSTRUCTIONS
71
#define CAN_USE_VFP3_INSTRUCTIONS 1
72
#endif
73
#endif
74
75
76
// Target architecture detection. This may be set externally. If not, detect
77
// in the same way as the host architecture, that is, target the native
78
// environment as presented by the compiler.
79
#if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && \
80
!V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_MIPS && !V8_TARGET_ARCH_MIPS64 && \
81
!V8_TARGET_ARCH_PPC && !V8_TARGET_ARCH_S390
82
#if defined(_M_X64) || defined(__x86_64__)
83
#define V8_TARGET_ARCH_X64 1
84
#elif defined(_M_IX86) || defined(__i386__)
85
#define V8_TARGET_ARCH_IA32 1
86
#elif defined(__AARCH64EL__) || defined(_M_ARM64)
87
#define V8_TARGET_ARCH_ARM64 1
88
#elif defined(__ARMEL__)
89
#define V8_TARGET_ARCH_ARM 1
90
#elif defined(__mips64)
91
#define V8_TARGET_ARCH_MIPS64 1
92
#elif defined(__MIPSEB__) || defined(__MIPSEL__)
93
#define V8_TARGET_ARCH_MIPS 1
94
#elif defined(_ARCH_PPC)
95
#define V8_TARGET_ARCH_PPC 1
96
#else
97
#error Target architecture was not detected as supported by v8
98
#endif
99
#endif
100
101
// Determine architecture pointer size.
102
#if V8_TARGET_ARCH_IA32
103
#define V8_TARGET_ARCH_32_BIT 1
104
#elif V8_TARGET_ARCH_X64
105
#if !V8_TARGET_ARCH_32_BIT && !V8_TARGET_ARCH_64_BIT
106
#if defined(__x86_64__) && __SIZEOF_POINTER__ == 4 // Check for x32.
107
#define V8_TARGET_ARCH_32_BIT 1
108
#else
109
#define V8_TARGET_ARCH_64_BIT 1
110
#endif
111
#endif
112
#elif V8_TARGET_ARCH_ARM
113
#define V8_TARGET_ARCH_32_BIT 1
114
#elif V8_TARGET_ARCH_ARM64
115
#define V8_TARGET_ARCH_64_BIT 1
116
#elif V8_TARGET_ARCH_MIPS
117
#define V8_TARGET_ARCH_32_BIT 1
118
#elif V8_TARGET_ARCH_MIPS64
119
#define V8_TARGET_ARCH_64_BIT 1
120
#elif V8_TARGET_ARCH_PPC
121
#if V8_TARGET_ARCH_PPC64
122
#define V8_TARGET_ARCH_64_BIT 1
123
#else
124
#define V8_TARGET_ARCH_32_BIT 1
125
#endif
126
#elif V8_TARGET_ARCH_S390
127
#if V8_TARGET_ARCH_S390X
128
#define V8_TARGET_ARCH_64_BIT 1
129
#else
130
#define V8_TARGET_ARCH_32_BIT 1
131
#endif
132
#else
133
#error Unknown target architecture pointer size
134
#endif
135
136
// Check for supported combinations of host and target architectures.
137
#if V8_TARGET_ARCH_IA32 && !V8_HOST_ARCH_IA32
138
#error Target architecture ia32 is only supported on ia32 host
139
#endif
140
#if (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT && \
141
!(V8_HOST_ARCH_X64 && V8_HOST_ARCH_64_BIT))
142
#error Target architecture x64 is only supported on x64 host
143
#endif
144
#if (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT && \
145
!(V8_HOST_ARCH_X64 && V8_HOST_ARCH_32_BIT))
146
#error Target architecture x32 is only supported on x64 host with x32 support
147
#endif
148
#if (V8_TARGET_ARCH_ARM && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_ARM))
149
#error Target architecture arm is only supported on arm and ia32 host
150
#endif
151
#if (V8_TARGET_ARCH_ARM64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_ARM64))
152
#error Target architecture arm64 is only supported on arm64 and x64 host
153
#endif
154
#if (V8_TARGET_ARCH_MIPS && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_MIPS))
155
#error Target architecture mips is only supported on mips and ia32 host
156
#endif
157
#if (V8_TARGET_ARCH_MIPS64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_MIPS64))
158
#error Target architecture mips64 is only supported on mips64 and x64 host
159
#endif
160
161
// Determine architecture endianness.
162
#if V8_TARGET_ARCH_IA32
163
#define V8_TARGET_LITTLE_ENDIAN 1
164
#elif V8_TARGET_ARCH_X64
165
#define V8_TARGET_LITTLE_ENDIAN 1
166
#elif V8_TARGET_ARCH_ARM
167
#define V8_TARGET_LITTLE_ENDIAN 1
168
#elif V8_TARGET_ARCH_ARM64
169
#define V8_TARGET_LITTLE_ENDIAN 1
170
#elif V8_TARGET_ARCH_MIPS
171
#if defined(__MIPSEB__)
172
#define V8_TARGET_BIG_ENDIAN 1
173
#else
174
#define V8_TARGET_LITTLE_ENDIAN 1
175
#endif
176
#elif V8_TARGET_ARCH_MIPS64
177
#if defined(__MIPSEB__) || defined(V8_TARGET_ARCH_MIPS64_BE)
178
#define V8_TARGET_BIG_ENDIAN 1
179
#else
180
#define V8_TARGET_LITTLE_ENDIAN 1
181
#endif
182
#elif __BIG_ENDIAN__ // FOR PPCGR on AIX
183
#define V8_TARGET_BIG_ENDIAN 1
184
#elif V8_TARGET_ARCH_PPC_LE
185
#define V8_TARGET_LITTLE_ENDIAN 1
186
#elif V8_TARGET_ARCH_PPC_BE
187
#define V8_TARGET_BIG_ENDIAN 1
188
#elif V8_TARGET_ARCH_S390
189
#if V8_TARGET_ARCH_S390_LE_SIM
190
#define V8_TARGET_LITTLE_ENDIAN 1
191
#else
192
#define V8_TARGET_BIG_ENDIAN 1
193
#endif
194
#else
195
#error Unknown target architecture endianness
196
#endif
197
198
#if defined(V8_TARGET_ARCH_IA32) || defined(V8_TARGET_ARCH_X64)
199
#define V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK true
200
#else
201
#define V8_TARGET_ARCH_STORES_RETURN_ADDRESS_ON_STACK false
202
#endif
203
204
// Number of bits to represent the page size for paged spaces. The value of 19
205
// gives 512Kb bytes per page.
206
const
int
kPageSizeBits = 19;
207
208
#endif // V8_BASE_BUILD_CONFIG_H_
v8
src
base
build_config.h
Generated on Tue Dec 25 2018 14:38:14 by
1.8.14