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

Side by Side Diff: src/heap/heap.h

Issue 614083002: Use symbols instead of hidden properties for i18n markers. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 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/heap-snapshot-generator.cc ('k') | src/heap/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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_HEAP_H_ 5 #ifndef V8_HEAP_HEAP_H_
6 #define V8_HEAP_HEAP_H_ 6 #define V8_HEAP_HEAP_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 V(PolymorphicCodeCache, polymorphic_code_cache, PolymorphicCodeCache) \ 168 V(PolymorphicCodeCache, polymorphic_code_cache, PolymorphicCodeCache) \
169 V(Code, js_entry_code, JsEntryCode) \ 169 V(Code, js_entry_code, JsEntryCode) \
170 V(Code, js_construct_entry_code, JsConstructEntryCode) \ 170 V(Code, js_construct_entry_code, JsConstructEntryCode) \
171 V(FixedArray, natives_source_cache, NativesSourceCache) \ 171 V(FixedArray, natives_source_cache, NativesSourceCache) \
172 V(Script, empty_script, EmptyScript) \ 172 V(Script, empty_script, EmptyScript) \
173 V(NameDictionary, intrinsic_function_names, IntrinsicFunctionNames) \ 173 V(NameDictionary, intrinsic_function_names, IntrinsicFunctionNames) \
174 V(Cell, undefined_cell, UndefineCell) \ 174 V(Cell, undefined_cell, UndefineCell) \
175 V(JSObject, observation_state, ObservationState) \ 175 V(JSObject, observation_state, ObservationState) \
176 V(Map, external_map, ExternalMap) \ 176 V(Map, external_map, ExternalMap) \
177 V(Object, symbol_registry, SymbolRegistry) \ 177 V(Object, symbol_registry, SymbolRegistry) \
178 V(Symbol, frozen_symbol, FrozenSymbol) \
179 V(Symbol, nonexistent_symbol, NonExistentSymbol) \
180 V(Symbol, elements_transition_symbol, ElementsTransitionSymbol) \
181 V(SeededNumberDictionary, empty_slow_element_dictionary, \ 178 V(SeededNumberDictionary, empty_slow_element_dictionary, \
182 EmptySlowElementDictionary) \ 179 EmptySlowElementDictionary) \
183 V(Symbol, observed_symbol, ObservedSymbol) \
184 V(Symbol, uninitialized_symbol, UninitializedSymbol) \
185 V(Symbol, megamorphic_symbol, MegamorphicSymbol) \
186 V(Symbol, premonomorphic_symbol, PremonomorphicSymbol) \
187 V(Symbol, generic_symbol, GenericSymbol) \
188 V(Symbol, stack_trace_symbol, StackTraceSymbol) \
189 V(Symbol, detailed_stack_trace_symbol, DetailedStackTraceSymbol) \
190 V(Symbol, normal_ic_symbol, NormalICSymbol) \
191 V(Symbol, home_object_symbol, HomeObjectSymbol) \
192 V(FixedArray, materialized_objects, MaterializedObjects) \ 180 V(FixedArray, materialized_objects, MaterializedObjects) \
193 V(FixedArray, allocation_sites_scratchpad, AllocationSitesScratchpad) \ 181 V(FixedArray, allocation_sites_scratchpad, AllocationSitesScratchpad) \
194 V(FixedArray, microtask_queue, MicrotaskQueue) 182 V(FixedArray, microtask_queue, MicrotaskQueue)
195 183
196 // Entries in this list are limited to Smis and are not visited during GC. 184 // Entries in this list are limited to Smis and are not visited during GC.
197 #define SMI_ROOT_LIST(V) \ 185 #define SMI_ROOT_LIST(V) \
198 V(Smi, stack_limit, StackLimit) \ 186 V(Smi, stack_limit, StackLimit) \
199 V(Smi, real_stack_limit, RealStackLimit) \ 187 V(Smi, real_stack_limit, RealStackLimit) \
200 V(Smi, last_script_id, LastScriptId) \ 188 V(Smi, last_script_id, LastScriptId) \
201 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \ 189 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 V(global_context_map) \ 240 V(global_context_map) \
253 V(undefined_map) \ 241 V(undefined_map) \
254 V(the_hole_map) \ 242 V(the_hole_map) \
255 V(null_map) \ 243 V(null_map) \
256 V(boolean_map) \ 244 V(boolean_map) \
257 V(uninitialized_map) \ 245 V(uninitialized_map) \
258 V(message_object_map) \ 246 V(message_object_map) \
259 V(foreign_map) \ 247 V(foreign_map) \
260 V(neander_map) 248 V(neander_map)
261 249
262 #define INTERNALIZED_STRING_LIST(V) \ 250 #define INTERNALIZED_STRING_LIST(V) \
263 V(Object_string, "Object") \ 251 V(Object_string, "Object") \
264 V(proto_string, "__proto__") \ 252 V(proto_string, "__proto__") \
265 V(arguments_string, "arguments") \ 253 V(arguments_string, "arguments") \
266 V(Arguments_string, "Arguments") \ 254 V(Arguments_string, "Arguments") \
267 V(caller_string, "caller") \ 255 V(caller_string, "caller") \
268 V(boolean_string, "boolean") \ 256 V(boolean_string, "boolean") \
269 V(Boolean_string, "Boolean") \ 257 V(Boolean_string, "Boolean") \
270 V(callee_string, "callee") \ 258 V(callee_string, "callee") \
271 V(constructor_string, "constructor") \ 259 V(constructor_string, "constructor") \
272 V(dot_result_string, ".result") \ 260 V(dot_result_string, ".result") \
273 V(dot_for_string, ".for.") \ 261 V(dot_for_string, ".for.") \
274 V(eval_string, "eval") \ 262 V(eval_string, "eval") \
275 V(empty_string, "") \ 263 V(empty_string, "") \
276 V(function_string, "function") \ 264 V(function_string, "function") \
277 V(Function_string, "Function") \ 265 V(Function_string, "Function") \
278 V(length_string, "length") \ 266 V(length_string, "length") \
279 V(name_string, "name") \ 267 V(name_string, "name") \
280 V(null_string, "null") \ 268 V(null_string, "null") \
281 V(number_string, "number") \ 269 V(number_string, "number") \
282 V(Number_string, "Number") \ 270 V(Number_string, "Number") \
283 V(nan_string, "NaN") \ 271 V(nan_string, "NaN") \
284 V(source_string, "source") \ 272 V(source_string, "source") \
285 V(source_url_string, "source_url") \ 273 V(source_url_string, "source_url") \
286 V(source_mapping_url_string, "source_mapping_url") \ 274 V(source_mapping_url_string, "source_mapping_url") \
287 V(global_string, "global") \ 275 V(global_string, "global") \
288 V(ignore_case_string, "ignoreCase") \ 276 V(ignore_case_string, "ignoreCase") \
289 V(multiline_string, "multiline") \ 277 V(multiline_string, "multiline") \
290 V(sticky_string, "sticky") \ 278 V(sticky_string, "sticky") \
291 V(harmony_regexps_string, "harmony_regexps") \ 279 V(harmony_regexps_string, "harmony_regexps") \
292 V(input_string, "input") \ 280 V(input_string, "input") \
293 V(index_string, "index") \ 281 V(index_string, "index") \
294 V(last_index_string, "lastIndex") \ 282 V(last_index_string, "lastIndex") \
295 V(object_string, "object") \ 283 V(object_string, "object") \
296 V(prototype_string, "prototype") \ 284 V(prototype_string, "prototype") \
297 V(string_string, "string") \ 285 V(string_string, "string") \
298 V(String_string, "String") \ 286 V(String_string, "String") \
299 V(symbol_string, "symbol") \ 287 V(symbol_string, "symbol") \
300 V(Symbol_string, "Symbol") \ 288 V(Symbol_string, "Symbol") \
301 V(Map_string, "Map") \ 289 V(Map_string, "Map") \
302 V(Set_string, "Set") \ 290 V(Set_string, "Set") \
303 V(WeakMap_string, "WeakMap") \ 291 V(WeakMap_string, "WeakMap") \
304 V(WeakSet_string, "WeakSet") \ 292 V(WeakSet_string, "WeakSet") \
305 V(for_string, "for") \ 293 V(for_string, "for") \
306 V(for_api_string, "for_api") \ 294 V(for_api_string, "for_api") \
307 V(for_intern_string, "for_intern") \ 295 V(for_intern_string, "for_intern") \
308 V(private_api_string, "private_api") \ 296 V(private_api_string, "private_api") \
309 V(private_intern_string, "private_intern") \ 297 V(private_intern_string, "private_intern") \
310 V(Date_string, "Date") \ 298 V(Date_string, "Date") \
311 V(char_at_string, "CharAt") \ 299 V(char_at_string, "CharAt") \
312 V(undefined_string, "undefined") \ 300 V(undefined_string, "undefined") \
313 V(value_of_string, "valueOf") \ 301 V(value_of_string, "valueOf") \
314 V(stack_string, "stack") \ 302 V(stack_string, "stack") \
315 V(toJSON_string, "toJSON") \ 303 V(toJSON_string, "toJSON") \
316 V(KeyedLoadMonomorphic_string, "KeyedLoadMonomorphic") \ 304 V(KeyedLoadMonomorphic_string, "KeyedLoadMonomorphic") \
317 V(KeyedStoreMonomorphic_string, "KeyedStoreMonomorphic") \ 305 V(KeyedStoreMonomorphic_string, "KeyedStoreMonomorphic") \
318 V(stack_overflow_string, "kStackOverflowBoilerplate") \ 306 V(stack_overflow_string, "kStackOverflowBoilerplate") \
319 V(illegal_access_string, "illegal access") \ 307 V(illegal_access_string, "illegal access") \
320 V(cell_value_string, "%cell_value") \ 308 V(cell_value_string, "%cell_value") \
321 V(illegal_argument_string, "illegal argument") \ 309 V(illegal_argument_string, "illegal argument") \
322 V(identity_hash_string, "v8::IdentityHash") \ 310 V(identity_hash_string, "v8::IdentityHash") \
323 V(closure_string, "(closure)") \ 311 V(closure_string, "(closure)") \
324 V(dot_string, ".") \ 312 V(dot_string, ".") \
325 V(compare_ic_string, "==") \ 313 V(compare_ic_string, "==") \
326 V(strict_compare_ic_string, "===") \ 314 V(strict_compare_ic_string, "===") \
327 V(infinity_string, "Infinity") \ 315 V(infinity_string, "Infinity") \
328 V(minus_infinity_string, "-Infinity") \ 316 V(minus_infinity_string, "-Infinity") \
329 V(query_colon_string, "(?:)") \ 317 V(query_colon_string, "(?:)") \
330 V(Generator_string, "Generator") \ 318 V(Generator_string, "Generator") \
331 V(throw_string, "throw") \ 319 V(throw_string, "throw") \
332 V(done_string, "done") \ 320 V(done_string, "done") \
333 V(value_string, "value") \ 321 V(value_string, "value") \
334 V(next_string, "next") \ 322 V(next_string, "next") \
335 V(byte_length_string, "byteLength") \ 323 V(byte_length_string, "byteLength") \
336 V(byte_offset_string, "byteOffset") \ 324 V(byte_offset_string, "byteOffset")
337 V(intl_initialized_marker_string, "v8::intl_initialized_marker") \ 325
338 V(intl_impl_object_string, "v8::intl_object") 326 #define PRIVATE_SYMBOL_LIST(V) \
327 V(frozen_symbol) \
328 V(nonexistent_symbol) \
329 V(elements_transition_symbol) \
330 V(observed_symbol) \
331 V(uninitialized_symbol) \
332 V(megamorphic_symbol) \
333 V(premonomorphic_symbol) \
334 V(generic_symbol) \
335 V(stack_trace_symbol) \
336 V(detailed_stack_trace_symbol) \
337 V(normal_ic_symbol) \
338 V(home_object_symbol) \
339 V(intl_initialized_marker_symbol) \
340 V(intl_impl_object_symbol)
339 341
340 // Forward declarations. 342 // Forward declarations.
341 class HeapStats; 343 class HeapStats;
342 class Isolate; 344 class Isolate;
343 class WeakObjectRetainer; 345 class WeakObjectRetainer;
344 346
345 347
346 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap, 348 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap,
347 Object** pointer); 349 Object** pointer);
348 350
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 #define STRUCT_MAP_ACCESSOR(NAME, Name, name) \ 778 #define STRUCT_MAP_ACCESSOR(NAME, Name, name) \
777 Map* name##_map() { return Map::cast(roots_[k##Name##MapRootIndex]); } 779 Map* name##_map() { return Map::cast(roots_[k##Name##MapRootIndex]); }
778 STRUCT_LIST(STRUCT_MAP_ACCESSOR) 780 STRUCT_LIST(STRUCT_MAP_ACCESSOR)
779 #undef STRUCT_MAP_ACCESSOR 781 #undef STRUCT_MAP_ACCESSOR
780 782
781 #define STRING_ACCESSOR(name, str) \ 783 #define STRING_ACCESSOR(name, str) \
782 String* name() { return String::cast(roots_[k##name##RootIndex]); } 784 String* name() { return String::cast(roots_[k##name##RootIndex]); }
783 INTERNALIZED_STRING_LIST(STRING_ACCESSOR) 785 INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
784 #undef STRING_ACCESSOR 786 #undef STRING_ACCESSOR
785 787
788 #define SYMBOL_ACCESSOR(name) \
789 Symbol* name() { return Symbol::cast(roots_[k##name##RootIndex]); }
790 PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR)
791 #undef SYMBOL_ACCESSOR
792
786 // The hidden_string is special because it is the empty string, but does 793 // The hidden_string is special because it is the empty string, but does
787 // not match the empty string. 794 // not match the empty string.
788 String* hidden_string() { return hidden_string_; } 795 String* hidden_string() { return hidden_string_; }
789 796
790 void set_native_contexts_list(Object* object) { 797 void set_native_contexts_list(Object* object) {
791 native_contexts_list_ = object; 798 native_contexts_list_ = object;
792 } 799 }
793 Object* native_contexts_list() const { return native_contexts_list_; } 800 Object* native_contexts_list() const { return native_contexts_list_; }
794 801
795 void set_array_buffers_list(Object* object) { array_buffers_list_ = object; } 802 void set_array_buffers_list(Object* object) { array_buffers_list_ = object; }
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 // Declare all the root indices. This defines the root list order. 1060 // Declare all the root indices. This defines the root list order.
1054 enum RootListIndex { 1061 enum RootListIndex {
1055 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, 1062 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
1056 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION) 1063 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
1057 #undef ROOT_INDEX_DECLARATION 1064 #undef ROOT_INDEX_DECLARATION
1058 1065
1059 #define STRING_INDEX_DECLARATION(name, str) k##name##RootIndex, 1066 #define STRING_INDEX_DECLARATION(name, str) k##name##RootIndex,
1060 INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION) 1067 INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION)
1061 #undef STRING_DECLARATION 1068 #undef STRING_DECLARATION
1062 1069
1070 #define SYMBOL_INDEX_DECLARATION(name) k##name##RootIndex,
1071 PRIVATE_SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
1072 #undef SYMBOL_INDEX_DECLARATION
1073
1063 // Utility type maps 1074 // Utility type maps
1064 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex, 1075 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
1065 STRUCT_LIST(DECLARE_STRUCT_MAP) 1076 STRUCT_LIST(DECLARE_STRUCT_MAP)
1066 #undef DECLARE_STRUCT_MAP 1077 #undef DECLARE_STRUCT_MAP
1067 kStringTableRootIndex, 1078 kStringTableRootIndex,
1068 1079
1069 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, 1080 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
1070 SMI_ROOT_LIST(ROOT_INDEX_DECLARATION) 1081 SMI_ROOT_LIST(ROOT_INDEX_DECLARATION)
1071 #undef ROOT_INDEX_DECLARATION 1082 #undef ROOT_INDEX_DECLARATION
1072 kRootListLength, 1083 kRootListLength,
(...skipping 1420 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2504 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2494 2505
2495 private: 2506 private:
2496 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2507 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2497 }; 2508 };
2498 #endif // DEBUG 2509 #endif // DEBUG
2499 } 2510 }
2500 } // namespace v8::internal 2511 } // namespace v8::internal
2501 2512
2502 #endif // V8_HEAP_HEAP_H_ 2513 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/heap-snapshot-generator.cc ('k') | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698