Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1317)

Side by Side Diff: src/heap/spaces.cc

Issue 2010243003: Move hashmap into base/. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 #include "src/heap/spaces.h" 5 #include "src/heap/spaces.h"
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/base/platform/platform.h" 8 #include "src/base/platform/platform.h"
9 #include "src/base/platform/semaphore.h" 9 #include "src/base/platform/semaphore.h"
10 #include "src/full-codegen/full-codegen.h" 10 #include "src/full-codegen/full-codegen.h"
(...skipping 2942 matching lines...) Expand 10 before | Expand all | Expand 10 after
2953 2953
2954 HeapObject* object = current_->GetObject(); 2954 HeapObject* object = current_->GetObject();
2955 current_ = current_->next_page(); 2955 current_ = current_->next_page();
2956 return object; 2956 return object;
2957 } 2957 }
2958 2958
2959 2959
2960 // ----------------------------------------------------------------------------- 2960 // -----------------------------------------------------------------------------
2961 // LargeObjectSpace 2961 // LargeObjectSpace
2962 2962
2963
2964 LargeObjectSpace::LargeObjectSpace(Heap* heap, AllocationSpace id) 2963 LargeObjectSpace::LargeObjectSpace(Heap* heap, AllocationSpace id)
2965 : Space(heap, id, NOT_EXECUTABLE), // Managed on a per-allocation basis 2964 : Space(heap, id, NOT_EXECUTABLE), // Managed on a per-allocation basis
2966 first_page_(NULL), 2965 first_page_(NULL),
2967 size_(0), 2966 size_(0),
2968 page_count_(0), 2967 page_count_(0),
2969 objects_size_(0), 2968 objects_size_(0),
2970 chunk_map_(HashMap::PointersMatch, 1024) {} 2969 chunk_map_(base::HashMap::PointersMatch, 1024) {}
2971
2972 2970
2973 LargeObjectSpace::~LargeObjectSpace() {} 2971 LargeObjectSpace::~LargeObjectSpace() {}
2974 2972
2975 2973
2976 bool LargeObjectSpace::SetUp() { 2974 bool LargeObjectSpace::SetUp() {
2977 first_page_ = NULL; 2975 first_page_ = NULL;
2978 size_ = 0; 2976 size_ = 0;
2979 page_count_ = 0; 2977 page_count_ = 0;
2980 objects_size_ = 0; 2978 objects_size_ = 0;
2981 chunk_map_.Clear(); 2979 chunk_map_.Clear();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3016 objects_size_ += object_size; 3014 objects_size_ += object_size;
3017 page_count_++; 3015 page_count_++;
3018 page->set_next_page(first_page_); 3016 page->set_next_page(first_page_);
3019 first_page_ = page; 3017 first_page_ = page;
3020 3018
3021 // Register all MemoryChunk::kAlignment-aligned chunks covered by 3019 // Register all MemoryChunk::kAlignment-aligned chunks covered by
3022 // this large page in the chunk map. 3020 // this large page in the chunk map.
3023 uintptr_t base = reinterpret_cast<uintptr_t>(page) / MemoryChunk::kAlignment; 3021 uintptr_t base = reinterpret_cast<uintptr_t>(page) / MemoryChunk::kAlignment;
3024 uintptr_t limit = base + (page->size() - 1) / MemoryChunk::kAlignment; 3022 uintptr_t limit = base + (page->size() - 1) / MemoryChunk::kAlignment;
3025 for (uintptr_t key = base; key <= limit; key++) { 3023 for (uintptr_t key = base; key <= limit; key++) {
3026 HashMap::Entry* entry = chunk_map_.LookupOrInsert( 3024 base::HashMap::Entry* entry = chunk_map_.LookupOrInsert(
3027 reinterpret_cast<void*>(key), static_cast<uint32_t>(key)); 3025 reinterpret_cast<void*>(key), static_cast<uint32_t>(key));
3028 DCHECK(entry != NULL); 3026 DCHECK(entry != NULL);
3029 entry->value = page; 3027 entry->value = page;
3030 } 3028 }
3031 3029
3032 HeapObject* object = page->GetObject(); 3030 HeapObject* object = page->GetObject();
3033 MSAN_ALLOCATED_UNINITIALIZED_MEMORY(object->address(), object_size); 3031 MSAN_ALLOCATED_UNINITIALIZED_MEMORY(object->address(), object_size);
3034 3032
3035 if (Heap::ShouldZapGarbage()) { 3033 if (Heap::ShouldZapGarbage()) {
3036 // Make the object consistent so the heap can be verified in OldSpaceStep. 3034 // Make the object consistent so the heap can be verified in OldSpaceStep.
(...skipping 26 matching lines...) Expand all
3063 LargePage* page = FindPage(a); 3061 LargePage* page = FindPage(a);
3064 if (page != NULL) { 3062 if (page != NULL) {
3065 return page->GetObject(); 3063 return page->GetObject();
3066 } 3064 }
3067 return Smi::FromInt(0); // Signaling not found. 3065 return Smi::FromInt(0); // Signaling not found.
3068 } 3066 }
3069 3067
3070 3068
3071 LargePage* LargeObjectSpace::FindPage(Address a) { 3069 LargePage* LargeObjectSpace::FindPage(Address a) {
3072 uintptr_t key = reinterpret_cast<uintptr_t>(a) / MemoryChunk::kAlignment; 3070 uintptr_t key = reinterpret_cast<uintptr_t>(a) / MemoryChunk::kAlignment;
3073 HashMap::Entry* e = chunk_map_.Lookup(reinterpret_cast<void*>(key), 3071 base::HashMap::Entry* e = chunk_map_.Lookup(reinterpret_cast<void*>(key),
3074 static_cast<uint32_t>(key)); 3072 static_cast<uint32_t>(key));
3075 if (e != NULL) { 3073 if (e != NULL) {
3076 DCHECK(e->value != NULL); 3074 DCHECK(e->value != NULL);
3077 LargePage* page = reinterpret_cast<LargePage*>(e->value); 3075 LargePage* page = reinterpret_cast<LargePage*>(e->value);
3078 DCHECK(LargePage::IsValid(page)); 3076 DCHECK(LargePage::IsValid(page));
3079 if (page->Contains(a)) { 3077 if (page->Contains(a)) {
3080 return page; 3078 return page;
3081 } 3079 }
3082 } 3080 }
3083 return NULL; 3081 return NULL;
3084 } 3082 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
3261 object->ShortPrint(); 3259 object->ShortPrint();
3262 PrintF("\n"); 3260 PrintF("\n");
3263 } 3261 }
3264 printf(" --------------------------------------\n"); 3262 printf(" --------------------------------------\n");
3265 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); 3263 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes());
3266 } 3264 }
3267 3265
3268 #endif // DEBUG 3266 #endif // DEBUG
3269 } // namespace internal 3267 } // namespace internal
3270 } // namespace v8 3268 } // namespace v8
OLDNEW
« src/base/hashmap.cc ('K') | « src/heap/spaces.h ('k') | src/isolate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698