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_GLOBALS_H_ | 5 #ifndef V8_GLOBALS_H_ |
6 #define V8_GLOBALS_H_ | 6 #define V8_GLOBALS_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 const int kPointerSizeLog2 = 3; | 144 const int kPointerSizeLog2 = 3; |
145 const intptr_t kIntptrSignBit = V8_INT64_C(0x8000000000000000); | 145 const intptr_t kIntptrSignBit = V8_INT64_C(0x8000000000000000); |
146 const uintptr_t kUintptrAllBitsSet = V8_UINT64_C(0xFFFFFFFFFFFFFFFF); | 146 const uintptr_t kUintptrAllBitsSet = V8_UINT64_C(0xFFFFFFFFFFFFFFFF); |
147 const bool kRequiresCodeRange = true; | 147 const bool kRequiresCodeRange = true; |
148 #if V8_TARGET_ARCH_MIPS64 | 148 #if V8_TARGET_ARCH_MIPS64 |
149 // To use pseudo-relative jumps such as j/jal instructions which have 28-bit | 149 // To use pseudo-relative jumps such as j/jal instructions which have 28-bit |
150 // encoded immediate, the addresses have to be in range of 256MB aligned | 150 // encoded immediate, the addresses have to be in range of 256MB aligned |
151 // region. Used only for large object space. | 151 // region. Used only for large object space. |
152 const size_t kMaximalCodeRangeSize = 256 * MB; | 152 const size_t kMaximalCodeRangeSize = 256 * MB; |
153 const size_t kCodeRangeAreaAlignment = 256 * MB; | 153 const size_t kCodeRangeAreaAlignment = 256 * MB; |
| 154 #elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX |
| 155 const size_t kMaximalCodeRangeSize = 512 * MB; |
| 156 const size_t kCodeRangeAreaAlignment = 64 * KB; // OS page on PPC Linux |
154 #else | 157 #else |
155 const size_t kMaximalCodeRangeSize = 512 * MB; | 158 const size_t kMaximalCodeRangeSize = 512 * MB; |
156 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. | 159 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. |
157 #endif | 160 #endif |
158 #if V8_OS_WIN | 161 #if V8_OS_WIN |
159 const size_t kMinimumCodeRangeSize = 4 * MB; | 162 const size_t kMinimumCodeRangeSize = 4 * MB; |
160 const size_t kReservedCodeRangePages = 1; | 163 const size_t kReservedCodeRangePages = 1; |
| 164 // On PPC Linux PageSize is 4MB |
| 165 #elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX |
| 166 const size_t kMinimumCodeRangeSize = 12 * MB; |
| 167 const size_t kReservedCodeRangePages = 0; |
161 #else | 168 #else |
162 const size_t kMinimumCodeRangeSize = 3 * MB; | 169 const size_t kMinimumCodeRangeSize = 3 * MB; |
163 const size_t kReservedCodeRangePages = 0; | 170 const size_t kReservedCodeRangePages = 0; |
164 #endif | 171 #endif |
165 #else | 172 #else |
166 const int kPointerSizeLog2 = 2; | 173 const int kPointerSizeLog2 = 2; |
167 const intptr_t kIntptrSignBit = 0x80000000; | 174 const intptr_t kIntptrSignBit = 0x80000000; |
168 const uintptr_t kUintptrAllBitsSet = 0xFFFFFFFFu; | 175 const uintptr_t kUintptrAllBitsSet = 0xFFFFFFFFu; |
169 #if V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT | 176 #if V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT |
170 // x32 port also requires code range. | 177 // x32 port also requires code range. |
171 const bool kRequiresCodeRange = true; | 178 const bool kRequiresCodeRange = true; |
172 const size_t kMaximalCodeRangeSize = 256 * MB; | 179 const size_t kMaximalCodeRangeSize = 256 * MB; |
173 const size_t kMinimumCodeRangeSize = 3 * MB; | 180 const size_t kMinimumCodeRangeSize = 3 * MB; |
174 const size_t kReservedCodeRangePages = 0; | |
175 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. | 181 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. |
| 182 #elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX |
| 183 const bool kRequiresCodeRange = false; |
| 184 const size_t kMaximalCodeRangeSize = 0 * MB; |
| 185 const size_t kMinimumCodeRangeSize = 0 * MB; |
| 186 const size_t kCodeRangeAreaAlignment = 64 * KB; // OS page on PPC Linux |
176 #else | 187 #else |
177 const bool kRequiresCodeRange = false; | 188 const bool kRequiresCodeRange = false; |
178 const size_t kMaximalCodeRangeSize = 0 * MB; | 189 const size_t kMaximalCodeRangeSize = 0 * MB; |
179 const size_t kMinimumCodeRangeSize = 0 * MB; | 190 const size_t kMinimumCodeRangeSize = 0 * MB; |
180 const size_t kReservedCodeRangePages = 0; | |
181 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. | 191 const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. |
182 #endif | 192 #endif |
| 193 const size_t kReservedCodeRangePages = 0; |
183 #endif | 194 #endif |
184 | 195 |
185 // The external allocation limit should be below 256 MB on all architectures | 196 // The external allocation limit should be below 256 MB on all architectures |
186 // to avoid that resource-constrained embedders run low on memory. | 197 // to avoid that resource-constrained embedders run low on memory. |
187 const int kExternalAllocationLimit = 192 * 1024 * 1024; | 198 const int kExternalAllocationLimit = 192 * 1024 * 1024; |
188 | 199 |
189 STATIC_ASSERT(kPointerSize == (1 << kPointerSizeLog2)); | 200 STATIC_ASSERT(kPointerSize == (1 << kPointerSizeLog2)); |
190 | 201 |
191 const int kBitsPerByte = 8; | 202 const int kBitsPerByte = 8; |
192 const int kBitsPerByteLog2 = 3; | 203 const int kBitsPerByteLog2 = 3; |
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1133 return static_cast<uint32_t>(bit_cast<uintptr_t>(address) >> | 1144 return static_cast<uint32_t>(bit_cast<uintptr_t>(address) >> |
1134 kPointerSizeLog2); | 1145 kPointerSizeLog2); |
1135 } | 1146 } |
1136 | 1147 |
1137 } // namespace internal | 1148 } // namespace internal |
1138 } // namespace v8 | 1149 } // namespace v8 |
1139 | 1150 |
1140 namespace i = v8::internal; | 1151 namespace i = v8::internal; |
1141 | 1152 |
1142 #endif // V8_GLOBALS_H_ | 1153 #endif // V8_GLOBALS_H_ |
OLD | NEW |