Reland "Rename kIs64BitArch with kRequiresCodeRange."

R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/331823002

Patch from Weiliang Lin <weiliang.lin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21837 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 3b545740
...@@ -3865,8 +3865,8 @@ class V8_EXPORT ResourceConstraints { ...@@ -3865,8 +3865,8 @@ class V8_EXPORT ResourceConstraints {
void set_max_available_threads(int value) { void set_max_available_threads(int value) {
max_available_threads_ = value; max_available_threads_ = value;
} }
int code_range_size() const { return code_range_size_; } size_t code_range_size() const { return code_range_size_; }
void set_code_range_size(int value) { void set_code_range_size(size_t value) {
code_range_size_ = value; code_range_size_ = value;
} }
...@@ -3876,7 +3876,7 @@ class V8_EXPORT ResourceConstraints { ...@@ -3876,7 +3876,7 @@ class V8_EXPORT ResourceConstraints {
int max_executable_size_; int max_executable_size_;
uint32_t* stack_limit_; uint32_t* stack_limit_;
int max_available_threads_; int max_available_threads_;
int code_range_size_; size_t code_range_size_;
}; };
......
...@@ -465,11 +465,12 @@ void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory, ...@@ -465,11 +465,12 @@ void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory,
set_max_available_threads(i::Max(i::Min(number_of_processors, 4u), 1u)); set_max_available_threads(i::Max(i::Min(number_of_processors, 4u), 1u));
if (virtual_memory_limit > 0 && i::kIs64BitArch) { if (virtual_memory_limit > 0 && i::kRequiresCodeRange) {
// Reserve no more than 1/8 of the memory for the code range, but at most // Reserve no more than 1/8 of the memory for the code range, but at most
// 512 MB. // kMaximalCodeRangeSize.
set_code_range_size( set_code_range_size(
i::Min(512, static_cast<int>((virtual_memory_limit >> 3) / i::MB))); i::Min(i::kMaximalCodeRangeSize / i::MB,
static_cast<size_t>((virtual_memory_limit >> 3) / i::MB)));
} }
} }
...@@ -480,7 +481,7 @@ bool SetResourceConstraints(Isolate* v8_isolate, ...@@ -480,7 +481,7 @@ bool SetResourceConstraints(Isolate* v8_isolate,
int semi_space_size = constraints->max_semi_space_size(); int semi_space_size = constraints->max_semi_space_size();
int old_space_size = constraints->max_old_space_size(); int old_space_size = constraints->max_old_space_size();
int max_executable_size = constraints->max_executable_size(); int max_executable_size = constraints->max_executable_size();
int code_range_size = constraints->code_range_size(); size_t code_range_size = constraints->code_range_size();
if (semi_space_size != 0 || old_space_size != 0 || if (semi_space_size != 0 || old_space_size != 0 ||
max_executable_size != 0 || code_range_size != 0) { max_executable_size != 0 || code_range_size != 0) {
// After initialization it's too late to change Heap constraints. // After initialization it's too late to change Heap constraints.
......
...@@ -153,12 +153,14 @@ const int kDoubleSizeLog2 = 3; ...@@ -153,12 +153,14 @@ const int kDoubleSizeLog2 = 3;
const int kPointerSizeLog2 = 3; const int kPointerSizeLog2 = 3;
const intptr_t kIntptrSignBit = V8_INT64_C(0x8000000000000000); const intptr_t kIntptrSignBit = V8_INT64_C(0x8000000000000000);
const uintptr_t kUintptrAllBitsSet = V8_UINT64_C(0xFFFFFFFFFFFFFFFF); const uintptr_t kUintptrAllBitsSet = V8_UINT64_C(0xFFFFFFFFFFFFFFFF);
const bool kIs64BitArch = true; const bool kRequiresCodeRange = true;
const size_t kMaximalCodeRangeSize = 512 * MB;
#else #else
const int kPointerSizeLog2 = 2; const int kPointerSizeLog2 = 2;
const intptr_t kIntptrSignBit = 0x80000000; const intptr_t kIntptrSignBit = 0x80000000;
const uintptr_t kUintptrAllBitsSet = 0xFFFFFFFFu; const uintptr_t kUintptrAllBitsSet = 0xFFFFFFFFu;
const bool kIs64BitArch = false; const bool kRequiresCodeRange = false;
const size_t kMaximalCodeRangeSize = 0 * MB;
#endif #endif
const int kBitsPerByte = 8; const int kBitsPerByte = 8;
......
...@@ -4936,7 +4936,7 @@ void Heap::IterateStrongRoots(ObjectVisitor* v, VisitMode mode) { ...@@ -4936,7 +4936,7 @@ void Heap::IterateStrongRoots(ObjectVisitor* v, VisitMode mode) {
bool Heap::ConfigureHeap(int max_semi_space_size, bool Heap::ConfigureHeap(int max_semi_space_size,
int max_old_space_size, int max_old_space_size,
int max_executable_size, int max_executable_size,
int code_range_size) { size_t code_range_size) {
if (HasBeenSetUp()) return false; if (HasBeenSetUp()) return false;
// Overwrite default configuration. // Overwrite default configuration.
......
...@@ -551,7 +551,7 @@ class Heap { ...@@ -551,7 +551,7 @@ class Heap {
bool ConfigureHeap(int max_semi_space_size, bool ConfigureHeap(int max_semi_space_size,
int max_old_space_size, int max_old_space_size,
int max_executable_size, int max_executable_size,
int code_range_size); size_t code_range_size);
bool ConfigureHeapDefault(); bool ConfigureHeapDefault();
// Prepares the heap, setting up memory areas that are needed in the isolate // Prepares the heap, setting up memory areas that are needed in the isolate
...@@ -1519,7 +1519,7 @@ class Heap { ...@@ -1519,7 +1519,7 @@ class Heap {
Object* roots_[kRootListLength]; Object* roots_[kRootListLength];
intptr_t code_range_size_; size_t code_range_size_;
int reserved_semispace_size_; int reserved_semispace_size_;
int max_semi_space_size_; int max_semi_space_size_;
int initial_semispace_size_; int initial_semispace_size_;
......
...@@ -115,15 +115,17 @@ bool CodeRange::SetUp(size_t requested) { ...@@ -115,15 +115,17 @@ bool CodeRange::SetUp(size_t requested) {
ASSERT(code_range_ == NULL); ASSERT(code_range_ == NULL);
if (requested == 0) { if (requested == 0) {
// On 64-bit platform(s), we put all code objects in a 512 MB range of // When a target requires the code range feature, we put all code objects
// virtual address space, so that they can call each other with near calls. // in a kMaximalCodeRangeSize range of virtual address space, so that
if (kIs64BitArch) { // they can call each other with near calls.
requested = 512 * MB; if (kRequiresCodeRange) {
requested = kMaximalCodeRangeSize;
} else { } else {
return true; return true;
} }
} }
ASSERT(!kRequiresCodeRange || requested <= kMaximalCodeRangeSize);
code_range_ = new VirtualMemory(requested); code_range_ = new VirtualMemory(requested);
CHECK(code_range_ != NULL); CHECK(code_range_ != NULL);
if (!code_range_->IsReserved()) { if (!code_range_->IsReserved()) {
......
...@@ -196,12 +196,12 @@ class Block { ...@@ -196,12 +196,12 @@ class Block {
TEST(CodeRange) { TEST(CodeRange) {
const int code_range_size = 32*MB; const size_t code_range_size = 32*MB;
CcTest::InitializeVM(); CcTest::InitializeVM();
CodeRange code_range(reinterpret_cast<Isolate*>(CcTest::isolate())); CodeRange code_range(reinterpret_cast<Isolate*>(CcTest::isolate()));
code_range.SetUp(code_range_size); code_range.SetUp(code_range_size);
int current_allocated = 0; size_t current_allocated = 0;
int total_allocated = 0; size_t total_allocated = 0;
List<Block> blocks(1000); List<Block> blocks(1000);
while (total_allocated < 5 * code_range_size) { while (total_allocated < 5 * code_range_size) {
......
...@@ -221,7 +221,7 @@ TEST(MemoryChunk) { ...@@ -221,7 +221,7 @@ TEST(MemoryChunk) {
// With CodeRange. // With CodeRange.
CodeRange* code_range = new CodeRange(isolate); CodeRange* code_range = new CodeRange(isolate);
const int code_range_size = 32 * MB; const size_t code_range_size = 32 * MB;
if (!code_range->SetUp(code_range_size)) return; if (!code_range->SetUp(code_range_size)) return;
VerifyMemoryChunk(isolate, VerifyMemoryChunk(isolate,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment