Commit 8ef91e12 authored by Igor Sheludko's avatar Igor Sheludko Committed by Commit Bot

[cleanup] Convert more list macros to ROOT_LIST-compatible ones

INTERNALIZED_STRING_ROOT_LIST, [PRIVATE|PUBLIC|WELL_KNOWN]_SYMBOL_ROOT_LIST

Bug: v8:8015
Change-Id: I6f271fa8bfbe5e994ebcef191e6750fa3ff6dd7f
Reviewed-on: https://chromium-review.googlesource.com/1238567Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56160}
parent 14595004
...@@ -4026,17 +4026,17 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate, ...@@ -4026,17 +4026,17 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
Factory* factory = isolate->factory(); Factory* factory = isolate->factory();
HandleScope scope(isolate); HandleScope scope(isolate);
Handle<NativeContext> native_context = isolate->native_context(); Handle<NativeContext> native_context = isolate->native_context();
#define EXPORT_PRIVATE_SYMBOL(NAME) \ #define EXPORT_PRIVATE_SYMBOL(_, NAME) \
Handle<String> NAME##_name = factory->NewStringFromAsciiChecked(#NAME); \ Handle<String> NAME##_name = factory->NewStringFromAsciiChecked(#NAME); \
JSObject::AddProperty(isolate, container, NAME##_name, factory->NAME(), NONE); JSObject::AddProperty(isolate, container, NAME##_name, factory->NAME(), NONE);
PRIVATE_SYMBOL_LIST(EXPORT_PRIVATE_SYMBOL) PRIVATE_SYMBOL_LIST_GENERATOR(EXPORT_PRIVATE_SYMBOL, /* not used */)
#undef EXPORT_PRIVATE_SYMBOL #undef EXPORT_PRIVATE_SYMBOL
#define EXPORT_PUBLIC_SYMBOL(NAME, DESCRIPTION) \ #define EXPORT_PUBLIC_SYMBOL(_, NAME, DESCRIPTION) \
Handle<String> NAME##_name = factory->NewStringFromAsciiChecked(#NAME); \ Handle<String> NAME##_name = factory->NewStringFromAsciiChecked(#NAME); \
JSObject::AddProperty(isolate, container, NAME##_name, factory->NAME(), NONE); JSObject::AddProperty(isolate, container, NAME##_name, factory->NAME(), NONE);
PUBLIC_SYMBOL_LIST(EXPORT_PUBLIC_SYMBOL) PUBLIC_SYMBOL_LIST_GENERATOR(EXPORT_PUBLIC_SYMBOL, /* not used */)
WELL_KNOWN_SYMBOL_LIST(EXPORT_PUBLIC_SYMBOL) WELL_KNOWN_SYMBOL_LIST_GENERATOR(EXPORT_PUBLIC_SYMBOL, /* not used */)
#undef EXPORT_PUBLIC_SYMBOL #undef EXPORT_PUBLIC_SYMBOL
Handle<JSObject> iterator_prototype( Handle<JSObject> iterator_prototype(
......
...@@ -5,314 +5,314 @@ ...@@ -5,314 +5,314 @@
#ifndef V8_HEAP_SYMBOLS_H_ #ifndef V8_HEAP_SYMBOLS_H_
#define V8_HEAP_SYMBOLS_H_ #define V8_HEAP_SYMBOLS_H_
#define INTERNALIZED_STRING_LIST(V) \ #define INTERNALIZED_STRING_LIST_GENERATOR(V, _) \
V(add_string, "add") \ V(_, add_string, "add") \
V(always_string, "always") \ V(_, always_string, "always") \
V(anonymous_function_string, "(anonymous function)") \ V(_, anonymous_function_string, "(anonymous function)") \
V(anonymous_string, "anonymous") \ V(_, anonymous_string, "anonymous") \
V(apply_string, "apply") \ V(_, apply_string, "apply") \
V(Arguments_string, "Arguments") \ V(_, Arguments_string, "Arguments") \
V(arguments_string, "arguments") \ V(_, arguments_string, "arguments") \
V(arguments_to_string, "[object Arguments]") \ V(_, arguments_to_string, "[object Arguments]") \
V(Array_string, "Array") \ V(_, Array_string, "Array") \
V(array_to_string, "[object Array]") \ V(_, array_to_string, "[object Array]") \
V(ArrayBuffer_string, "ArrayBuffer") \ V(_, ArrayBuffer_string, "ArrayBuffer") \
V(ArrayIterator_string, "Array Iterator") \ V(_, ArrayIterator_string, "Array Iterator") \
V(assign_string, "assign") \ V(_, assign_string, "assign") \
V(async_string, "async") \ V(_, async_string, "async") \
V(auto_string, "auto") \ V(_, auto_string, "auto") \
V(await_string, "await") \ V(_, await_string, "await") \
V(BigInt_string, "BigInt") \ V(_, BigInt_string, "BigInt") \
V(bigint_string, "bigint") \ V(_, bigint_string, "bigint") \
V(BigInt64Array_string, "BigInt64Array") \ V(_, BigInt64Array_string, "BigInt64Array") \
V(BigUint64Array_string, "BigUint64Array") \ V(_, BigUint64Array_string, "BigUint64Array") \
V(bind_string, "bind") \ V(_, bind_string, "bind") \
V(Boolean_string, "Boolean") \ V(_, Boolean_string, "Boolean") \
V(boolean_string, "boolean") \ V(_, boolean_string, "boolean") \
V(boolean_to_string, "[object Boolean]") \ V(_, boolean_to_string, "[object Boolean]") \
V(bound__string, "bound ") \ V(_, bound__string, "bound ") \
V(buffer_string, "buffer") \ V(_, buffer_string, "buffer") \
V(byte_length_string, "byteLength") \ V(_, byte_length_string, "byteLength") \
V(byte_offset_string, "byteOffset") \ V(_, byte_offset_string, "byteOffset") \
V(call_string, "call") \ V(_, call_string, "call") \
V(callee_string, "callee") \ V(_, callee_string, "callee") \
V(caller_string, "caller") \ V(_, caller_string, "caller") \
V(caseFirst_string, "caseFirst") \ V(_, caseFirst_string, "caseFirst") \
V(cell_value_string, "%cell_value") \ V(_, cell_value_string, "%cell_value") \
V(char_at_string, "CharAt") \ V(_, char_at_string, "CharAt") \
V(character_string, "character") \ V(_, character_string, "character") \
V(closure_string, "(closure)") \ V(_, closure_string, "(closure)") \
V(code_string, "code") \ V(_, code_string, "code") \
V(collation_string, "collation") \ V(_, collation_string, "collation") \
V(column_string, "column") \ V(_, column_string, "column") \
V(CompileError_string, "CompileError") \ V(_, CompileError_string, "CompileError") \
V(configurable_string, "configurable") \ V(_, configurable_string, "configurable") \
V(construct_string, "construct") \ V(_, construct_string, "construct") \
V(constructor_string, "constructor") \ V(_, constructor_string, "constructor") \
V(conjunction_string, "conjunction") \ V(_, conjunction_string, "conjunction") \
V(create_string, "create") \ V(_, create_string, "create") \
V(currency_string, "currency") \ V(_, currency_string, "currency") \
V(currencyDisplay_string, "currencyDisplay") \ V(_, currencyDisplay_string, "currencyDisplay") \
V(Date_string, "Date") \ V(_, Date_string, "Date") \
V(date_to_string, "[object Date]") \ V(_, date_to_string, "[object Date]") \
V(day_string, "day") \ V(_, day_string, "day") \
V(dayPeriod_string, "dayPeriod") \ V(_, dayPeriod_string, "dayPeriod") \
V(decimal_string, "decimal") \ V(_, decimal_string, "decimal") \
V(default_string, "default") \ V(_, default_string, "default") \
V(defineProperty_string, "defineProperty") \ V(_, defineProperty_string, "defineProperty") \
V(deleteProperty_string, "deleteProperty") \ V(_, deleteProperty_string, "deleteProperty") \
V(did_handle_string, "didHandle") \ V(_, did_handle_string, "didHandle") \
V(disjunction_string, "disjunction") \ V(_, disjunction_string, "disjunction") \
V(display_name_string, "displayName") \ V(_, display_name_string, "displayName") \
V(done_string, "done") \ V(_, done_string, "done") \
V(dot_catch_string, ".catch") \ V(_, dot_catch_string, ".catch") \
V(dot_for_string, ".for") \ V(_, dot_for_string, ".for") \
V(dot_generator_object_string, ".generator_object") \ V(_, dot_generator_object_string, ".generator_object") \
V(dot_iterator_string, ".iterator") \ V(_, dot_iterator_string, ".iterator") \
V(dot_result_string, ".result") \ V(_, dot_result_string, ".result") \
V(dot_string, ".") \ V(_, dot_string, ".") \
V(dot_switch_tag_string, ".switch_tag") \ V(_, dot_switch_tag_string, ".switch_tag") \
V(dotAll_string, "dotAll") \ V(_, dotAll_string, "dotAll") \
V(enqueue_string, "enqueue") \ V(_, enqueue_string, "enqueue") \
V(entries_string, "entries") \ V(_, entries_string, "entries") \
V(enumerable_string, "enumerable") \ V(_, enumerable_string, "enumerable") \
V(element_string, "element") \ V(_, element_string, "element") \
V(era_string, "era") \ V(_, era_string, "era") \
V(Error_string, "Error") \ V(_, Error_string, "Error") \
V(error_to_string, "[object Error]") \ V(_, error_to_string, "[object Error]") \
V(eval_string, "eval") \ V(_, eval_string, "eval") \
V(EvalError_string, "EvalError") \ V(_, EvalError_string, "EvalError") \
V(exec_string, "exec") \ V(_, exec_string, "exec") \
V(false_string, "false") \ V(_, false_string, "false") \
V(flags_string, "flags") \ V(_, flags_string, "flags") \
V(Float32Array_string, "Float32Array") \ V(_, Float32Array_string, "Float32Array") \
V(Float64Array_string, "Float64Array") \ V(_, Float64Array_string, "Float64Array") \
V(fraction_string, "fraction") \ V(_, fraction_string, "fraction") \
V(Function_string, "Function") \ V(_, Function_string, "Function") \
V(function_native_code_string, "function () { [native code] }") \ V(_, function_native_code_string, "function () { [native code] }") \
V(function_string, "function") \ V(_, function_string, "function") \
V(function_to_string, "[object Function]") \ V(_, function_to_string, "[object Function]") \
V(Generator_string, "Generator") \ V(_, Generator_string, "Generator") \
V(get_space_string, "get ") \ V(_, get_space_string, "get ") \
V(get_string, "get") \ V(_, get_string, "get") \
V(getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \ V(_, getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \
V(getOwnPropertyDescriptors_string, "getOwnPropertyDescriptors") \ V(_, getOwnPropertyDescriptors_string, "getOwnPropertyDescriptors") \
V(getPrototypeOf_string, "getPrototypeOf") \ V(_, getPrototypeOf_string, "getPrototypeOf") \
V(global_string, "global") \ V(_, global_string, "global") \
V(globalThis_string, "globalThis") \ V(_, globalThis_string, "globalThis") \
V(group_string, "group") \ V(_, group_string, "group") \
V(groups_string, "groups") \ V(_, groups_string, "groups") \
V(has_string, "has") \ V(_, has_string, "has") \
V(hour_string, "hour") \ V(_, hour_string, "hour") \
V(ignoreCase_string, "ignoreCase") \ V(_, ignoreCase_string, "ignoreCase") \
V(ignorePunctuation_string, "ignorePunctuation") \ V(_, ignorePunctuation_string, "ignorePunctuation") \
V(illegal_access_string, "illegal access") \ V(_, illegal_access_string, "illegal access") \
V(illegal_argument_string, "illegal argument") \ V(_, illegal_argument_string, "illegal argument") \
V(index_string, "index") \ V(_, index_string, "index") \
V(Infinity_string, "Infinity") \ V(_, Infinity_string, "Infinity") \
V(infinity_string, "infinity") \ V(_, infinity_string, "infinity") \
V(input_string, "input") \ V(_, input_string, "input") \
V(Int16Array_string, "Int16Array") \ V(_, Int16Array_string, "Int16Array") \
V(Int32Array_string, "Int32Array") \ V(_, Int32Array_string, "Int32Array") \
V(Int8Array_string, "Int8Array") \ V(_, Int8Array_string, "Int8Array") \
V(integer_string, "integer") \ V(_, integer_string, "integer") \
V(isExtensible_string, "isExtensible") \ V(_, isExtensible_string, "isExtensible") \
V(isView_string, "isView") \ V(_, isView_string, "isView") \
V(KeyedLoadMonomorphic_string, "KeyedLoadMonomorphic") \ V(_, KeyedLoadMonomorphic_string, "KeyedLoadMonomorphic") \
V(KeyedStoreMonomorphic_string, "KeyedStoreMonomorphic") \ V(_, KeyedStoreMonomorphic_string, "KeyedStoreMonomorphic") \
V(keys_string, "keys") \ V(_, keys_string, "keys") \
V(lastIndex_string, "lastIndex") \ V(_, lastIndex_string, "lastIndex") \
V(length_string, "length") \ V(_, length_string, "length") \
V(let_string, "let") \ V(_, let_string, "let") \
V(line_string, "line") \ V(_, line_string, "line") \
V(LinkError_string, "LinkError") \ V(_, LinkError_string, "LinkError") \
V(literal_string, "literal") \ V(_, literal_string, "literal") \
V(locale_string, "locale") \ V(_, locale_string, "locale") \
V(long_string, "long") \ V(_, long_string, "long") \
V(Map_string, "Map") \ V(_, Map_string, "Map") \
V(MapIterator_string, "Map Iterator") \ V(_, MapIterator_string, "Map Iterator") \
V(maximumFractionDigits_string, "maximumFractionDigits") \ V(_, maximumFractionDigits_string, "maximumFractionDigits") \
V(maximumSignificantDigits_string, "maximumSignificantDigits") \ V(_, maximumSignificantDigits_string, "maximumSignificantDigits") \
V(message_string, "message") \ V(_, message_string, "message") \
V(minus_Infinity_string, "-Infinity") \ V(_, minus_Infinity_string, "-Infinity") \
V(minus_zero_string, "-0") \ V(_, minus_zero_string, "-0") \
V(minimumFractionDigits_string, "minimumFractionDigits") \ V(_, minimumFractionDigits_string, "minimumFractionDigits") \
V(minimumIntegerDigits_string, "minimumIntegerDigits") \ V(_, minimumIntegerDigits_string, "minimumIntegerDigits") \
V(minimumSignificantDigits_string, "minimumSignificantDigits") \ V(_, minimumSignificantDigits_string, "minimumSignificantDigits") \
V(minusSign_string, "minusSign") \ V(_, minusSign_string, "minusSign") \
V(minute_string, "minute") \ V(_, minute_string, "minute") \
V(Module_string, "Module") \ V(_, Module_string, "Module") \
V(month_string, "month") \ V(_, month_string, "month") \
V(multiline_string, "multiline") \ V(_, multiline_string, "multiline") \
V(name_string, "name") \ V(_, name_string, "name") \
V(NaN_string, "NaN") \ V(_, NaN_string, "NaN") \
V(nan_string, "nan") \ V(_, nan_string, "nan") \
V(narrow_string, "narrow") \ V(_, narrow_string, "narrow") \
V(native_string, "native") \ V(_, native_string, "native") \
V(new_target_string, ".new.target") \ V(_, new_target_string, ".new.target") \
V(next_string, "next") \ V(_, next_string, "next") \
V(NFC_string, "NFC") \ V(_, NFC_string, "NFC") \
V(NFD_string, "NFD") \ V(_, NFD_string, "NFD") \
V(NFKC_string, "NFKC") \ V(_, NFKC_string, "NFKC") \
V(NFKD_string, "NFKD") \ V(_, NFKD_string, "NFKD") \
V(not_equal, "not-equal") \ V(_, not_equal, "not-equal") \
V(null_string, "null") \ V(_, null_string, "null") \
V(null_to_string, "[object Null]") \ V(_, null_to_string, "[object Null]") \
V(Number_string, "Number") \ V(_, Number_string, "Number") \
V(number_string, "number") \ V(_, number_string, "number") \
V(number_to_string, "[object Number]") \ V(_, number_to_string, "[object Number]") \
V(numberingSystem_string, "numberingSystem") \ V(_, numberingSystem_string, "numberingSystem") \
V(numeric_string, "numeric") \ V(_, numeric_string, "numeric") \
V(Object_string, "Object") \ V(_, Object_string, "Object") \
V(object_string, "object") \ V(_, object_string, "object") \
V(object_to_string, "[object Object]") \ V(_, object_to_string, "[object Object]") \
V(ok, "ok") \ V(_, ok, "ok") \
V(one_string, "1") \ V(_, one_string, "1") \
V(ownKeys_string, "ownKeys") \ V(_, ownKeys_string, "ownKeys") \
V(percent_string, "percent") \ V(_, percent_string, "percent") \
V(percentSign_string, "percentSign") \ V(_, percentSign_string, "percentSign") \
V(plusSign_string, "plusSign") \ V(_, plusSign_string, "plusSign") \
V(position_string, "position") \ V(_, position_string, "position") \
V(preventExtensions_string, "preventExtensions") \ V(_, preventExtensions_string, "preventExtensions") \
V(Promise_string, "Promise") \ V(_, Promise_string, "Promise") \
V(promise_string, "promise") \ V(_, promise_string, "promise") \
V(PromiseResolveThenableJob_string, "PromiseResolveThenableJob") \ V(_, PromiseResolveThenableJob_string, "PromiseResolveThenableJob") \
V(proto_string, "__proto__") \ V(_, proto_string, "__proto__") \
V(prototype_string, "prototype") \ V(_, prototype_string, "prototype") \
V(proxy_string, "proxy") \ V(_, proxy_string, "proxy") \
V(Proxy_string, "Proxy") \ V(_, Proxy_string, "Proxy") \
V(quarter_string, "quarter") \ V(_, quarter_string, "quarter") \
V(query_colon_string, "(?:)") \ V(_, query_colon_string, "(?:)") \
V(RangeError_string, "RangeError") \ V(_, RangeError_string, "RangeError") \
V(raw_string, "raw") \ V(_, raw_string, "raw") \
V(ReconfigureToDataProperty_string, "ReconfigureToDataProperty") \ V(_, ReconfigureToDataProperty_string, "ReconfigureToDataProperty") \
V(ReferenceError_string, "ReferenceError") \ V(_, ReferenceError_string, "ReferenceError") \
V(RegExp_string, "RegExp") \ V(_, RegExp_string, "RegExp") \
V(regexp_to_string, "[object RegExp]") \ V(_, regexp_to_string, "[object RegExp]") \
V(reject_string, "reject") \ V(_, reject_string, "reject") \
V(resolve_string, "resolve") \ V(_, resolve_string, "resolve") \
V(return_string, "return") \ V(_, return_string, "return") \
V(revoke_string, "revoke") \ V(_, revoke_string, "revoke") \
V(RuntimeError_string, "RuntimeError") \ V(_, RuntimeError_string, "RuntimeError") \
V(Script_string, "Script") \ V(_, Script_string, "Script") \
V(script_string, "script") \ V(_, script_string, "script") \
V(short_string, "short") \ V(_, short_string, "short") \
V(second_string, "second") \ V(_, second_string, "second") \
V(Set_string, "Set") \ V(_, Set_string, "Set") \
V(sensitivity_string, "sensitivity") \ V(_, sensitivity_string, "sensitivity") \
V(sentence_string, "sentence") \ V(_, sentence_string, "sentence") \
V(set_space_string, "set ") \ V(_, set_space_string, "set ") \
V(set_string, "set") \ V(_, set_string, "set") \
V(SetIterator_string, "Set Iterator") \ V(_, SetIterator_string, "Set Iterator") \
V(setPrototypeOf_string, "setPrototypeOf") \ V(_, setPrototypeOf_string, "setPrototypeOf") \
V(SharedArrayBuffer_string, "SharedArrayBuffer") \ V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \
V(source_string, "source") \ V(_, source_string, "source") \
V(sourceText_string, "sourceText") \ V(_, sourceText_string, "sourceText") \
V(stack_string, "stack") \ V(_, stack_string, "stack") \
V(stackTraceLimit_string, "stackTraceLimit") \ V(_, stackTraceLimit_string, "stackTraceLimit") \
V(star_default_star_string, "*default*") \ V(_, star_default_star_string, "*default*") \
V(sticky_string, "sticky") \ V(_, sticky_string, "sticky") \
V(String_string, "String") \ V(_, String_string, "String") \
V(string_string, "string") \ V(_, string_string, "string") \
V(string_to_string, "[object String]") \ V(_, string_to_string, "[object String]") \
V(style_string, "style") \ V(_, style_string, "style") \
V(symbol_species_string, "[Symbol.species]") \ V(_, symbol_species_string, "[Symbol.species]") \
V(Symbol_string, "Symbol") \ V(_, Symbol_string, "Symbol") \
V(symbol_string, "symbol") \ V(_, symbol_string, "symbol") \
V(SyntaxError_string, "SyntaxError") \ V(_, SyntaxError_string, "SyntaxError") \
V(then_string, "then") \ V(_, then_string, "then") \
V(this_function_string, ".this_function") \ V(_, this_function_string, ".this_function") \
V(this_string, "this") \ V(_, this_string, "this") \
V(throw_string, "throw") \ V(_, throw_string, "throw") \
V(timed_out, "timed-out") \ V(_, timed_out, "timed-out") \
V(timeZoneName_string, "timeZoneName") \ V(_, timeZoneName_string, "timeZoneName") \
V(toJSON_string, "toJSON") \ V(_, toJSON_string, "toJSON") \
V(toString_string, "toString") \ V(_, toString_string, "toString") \
V(true_string, "true") \ V(_, true_string, "true") \
V(TypeError_string, "TypeError") \ V(_, TypeError_string, "TypeError") \
V(type_string, "type") \ V(_, type_string, "type") \
V(Uint16Array_string, "Uint16Array") \ V(_, Uint16Array_string, "Uint16Array") \
V(Uint32Array_string, "Uint32Array") \ V(_, Uint32Array_string, "Uint32Array") \
V(Uint8Array_string, "Uint8Array") \ V(_, Uint8Array_string, "Uint8Array") \
V(Uint8ClampedArray_string, "Uint8ClampedArray") \ V(_, Uint8ClampedArray_string, "Uint8ClampedArray") \
V(undefined_string, "undefined") \ V(_, undefined_string, "undefined") \
V(undefined_to_string, "[object Undefined]") \ V(_, undefined_to_string, "[object Undefined]") \
V(unicode_string, "unicode") \ V(_, unicode_string, "unicode") \
V(unit_string, "unit") \ V(_, unit_string, "unit") \
V(URIError_string, "URIError") \ V(_, URIError_string, "URIError") \
V(usage_string, "usage") \ V(_, usage_string, "usage") \
V(use_asm_string, "use asm") \ V(_, use_asm_string, "use asm") \
V(use_strict_string, "use strict") \ V(_, use_strict_string, "use strict") \
V(useGrouping_string, "useGrouping") \ V(_, useGrouping_string, "useGrouping") \
V(value_string, "value") \ V(_, value_string, "value") \
V(valueOf_string, "valueOf") \ V(_, valueOf_string, "valueOf") \
V(values_string, "values") \ V(_, values_string, "values") \
V(WeakMap_string, "WeakMap") \ V(_, WeakMap_string, "WeakMap") \
V(WeakSet_string, "WeakSet") \ V(_, WeakSet_string, "WeakSet") \
V(week_string, "week") \ V(_, week_string, "week") \
V(weekday_string, "weekday") \ V(_, weekday_string, "weekday") \
V(will_handle_string, "willHandle") \ V(_, will_handle_string, "willHandle") \
V(word_string, "word") \ V(_, word_string, "word") \
V(writable_string, "writable") \ V(_, writable_string, "writable") \
V(year_string, "year") \ V(_, year_string, "year") \
V(zero_string, "0") V(_, zero_string, "0")
#define PRIVATE_SYMBOL_LIST(V) \ #define PRIVATE_SYMBOL_LIST_GENERATOR(V, _) \
V(call_site_frame_array_symbol) \ V(_, call_site_frame_array_symbol) \
V(call_site_frame_index_symbol) \ V(_, call_site_frame_index_symbol) \
V(console_context_id_symbol) \ V(_, console_context_id_symbol) \
V(console_context_name_symbol) \ V(_, console_context_name_symbol) \
V(class_fields_symbol) \ V(_, class_fields_symbol) \
V(class_positions_symbol) \ V(_, class_positions_symbol) \
V(detailed_stack_trace_symbol) \ V(_, detailed_stack_trace_symbol) \
V(elements_transition_symbol) \ V(_, elements_transition_symbol) \
V(error_end_pos_symbol) \ V(_, error_end_pos_symbol) \
V(error_script_symbol) \ V(_, error_script_symbol) \
V(error_start_pos_symbol) \ V(_, error_start_pos_symbol) \
V(frozen_symbol) \ V(_, frozen_symbol) \
V(generic_symbol) \ V(_, generic_symbol) \
V(home_object_symbol) \ V(_, home_object_symbol) \
V(intl_initialized_marker_symbol) \ V(_, intl_initialized_marker_symbol) \
V(intl_resolved_symbol) \ V(_, intl_resolved_symbol) \
V(interpreter_trampoline_symbol) \ V(_, interpreter_trampoline_symbol) \
V(megamorphic_symbol) \ V(_, megamorphic_symbol) \
V(native_context_index_symbol) \ V(_, native_context_index_symbol) \
V(nonextensible_symbol) \ V(_, nonextensible_symbol) \
V(not_mapped_symbol) \ V(_, not_mapped_symbol) \
V(premonomorphic_symbol) \ V(_, premonomorphic_symbol) \
V(promise_async_stack_id_symbol) \ V(_, promise_async_stack_id_symbol) \
V(promise_debug_marker_symbol) \ V(_, promise_debug_marker_symbol) \
V(promise_forwarding_handler_symbol) \ V(_, promise_forwarding_handler_symbol) \
V(promise_handled_by_symbol) \ V(_, promise_handled_by_symbol) \
V(promise_async_id_symbol) \ V(_, promise_async_id_symbol) \
V(sealed_symbol) \ V(_, sealed_symbol) \
V(stack_trace_symbol) \ V(_, stack_trace_symbol) \
V(strict_function_transition_symbol) \ V(_, strict_function_transition_symbol) \
V(wasm_exception_tag_symbol) \ V(_, wasm_exception_tag_symbol) \
V(wasm_exception_values_symbol) \ V(_, wasm_exception_values_symbol) \
V(uninitialized_symbol) V(_, uninitialized_symbol)
#define PUBLIC_SYMBOL_LIST(V) \ #define PUBLIC_SYMBOL_LIST_GENERATOR(V, _) \
V(async_iterator_symbol, Symbol.asyncIterator) \ V(_, async_iterator_symbol, Symbol.asyncIterator) \
V(iterator_symbol, Symbol.iterator) \ V(_, iterator_symbol, Symbol.iterator) \
V(intl_fallback_symbol, IntlFallback) \ V(_, intl_fallback_symbol, IntlFallback) \
V(match_all_symbol, Symbol.matchAll) \ V(_, match_all_symbol, Symbol.matchAll) \
V(match_symbol, Symbol.match) \ V(_, match_symbol, Symbol.match) \
V(replace_symbol, Symbol.replace) \ V(_, replace_symbol, Symbol.replace) \
V(search_symbol, Symbol.search) \ V(_, search_symbol, Symbol.search) \
V(species_symbol, Symbol.species) \ V(_, species_symbol, Symbol.species) \
V(split_symbol, Symbol.split) \ V(_, split_symbol, Symbol.split) \
V(to_primitive_symbol, Symbol.toPrimitive) \ V(_, to_primitive_symbol, Symbol.toPrimitive) \
V(unscopables_symbol, Symbol.unscopables) V(_, unscopables_symbol, Symbol.unscopables)
// Well-Known Symbols are "Public" symbols, which have a bit set which causes // Well-Known Symbols are "Public" symbols, which have a bit set which causes
// them to produce an undefined value when a load results in a failed access // them to produce an undefined value when a load results in a failed access
// check. Because this behaviour is not specified properly as of yet, it only // check. Because this behaviour is not specified properly as of yet, it only
// applies to a subset of spec-defined Well-Known Symbols. // applies to a subset of spec-defined Well-Known Symbols.
#define WELL_KNOWN_SYMBOL_LIST(V) \ #define WELL_KNOWN_SYMBOL_LIST_GENERATOR(V, _) \
V(has_instance_symbol, Symbol.hasInstance) \ V(_, has_instance_symbol, Symbol.hasInstance) \
V(is_concat_spreadable_symbol, Symbol.isConcatSpreadable) \ V(_, is_concat_spreadable_symbol, Symbol.isConcatSpreadable) \
V(to_string_tag_symbol, Symbol.toStringTag) V(_, to_string_tag_symbol, Symbol.toStringTag)
#define INCREMENTAL_SCOPES(F) \ #define INCREMENTAL_SCOPES(F) \
/* MC_INCREMENTAL is the top-level incremental marking scope. */ \ /* MC_INCREMENTAL is the top-level incremental marking scope. */ \
......
...@@ -25,33 +25,12 @@ ROOT_LIST(ROOT_ACCESSOR) ...@@ -25,33 +25,12 @@ ROOT_LIST(ROOT_ACCESSOR)
STRUCT_MAPS_LIST(ROOT_ACCESSOR) STRUCT_MAPS_LIST(ROOT_ACCESSOR)
ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR) ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR)
DATA_HANDLER_MAPS_LIST(ROOT_ACCESSOR) DATA_HANDLER_MAPS_LIST(ROOT_ACCESSOR)
INTERNALIZED_STRING_ROOT_LIST(ROOT_ACCESSOR)
PRIVATE_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
PUBLIC_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
WELL_KNOWN_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
#undef ROOT_ACCESSOR #undef ROOT_ACCESSOR
#define STRING_ACCESSOR(name, str) \
Handle<String> Factory::name() { \
return Handle<String>( \
bit_cast<String**>(&isolate()->heap()->roots_[RootIndex::k##name])); \
}
INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
#undef STRING_ACCESSOR
#define SYMBOL_ACCESSOR(name) \
Handle<Symbol> Factory::name() { \
return Handle<Symbol>( \
bit_cast<Symbol**>(&isolate()->heap()->roots_[RootIndex::k##name])); \
}
PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define SYMBOL_ACCESSOR(name, description) \
Handle<Symbol> Factory::name() { \
return Handle<Symbol>( \
bit_cast<Symbol**>(&isolate()->heap()->roots_[RootIndex::k##name])); \
}
PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR)
WELL_KNOWN_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define ACCESSOR_INFO_ACCESSOR(accessor_name, AccessorName, ...) \ #define ACCESSOR_INFO_ACCESSOR(accessor_name, AccessorName, ...) \
Handle<AccessorInfo> Factory::accessor_name##_accessor() { \ Handle<AccessorInfo> Factory::accessor_name##_accessor() { \
return Handle<AccessorInfo>(bit_cast<AccessorInfo**>( \ return Handle<AccessorInfo>(bit_cast<AccessorInfo**>( \
......
...@@ -831,21 +831,12 @@ class V8_EXPORT_PRIVATE Factory { ...@@ -831,21 +831,12 @@ class V8_EXPORT_PRIVATE Factory {
STRUCT_MAPS_LIST(ROOT_ACCESSOR) STRUCT_MAPS_LIST(ROOT_ACCESSOR)
ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR) ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR)
DATA_HANDLER_MAPS_LIST(ROOT_ACCESSOR) DATA_HANDLER_MAPS_LIST(ROOT_ACCESSOR)
INTERNALIZED_STRING_ROOT_LIST(ROOT_ACCESSOR)
PRIVATE_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
PUBLIC_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
WELL_KNOWN_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
#undef ROOT_ACCESSOR #undef ROOT_ACCESSOR
#define STRING_ACCESSOR(name, str) inline Handle<String> name();
INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
#undef STRING_ACCESSOR
#define SYMBOL_ACCESSOR(name) inline Handle<Symbol> name();
PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define SYMBOL_ACCESSOR(name, description) inline Handle<Symbol> name();
PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR)
WELL_KNOWN_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define ACCESSOR_INFO_ACCESSOR(accessor_name, ...) \ #define ACCESSOR_INFO_ACCESSOR(accessor_name, ...) \
inline Handle<AccessorInfo> accessor_name##_accessor(); inline Handle<AccessorInfo> accessor_name##_accessor();
ACCESSOR_INFO_LIST(ACCESSOR_INFO_ACCESSOR) ACCESSOR_INFO_LIST(ACCESSOR_INFO_ACCESSOR)
......
...@@ -3533,8 +3533,8 @@ bool Heap::RootIsImmortalImmovable(RootIndex root_index) { ...@@ -3533,8 +3533,8 @@ bool Heap::RootIsImmortalImmovable(RootIndex root_index) {
#define IMMORTAL_IMMOVABLE_ROOT(name) case RootIndex::k##name: #define IMMORTAL_IMMOVABLE_ROOT(name) case RootIndex::k##name:
IMMORTAL_IMMOVABLE_ROOT_LIST(IMMORTAL_IMMOVABLE_ROOT) IMMORTAL_IMMOVABLE_ROOT_LIST(IMMORTAL_IMMOVABLE_ROOT)
#undef IMMORTAL_IMMOVABLE_ROOT #undef IMMORTAL_IMMOVABLE_ROOT
#define INTERNALIZED_STRING(name, value) case RootIndex::k##name: #define INTERNALIZED_STRING(_, name, value) case RootIndex::k##name:
INTERNALIZED_STRING_LIST(INTERNALIZED_STRING) INTERNALIZED_STRING_LIST_GENERATOR(INTERNALIZED_STRING, /* not used */)
#undef INTERNALIZED_STRING #undef INTERNALIZED_STRING
#define STRING_TYPE(NAME, size, name, Name) case RootIndex::k##Name##Map: #define STRING_TYPE(NAME, size, name, Name) case RootIndex::k##Name##Map:
STRING_TYPE_LIST(STRING_TYPE) STRING_TYPE_LIST(STRING_TYPE)
......
...@@ -52,6 +52,10 @@ class JSArrayBuffer; ...@@ -52,6 +52,10 @@ class JSArrayBuffer;
class ExternalString; class ExternalString;
using v8::MemoryPressureLevel; using v8::MemoryPressureLevel;
// Adapts PRIVATE_SYMBOL_LIST_GERNATOR entry to IMMORTAL_IMMOVABLE_ROOT_LIST
// entry
#define PRIVATE_SYMBOL_LIST_TO_IMMORTAL_IMMOVABLE_LIST_ADAPTER(V, name) V(name)
// Heap roots that are known to be immortal immovable, for which we can safely // Heap roots that are known to be immortal immovable, for which we can safely
// skip write barriers. This list is not complete and has omissions. // skip write barriers. This list is not complete and has omissions.
#define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \ #define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \
...@@ -164,7 +168,8 @@ using v8::MemoryPressureLevel; ...@@ -164,7 +168,8 @@ using v8::MemoryPressureLevel;
V(WeakArrayListMap) \ V(WeakArrayListMap) \
V(WithContextMap) \ V(WithContextMap) \
V(empty_string) \ V(empty_string) \
PRIVATE_SYMBOL_LIST(V) PRIVATE_SYMBOL_LIST_GENERATOR( \
PRIVATE_SYMBOL_LIST_TO_IMMORTAL_IMMOVABLE_LIST_ADAPTER, V)
class AllocationObserver; class AllocationObserver;
class ArrayBufferCollector; class ArrayBufferCollector;
......
...@@ -65,8 +65,9 @@ const Heap::StringTypeTable Heap::string_type_table[] = { ...@@ -65,8 +65,9 @@ const Heap::StringTypeTable Heap::string_type_table[] = {
const Heap::ConstantStringTable Heap::constant_string_table[] = { const Heap::ConstantStringTable Heap::constant_string_table[] = {
{"", RootIndex::kempty_string}, {"", RootIndex::kempty_string},
#define CONSTANT_STRING_ELEMENT(name, contents) {contents, RootIndex::k##name}, #define CONSTANT_STRING_ELEMENT(_, name, contents) \
INTERNALIZED_STRING_LIST(CONSTANT_STRING_ELEMENT) {contents, RootIndex::k##name},
INTERNALIZED_STRING_LIST_GENERATOR(CONSTANT_STRING_ELEMENT, /* not used */)
#undef CONSTANT_STRING_ELEMENT #undef CONSTANT_STRING_ELEMENT
}; };
...@@ -697,35 +698,35 @@ void Heap::CreateInitialObjects() { ...@@ -697,35 +698,35 @@ void Heap::CreateInitialObjects() {
{ {
HandleScope scope(isolate()); HandleScope scope(isolate());
#define SYMBOL_INIT(name) \ #define SYMBOL_INIT(_, name) \
{ \ { \
Handle<Symbol> symbol( \ Handle<Symbol> symbol( \
isolate()->factory()->NewPrivateSymbol(TENURED_READ_ONLY)); \ isolate()->factory()->NewPrivateSymbol(TENURED_READ_ONLY)); \
roots_[RootIndex::k##name] = *symbol; \ roots_[RootIndex::k##name] = *symbol; \
} }
PRIVATE_SYMBOL_LIST(SYMBOL_INIT) PRIVATE_SYMBOL_LIST_GENERATOR(SYMBOL_INIT, /* not used */)
#undef SYMBOL_INIT #undef SYMBOL_INIT
} }
{ {
HandleScope scope(isolate()); HandleScope scope(isolate());
#define SYMBOL_INIT(name, description) \ #define SYMBOL_INIT(_, name, description) \
Handle<Symbol> name = factory->NewSymbol(TENURED_READ_ONLY); \ Handle<Symbol> name = factory->NewSymbol(TENURED_READ_ONLY); \
Handle<String> name##d = \ Handle<String> name##d = \
factory->NewStringFromStaticChars(#description, TENURED_READ_ONLY); \ factory->NewStringFromStaticChars(#description, TENURED_READ_ONLY); \
name->set_name(*name##d); \ name->set_name(*name##d); \
roots_[RootIndex::k##name] = *name; roots_[RootIndex::k##name] = *name;
PUBLIC_SYMBOL_LIST(SYMBOL_INIT) PUBLIC_SYMBOL_LIST_GENERATOR(SYMBOL_INIT, /* not used */)
#undef SYMBOL_INIT #undef SYMBOL_INIT
#define SYMBOL_INIT(name, description) \ #define SYMBOL_INIT(_, name, description) \
Handle<Symbol> name = factory->NewSymbol(TENURED_READ_ONLY); \ Handle<Symbol> name = factory->NewSymbol(TENURED_READ_ONLY); \
Handle<String> name##d = \ Handle<String> name##d = \
factory->NewStringFromStaticChars(#description, TENURED_READ_ONLY); \ factory->NewStringFromStaticChars(#description, TENURED_READ_ONLY); \
name->set_is_well_known_symbol(true); \ name->set_is_well_known_symbol(true); \
name->set_name(*name##d); \ name->set_name(*name##d); \
roots_[RootIndex::k##name] = *name; roots_[RootIndex::k##name] = *name;
WELL_KNOWN_SYMBOL_LIST(SYMBOL_INIT) WELL_KNOWN_SYMBOL_LIST_GENERATOR(SYMBOL_INIT, /* not used */)
#undef SYMBOL_INIT #undef SYMBOL_INIT
// Mark "Interesting Symbols" appropriately. // Mark "Interesting Symbols" appropriately.
......
...@@ -16027,9 +16027,9 @@ bool JSObject::IsDroppableApiWrapper() { ...@@ -16027,9 +16027,9 @@ bool JSObject::IsDroppableApiWrapper() {
const char* Symbol::PrivateSymbolToName() const { const char* Symbol::PrivateSymbolToName() const {
ReadOnlyRoots roots = GetReadOnlyRoots(); ReadOnlyRoots roots = GetReadOnlyRoots();
#define SYMBOL_CHECK_AND_PRINT(name) \ #define SYMBOL_CHECK_AND_PRINT(_, name) \
if (this == roots.name()) return #name; if (this == roots.name()) return #name;
PRIVATE_SYMBOL_LIST(SYMBOL_CHECK_AND_PRINT) PRIVATE_SYMBOL_LIST_GENERATOR(SYMBOL_CHECK_AND_PRINT, /* not used */)
#undef SYMBOL_CHECK_AND_PRINT #undef SYMBOL_CHECK_AND_PRINT
return "UNKNOWN"; return "UNKNOWN";
} }
......
...@@ -1858,33 +1858,23 @@ const char* V8HeapExplorer::GetStrongGcSubrootName(Object* object) { ...@@ -1858,33 +1858,23 @@ const char* V8HeapExplorer::GetStrongGcSubrootName(Object* object) {
#define RO_NAME_ENTRY(name) \ #define RO_NAME_ENTRY(name) \
strong_gc_subroot_names_.emplace(roots.name(), #name); strong_gc_subroot_names_.emplace(roots.name(), #name);
#define ROOT_NAME(type, name, CamelName) NAME_ENTRY(name) #define ROOT_NAME(type, name, CamelName) NAME_ENTRY(name)
#define RO_ROOT_NAME(type, name, CamelName) RO_NAME_ENTRY(name)
STRONG_MUTABLE_ROOT_LIST(ROOT_NAME) STRONG_MUTABLE_ROOT_LIST(ROOT_NAME)
#undef ROOT_NAME STRONG_READ_ONLY_ROOT_LIST(RO_ROOT_NAME)
#define ROOT_NAME(type, name, CamelName) RO_NAME_ENTRY(name) STRUCT_MAPS_LIST(RO_ROOT_NAME)
STRONG_READ_ONLY_ROOT_LIST(ROOT_NAME) ALLOCATION_SITE_MAPS_LIST(RO_ROOT_NAME)
#undef ROOT_NAME DATA_HANDLER_MAPS_LIST(ROOT_NAME)
#define STRUCT_MAP_NAME(NAME, Name, name) RO_NAME_ENTRY(name##_map) INTERNALIZED_STRING_ROOT_LIST(RO_ROOT_NAME)
STRUCT_LIST(STRUCT_MAP_NAME) PRIVATE_SYMBOL_ROOT_LIST(RO_ROOT_NAME)
#undef STRUCT_MAP_NAME PUBLIC_SYMBOL_ROOT_LIST(RO_ROOT_NAME)
#define ALLOCATION_SITE_MAP_NAME(type, name, CamelName) RO_NAME_ENTRY(name) WELL_KNOWN_SYMBOL_ROOT_LIST(RO_ROOT_NAME)
ALLOCATION_SITE_MAPS_LIST(ALLOCATION_SITE_MAP_NAME)
#undef ALLOCATION_SITE_MAP_NAME
#define DATA_HANDLER_MAP_NAME(type, name, CamelName) NAME_ENTRY(name)
DATA_HANDLER_MAPS_LIST(DATA_HANDLER_MAP_NAME)
#undef DATA_HANDLER_MAP_NAME
#define STRING_NAME(name, str) RO_NAME_ENTRY(name)
INTERNALIZED_STRING_LIST(STRING_NAME)
#undef STRING_NAME
#define SYMBOL_NAME(name) RO_NAME_ENTRY(name)
PRIVATE_SYMBOL_LIST(SYMBOL_NAME)
#undef SYMBOL_NAME
#define SYMBOL_NAME(name, description) RO_NAME_ENTRY(name)
PUBLIC_SYMBOL_LIST(SYMBOL_NAME)
WELL_KNOWN_SYMBOL_LIST(SYMBOL_NAME)
#undef SYMBOL_NAME
#define ACCESSOR_NAME(accessor_name, ...) NAME_ENTRY(accessor_name##_accessor) #define ACCESSOR_NAME(accessor_name, ...) NAME_ENTRY(accessor_name##_accessor)
ACCESSOR_INFO_LIST(ACCESSOR_NAME) ACCESSOR_INFO_LIST(ACCESSOR_NAME)
#undef ACCESSOR_NAME #undef ACCESSOR_NAME
#undef ROOT_NAME
#undef RO_ROOT_NAME
#undef NAME_ENTRY #undef NAME_ENTRY
#undef RO_NAME_ENTRY #undef RO_NAME_ENTRY
CHECK(!strong_gc_subroot_names_.empty()); CHECK(!strong_gc_subroot_names_.empty());
......
...@@ -24,42 +24,12 @@ ReadOnlyRoots::ReadOnlyRoots(Isolate* isolate) : heap_(isolate->heap()) {} ...@@ -24,42 +24,12 @@ ReadOnlyRoots::ReadOnlyRoots(Isolate* isolate) : heap_(isolate->heap()) {}
return Handle<type>( \ return Handle<type>( \
bit_cast<type**>(&heap_->roots_[RootIndex::k##CamelName])); \ bit_cast<type**>(&heap_->roots_[RootIndex::k##CamelName])); \
} }
STRONG_READ_ONLY_ROOT_LIST(ROOT_ACCESSOR)
#define STRING_ACCESSOR(name, str) \
String* ReadOnlyRoots::name() { \
return String::cast(heap_->roots_[RootIndex::k##name]); \
} \
Handle<String> ReadOnlyRoots::name##_handle() { \
return Handle<String>( \
bit_cast<String**>(&heap_->roots_[RootIndex::k##name])); \
}
INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
#undef STRING_ACCESSOR
#define SYMBOL_ACCESSOR(name) \
Symbol* ReadOnlyRoots::name() { \
return Symbol::cast(heap_->roots_[RootIndex::k##name]); \
} \
Handle<Symbol> ReadOnlyRoots::name##_handle() { \
return Handle<Symbol>( \
bit_cast<Symbol**>(&heap_->roots_[RootIndex::k##name])); \
}
PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define SYMBOL_ACCESSOR(name, description) \
Symbol* ReadOnlyRoots::name() { \
return Symbol::cast(heap_->roots_[RootIndex::k##name]); \
} \
Handle<Symbol> ReadOnlyRoots::name##_handle() { \
return Handle<Symbol>( \
bit_cast<Symbol**>(&heap_->roots_[RootIndex::k##name])); \
}
PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR)
WELL_KNOWN_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
STRONG_READ_ONLY_ROOT_LIST(ROOT_ACCESSOR)
INTERNALIZED_STRING_ROOT_LIST(ROOT_ACCESSOR)
PRIVATE_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
PUBLIC_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
WELL_KNOWN_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
STRUCT_MAPS_LIST(ROOT_ACCESSOR) STRUCT_MAPS_LIST(ROOT_ACCESSOR)
ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR) ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR)
#undef ROOT_ACCESSOR #undef ROOT_ACCESSOR
......
...@@ -287,24 +287,34 @@ namespace internal { ...@@ -287,24 +287,34 @@ namespace internal {
MUTABLE_ROOT_LIST(V) \ MUTABLE_ROOT_LIST(V) \
STRONG_READ_ONLY_ROOT_LIST(V) STRONG_READ_ONLY_ROOT_LIST(V)
// Adapts one INTERNALIZED_STRING_LIST_GENERATOR entry to
// the ROOT_LIST-compatible entry
#define INTERNALIZED_STRING_LIST_ADAPTER(V, name, ...) V(String, name, name)
// Produces (String, name, CamelCase) entries
#define INTERNALIZED_STRING_ROOT_LIST(V) \
INTERNALIZED_STRING_LIST_GENERATOR(INTERNALIZED_STRING_LIST_ADAPTER, V)
// Adapts one XXX_SYMBOL_LIST_GENERATOR entry to the ROOT_LIST-compatible entry
#define SYMBOL_LIST_ADAPTER(V, name, ...) V(Symbol, name, name)
// Produces (Symbol, name, CamelCase) entries
#define PRIVATE_SYMBOL_ROOT_LIST(V) \
PRIVATE_SYMBOL_LIST_GENERATOR(SYMBOL_LIST_ADAPTER, V)
#define PUBLIC_SYMBOL_ROOT_LIST(V) \
PUBLIC_SYMBOL_LIST_GENERATOR(SYMBOL_LIST_ADAPTER, V)
#define WELL_KNOWN_SYMBOL_ROOT_LIST(V) \
WELL_KNOWN_SYMBOL_LIST_GENERATOR(SYMBOL_LIST_ADAPTER, V)
// Declare all the root indices. This defines the root list order. // Declare all the root indices. This defines the root list order.
// clang-format off // clang-format off
enum class RootIndex { enum class RootIndex {
#define DECL(type, name, CamelName) k##CamelName, #define DECL(type, name, CamelName) k##CamelName,
STRONG_ROOT_LIST(DECL) STRONG_ROOT_LIST(DECL)
#undef DECL INTERNALIZED_STRING_ROOT_LIST(DECL)
PRIVATE_SYMBOL_ROOT_LIST(DECL)
#define DECL(name, str) k##name, PUBLIC_SYMBOL_ROOT_LIST(DECL)
INTERNALIZED_STRING_LIST(DECL) WELL_KNOWN_SYMBOL_ROOT_LIST(DECL)
#undef DECL
#define DECL(name) k##name,
PRIVATE_SYMBOL_LIST(DECL)
#undef DECL
#define DECL(name, description) k##name,
PUBLIC_SYMBOL_LIST(DECL)
WELL_KNOWN_SYMBOL_LIST(DECL)
#undef DECL #undef DECL
#define DECL(accessor_name, AccessorName, ...) k##AccessorName##Accessor, #define DECL(accessor_name, AccessorName, ...) k##AccessorName##Accessor,
...@@ -390,27 +400,12 @@ class ReadOnlyRoots { ...@@ -390,27 +400,12 @@ class ReadOnlyRoots {
#define ROOT_ACCESSOR(type, name, CamelName) \ #define ROOT_ACCESSOR(type, name, CamelName) \
inline class type* name(); \ inline class type* name(); \
inline Handle<type> name##_handle(); inline Handle<type> name##_handle();
STRONG_READ_ONLY_ROOT_LIST(ROOT_ACCESSOR)
#define STRING_ACCESSOR(name, str) \
inline String* name(); \
inline Handle<String> name##_handle();
INTERNALIZED_STRING_LIST(STRING_ACCESSOR)
#undef STRING_ACCESSOR
#define SYMBOL_ACCESSOR(name) \
inline Symbol* name(); \
inline Handle<Symbol> name##_handle();
PRIVATE_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
#define SYMBOL_ACCESSOR(name, description) \
inline Symbol* name(); \
inline Handle<Symbol> name##_handle();
PUBLIC_SYMBOL_LIST(SYMBOL_ACCESSOR)
WELL_KNOWN_SYMBOL_LIST(SYMBOL_ACCESSOR)
#undef SYMBOL_ACCESSOR
STRONG_READ_ONLY_ROOT_LIST(ROOT_ACCESSOR)
INTERNALIZED_STRING_ROOT_LIST(ROOT_ACCESSOR)
PRIVATE_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
PUBLIC_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
WELL_KNOWN_SYMBOL_ROOT_LIST(ROOT_ACCESSOR)
STRUCT_MAPS_LIST(ROOT_ACCESSOR) STRUCT_MAPS_LIST(ROOT_ACCESSOR)
ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR) ALLOCATION_SITE_MAPS_LIST(ROOT_ACCESSOR)
#undef ROOT_ACCESSOR #undef ROOT_ACCESSOR
......
...@@ -18,7 +18,7 @@ AllocationSpace GetSpaceFromObject(Object* object) { ...@@ -18,7 +18,7 @@ AllocationSpace GetSpaceFromObject(Object* object) {
} }
} // namespace } // namespace
#define CHECK_IN_RO_SPACE(name) \ #define CHECK_IN_RO_SPACE(type, name, CamelName) \
HeapObject* name = roots.name(); \ HeapObject* name = roots.name(); \
CHECK_EQ(RO_SPACE, GetSpaceFromObject(name)); CHECK_EQ(RO_SPACE, GetSpaceFromObject(name));
...@@ -27,48 +27,38 @@ AllocationSpace GetSpaceFromObject(Object* object) { ...@@ -27,48 +27,38 @@ AllocationSpace GetSpaceFromObject(Object* object) {
TEST(TestStrongReadOnlyRoots) { TEST(TestStrongReadOnlyRoots) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
#define TEST_ROOT(type, name, CamelName) CHECK_IN_RO_SPACE(name) STRONG_READ_ONLY_ROOT_LIST(CHECK_IN_RO_SPACE)
STRONG_READ_ONLY_ROOT_LIST(TEST_ROOT)
#undef TEST_ROOT
} }
TEST(TestInternalizedStrings) { TEST(TestInternalizedStrings) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
#define TEST_ROOT(name, str) CHECK_IN_RO_SPACE(name) INTERNALIZED_STRING_ROOT_LIST(CHECK_IN_RO_SPACE)
INTERNALIZED_STRING_LIST(TEST_ROOT)
#undef TEST_ROOT
} }
TEST(TestPrivateSymbols) { TEST(TestPrivateSymbols) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
PRIVATE_SYMBOL_LIST(CHECK_IN_RO_SPACE) PRIVATE_SYMBOL_ROOT_LIST(CHECK_IN_RO_SPACE)
} }
TEST(TestPublicSymbols) { TEST(TestPublicSymbols) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
#define TEST_ROOT(name, description) CHECK_IN_RO_SPACE(name) PUBLIC_SYMBOL_ROOT_LIST(CHECK_IN_RO_SPACE)
PUBLIC_SYMBOL_LIST(TEST_ROOT) WELL_KNOWN_SYMBOL_ROOT_LIST(CHECK_IN_RO_SPACE)
WELL_KNOWN_SYMBOL_LIST(TEST_ROOT)
#undef TEST_ROOT
} }
TEST(TestStructMaps) { TEST(TestStructMaps) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
#define TEST_ROOT(NAME, Name, name) CHECK_IN_RO_SPACE(name##_map) STRUCT_MAPS_LIST(CHECK_IN_RO_SPACE)
STRUCT_LIST(TEST_ROOT)
#undef TEST_ROOT
} }
TEST(TestAllocationSiteMaps) { TEST(TestAllocationSiteMaps) {
ReadOnlyRoots roots(CcTest::i_isolate()); ReadOnlyRoots roots(CcTest::i_isolate());
#define TEST_ROOT(type, name, CamelName) CHECK_IN_RO_SPACE(name) ALLOCATION_SITE_MAPS_LIST(CHECK_IN_RO_SPACE)
ALLOCATION_SITE_MAPS_LIST(TEST_ROOT)
#undef TEST_ROOT
} }
#undef CHECK_IN_RO_SPACE #undef CHECK_IN_RO_SPACE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment