| OLD | NEW | 
|    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 651 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  662   void RefillMarkingDeque(); |  662   void RefillMarkingDeque(); | 
|  663  |  663  | 
|  664   // After reachable maps have been marked process per context object |  664   // After reachable maps have been marked process per context object | 
|  665   // literal map caches removing unmarked entries. |  665   // literal map caches removing unmarked entries. | 
|  666   void ProcessMapCaches(); |  666   void ProcessMapCaches(); | 
|  667  |  667  | 
|  668   // Callback function for telling whether the object *p is an unmarked |  668   // Callback function for telling whether the object *p is an unmarked | 
|  669   // heap object. |  669   // heap object. | 
|  670   static bool IsUnmarkedHeapObject(Object** p); |  670   static bool IsUnmarkedHeapObject(Object** p); | 
|  671  |  671  | 
|  672 #ifdef DEBUG |  | 
|  673   void UpdateLiveObjectCount(HeapObject* obj); |  | 
|  674 #endif |  | 
|  675  |  | 
|  676   // Map transitions from a live map to a dead map must be killed. |  672   // Map transitions from a live map to a dead map must be killed. | 
|  677   // We replace them with a null descriptor, with the same key. |  673   // We replace them with a null descriptor, with the same key. | 
|  678   void ClearNonLiveTransitions(); |  674   void ClearNonLiveTransitions(); | 
|  679  |  675  | 
|  680   // Marking detaches initial maps from SharedFunctionInfo objects |  676   // Marking detaches initial maps from SharedFunctionInfo objects | 
|  681   // to make this reference weak. We need to reattach initial maps |  677   // to make this reference weak. We need to reattach initial maps | 
|  682   // back after collection. This is either done during |  678   // back after collection. This is either done during | 
|  683   // ClearNonLiveTransitions pass or by calling this function. |  679   // ClearNonLiveTransitions pass or by calling this function. | 
|  684   void ReattachInitialMaps(); |  680   void ReattachInitialMaps(); | 
|  685  |  681  | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|  713  |  709  | 
|  714   void EvacuateLiveObjectsFromPage(Page* p); |  710   void EvacuateLiveObjectsFromPage(Page* p); | 
|  715  |  711  | 
|  716   void EvacuatePages(); |  712   void EvacuatePages(); | 
|  717  |  713  | 
|  718   void EvacuateNewSpaceAndCandidates(); |  714   void EvacuateNewSpaceAndCandidates(); | 
|  719  |  715  | 
|  720   void SweepSpace(PagedSpace* space, SweeperType sweeper); |  716   void SweepSpace(PagedSpace* space, SweeperType sweeper); | 
|  721  |  717  | 
|  722 #ifdef DEBUG |  718 #ifdef DEBUG | 
|  723   // ----------------------------------------------------------------------- |  | 
|  724   // Debugging variables, functions and classes |  | 
|  725   // Counters used for debugging the marking phase of mark-compact or |  | 
|  726   // mark-sweep collection. |  | 
|  727  |  | 
|  728   // Size of live objects in Heap::to_space_. |  | 
|  729   int live_young_objects_size_; |  | 
|  730  |  | 
|  731   // Size of live objects in Heap::old_pointer_space_. |  | 
|  732   int live_old_pointer_objects_size_; |  | 
|  733  |  | 
|  734   // Size of live objects in Heap::old_data_space_. |  | 
|  735   int live_old_data_objects_size_; |  | 
|  736  |  | 
|  737   // Size of live objects in Heap::code_space_. |  | 
|  738   int live_code_objects_size_; |  | 
|  739  |  | 
|  740   // Size of live objects in Heap::map_space_. |  | 
|  741   int live_map_objects_size_; |  | 
|  742  |  | 
|  743   // Size of live objects in Heap::cell_space_. |  | 
|  744   int live_cell_objects_size_; |  | 
|  745  |  | 
|  746   // Size of live objects in Heap::lo_space_. |  | 
|  747   int live_lo_objects_size_; |  | 
|  748  |  | 
|  749   // Number of live bytes in this collection. |  | 
|  750   int live_bytes_; |  | 
|  751  |  | 
|  752   friend class MarkObjectVisitor; |  719   friend class MarkObjectVisitor; | 
|  753   static void VisitObject(HeapObject* obj); |  720   static void VisitObject(HeapObject* obj); | 
|  754  |  721  | 
|  755   friend class UnmarkObjectVisitor; |  722   friend class UnmarkObjectVisitor; | 
|  756   static void UnmarkObject(HeapObject* obj); |  723   static void UnmarkObject(HeapObject* obj); | 
|  757 #endif |  724 #endif | 
|  758  |  725  | 
|  759   Heap* heap_; |  726   Heap* heap_; | 
|  760   MarkingDeque marking_deque_; |  727   MarkingDeque marking_deque_; | 
|  761   CodeFlusher* code_flusher_; |  728   CodeFlusher* code_flusher_; | 
|  762   Object* encountered_weak_maps_; |  729   Object* encountered_weak_maps_; | 
|  763  |  730  | 
|  764   List<Page*> evacuation_candidates_; |  731   List<Page*> evacuation_candidates_; | 
|  765   List<Code*> invalidated_code_; |  732   List<Code*> invalidated_code_; | 
|  766  |  733  | 
|  767   friend class Heap; |  734   friend class Heap; | 
|  768 }; |  735 }; | 
|  769  |  736  | 
|  770  |  737  | 
|  771 const char* AllocationSpaceName(AllocationSpace space); |  738 const char* AllocationSpaceName(AllocationSpace space); | 
|  772  |  739  | 
|  773 } }  // namespace v8::internal |  740 } }  // namespace v8::internal | 
|  774  |  741  | 
|  775 #endif  // V8_MARK_COMPACT_H_ |  742 #endif  // V8_MARK_COMPACT_H_ | 
| OLD | NEW |