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

Side by Side Diff: src/spaces.cc

Issue 504026: Extend the maximum size map space... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years 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 | Annotate | Revision Log
« no previous file with comments | « src/spaces.h ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 return initial_chunk_->address(); 391 return initial_chunk_->address();
392 } 392 }
393 393
394 394
395 static int PagesInChunk(Address start, size_t size) { 395 static int PagesInChunk(Address start, size_t size) {
396 // The first page starts on the first page-aligned address from start onward 396 // The first page starts on the first page-aligned address from start onward
397 // and the last page ends on the last page-aligned address before 397 // and the last page ends on the last page-aligned address before
398 // start+size. Page::kPageSize is a power of two so we can divide by 398 // start+size. Page::kPageSize is a power of two so we can divide by
399 // shifting. 399 // shifting.
400 return static_cast<int>((RoundDown(start + size, Page::kPageSize) 400 return static_cast<int>((RoundDown(start + size, Page::kPageSize)
401 - RoundUp(start, Page::kPageSize)) >> Page::kPageSizeBits); 401 - RoundUp(start, Page::kPageSize)) >> kPageSizeBits);
402 } 402 }
403 403
404 404
405 Page* MemoryAllocator::AllocatePages(int requested_pages, int* allocated_pages, 405 Page* MemoryAllocator::AllocatePages(int requested_pages, int* allocated_pages,
406 PagedSpace* owner) { 406 PagedSpace* owner) {
407 if (requested_pages <= 0) return Page::FromAddress(NULL); 407 if (requested_pages <= 0) return Page::FromAddress(NULL);
408 size_t chunk_size = requested_pages * Page::kPageSize; 408 size_t chunk_size = requested_pages * Page::kPageSize;
409 409
410 // There is not enough space to guarantee the desired number pages can be 410 // There is not enough space to guarantee the desired number pages can be
411 // allocated. 411 // allocated.
412 if (size_ + static_cast<int>(chunk_size) > capacity_) { 412 if (size_ + static_cast<int>(chunk_size) > capacity_) {
413 // Request as many pages as we can. 413 // Request as many pages as we can.
414 chunk_size = capacity_ - size_; 414 chunk_size = capacity_ - size_;
415 requested_pages = static_cast<int>(chunk_size >> Page::kPageSizeBits); 415 requested_pages = static_cast<int>(chunk_size >> kPageSizeBits);
416 416
417 if (requested_pages <= 0) return Page::FromAddress(NULL); 417 if (requested_pages <= 0) return Page::FromAddress(NULL);
418 } 418 }
419 void* chunk = AllocateRawMemory(chunk_size, &chunk_size, owner->executable()); 419 void* chunk = AllocateRawMemory(chunk_size, &chunk_size, owner->executable());
420 if (chunk == NULL) return Page::FromAddress(NULL); 420 if (chunk == NULL) return Page::FromAddress(NULL);
421 LOG(NewEvent("PagedChunk", chunk, chunk_size)); 421 LOG(NewEvent("PagedChunk", chunk, chunk_size));
422 422
423 *allocated_pages = PagesInChunk(static_cast<Address>(chunk), chunk_size); 423 *allocated_pages = PagesInChunk(static_cast<Address>(chunk), chunk_size);
424 if (*allocated_pages == 0) { 424 if (*allocated_pages == 0) {
425 FreeRawMemory(chunk, chunk_size); 425 FreeRawMemory(chunk, chunk_size);
(...skipping 2365 matching lines...) Expand 10 before | Expand all | Expand 10 after
2791 reinterpret_cast<Object**>(object->address() 2791 reinterpret_cast<Object**>(object->address()
2792 + Page::kObjectAreaSize), 2792 + Page::kObjectAreaSize),
2793 allocation_top); 2793 allocation_top);
2794 PrintF("\n"); 2794 PrintF("\n");
2795 } 2795 }
2796 } 2796 }
2797 } 2797 }
2798 #endif // DEBUG 2798 #endif // DEBUG
2799 2799
2800 } } // namespace v8::internal 2800 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/spaces.h ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698