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

Side by Side Diff: src/heap.h

Issue 155211: Create a new paged heap space for global property cells. The new... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 5 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/globals.h ('k') | src/heap.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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 V(Map, hash_table_map) \ 96 V(Map, hash_table_map) \
97 V(Map, context_map) \ 97 V(Map, context_map) \
98 V(Map, catch_context_map) \ 98 V(Map, catch_context_map) \
99 V(Map, global_context_map) \ 99 V(Map, global_context_map) \
100 V(Map, code_map) \ 100 V(Map, code_map) \
101 V(Map, oddball_map) \ 101 V(Map, oddball_map) \
102 V(Map, global_property_cell_map) \ 102 V(Map, global_property_cell_map) \
103 V(Map, boilerplate_function_map) \ 103 V(Map, boilerplate_function_map) \
104 V(Map, shared_function_info_map) \ 104 V(Map, shared_function_info_map) \
105 V(Map, proxy_map) \ 105 V(Map, proxy_map) \
106 V(Map, one_word_filler_map) \ 106 V(Map, one_pointer_filler_map) \
107 V(Map, two_word_filler_map) \ 107 V(Map, two_pointer_filler_map) \
108 V(Object, nan_value) \ 108 V(Object, nan_value) \
109 V(Object, undefined_value) \ 109 V(Object, undefined_value) \
110 V(Object, minus_zero_value) \ 110 V(Object, minus_zero_value) \
111 V(Object, null_value) \ 111 V(Object, null_value) \
112 V(Object, true_value) \ 112 V(Object, true_value) \
113 V(Object, false_value) \ 113 V(Object, false_value) \
114 V(String, empty_string) \ 114 V(String, empty_string) \
115 V(FixedArray, empty_fixed_array) \ 115 V(FixedArray, empty_fixed_array) \
116 V(DescriptorArray, empty_descriptor_array) \ 116 V(DescriptorArray, empty_descriptor_array) \
117 V(Object, the_hole_value) \ 117 V(Object, the_hole_value) \
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 // for all addresses in either semispace. 254 // for all addresses in either semispace.
255 static Address NewSpaceStart() { return new_space_.start(); } 255 static Address NewSpaceStart() { return new_space_.start(); }
256 static uint32_t NewSpaceMask() { return new_space_.mask(); } 256 static uint32_t NewSpaceMask() { return new_space_.mask(); }
257 static Address NewSpaceTop() { return new_space_.top(); } 257 static Address NewSpaceTop() { return new_space_.top(); }
258 258
259 static NewSpace* new_space() { return &new_space_; } 259 static NewSpace* new_space() { return &new_space_; }
260 static OldSpace* old_pointer_space() { return old_pointer_space_; } 260 static OldSpace* old_pointer_space() { return old_pointer_space_; }
261 static OldSpace* old_data_space() { return old_data_space_; } 261 static OldSpace* old_data_space() { return old_data_space_; }
262 static OldSpace* code_space() { return code_space_; } 262 static OldSpace* code_space() { return code_space_; }
263 static MapSpace* map_space() { return map_space_; } 263 static MapSpace* map_space() { return map_space_; }
264 static CellSpace* cell_space() { return cell_space_; }
264 static LargeObjectSpace* lo_space() { return lo_space_; } 265 static LargeObjectSpace* lo_space() { return lo_space_; }
265 266
266 static bool always_allocate() { return always_allocate_scope_depth_ != 0; } 267 static bool always_allocate() { return always_allocate_scope_depth_ != 0; }
267 static Address always_allocate_scope_depth_address() { 268 static Address always_allocate_scope_depth_address() {
268 return reinterpret_cast<Address>(&always_allocate_scope_depth_); 269 return reinterpret_cast<Address>(&always_allocate_scope_depth_);
269 } 270 }
270 271
271 static Address* NewSpaceAllocationTopAddress() { 272 static Address* NewSpaceAllocationTopAddress() {
272 return new_space_.allocation_top_address(); 273 return new_space_.allocation_top_address();
273 } 274 }
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 831
831 static const int kMaxMapSpaceSize = 8*MB; 832 static const int kMaxMapSpaceSize = 8*MB;
832 833
833 static const int kMaxObjectSizeInNewSpace = 256*KB; 834 static const int kMaxObjectSizeInNewSpace = 256*KB;
834 835
835 static NewSpace new_space_; 836 static NewSpace new_space_;
836 static OldSpace* old_pointer_space_; 837 static OldSpace* old_pointer_space_;
837 static OldSpace* old_data_space_; 838 static OldSpace* old_data_space_;
838 static OldSpace* code_space_; 839 static OldSpace* code_space_;
839 static MapSpace* map_space_; 840 static MapSpace* map_space_;
841 static CellSpace* cell_space_;
840 static LargeObjectSpace* lo_space_; 842 static LargeObjectSpace* lo_space_;
841 static HeapState gc_state_; 843 static HeapState gc_state_;
842 844
843 // Returns the size of object residing in non new spaces. 845 // Returns the size of object residing in non new spaces.
844 static int PromotedSpaceSize(); 846 static int PromotedSpaceSize();
845 847
846 // Returns the amount of external memory registered since last global gc. 848 // Returns the amount of external memory registered since last global gc.
847 static int PromotedExternalMemorySize(); 849 static int PromotedExternalMemorySize();
848 850
849 static int mc_count_; // how many mark-compact collections happened 851 static int mc_count_; // how many mark-compact collections happened
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 // Returns either a Smi or a Number object from 'value'. If 'new_object' 919 // Returns either a Smi or a Number object from 'value'. If 'new_object'
918 // is false, it may return a preallocated immutable object. 920 // is false, it may return a preallocated immutable object.
919 static Object* SmiOrNumberFromDouble(double value, 921 static Object* SmiOrNumberFromDouble(double value,
920 bool new_object, 922 bool new_object,
921 PretenureFlag pretenure = NOT_TENURED); 923 PretenureFlag pretenure = NOT_TENURED);
922 924
923 // Allocate an uninitialized object in map space. The behavior is identical 925 // Allocate an uninitialized object in map space. The behavior is identical
924 // to Heap::AllocateRaw(size_in_bytes, MAP_SPACE), except that (a) it doesn't 926 // to Heap::AllocateRaw(size_in_bytes, MAP_SPACE), except that (a) it doesn't
925 // have to test the allocation space argument and (b) can reduce code size 927 // have to test the allocation space argument and (b) can reduce code size
926 // (since both AllocateRaw and AllocateRawMap are inlined). 928 // (since both AllocateRaw and AllocateRawMap are inlined).
927 static inline Object* AllocateRawMap(int size_in_bytes); 929 static inline Object* AllocateRawMap();
930
931 // Allocate an uninitialized object in the global property cell space.
932 static inline Object* AllocateRawCell();
928 933
929 // Initializes a JSObject based on its map. 934 // Initializes a JSObject based on its map.
930 static void InitializeJSObjectFromMap(JSObject* obj, 935 static void InitializeJSObjectFromMap(JSObject* obj,
931 FixedArray* properties, 936 FixedArray* properties,
932 Map* map); 937 Map* map);
933 938
934 static bool CreateInitialMaps(); 939 static bool CreateInitialMaps();
935 static bool CreateInitialObjects(); 940 static bool CreateInitialObjects();
936 941
937 // These four Create*EntryStub functions are here because of a gcc-4.4 bug 942 // These four Create*EntryStub functions are here because of a gcc-4.4 bug
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 int marked_count_; 1408 int marked_count_;
1404 1409
1405 // The count from the end of the previous full GC. Will be zero if there 1410 // The count from the end of the previous full GC. Will be zero if there
1406 // was no previous full GC. 1411 // was no previous full GC.
1407 int previous_marked_count_; 1412 int previous_marked_count_;
1408 }; 1413 };
1409 1414
1410 } } // namespace v8::internal 1415 } } // namespace v8::internal
1411 1416
1412 #endif // V8_HEAP_H_ 1417 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « src/globals.h ('k') | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698