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

Side by Side Diff: src/spaces.h

Issue 9950048: Reduce initial boot-up memory use. This is an other attempt at what (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/spaces.cc » ('j') | src/spaces.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 Address base, 630 Address base,
631 size_t size, 631 size_t size,
632 Address area_start, 632 Address area_start,
633 Address area_end, 633 Address area_end,
634 Executability executable, 634 Executability executable,
635 Space* owner); 635 Space* owner);
636 636
637 friend class MemoryAllocator; 637 friend class MemoryAllocator;
638 }; 638 };
639 639
640
640 STATIC_CHECK(sizeof(MemoryChunk) <= MemoryChunk::kHeaderSize); 641 STATIC_CHECK(sizeof(MemoryChunk) <= MemoryChunk::kHeaderSize);
641 642
643
642 // ----------------------------------------------------------------------------- 644 // -----------------------------------------------------------------------------
643 // A page is a memory chunk of a size 1MB. Large object pages may be larger. 645 // A page is a memory chunk of a size 1MB. Large object pages may be larger.
644 // 646 //
645 // The only way to get a page pointer is by calling factory methods: 647 // The only way to get a page pointer is by calling factory methods:
646 // Page* p = Page::FromAddress(addr); or 648 // Page* p = Page::FromAddress(addr); or
647 // Page* p = Page::FromAllocationTop(top); 649 // Page* p = Page::FromAllocationTop(top);
648 class Page : public MemoryChunk { 650 class Page : public MemoryChunk {
649 public: 651 public:
650 // Returns the page containing a given address. The address ranges 652 // Returns the page containing a given address. The address ranges
651 // from [page_addr .. page_addr + kPageSize[ 653 // from [page_addr .. page_addr + kPageSize[
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 class MemoryAllocator { 945 class MemoryAllocator {
944 public: 946 public:
945 explicit MemoryAllocator(Isolate* isolate); 947 explicit MemoryAllocator(Isolate* isolate);
946 948
947 // Initializes its internal bookkeeping structures. 949 // Initializes its internal bookkeeping structures.
948 // Max capacity of the total space and executable memory limit. 950 // Max capacity of the total space and executable memory limit.
949 bool SetUp(intptr_t max_capacity, intptr_t capacity_executable); 951 bool SetUp(intptr_t max_capacity, intptr_t capacity_executable);
950 952
951 void TearDown(); 953 void TearDown();
952 954
953 Page* AllocatePage(PagedSpace* owner, Executability executable); 955 Page* AllocatePage(
956 intptr_t size, PagedSpace* owner, Executability executable);
954 957
955 LargePage* AllocateLargePage(intptr_t object_size, 958 LargePage* AllocateLargePage(intptr_t object_size,
956 Executability executable, 959 Executability executable,
Michael Starzinger 2012/04/02 08:25:05 I know you didn't touch that line, but something i
957 Space* owner); 960 Space* owner);
958 961
959 void Free(MemoryChunk* chunk); 962 void Free(MemoryChunk* chunk);
960 963
961 // Returns the maximum available bytes of heaps. 964 // Returns the maximum available bytes of heaps.
962 intptr_t Available() { return capacity_ < size_ ? 0 : capacity_ - size_; } 965 intptr_t Available() { return capacity_ < size_ ? 0 : capacity_ - size_; }
963 966
964 // Returns allocated spaces in bytes. 967 // Returns allocated spaces in bytes.
965 intptr_t Size() { return size_; } 968 intptr_t Size() { return size_; }
966 969
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 inline int AreaSize() { 1621 inline int AreaSize() {
1619 return area_size_; 1622 return area_size_;
1620 } 1623 }
1621 1624
1622 protected: 1625 protected:
1623 int area_size_; 1626 int area_size_;
1624 1627
1625 // Maximum capacity of this space. 1628 // Maximum capacity of this space.
1626 intptr_t max_capacity_; 1629 intptr_t max_capacity_;
1627 1630
1631 intptr_t SizeOfFirstPage();
1632
1628 // Accounting information for this space. 1633 // Accounting information for this space.
1629 AllocationStats accounting_stats_; 1634 AllocationStats accounting_stats_;
1630 1635
1631 // The dummy page that anchors the double linked list of pages. 1636 // The dummy page that anchors the double linked list of pages.
1632 Page anchor_; 1637 Page anchor_;
1633 1638
1634 // The space's free list. 1639 // The space's free list.
1635 FreeList free_list_; 1640 FreeList free_list_;
1636 1641
1637 // Normal allocation information. 1642 // Normal allocation information.
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after
2636 } 2641 }
2637 // Must be small, since an iteration is used for lookup. 2642 // Must be small, since an iteration is used for lookup.
2638 static const int kMaxComments = 64; 2643 static const int kMaxComments = 64;
2639 }; 2644 };
2640 #endif 2645 #endif
2641 2646
2642 2647
2643 } } // namespace v8::internal 2648 } } // namespace v8::internal
2644 2649
2645 #endif // V8_SPACES_H_ 2650 #endif // V8_SPACES_H_
OLDNEW
« no previous file with comments | « no previous file | src/spaces.cc » ('j') | src/spaces.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698