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

Side by Side Diff: src/heap.h

Issue 171041: Use root array to load roots in generated ARM code.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 4 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 | « src/assembler.cc ('k') | src/serialize.cc » ('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 713 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 } 724 }
725 725
726 // Sets the non_monomorphic_cache_ (only used when expanding the dictionary). 726 // Sets the non_monomorphic_cache_ (only used when expanding the dictionary).
727 static void public_set_non_monomorphic_cache(NumberDictionary* value) { 727 static void public_set_non_monomorphic_cache(NumberDictionary* value) {
728 roots_[kNonMonomorphicCacheRootIndex] = value; 728 roots_[kNonMonomorphicCacheRootIndex] = value;
729 } 729 }
730 730
731 // Update the next script id. 731 // Update the next script id.
732 static inline void SetLastScriptId(Object* last_script_id); 732 static inline void SetLastScriptId(Object* last_script_id);
733 733
734 // Generated code can embed this address to get access to the roots.
735 static Object** roots_address() { return roots_; }
736
734 #ifdef DEBUG 737 #ifdef DEBUG
735 static void Print(); 738 static void Print();
736 static void PrintHandles(); 739 static void PrintHandles();
737 740
738 // Verify the heap is in its normal state before or after a GC. 741 // Verify the heap is in its normal state before or after a GC.
739 static void Verify(); 742 static void Verify();
740 743
741 // Report heap statistics. 744 // Report heap statistics.
742 static void ReportHeapStatistics(const char* title); 745 static void ReportHeapStatistics(const char* title);
743 static void ReportCodeStatistics(const char* title); 746 static void ReportCodeStatistics(const char* title);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 > old_gen_promotion_limit_; 833 > old_gen_promotion_limit_;
831 } 834 }
832 835
833 // True if we have reached the allocation limit in the old generation that 836 // True if we have reached the allocation limit in the old generation that
834 // should artificially cause a GC right now. 837 // should artificially cause a GC right now.
835 static bool OldGenerationAllocationLimitReached() { 838 static bool OldGenerationAllocationLimitReached() {
836 return (PromotedSpaceSize() + PromotedExternalMemorySize()) 839 return (PromotedSpaceSize() + PromotedExternalMemorySize())
837 > old_gen_allocation_limit_; 840 > old_gen_allocation_limit_;
838 } 841 }
839 842
843 // Declare all the root indices.
844 enum RootListIndex {
845 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
846 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
847 #undef ROOT_INDEX_DECLARATION
848
849 // Utility type maps
850 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
851 STRUCT_LIST(DECLARE_STRUCT_MAP)
852 #undef DECLARE_STRUCT_MAP
853
854 #define SYMBOL_INDEX_DECLARATION(name, str) k##name##RootIndex,
855 SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
856 #undef SYMBOL_DECLARATION
857
858 kSymbolTableRootIndex,
859 kStrongRootListLength = kSymbolTableRootIndex,
860 kRootListLength
861 };
862
840 private: 863 private:
841 static int semispace_size_; 864 static int semispace_size_;
842 static int initial_semispace_size_; 865 static int initial_semispace_size_;
843 static int young_generation_size_; 866 static int young_generation_size_;
844 static int old_generation_size_; 867 static int old_generation_size_;
845 868
846 // For keeping track of how much data has survived 869 // For keeping track of how much data has survived
847 // scavenge since last new space expansion. 870 // scavenge since last new space expansion.
848 static int survived_since_last_expansion_; 871 static int survived_since_last_expansion_;
849 872
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 // by global handles 933 // by global handles
911 static int amount_of_external_allocated_memory_; 934 static int amount_of_external_allocated_memory_;
912 935
913 // Caches the amount of external memory registered at the last global gc. 936 // Caches the amount of external memory registered at the last global gc.
914 static int amount_of_external_allocated_memory_at_last_global_gc_; 937 static int amount_of_external_allocated_memory_at_last_global_gc_;
915 938
916 // Indicates that an allocation has failed in the old generation since the 939 // Indicates that an allocation has failed in the old generation since the
917 // last GC. 940 // last GC.
918 static int old_gen_exhausted_; 941 static int old_gen_exhausted_;
919 942
920 // Declare all the root indices.
921 enum RootListIndex {
922 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
923 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
924 #undef ROOT_INDEX_DECLARATION
925
926 // Utility type maps
927 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
928 STRUCT_LIST(DECLARE_STRUCT_MAP)
929 #undef DECLARE_STRUCT_MAP
930
931 #define SYMBOL_INDEX_DECLARATION(name, str) k##name##RootIndex,
932 SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
933 #undef SYMBOL_DECLARATION
934
935 kSymbolTableRootIndex,
936 kStrongRootListLength = kSymbolTableRootIndex,
937 kRootListLength
938 };
939
940 static Object* roots_[kRootListLength]; 943 static Object* roots_[kRootListLength];
941 944
942 struct StringTypeTable { 945 struct StringTypeTable {
943 InstanceType type; 946 InstanceType type;
944 int size; 947 int size;
945 RootListIndex index; 948 RootListIndex index;
946 }; 949 };
947 950
948 struct ConstantSymbolTable { 951 struct ConstantSymbolTable {
949 const char* contents; 952 const char* contents;
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 int marked_count_; 1470 int marked_count_;
1468 1471
1469 // The count from the end of the previous full GC. Will be zero if there 1472 // The count from the end of the previous full GC. Will be zero if there
1470 // was no previous full GC. 1473 // was no previous full GC.
1471 int previous_marked_count_; 1474 int previous_marked_count_;
1472 }; 1475 };
1473 1476
1474 } } // namespace v8::internal 1477 } } // namespace v8::internal
1475 1478
1476 #endif // V8_HEAP_H_ 1479 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « src/assembler.cc ('k') | src/serialize.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698