OLD | NEW |
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 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 // Code that should be executed after the garbage collection proper. | 599 // Code that should be executed after the garbage collection proper. |
600 static void PostGarbageCollectionProcessing(); | 600 static void PostGarbageCollectionProcessing(); |
601 | 601 |
602 // Performs garbage collection operation. | 602 // Performs garbage collection operation. |
603 // Returns whether required_space bytes are available after the collection. | 603 // Returns whether required_space bytes are available after the collection. |
604 static bool CollectGarbage(int required_space, AllocationSpace space); | 604 static bool CollectGarbage(int required_space, AllocationSpace space); |
605 | 605 |
606 // Performs a full garbage collection. | 606 // Performs a full garbage collection. |
607 static void CollectAllGarbage(); | 607 static void CollectAllGarbage(); |
608 | 608 |
609 // Clears all inline caches by forcing a global garbage collection. | |
610 static void ClearStoreICs(); | |
611 | |
612 // Performs a full garbage collection if a context has been disposed | 609 // Performs a full garbage collection if a context has been disposed |
613 // since the last time the check was performed. | 610 // since the last time the check was performed. |
614 static void CollectAllGarbageIfContextDisposed(); | 611 static void CollectAllGarbageIfContextDisposed(); |
615 | 612 |
616 // Notify the heap that a context has been disposed. | 613 // Notify the heap that a context has been disposed. |
617 static void NotifyContextDisposed(); | 614 static void NotifyContextDisposed(); |
618 | 615 |
619 // Utility to invoke the scavenger. This is needed in test code to | 616 // Utility to invoke the scavenger. This is needed in test code to |
620 // ensure correct callback for weak global handles. | 617 // ensure correct callback for weak global handles. |
621 static void PerformScavenge(); | 618 static void PerformScavenge(); |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
804 > old_gen_promotion_limit_; | 801 > old_gen_promotion_limit_; |
805 } | 802 } |
806 | 803 |
807 // True if we have reached the allocation limit in the old generation that | 804 // True if we have reached the allocation limit in the old generation that |
808 // should artificially cause a GC right now. | 805 // should artificially cause a GC right now. |
809 static bool OldGenerationAllocationLimitReached() { | 806 static bool OldGenerationAllocationLimitReached() { |
810 return (PromotedSpaceSize() + PromotedExternalMemorySize()) | 807 return (PromotedSpaceSize() + PromotedExternalMemorySize()) |
811 > old_gen_allocation_limit_; | 808 > old_gen_allocation_limit_; |
812 } | 809 } |
813 | 810 |
814 static bool has_store_ics() { | |
815 return has_store_ics_; | |
816 } | |
817 | |
818 static void store_ic_created() { | |
819 has_store_ics_ = true; | |
820 } | |
821 | |
822 private: | 811 private: |
823 static int semispace_size_; | 812 static int semispace_size_; |
824 static int initial_semispace_size_; | 813 static int initial_semispace_size_; |
825 static int young_generation_size_; | 814 static int young_generation_size_; |
826 static int old_generation_size_; | 815 static int old_generation_size_; |
827 | 816 |
828 static int new_space_growth_limit_; | 817 static int new_space_growth_limit_; |
829 static int scavenge_count_; | 818 static int scavenge_count_; |
830 | 819 |
831 static int always_allocate_scope_depth_; | 820 static int always_allocate_scope_depth_; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
877 // by global handles | 866 // by global handles |
878 static int amount_of_external_allocated_memory_; | 867 static int amount_of_external_allocated_memory_; |
879 | 868 |
880 // Caches the amount of external memory registered at the last global gc. | 869 // Caches the amount of external memory registered at the last global gc. |
881 static int amount_of_external_allocated_memory_at_last_global_gc_; | 870 static int amount_of_external_allocated_memory_at_last_global_gc_; |
882 | 871 |
883 // Indicates that an allocation has failed in the old generation since the | 872 // Indicates that an allocation has failed in the old generation since the |
884 // last GC. | 873 // last GC. |
885 static int old_gen_exhausted_; | 874 static int old_gen_exhausted_; |
886 | 875 |
887 static bool has_store_ics_; | |
888 | |
889 // Declare all the roots | 876 // Declare all the roots |
890 #define ROOT_DECLARATION(type, name) static type* name##_; | 877 #define ROOT_DECLARATION(type, name) static type* name##_; |
891 ROOT_LIST(ROOT_DECLARATION) | 878 ROOT_LIST(ROOT_DECLARATION) |
892 #undef ROOT_DECLARATION | 879 #undef ROOT_DECLARATION |
893 | 880 |
894 // Utility type maps | 881 // Utility type maps |
895 #define DECLARE_STRUCT_MAP(NAME, Name, name) static Map* name##_map_; | 882 #define DECLARE_STRUCT_MAP(NAME, Name, name) static Map* name##_map_; |
896 STRUCT_LIST(DECLARE_STRUCT_MAP) | 883 STRUCT_LIST(DECLARE_STRUCT_MAP) |
897 #undef DECLARE_STRUCT_MAP | 884 #undef DECLARE_STRUCT_MAP |
898 | 885 |
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1304 int marked_count_; | 1291 int marked_count_; |
1305 | 1292 |
1306 // The count from the end of the previous full GC. Will be zero if there | 1293 // The count from the end of the previous full GC. Will be zero if there |
1307 // was no previous full GC. | 1294 // was no previous full GC. |
1308 int previous_marked_count_; | 1295 int previous_marked_count_; |
1309 }; | 1296 }; |
1310 | 1297 |
1311 } } // namespace v8::internal | 1298 } } // namespace v8::internal |
1312 | 1299 |
1313 #endif // V8_HEAP_H_ | 1300 #endif // V8_HEAP_H_ |
OLD | NEW |