OLD | NEW |
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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 V(normal_ic_symbol) \ | 292 V(normal_ic_symbol) \ |
293 V(home_object_symbol) \ | 293 V(home_object_symbol) \ |
294 V(intl_initialized_marker_symbol) \ | 294 V(intl_initialized_marker_symbol) \ |
295 V(intl_impl_object_symbol) \ | 295 V(intl_impl_object_symbol) \ |
296 V(promise_debug_marker_symbol) \ | 296 V(promise_debug_marker_symbol) \ |
297 V(promise_has_handler_symbol) \ | 297 V(promise_has_handler_symbol) \ |
298 V(class_script_symbol) \ | 298 V(class_script_symbol) \ |
299 V(class_start_position_symbol) \ | 299 V(class_start_position_symbol) \ |
300 V(class_end_position_symbol) | 300 V(class_end_position_symbol) |
301 | 301 |
| 302 #define PUBLIC_SYMBOL_LIST(V) \ |
| 303 V(has_instance_symbol, symbolHasInstance, Symbol.hasInstance) \ |
| 304 V(is_concat_spreadable_symbol, symbolIsConcatSpreadable, \ |
| 305 Symbol.isConcatSpreadable) \ |
| 306 V(is_regexp_symbol, symbolIsRegExp, Symbol.isRegExp) \ |
| 307 V(iterator_symbol, symbolIterator, Symbol.iterator) \ |
| 308 V(to_string_tag_symbol, symbolToStringTag, Symbol.toStringTag) \ |
| 309 V(unscopables_symbol, symbolUnscopables, Symbol.unscopables) |
| 310 |
302 // Heap roots that are known to be immortal immovable, for which we can safely | 311 // Heap roots that are known to be immortal immovable, for which we can safely |
303 // skip write barriers. This list is not complete and has omissions. | 312 // skip write barriers. This list is not complete and has omissions. |
304 #define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \ | 313 #define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \ |
305 V(ByteArrayMap) \ | 314 V(ByteArrayMap) \ |
306 V(FreeSpaceMap) \ | 315 V(FreeSpaceMap) \ |
307 V(OnePointerFillerMap) \ | 316 V(OnePointerFillerMap) \ |
308 V(TwoPointerFillerMap) \ | 317 V(TwoPointerFillerMap) \ |
309 V(UndefinedValue) \ | 318 V(UndefinedValue) \ |
310 V(TheHoleValue) \ | 319 V(TheHoleValue) \ |
311 V(NullValue) \ | 320 V(NullValue) \ |
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 #define STRING_ACCESSOR(name, str) \ | 811 #define STRING_ACCESSOR(name, str) \ |
803 String* name() { return String::cast(roots_[k##name##RootIndex]); } | 812 String* name() { return String::cast(roots_[k##name##RootIndex]); } |
804 INTERNALIZED_STRING_LIST(STRING_ACCESSOR) | 813 INTERNALIZED_STRING_LIST(STRING_ACCESSOR) |
805 #undef STRING_ACCESSOR | 814 #undef STRING_ACCESSOR |
806 | 815 |
807 #define SYMBOL_ACCESSOR(name) \ | 816 #define SYMBOL_ACCESSOR(name) \ |
808 Symbol* name() { return Symbol::cast(roots_[k##name##RootIndex]); } | 817 Symbol* name() { return Symbol::cast(roots_[k##name##RootIndex]); } |
809 PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR) | 818 PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR) |
810 #undef SYMBOL_ACCESSOR | 819 #undef SYMBOL_ACCESSOR |
811 | 820 |
| 821 #define SYMBOL_ACCESSOR(name, varname, description) \ |
| 822 Symbol* name() { return Symbol::cast(roots_[k##name##RootIndex]); } |
| 823 PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR) |
| 824 #undef SYMBOL_ACCESSOR |
| 825 |
812 // The hidden_string is special because it is the empty string, but does | 826 // The hidden_string is special because it is the empty string, but does |
813 // not match the empty string. | 827 // not match the empty string. |
814 String* hidden_string() { return hidden_string_; } | 828 String* hidden_string() { return hidden_string_; } |
815 | 829 |
816 void set_native_contexts_list(Object* object) { | 830 void set_native_contexts_list(Object* object) { |
817 native_contexts_list_ = object; | 831 native_contexts_list_ = object; |
818 } | 832 } |
819 Object* native_contexts_list() const { return native_contexts_list_; } | 833 Object* native_contexts_list() const { return native_contexts_list_; } |
820 | 834 |
821 void set_array_buffers_list(Object* object) { array_buffers_list_ = object; } | 835 void set_array_buffers_list(Object* object) { array_buffers_list_ = object; } |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1099 #undef ROOT_INDEX_DECLARATION | 1113 #undef ROOT_INDEX_DECLARATION |
1100 | 1114 |
1101 #define STRING_INDEX_DECLARATION(name, str) k##name##RootIndex, | 1115 #define STRING_INDEX_DECLARATION(name, str) k##name##RootIndex, |
1102 INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION) | 1116 INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION) |
1103 #undef STRING_DECLARATION | 1117 #undef STRING_DECLARATION |
1104 | 1118 |
1105 #define SYMBOL_INDEX_DECLARATION(name) k##name##RootIndex, | 1119 #define SYMBOL_INDEX_DECLARATION(name) k##name##RootIndex, |
1106 PRIVATE_SYMBOL_LIST(SYMBOL_INDEX_DECLARATION) | 1120 PRIVATE_SYMBOL_LIST(SYMBOL_INDEX_DECLARATION) |
1107 #undef SYMBOL_INDEX_DECLARATION | 1121 #undef SYMBOL_INDEX_DECLARATION |
1108 | 1122 |
| 1123 #define SYMBOL_INDEX_DECLARATION(name, varname, description) k##name##RootIndex, |
| 1124 PUBLIC_SYMBOL_LIST(SYMBOL_INDEX_DECLARATION) |
| 1125 #undef SYMBOL_INDEX_DECLARATION |
| 1126 |
1109 // Utility type maps | 1127 // Utility type maps |
1110 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex, | 1128 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex, |
1111 STRUCT_LIST(DECLARE_STRUCT_MAP) | 1129 STRUCT_LIST(DECLARE_STRUCT_MAP) |
1112 #undef DECLARE_STRUCT_MAP | 1130 #undef DECLARE_STRUCT_MAP |
1113 kStringTableRootIndex, | 1131 kStringTableRootIndex, |
1114 | 1132 |
1115 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, | 1133 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, |
1116 SMI_ROOT_LIST(ROOT_INDEX_DECLARATION) | 1134 SMI_ROOT_LIST(ROOT_INDEX_DECLARATION) |
1117 #undef ROOT_INDEX_DECLARATION | 1135 #undef ROOT_INDEX_DECLARATION |
1118 kRootListLength, | 1136 kRootListLength, |
(...skipping 1435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2554 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2572 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
2555 | 2573 |
2556 private: | 2574 private: |
2557 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2575 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2558 }; | 2576 }; |
2559 #endif // DEBUG | 2577 #endif // DEBUG |
2560 } | 2578 } |
2561 } // namespace v8::internal | 2579 } // namespace v8::internal |
2562 | 2580 |
2563 #endif // V8_HEAP_HEAP_H_ | 2581 #endif // V8_HEAP_HEAP_H_ |
OLD | NEW |