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

Side by Side Diff: src/heap.h

Issue 12210083: Renamed "symbols" to "internalized strings" throughout the code base, (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed Yang's comments Created 7 years, 10 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/handles.cc ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 /* Cluster the most popular ones in a few cache lines here at the top. */ \ 54 /* Cluster the most popular ones in a few cache lines here at the top. */ \
55 V(Smi, store_buffer_top, StoreBufferTop) \ 55 V(Smi, store_buffer_top, StoreBufferTop) \
56 V(Oddball, undefined_value, UndefinedValue) \ 56 V(Oddball, undefined_value, UndefinedValue) \
57 V(Oddball, the_hole_value, TheHoleValue) \ 57 V(Oddball, the_hole_value, TheHoleValue) \
58 V(Oddball, null_value, NullValue) \ 58 V(Oddball, null_value, NullValue) \
59 V(Oddball, true_value, TrueValue) \ 59 V(Oddball, true_value, TrueValue) \
60 V(Oddball, false_value, FalseValue) \ 60 V(Oddball, false_value, FalseValue) \
61 V(Map, global_property_cell_map, GlobalPropertyCellMap) \ 61 V(Map, global_property_cell_map, GlobalPropertyCellMap) \
62 V(Map, shared_function_info_map, SharedFunctionInfoMap) \ 62 V(Map, shared_function_info_map, SharedFunctionInfoMap) \
63 V(Map, meta_map, MetaMap) \ 63 V(Map, meta_map, MetaMap) \
64 V(Map, ascii_symbol_map, AsciiSymbolMap) \
65 V(Map, ascii_string_map, AsciiStringMap) \
66 V(Map, heap_number_map, HeapNumberMap) \ 64 V(Map, heap_number_map, HeapNumberMap) \
67 V(Map, native_context_map, NativeContextMap) \ 65 V(Map, native_context_map, NativeContextMap) \
68 V(Map, fixed_array_map, FixedArrayMap) \ 66 V(Map, fixed_array_map, FixedArrayMap) \
69 V(Map, code_map, CodeMap) \ 67 V(Map, code_map, CodeMap) \
70 V(Map, scope_info_map, ScopeInfoMap) \ 68 V(Map, scope_info_map, ScopeInfoMap) \
71 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ 69 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \
72 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ 70 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \
73 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ 71 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \
74 V(Map, hash_table_map, HashTableMap) \ 72 V(Map, hash_table_map, HashTableMap) \
75 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ 73 V(FixedArray, empty_fixed_array, EmptyFixedArray) \
76 V(ByteArray, empty_byte_array, EmptyByteArray) \ 74 V(ByteArray, empty_byte_array, EmptyByteArray) \
77 V(String, empty_string, EmptyString) \
78 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \ 75 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \
79 V(Smi, stack_limit, StackLimit) \ 76 V(Smi, stack_limit, StackLimit) \
80 V(Oddball, arguments_marker, ArgumentsMarker) \ 77 V(Oddball, arguments_marker, ArgumentsMarker) \
81 /* The first 32 roots above this line should be boring from a GC point of */ \ 78 /* The first 32 roots above this line should be boring from a GC point of */ \
82 /* view. This means they are never in new space and never on a page that */ \ 79 /* view. This means they are never in new space and never on a page that */ \
83 /* is being compacted. */ \ 80 /* is being compacted. */ \
84 V(FixedArray, number_string_cache, NumberStringCache) \ 81 V(FixedArray, number_string_cache, NumberStringCache) \
85 V(Object, instanceof_cache_function, InstanceofCacheFunction) \ 82 V(Object, instanceof_cache_function, InstanceofCacheFunction) \
86 V(Object, instanceof_cache_map, InstanceofCacheMap) \ 83 V(Object, instanceof_cache_map, InstanceofCacheMap) \
87 V(Object, instanceof_cache_answer, InstanceofCacheAnswer) \ 84 V(Object, instanceof_cache_answer, InstanceofCacheAnswer) \
88 V(FixedArray, single_character_string_cache, SingleCharacterStringCache) \ 85 V(FixedArray, single_character_string_cache, SingleCharacterStringCache) \
89 V(FixedArray, string_split_cache, StringSplitCache) \ 86 V(FixedArray, string_split_cache, StringSplitCache) \
90 V(FixedArray, regexp_multiple_cache, RegExpMultipleCache) \ 87 V(FixedArray, regexp_multiple_cache, RegExpMultipleCache) \
91 V(Object, termination_exception, TerminationException) \ 88 V(Object, termination_exception, TerminationException) \
92 V(Smi, hash_seed, HashSeed) \ 89 V(Smi, hash_seed, HashSeed) \
93 V(Map, string_map, StringMap) \ 90 V(Map, string_map, StringMap) \
94 V(Map, symbol_map, SymbolMap) \ 91 V(Map, ascii_string_map, AsciiStringMap) \
95 V(Map, cons_string_map, ConsStringMap) \ 92 V(Map, cons_string_map, ConsStringMap) \
96 V(Map, cons_ascii_string_map, ConsAsciiStringMap) \ 93 V(Map, cons_ascii_string_map, ConsAsciiStringMap) \
97 V(Map, sliced_string_map, SlicedStringMap) \ 94 V(Map, sliced_string_map, SlicedStringMap) \
98 V(Map, sliced_ascii_string_map, SlicedAsciiStringMap) \ 95 V(Map, sliced_ascii_string_map, SlicedAsciiStringMap) \
99 V(Map, cons_symbol_map, ConsSymbolMap) \
100 V(Map, cons_ascii_symbol_map, ConsAsciiSymbolMap) \
101 V(Map, external_symbol_map, ExternalSymbolMap) \
102 V(Map, external_symbol_with_ascii_data_map, ExternalSymbolWithAsciiDataMap) \
103 V(Map, external_ascii_symbol_map, ExternalAsciiSymbolMap) \
104 V(Map, external_string_map, ExternalStringMap) \ 96 V(Map, external_string_map, ExternalStringMap) \
105 V(Map, external_string_with_ascii_data_map, ExternalStringWithAsciiDataMap) \ 97 V(Map, external_string_with_ascii_data_map, ExternalStringWithAsciiDataMap) \
106 V(Map, external_ascii_string_map, ExternalAsciiStringMap) \ 98 V(Map, external_ascii_string_map, ExternalAsciiStringMap) \
107 V(Map, short_external_symbol_map, ShortExternalSymbolMap) \
108 V(Map, \
109 short_external_symbol_with_ascii_data_map, \
110 ShortExternalSymbolWithAsciiDataMap) \
111 V(Map, short_external_ascii_symbol_map, ShortExternalAsciiSymbolMap) \
112 V(Map, short_external_string_map, ShortExternalStringMap) \ 99 V(Map, short_external_string_map, ShortExternalStringMap) \
113 V(Map, \ 100 V(Map, \
114 short_external_string_with_ascii_data_map, \ 101 short_external_string_with_ascii_data_map, \
115 ShortExternalStringWithAsciiDataMap) \ 102 ShortExternalStringWithAsciiDataMap) \
103 V(Map, internalized_string_map, InternalizedStringMap) \
104 V(Map, ascii_internalized_string_map, AsciiInternalizedStringMap) \
105 V(Map, cons_internalized_string_map, ConsInternalizedStringMap) \
106 V(Map, cons_ascii_internalized_string_map, ConsAsciiInternalizedStringMap) \
107 V(Map, \
108 external_internalized_string_map, \
109 ExternalInternalizedStringMap) \
110 V(Map, \
111 external_internalized_string_with_ascii_data_map, \
112 ExternalInternalizedStringWithAsciiDataMap) \
113 V(Map, \
114 external_ascii_internalized_string_map, \
115 ExternalAsciiInternalizedStringMap) \
116 V(Map, \
117 short_external_internalized_string_map, \
118 ShortExternalInternalizedStringMap) \
119 V(Map, \
120 short_external_internalized_string_with_ascii_data_map, \
121 ShortExternalInternalizedStringWithAsciiDataMap) \
122 V(Map, \
123 short_external_ascii_internalized_string_map, \
124 ShortExternalAsciiInternalizedStringMap) \
116 V(Map, short_external_ascii_string_map, ShortExternalAsciiStringMap) \ 125 V(Map, short_external_ascii_string_map, ShortExternalAsciiStringMap) \
117 V(Map, undetectable_string_map, UndetectableStringMap) \ 126 V(Map, undetectable_string_map, UndetectableStringMap) \
118 V(Map, undetectable_ascii_string_map, UndetectableAsciiStringMap) \ 127 V(Map, undetectable_ascii_string_map, UndetectableAsciiStringMap) \
119 V(Map, external_pixel_array_map, ExternalPixelArrayMap) \ 128 V(Map, external_pixel_array_map, ExternalPixelArrayMap) \
120 V(Map, external_byte_array_map, ExternalByteArrayMap) \ 129 V(Map, external_byte_array_map, ExternalByteArrayMap) \
121 V(Map, external_unsigned_byte_array_map, ExternalUnsignedByteArrayMap) \ 130 V(Map, external_unsigned_byte_array_map, ExternalUnsignedByteArrayMap) \
122 V(Map, external_short_array_map, ExternalShortArrayMap) \ 131 V(Map, external_short_array_map, ExternalShortArrayMap) \
123 V(Map, external_unsigned_short_array_map, ExternalUnsignedShortArrayMap) \ 132 V(Map, external_unsigned_short_array_map, ExternalUnsignedShortArrayMap) \
124 V(Map, external_int_array_map, ExternalIntArrayMap) \ 133 V(Map, external_int_array_map, ExternalIntArrayMap) \
125 V(Map, external_unsigned_int_array_map, ExternalUnsignedIntArrayMap) \ 134 V(Map, external_unsigned_int_array_map, ExternalUnsignedIntArrayMap) \
(...skipping 27 matching lines...) Expand all
153 V(StringDictionary, intrinsic_function_names, IntrinsicFunctionNames) \ 162 V(StringDictionary, intrinsic_function_names, IntrinsicFunctionNames) \
154 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \ 163 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \
155 V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \ 164 V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \
156 V(Smi, getter_stub_deopt_pc_offset, GetterStubDeoptPCOffset) \ 165 V(Smi, getter_stub_deopt_pc_offset, GetterStubDeoptPCOffset) \
157 V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset) \ 166 V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset) \
158 V(JSObject, observation_state, ObservationState) \ 167 V(JSObject, observation_state, ObservationState) \
159 V(Map, external_map, ExternalMap) 168 V(Map, external_map, ExternalMap)
160 169
161 #define ROOT_LIST(V) \ 170 #define ROOT_LIST(V) \
162 STRONG_ROOT_LIST(V) \ 171 STRONG_ROOT_LIST(V) \
163 V(SymbolTable, symbol_table, SymbolTable) 172 V(StringTable, string_table, StringTable)
164 173
165 #define SYMBOL_LIST(V) \ 174 #define INTERNALIZED_STRING_LIST(V) \
166 V(Array_symbol, "Array") \ 175 V(Array_string, "Array") \
167 V(Object_symbol, "Object") \ 176 V(Object_string, "Object") \
168 V(Proto_symbol, "__proto__") \ 177 V(proto_string, "__proto__") \
169 V(StringImpl_symbol, "StringImpl") \ 178 V(StringImpl_string, "StringImpl") \
170 V(arguments_symbol, "arguments") \ 179 V(arguments_string, "arguments") \
171 V(Arguments_symbol, "Arguments") \ 180 V(Arguments_string, "Arguments") \
172 V(call_symbol, "call") \ 181 V(call_string, "call") \
173 V(apply_symbol, "apply") \ 182 V(apply_string, "apply") \
174 V(caller_symbol, "caller") \ 183 V(caller_string, "caller") \
175 V(boolean_symbol, "boolean") \ 184 V(boolean_string, "boolean") \
176 V(Boolean_symbol, "Boolean") \ 185 V(Boolean_string, "Boolean") \
177 V(callee_symbol, "callee") \ 186 V(callee_string, "callee") \
178 V(constructor_symbol, "constructor") \ 187 V(constructor_string, "constructor") \
179 V(code_symbol, ".code") \ 188 V(code_string, ".code") \
180 V(result_symbol, ".result") \ 189 V(result_string, ".result") \
181 V(dot_for_symbol, ".for.") \ 190 V(dot_for_string, ".for.") \
182 V(catch_var_symbol, ".catch-var") \ 191 V(catch_var_string, ".catch-var") \
183 V(empty_symbol, "") \ 192 V(empty_string, "") \
184 V(eval_symbol, "eval") \ 193 V(eval_string, "eval") \
185 V(function_symbol, "function") \ 194 V(function_string, "function") \
186 V(length_symbol, "length") \ 195 V(length_string, "length") \
187 V(module_symbol, "module") \ 196 V(module_string, "module") \
188 V(name_symbol, "name") \ 197 V(name_string, "name") \
189 V(native_symbol, "native") \ 198 V(native_string, "native") \
190 V(null_symbol, "null") \ 199 V(null_string, "null") \
191 V(number_symbol, "number") \ 200 V(number_string, "number") \
192 V(Number_symbol, "Number") \ 201 V(Number_string, "Number") \
193 V(nan_symbol, "NaN") \ 202 V(nan_string, "NaN") \
194 V(RegExp_symbol, "RegExp") \ 203 V(RegExp_string, "RegExp") \
195 V(source_symbol, "source") \ 204 V(source_string, "source") \
196 V(global_symbol, "global") \ 205 V(global_string, "global") \
197 V(ignore_case_symbol, "ignoreCase") \ 206 V(ignore_case_string, "ignoreCase") \
198 V(multiline_symbol, "multiline") \ 207 V(multiline_string, "multiline") \
199 V(input_symbol, "input") \ 208 V(input_string, "input") \
200 V(index_symbol, "index") \ 209 V(index_string, "index") \
201 V(last_index_symbol, "lastIndex") \ 210 V(last_index_string, "lastIndex") \
202 V(object_symbol, "object") \ 211 V(object_string, "object") \
203 V(prototype_symbol, "prototype") \ 212 V(prototype_string, "prototype") \
204 V(string_symbol, "string") \ 213 V(string_string, "string") \
205 V(String_symbol, "String") \ 214 V(String_string, "String") \
206 V(Date_symbol, "Date") \ 215 V(Date_string, "Date") \
207 V(this_symbol, "this") \ 216 V(this_string, "this") \
208 V(to_string_symbol, "toString") \ 217 V(to_string_string, "toString") \
209 V(char_at_symbol, "CharAt") \ 218 V(char_at_string, "CharAt") \
210 V(undefined_symbol, "undefined") \ 219 V(undefined_string, "undefined") \
211 V(value_of_symbol, "valueOf") \ 220 V(value_of_string, "valueOf") \
212 V(stack_symbol, "stack") \ 221 V(stack_string, "stack") \
213 V(InitializeVarGlobal_symbol, "InitializeVarGlobal") \ 222 V(InitializeVarGlobal_string, "InitializeVarGlobal") \
214 V(InitializeConstGlobal_symbol, "InitializeConstGlobal") \ 223 V(InitializeConstGlobal_string, "InitializeConstGlobal") \
215 V(KeyedLoadElementMonomorphic_symbol, \ 224 V(KeyedLoadElementMonomorphic_string, \
216 "KeyedLoadElementMonomorphic") \ 225 "KeyedLoadElementMonomorphic") \
217 V(KeyedStoreElementMonomorphic_symbol, \ 226 V(KeyedStoreElementMonomorphic_string, \
218 "KeyedStoreElementMonomorphic") \ 227 "KeyedStoreElementMonomorphic") \
219 V(KeyedStoreAndGrowElementMonomorphic_symbol, \ 228 V(KeyedStoreAndGrowElementMonomorphic_string, \
220 "KeyedStoreAndGrowElementMonomorphic") \ 229 "KeyedStoreAndGrowElementMonomorphic") \
221 V(stack_overflow_symbol, "kStackOverflowBoilerplate") \ 230 V(stack_overflow_string, "kStackOverflowBoilerplate") \
222 V(illegal_access_symbol, "illegal access") \ 231 V(illegal_access_string, "illegal access") \
223 V(out_of_memory_symbol, "out-of-memory") \ 232 V(out_of_memory_string, "out-of-memory") \
224 V(illegal_execution_state_symbol, "illegal execution state") \ 233 V(illegal_execution_state_string, "illegal execution state") \
225 V(get_symbol, "get") \ 234 V(get_string, "get") \
226 V(set_symbol, "set") \ 235 V(set_string, "set") \
227 V(map_field_symbol, "%map") \ 236 V(map_field_string, "%map") \
228 V(elements_field_symbol, "%elements") \ 237 V(elements_field_string, "%elements") \
229 V(length_field_symbol, "%length") \ 238 V(length_field_string, "%length") \
230 V(function_class_symbol, "Function") \ 239 V(function_class_string, "Function") \
231 V(illegal_argument_symbol, "illegal argument") \ 240 V(illegal_argument_string, "illegal argument") \
232 V(MakeReferenceError_symbol, "MakeReferenceError") \ 241 V(MakeReferenceError_string, "MakeReferenceError") \
233 V(MakeSyntaxError_symbol, "MakeSyntaxError") \ 242 V(MakeSyntaxError_string, "MakeSyntaxError") \
234 V(MakeTypeError_symbol, "MakeTypeError") \ 243 V(MakeTypeError_string, "MakeTypeError") \
235 V(invalid_lhs_in_assignment_symbol, "invalid_lhs_in_assignment") \ 244 V(invalid_lhs_in_assignment_string, "invalid_lhs_in_assignment") \
236 V(invalid_lhs_in_for_in_symbol, "invalid_lhs_in_for_in") \ 245 V(invalid_lhs_in_for_in_string, "invalid_lhs_in_for_in") \
237 V(invalid_lhs_in_postfix_op_symbol, "invalid_lhs_in_postfix_op") \ 246 V(invalid_lhs_in_postfix_op_string, "invalid_lhs_in_postfix_op") \
238 V(invalid_lhs_in_prefix_op_symbol, "invalid_lhs_in_prefix_op") \ 247 V(invalid_lhs_in_prefix_op_string, "invalid_lhs_in_prefix_op") \
239 V(illegal_return_symbol, "illegal_return") \ 248 V(illegal_return_string, "illegal_return") \
240 V(illegal_break_symbol, "illegal_break") \ 249 V(illegal_break_string, "illegal_break") \
241 V(illegal_continue_symbol, "illegal_continue") \ 250 V(illegal_continue_string, "illegal_continue") \
242 V(unknown_label_symbol, "unknown_label") \ 251 V(unknown_label_string, "unknown_label") \
243 V(redeclaration_symbol, "redeclaration") \ 252 V(redeclaration_string, "redeclaration") \
244 V(failure_symbol, "<failure>") \ 253 V(failure_string, "<failure>") \
245 V(space_symbol, " ") \ 254 V(space_string, " ") \
246 V(exec_symbol, "exec") \ 255 V(exec_string, "exec") \
247 V(zero_symbol, "0") \ 256 V(zero_string, "0") \
248 V(global_eval_symbol, "GlobalEval") \ 257 V(global_eval_string, "GlobalEval") \
249 V(identity_hash_symbol, "v8::IdentityHash") \ 258 V(identity_hash_string, "v8::IdentityHash") \
250 V(closure_symbol, "(closure)") \ 259 V(closure_string, "(closure)") \
251 V(use_strict, "use strict") \ 260 V(use_strict_string, "use strict") \
252 V(dot_symbol, ".") \ 261 V(dot_string, ".") \
253 V(anonymous_function_symbol, "(anonymous function)") \ 262 V(anonymous_function_string, "(anonymous function)") \
254 V(compare_ic_symbol, "==") \ 263 V(compare_ic_string, "==") \
255 V(strict_compare_ic_symbol, "===") \ 264 V(strict_compare_ic_string, "===") \
256 V(infinity_symbol, "Infinity") \ 265 V(infinity_string, "Infinity") \
257 V(minus_infinity_symbol, "-Infinity") \ 266 V(minus_infinity_string, "-Infinity") \
258 V(hidden_stack_trace_symbol, "v8::hidden_stack_trace") \ 267 V(hidden_stack_trace_string, "v8::hidden_stack_trace") \
259 V(query_colon_symbol, "(?:)") 268 V(query_colon_string, "(?:)") \
260 269
261 // Forward declarations. 270 // Forward declarations.
262 class GCTracer; 271 class GCTracer;
263 class HeapStats; 272 class HeapStats;
264 class Isolate; 273 class Isolate;
265 class WeakObjectRetainer; 274 class WeakObjectRetainer;
266 275
267 276
268 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap, 277 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap,
269 Object** pointer); 278 Object** pointer);
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 Vector<const char> str, 762 Vector<const char> str,
754 PretenureFlag pretenure = NOT_TENURED); 763 PretenureFlag pretenure = NOT_TENURED);
755 MUST_USE_RESULT MaybeObject* AllocateStringFromUtf8Slow( 764 MUST_USE_RESULT MaybeObject* AllocateStringFromUtf8Slow(
756 Vector<const char> str, 765 Vector<const char> str,
757 int non_ascii_start, 766 int non_ascii_start,
758 PretenureFlag pretenure = NOT_TENURED); 767 PretenureFlag pretenure = NOT_TENURED);
759 MUST_USE_RESULT MaybeObject* AllocateStringFromTwoByte( 768 MUST_USE_RESULT MaybeObject* AllocateStringFromTwoByte(
760 Vector<const uc16> str, 769 Vector<const uc16> str,
761 PretenureFlag pretenure = NOT_TENURED); 770 PretenureFlag pretenure = NOT_TENURED);
762 771
763 // Allocates a symbol in old space based on the character stream. 772 // Allocates an internalized string in old space based on the character
764 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 773 // stream. Returns Failure::RetryAfterGC(requested_bytes, space) if the
765 // failed. 774 // allocation failed.
766 // Please note this function does not perform a garbage collection. 775 // Please note this function does not perform a garbage collection.
767 MUST_USE_RESULT inline MaybeObject* AllocateSymbolFromUtf8( 776 MUST_USE_RESULT inline MaybeObject* AllocateInternalizedStringFromUtf8(
768 Vector<const char> str, 777 Vector<const char> str,
769 int chars, 778 int chars,
770 uint32_t hash_field); 779 uint32_t hash_field);
771 780
772 MUST_USE_RESULT inline MaybeObject* AllocateOneByteSymbol( 781 MUST_USE_RESULT inline MaybeObject* AllocateOneByteInternalizedString(
773 Vector<const uint8_t> str, 782 Vector<const uint8_t> str,
774 uint32_t hash_field); 783 uint32_t hash_field);
775 784
776 MUST_USE_RESULT inline MaybeObject* AllocateTwoByteSymbol( 785 MUST_USE_RESULT inline MaybeObject* AllocateTwoByteInternalizedString(
777 Vector<const uc16> str, 786 Vector<const uc16> str,
778 uint32_t hash_field); 787 uint32_t hash_field);
779 788
780 template<typename T> 789 template<typename T>
781 static inline bool IsOneByte(T t, int chars); 790 static inline bool IsOneByte(T t, int chars);
782 791
783 template<typename T> 792 template<typename T>
784 MUST_USE_RESULT inline MaybeObject* AllocateInternalSymbol( 793 MUST_USE_RESULT inline MaybeObject* AllocateInternalizedStringImpl(
785 T t, int chars, uint32_t hash_field); 794 T t, int chars, uint32_t hash_field);
786 795
787 template<bool is_one_byte, typename T> 796 template<bool is_one_byte, typename T>
788 MUST_USE_RESULT MaybeObject* AllocateInternalSymbol( 797 MUST_USE_RESULT MaybeObject* AllocateInternalizedStringImpl(
789 T t, int chars, uint32_t hash_field); 798 T t, int chars, uint32_t hash_field);
790 799
791 // Allocates and partially initializes a String. There are two String 800 // Allocates and partially initializes a String. There are two String
792 // encodings: ASCII and two byte. These functions allocate a string of the 801 // encodings: ASCII and two byte. These functions allocate a string of the
793 // given length and set its map and length fields. The characters of the 802 // given length and set its map and length fields. The characters of the
794 // string are uninitialized. 803 // string are uninitialized.
795 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 804 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
796 // failed. 805 // failed.
797 // Please note this does not perform a garbage collection. 806 // Please note this does not perform a garbage collection.
798 MUST_USE_RESULT MaybeObject* AllocateRawOneByteString( 807 MUST_USE_RESULT MaybeObject* AllocateRawOneByteString(
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 Code::Flags flags, 1084 Code::Flags flags,
1076 Handle<Object> self_reference, 1085 Handle<Object> self_reference,
1077 bool immovable = false); 1086 bool immovable = false);
1078 1087
1079 MUST_USE_RESULT MaybeObject* CopyCode(Code* code); 1088 MUST_USE_RESULT MaybeObject* CopyCode(Code* code);
1080 1089
1081 // Copy the code and scope info part of the code object, but insert 1090 // Copy the code and scope info part of the code object, but insert
1082 // the provided data as the relocation information. 1091 // the provided data as the relocation information.
1083 MUST_USE_RESULT MaybeObject* CopyCode(Code* code, Vector<byte> reloc_info); 1092 MUST_USE_RESULT MaybeObject* CopyCode(Code* code, Vector<byte> reloc_info);
1084 1093
1085 // Finds the symbol for string in the symbol table. 1094 // Finds the internalized copy for string in the string table.
1086 // If not found, a new symbol is added to the table and returned. 1095 // If not found, a new string is added to the table and returned.
1087 // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation 1096 // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation
1088 // failed. 1097 // failed.
1089 // Please note this function does not perform a garbage collection. 1098 // Please note this function does not perform a garbage collection.
1090 MUST_USE_RESULT MaybeObject* LookupUtf8Symbol(Vector<const char> str); 1099 MUST_USE_RESULT MaybeObject* InternalizeUtf8String(Vector<const char> str);
1091 MUST_USE_RESULT MaybeObject* LookupUtf8Symbol(const char* str) { 1100 MUST_USE_RESULT MaybeObject* InternalizeUtf8String(const char* str) {
1092 return LookupUtf8Symbol(CStrVector(str)); 1101 return InternalizeUtf8String(CStrVector(str));
1093 } 1102 }
1094 MUST_USE_RESULT MaybeObject* LookupOneByteSymbol(Vector<const uint8_t> str); 1103 MUST_USE_RESULT MaybeObject* InternalizeOneByteString(
1095 MUST_USE_RESULT MaybeObject* LookupTwoByteSymbol(Vector<const uc16> str); 1104 Vector<const uint8_t> str);
1096 MUST_USE_RESULT MaybeObject* LookupSymbol(String* str); 1105 MUST_USE_RESULT MaybeObject* InternalizeTwoByteString(Vector<const uc16> str);
1097 MUST_USE_RESULT MaybeObject* LookupOneByteSymbol( 1106 MUST_USE_RESULT MaybeObject* InternalizeString(String* str);
1107 MUST_USE_RESULT MaybeObject* InternalizeOneByteString(
1098 Handle<SeqOneByteString> string, int from, int length); 1108 Handle<SeqOneByteString> string, int from, int length);
1099 1109
1100 bool LookupSymbolIfExists(String* str, String** symbol); 1110 bool InternalizeStringIfExists(String* str, String** result);
1101 bool LookupTwoCharsSymbolIfExists(String* str, String** symbol); 1111 bool InternalizeTwoCharsStringIfExists(String* str, String** result);
1102 1112
1103 // Compute the matching symbol map for a string if possible. 1113 // Compute the matching internalized string map for a string if possible.
1104 // NULL is returned if string is in new space or not flattened. 1114 // NULL is returned if string is in new space or not flattened.
1105 Map* SymbolMapForString(String* str); 1115 Map* InternalizedStringMapForString(String* str);
1106 1116
1107 // Tries to flatten a string before compare operation. 1117 // Tries to flatten a string before compare operation.
1108 // 1118 //
1109 // Returns a failure in case it was decided that flattening was 1119 // Returns a failure in case it was decided that flattening was
1110 // necessary and failed. Note, if flattening is not necessary the 1120 // necessary and failed. Note, if flattening is not necessary the
1111 // string might stay non-flat even when not a failure is returned. 1121 // string might stay non-flat even when not a failure is returned.
1112 // 1122 //
1113 // Please note this function does not perform a garbage collection. 1123 // Please note this function does not perform a garbage collection.
1114 MUST_USE_RESULT inline MaybeObject* PrepareForCompare(String* str); 1124 MUST_USE_RESULT inline MaybeObject* PrepareForCompare(String* str);
1115 1125
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 #undef ROOT_ACCESSOR 1233 #undef ROOT_ACCESSOR
1224 1234
1225 // Utility type maps 1235 // Utility type maps
1226 #define STRUCT_MAP_ACCESSOR(NAME, Name, name) \ 1236 #define STRUCT_MAP_ACCESSOR(NAME, Name, name) \
1227 Map* name##_map() { \ 1237 Map* name##_map() { \
1228 return Map::cast(roots_[k##Name##MapRootIndex]); \ 1238 return Map::cast(roots_[k##Name##MapRootIndex]); \
1229 } 1239 }
1230 STRUCT_LIST(STRUCT_MAP_ACCESSOR) 1240 STRUCT_LIST(STRUCT_MAP_ACCESSOR)
1231 #undef STRUCT_MAP_ACCESSOR 1241 #undef STRUCT_MAP_ACCESSOR
1232 1242
1233 #define SYMBOL_ACCESSOR(name, str) String* name() { \ 1243 #define STRING_ACCESSOR(name, str) String* name() { \
1234 return String::cast(roots_[k##name##RootIndex]); \ 1244 return String::cast(roots_[k##name##RootIndex]); \
1235 } 1245 }
1236 SYMBOL_LIST(SYMBOL_ACCESSOR) 1246 INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
1237 #undef SYMBOL_ACCESSOR 1247 #undef STRING_ACCESSOR
1238 1248
1239 // The hidden_symbol is special because it is the empty string, but does 1249 // The hidden_string is special because it is the empty string, but does
1240 // not match the empty string. 1250 // not match the empty string.
1241 String* hidden_symbol() { return hidden_symbol_; } 1251 String* hidden_string() { return hidden_string_; }
1242 1252
1243 void set_native_contexts_list(Object* object) { 1253 void set_native_contexts_list(Object* object) {
1244 native_contexts_list_ = object; 1254 native_contexts_list_ = object;
1245 } 1255 }
1246 Object* native_contexts_list() { return native_contexts_list_; } 1256 Object* native_contexts_list() { return native_contexts_list_; }
1247 1257
1248 // Number of mark-sweeps. 1258 // Number of mark-sweeps.
1249 unsigned int ms_count() { return ms_count_; } 1259 unsigned int ms_count() { return ms_count_; }
1250 1260
1251 // Iterates over all roots in the heap. 1261 // Iterates over all roots in the heap.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1357 #endif 1367 #endif
1358 #endif 1368 #endif
1359 } 1369 }
1360 1370
1361 // Fill in bogus values in from space 1371 // Fill in bogus values in from space
1362 void ZapFromSpace(); 1372 void ZapFromSpace();
1363 1373
1364 // Print short heap statistics. 1374 // Print short heap statistics.
1365 void PrintShortHeapStatistics(); 1375 void PrintShortHeapStatistics();
1366 1376
1367 // Makes a new symbol object 1377 // Makes a new internalized string object
1368 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 1378 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
1369 // failed. 1379 // failed.
1370 // Please note this function does not perform a garbage collection. 1380 // Please note this function does not perform a garbage collection.
1371 MUST_USE_RESULT MaybeObject* CreateSymbol( 1381 MUST_USE_RESULT MaybeObject* CreateInternalizedString(
1372 const char* str, int length, int hash); 1382 const char* str, int length, int hash);
1373 MUST_USE_RESULT MaybeObject* CreateSymbol(String* str); 1383 MUST_USE_RESULT MaybeObject* CreateInternalizedString(String* str);
1374 1384
1375 // Write barrier support for address[offset] = o. 1385 // Write barrier support for address[offset] = o.
1376 inline void RecordWrite(Address address, int offset); 1386 inline void RecordWrite(Address address, int offset);
1377 1387
1378 // Write barrier support for address[start : start + len[ = o. 1388 // Write barrier support for address[start : start + len[ = o.
1379 inline void RecordWrites(Address address, int start, int len); 1389 inline void RecordWrites(Address address, int start, int len);
1380 1390
1381 // Given an address occupied by a live code object, return that object. 1391 // Given an address occupied by a live code object, return that object.
1382 Object* FindCodeObject(Address a); 1392 Object* FindCodeObject(Address a);
1383 1393
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 1493
1484 // Implements the corresponding V8 API function. 1494 // Implements the corresponding V8 API function.
1485 bool IdleNotification(int hint); 1495 bool IdleNotification(int hint);
1486 1496
1487 // Declare all the root indices. 1497 // Declare all the root indices.
1488 enum RootListIndex { 1498 enum RootListIndex {
1489 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex, 1499 #define ROOT_INDEX_DECLARATION(type, name, camel_name) k##camel_name##RootIndex,
1490 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION) 1500 STRONG_ROOT_LIST(ROOT_INDEX_DECLARATION)
1491 #undef ROOT_INDEX_DECLARATION 1501 #undef ROOT_INDEX_DECLARATION
1492 1502
1493 #define SYMBOL_INDEX_DECLARATION(name, str) k##name##RootIndex, 1503 #define STRING_INDEX_DECLARATION(name, str) k##name##RootIndex,
1494 SYMBOL_LIST(SYMBOL_INDEX_DECLARATION) 1504 INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION)
1495 #undef SYMBOL_DECLARATION 1505 #undef STRING_DECLARATION
1496 1506
1497 // Utility type maps 1507 // Utility type maps
1498 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex, 1508 #define DECLARE_STRUCT_MAP(NAME, Name, name) k##Name##MapRootIndex,
1499 STRUCT_LIST(DECLARE_STRUCT_MAP) 1509 STRUCT_LIST(DECLARE_STRUCT_MAP)
1500 #undef DECLARE_STRUCT_MAP 1510 #undef DECLARE_STRUCT_MAP
1501 1511
1502 kSymbolTableRootIndex, 1512 kStringTableRootIndex,
1503 kStrongRootListLength = kSymbolTableRootIndex, 1513 kStrongRootListLength = kStringTableRootIndex,
1504 kRootListLength 1514 kRootListLength
1505 }; 1515 };
1506 1516
1507 STATIC_CHECK(kUndefinedValueRootIndex == Internals::kUndefinedValueRootIndex); 1517 STATIC_CHECK(kUndefinedValueRootIndex == Internals::kUndefinedValueRootIndex);
1508 STATIC_CHECK(kNullValueRootIndex == Internals::kNullValueRootIndex); 1518 STATIC_CHECK(kNullValueRootIndex == Internals::kNullValueRootIndex);
1509 STATIC_CHECK(kTrueValueRootIndex == Internals::kTrueValueRootIndex); 1519 STATIC_CHECK(kTrueValueRootIndex == Internals::kTrueValueRootIndex);
1510 STATIC_CHECK(kFalseValueRootIndex == Internals::kFalseValueRootIndex); 1520 STATIC_CHECK(kFalseValueRootIndex == Internals::kFalseValueRootIndex);
1511 STATIC_CHECK(kempty_symbolRootIndex == Internals::kEmptySymbolRootIndex); 1521 STATIC_CHECK(kempty_stringRootIndex == Internals::kEmptyStringRootIndex);
1512 1522
1513 // Generated code can embed direct references to non-writable roots if 1523 // Generated code can embed direct references to non-writable roots if
1514 // they are in new space. 1524 // they are in new space.
1515 static bool RootCanBeWrittenAfterInitialization(RootListIndex root_index); 1525 static bool RootCanBeWrittenAfterInitialization(RootListIndex root_index);
1516 1526
1517 MUST_USE_RESULT MaybeObject* NumberToString( 1527 MUST_USE_RESULT MaybeObject* NumberToString(
1518 Object* number, bool check_number_string_cache = true); 1528 Object* number, bool check_number_string_cache = true);
1519 MUST_USE_RESULT MaybeObject* Uint32ToString( 1529 MUST_USE_RESULT MaybeObject* Uint32ToString(
1520 uint32_t value, bool check_number_string_cache = true); 1530 uint32_t value, bool check_number_string_cache = true);
1521 1531
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
1907 Object* native_contexts_list_; 1917 Object* native_contexts_list_;
1908 1918
1909 StoreBufferRebuilder store_buffer_rebuilder_; 1919 StoreBufferRebuilder store_buffer_rebuilder_;
1910 1920
1911 struct StringTypeTable { 1921 struct StringTypeTable {
1912 InstanceType type; 1922 InstanceType type;
1913 int size; 1923 int size;
1914 RootListIndex index; 1924 RootListIndex index;
1915 }; 1925 };
1916 1926
1917 struct ConstantSymbolTable { 1927 struct ConstantStringTable {
1918 const char* contents; 1928 const char* contents;
1919 RootListIndex index; 1929 RootListIndex index;
1920 }; 1930 };
1921 1931
1922 struct StructTable { 1932 struct StructTable {
1923 InstanceType type; 1933 InstanceType type;
1924 int size; 1934 int size;
1925 RootListIndex index; 1935 RootListIndex index;
1926 }; 1936 };
1927 1937
1928 static const StringTypeTable string_type_table[]; 1938 static const StringTypeTable string_type_table[];
1929 static const ConstantSymbolTable constant_symbol_table[]; 1939 static const ConstantStringTable constant_string_table[];
1930 static const StructTable struct_table[]; 1940 static const StructTable struct_table[];
1931 1941
1932 // The special hidden symbol which is an empty string, but does not match 1942 // The special hidden string which is an empty string, but does not match
1933 // any string when looked up in properties. 1943 // any string when looked up in properties.
1934 String* hidden_symbol_; 1944 String* hidden_string_;
1935 1945
1936 // GC callback function, called before and after mark-compact GC. 1946 // GC callback function, called before and after mark-compact GC.
1937 // Allocations in the callback function are disallowed. 1947 // Allocations in the callback function are disallowed.
1938 struct GCPrologueCallbackPair { 1948 struct GCPrologueCallbackPair {
1939 GCPrologueCallbackPair(GCPrologueCallback callback, GCType gc_type) 1949 GCPrologueCallbackPair(GCPrologueCallback callback, GCType gc_type)
1940 : callback(callback), gc_type(gc_type) { 1950 : callback(callback), gc_type(gc_type) {
1941 } 1951 }
1942 bool operator==(const GCPrologueCallbackPair& pair) const { 1952 bool operator==(const GCPrologueCallbackPair& pair) const {
1943 return pair.callback == callback; 1953 return pair.callback == callback;
1944 } 1954 }
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 return heap_size_mb / kMbPerMs; 2176 return heap_size_mb / kMbPerMs;
2167 } 2177 }
2168 2178
2169 // Returns true if no more GC work is left. 2179 // Returns true if no more GC work is left.
2170 bool IdleGlobalGC(); 2180 bool IdleGlobalGC();
2171 2181
2172 void AdvanceIdleIncrementalMarking(intptr_t step_size); 2182 void AdvanceIdleIncrementalMarking(intptr_t step_size);
2173 2183
2174 void ClearObjectStats(bool clear_last_time_stats = false); 2184 void ClearObjectStats(bool clear_last_time_stats = false);
2175 2185
2176 static const int kInitialSymbolTableSize = 2048; 2186 static const int kInitialStringTableSize = 2048;
2177 static const int kInitialEvalCacheSize = 64; 2187 static const int kInitialEvalCacheSize = 64;
2178 static const int kInitialNumberStringCacheSize = 256; 2188 static const int kInitialNumberStringCacheSize = 256;
2179 2189
2180 // Object counts and used memory by InstanceType 2190 // Object counts and used memory by InstanceType
2181 size_t object_counts_[OBJECT_STATS_COUNT]; 2191 size_t object_counts_[OBJECT_STATS_COUNT];
2182 size_t object_counts_last_time_[OBJECT_STATS_COUNT]; 2192 size_t object_counts_last_time_[OBJECT_STATS_COUNT];
2183 size_t object_sizes_[OBJECT_STATS_COUNT]; 2193 size_t object_sizes_[OBJECT_STATS_COUNT];
2184 size_t object_sizes_last_time_[OBJECT_STATS_COUNT]; 2194 size_t object_sizes_last_time_[OBJECT_STATS_COUNT];
2185 2195
2186 // Maximum GC pause. 2196 // Maximum GC pause.
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
2497 2507
2498 // Cache for mapping (map, property name) into descriptor index. 2508 // Cache for mapping (map, property name) into descriptor index.
2499 // The cache contains both positive and negative results. 2509 // The cache contains both positive and negative results.
2500 // Descriptor index equals kNotFound means the property is absent. 2510 // Descriptor index equals kNotFound means the property is absent.
2501 // Cleared at startup and prior to any gc. 2511 // Cleared at startup and prior to any gc.
2502 class DescriptorLookupCache { 2512 class DescriptorLookupCache {
2503 public: 2513 public:
2504 // Lookup descriptor index for (map, name). 2514 // Lookup descriptor index for (map, name).
2505 // If absent, kAbsent is returned. 2515 // If absent, kAbsent is returned.
2506 int Lookup(Map* source, String* name) { 2516 int Lookup(Map* source, String* name) {
2507 if (!StringShape(name).IsSymbol()) return kAbsent; 2517 if (!StringShape(name).IsInternalized()) return kAbsent;
2508 int index = Hash(source, name); 2518 int index = Hash(source, name);
2509 Key& key = keys_[index]; 2519 Key& key = keys_[index];
2510 if ((key.source == source) && (key.name == name)) return results_[index]; 2520 if ((key.source == source) && (key.name == name)) return results_[index];
2511 return kAbsent; 2521 return kAbsent;
2512 } 2522 }
2513 2523
2514 // Update an element in the cache. 2524 // Update an element in the cache.
2515 void Update(Map* source, String* name, int result) { 2525 void Update(Map* source, String* name, int result) {
2516 ASSERT(result != kAbsent); 2526 ASSERT(result != kAbsent);
2517 if (StringShape(name).IsSymbol()) { 2527 if (StringShape(name).IsInternalized()) {
2518 int index = Hash(source, name); 2528 int index = Hash(source, name);
2519 Key& key = keys_[index]; 2529 Key& key = keys_[index];
2520 key.source = source; 2530 key.source = source;
2521 key.name = name; 2531 key.name = name;
2522 results_[index] = result; 2532 results_[index] = result;
2523 } 2533 }
2524 } 2534 }
2525 2535
2526 // Clear the cache. 2536 // Clear the cache.
2527 void Clear(); 2537 void Clear();
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
2940 AssertNoAllocation no_alloc; // i.e. no gc allowed. 2950 AssertNoAllocation no_alloc; // i.e. no gc allowed.
2941 2951
2942 private: 2952 private:
2943 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2953 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2944 }; 2954 };
2945 #endif // DEBUG 2955 #endif // DEBUG
2946 2956
2947 } } // namespace v8::internal 2957 } } // namespace v8::internal
2948 2958
2949 #endif // V8_HEAP_H_ 2959 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « src/handles.cc ('k') | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698