| OLD | NEW | 
|---|
| 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 #ifndef V8_HEAP_SPACES_H_ | 5 #ifndef V8_HEAP_SPACES_H_ | 
| 6 #define V8_HEAP_SPACES_H_ | 6 #define V8_HEAP_SPACES_H_ | 
| 7 | 7 | 
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" | 
| 9 #include "src/base/atomicops.h" | 9 #include "src/base/atomicops.h" | 
|  | 10 #include "src/base/bits.h" | 
| 10 #include "src/base/platform/mutex.h" | 11 #include "src/base/platform/mutex.h" | 
| 11 #include "src/hashmap.h" | 12 #include "src/hashmap.h" | 
| 12 #include "src/list.h" | 13 #include "src/list.h" | 
| 13 #include "src/log.h" | 14 #include "src/log.h" | 
| 14 #include "src/utils.h" | 15 #include "src/utils.h" | 
| 15 | 16 | 
| 16 namespace v8 { | 17 namespace v8 { | 
| 17 namespace internal { | 18 namespace internal { | 
| 18 | 19 | 
| 19 class Isolate; | 20 class Isolate; | 
| (...skipping 2593 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2613   // Creates a map space object with a maximum capacity. | 2614   // Creates a map space object with a maximum capacity. | 
| 2614   MapSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 2615   MapSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 
| 2615       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE), | 2616       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE), | 
| 2616         max_map_space_pages_(kMaxMapPageIndex - 1) {} | 2617         max_map_space_pages_(kMaxMapPageIndex - 1) {} | 
| 2617 | 2618 | 
| 2618   // Given an index, returns the page address. | 2619   // Given an index, returns the page address. | 
| 2619   // TODO(1600): this limit is artifical just to keep code compilable | 2620   // TODO(1600): this limit is artifical just to keep code compilable | 
| 2620   static const int kMaxMapPageIndex = 1 << 16; | 2621   static const int kMaxMapPageIndex = 1 << 16; | 
| 2621 | 2622 | 
| 2622   virtual int RoundSizeDownToObjectAlignment(int size) { | 2623   virtual int RoundSizeDownToObjectAlignment(int size) { | 
| 2623     if (IsPowerOf2(Map::kSize)) { | 2624     if (base::bits::IsPowerOfTwo32(Map::kSize)) { | 
| 2624       return RoundDown(size, Map::kSize); | 2625       return RoundDown(size, Map::kSize); | 
| 2625     } else { | 2626     } else { | 
| 2626       return (size / Map::kSize) * Map::kSize; | 2627       return (size / Map::kSize) * Map::kSize; | 
| 2627     } | 2628     } | 
| 2628   } | 2629   } | 
| 2629 | 2630 | 
| 2630  protected: | 2631  protected: | 
| 2631   virtual void VerifyObject(HeapObject* obj); | 2632   virtual void VerifyObject(HeapObject* obj); | 
| 2632 | 2633 | 
| 2633  private: | 2634  private: | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 2648 // ----------------------------------------------------------------------------- | 2649 // ----------------------------------------------------------------------------- | 
| 2649 // Old space for simple property cell objects | 2650 // Old space for simple property cell objects | 
| 2650 | 2651 | 
| 2651 class CellSpace : public PagedSpace { | 2652 class CellSpace : public PagedSpace { | 
| 2652  public: | 2653  public: | 
| 2653   // Creates a property cell space object with a maximum capacity. | 2654   // Creates a property cell space object with a maximum capacity. | 
| 2654   CellSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 2655   CellSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 
| 2655       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE) {} | 2656       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE) {} | 
| 2656 | 2657 | 
| 2657   virtual int RoundSizeDownToObjectAlignment(int size) { | 2658   virtual int RoundSizeDownToObjectAlignment(int size) { | 
| 2658     if (IsPowerOf2(Cell::kSize)) { | 2659     if (base::bits::IsPowerOfTwo32(Cell::kSize)) { | 
| 2659       return RoundDown(size, Cell::kSize); | 2660       return RoundDown(size, Cell::kSize); | 
| 2660     } else { | 2661     } else { | 
| 2661       return (size / Cell::kSize) * Cell::kSize; | 2662       return (size / Cell::kSize) * Cell::kSize; | 
| 2662     } | 2663     } | 
| 2663   } | 2664   } | 
| 2664 | 2665 | 
| 2665  protected: | 2666  protected: | 
| 2666   virtual void VerifyObject(HeapObject* obj); | 2667   virtual void VerifyObject(HeapObject* obj); | 
| 2667 | 2668 | 
| 2668  public: | 2669  public: | 
| 2669   TRACK_MEMORY("CellSpace") | 2670   TRACK_MEMORY("CellSpace") | 
| 2670 }; | 2671 }; | 
| 2671 | 2672 | 
| 2672 | 2673 | 
| 2673 // ----------------------------------------------------------------------------- | 2674 // ----------------------------------------------------------------------------- | 
| 2674 // Old space for all global object property cell objects | 2675 // Old space for all global object property cell objects | 
| 2675 | 2676 | 
| 2676 class PropertyCellSpace : public PagedSpace { | 2677 class PropertyCellSpace : public PagedSpace { | 
| 2677  public: | 2678  public: | 
| 2678   // Creates a property cell space object with a maximum capacity. | 2679   // Creates a property cell space object with a maximum capacity. | 
| 2679   PropertyCellSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 2680   PropertyCellSpace(Heap* heap, intptr_t max_capacity, AllocationSpace id) | 
| 2680       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE) {} | 2681       : PagedSpace(heap, max_capacity, id, NOT_EXECUTABLE) {} | 
| 2681 | 2682 | 
| 2682   virtual int RoundSizeDownToObjectAlignment(int size) { | 2683   virtual int RoundSizeDownToObjectAlignment(int size) { | 
| 2683     if (IsPowerOf2(PropertyCell::kSize)) { | 2684     if (base::bits::IsPowerOfTwo32(PropertyCell::kSize)) { | 
| 2684       return RoundDown(size, PropertyCell::kSize); | 2685       return RoundDown(size, PropertyCell::kSize); | 
| 2685     } else { | 2686     } else { | 
| 2686       return (size / PropertyCell::kSize) * PropertyCell::kSize; | 2687       return (size / PropertyCell::kSize) * PropertyCell::kSize; | 
| 2687     } | 2688     } | 
| 2688   } | 2689   } | 
| 2689 | 2690 | 
| 2690  protected: | 2691  protected: | 
| 2691   virtual void VerifyObject(HeapObject* obj); | 2692   virtual void VerifyObject(HeapObject* obj); | 
| 2692 | 2693 | 
| 2693  public: | 2694  public: | 
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2872     count = 0; | 2873     count = 0; | 
| 2873   } | 2874   } | 
| 2874   // Must be small, since an iteration is used for lookup. | 2875   // Must be small, since an iteration is used for lookup. | 
| 2875   static const int kMaxComments = 64; | 2876   static const int kMaxComments = 64; | 
| 2876 }; | 2877 }; | 
| 2877 #endif | 2878 #endif | 
| 2878 } | 2879 } | 
| 2879 }  // namespace v8::internal | 2880 }  // namespace v8::internal | 
| 2880 | 2881 | 
| 2881 #endif  // V8_HEAP_SPACES_H_ | 2882 #endif  // V8_HEAP_SPACES_H_ | 
| OLD | NEW | 
|---|