Revert "[objects] Remove uncached internal external string type"

This reverts commit b3d09001eb.

Reason for revert: https://chromium-review.googlesource.com/c/v8/v8/+/2565511 has to be reverted, and this was a follow-up to that

Original change's description:
> [objects] Remove uncached internal external string type
>
> We shouldn't be creating those anymore since they are not thread-safe.
>
> Bug: v8:7790
> Change-Id: I4546d995fa32eb076c8dfe9d95301fad719c9e07
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615347
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#72006}

TBR=rmcilroy@chromium.org,leszeks@chromium.org,solanes@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: v8:7790
Change-Id: I4eb1a6b8446fa602eeb5bf29fbf1fe57182cdbf3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2627605
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72122}
This commit is contained in:
Santiago Aboy Solanes 2021-01-14 15:12:09 +00:00 committed by Commit Bot
parent af343b5e04
commit bccf387072
8 changed files with 126 additions and 98 deletions

View File

@ -153,6 +153,8 @@ Type::bitset BitsetType::Lub(const MapRefLike& map) {
return kString;
case EXTERNAL_INTERNALIZED_STRING_TYPE:
case EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE:
case UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE:
case UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE:
case INTERNALIZED_STRING_TYPE:
case ONE_BYTE_INTERNALIZED_STRING_TYPE:
return kInternalizedString;

View File

@ -232,6 +232,8 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
case EXTERNAL_INTERNALIZED_STRING_TYPE:
case ONE_BYTE_INTERNALIZED_STRING_TYPE:
case EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE:
case UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE:
case UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE:
case STRING_TYPE:
case CONS_STRING_TYPE:
case EXTERNAL_STRING_TYPE:

View File

@ -87,6 +87,12 @@ enum InstanceType : uint16_t {
kTwoByteStringTag | kExternalStringTag | kInternalizedTag,
EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE =
kOneByteStringTag | kExternalStringTag | kInternalizedTag,
UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE =
EXTERNAL_INTERNALIZED_STRING_TYPE | kUncachedExternalStringTag |
kInternalizedTag,
UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE =
EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE | kUncachedExternalStringTag |
kInternalizedTag,
STRING_TYPE = INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
ONE_BYTE_STRING_TYPE =
ONE_BYTE_INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
@ -101,12 +107,10 @@ enum InstanceType : uint16_t {
EXTERNAL_INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
EXTERNAL_ONE_BYTE_STRING_TYPE =
EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
UNCACHED_EXTERNAL_STRING_TYPE = kTwoByteStringTag | kExternalStringTag |
kUncachedExternalStringTag |
kNotInternalizedTag,
UNCACHED_EXTERNAL_STRING_TYPE =
UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE =
kOneByteStringTag | kExternalStringTag | kUncachedExternalStringTag |
kNotInternalizedTag,
UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE | kNotInternalizedTag,
THIN_STRING_TYPE = kTwoByteStringTag | kThinStringTag | kNotInternalizedTag,
THIN_ONE_BYTE_STRING_TYPE =
kOneByteStringTag | kThinStringTag | kNotInternalizedTag,

View File

@ -36,6 +36,8 @@ namespace internal {
V(EXTERNAL_INTERNALIZED_STRING_TYPE) \
V(ONE_BYTE_INTERNALIZED_STRING_TYPE) \
V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE) \
V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE) \
V(STRING_TYPE) \
V(CONS_STRING_TYPE) \
V(EXTERNAL_STRING_TYPE) \
@ -83,6 +85,13 @@ namespace internal {
external_internalized_string, ExternalInternalizedString) \
V(EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE, ExternalOneByteString::kSize, \
external_one_byte_internalized_string, ExternalOneByteInternalizedString) \
V(UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE, \
ExternalTwoByteString::kUncachedSize, \
uncached_external_internalized_string, UncachedExternalInternalizedString) \
V(UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE, \
ExternalOneByteString::kUncachedSize, \
uncached_external_one_byte_internalized_string, \
UncachedExternalOneByteInternalizedString) \
V(THIN_STRING_TYPE, ThinString::kSize, thin_string, ThinString) \
V(THIN_ONE_BYTE_STRING_TYPE, ThinString::kSize, thin_one_byte_string, \
ThinOneByteString)

View File

@ -129,6 +129,10 @@ class Symbol;
V(Map, external_internalized_string_map, ExternalInternalizedStringMap) \
V(Map, external_one_byte_internalized_string_map, \
ExternalOneByteInternalizedStringMap) \
V(Map, uncached_external_internalized_string_map, \
UncachedExternalInternalizedStringMap) \
V(Map, uncached_external_one_byte_internalized_string_map, \
UncachedExternalOneByteInternalizedStringMap) \
V(Map, uncached_external_one_byte_string_map, \
UncachedExternalOneByteStringMap) \
/* Oddball maps */ \

View File

@ -2140,6 +2140,7 @@ TEST(InternalizeExternalStringUncachedWithCopyTwoByte) {
CHECK(external->is_uncached());
// Internalize succesfully, with a copy.
CHECK(!external->IsInternalizedString());
Handle<String> internal = factory->InternalizeString(external);
CHECK(!external->IsInternalizedString());
CHECK(internal->IsInternalizedString());

View File

@ -94,6 +94,8 @@ export const CATEGORIES = new Map([
'SYMBOL_TYPE',
'THIN_ONE_BYTE_STRING_TYPE',
'THIN_STRING_TYPE',
'UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE',
'UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE',
'UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE',
'UNCACHED_EXTERNAL_STRING_TYPE',
'WASM_INSTANCE_OBJECT_TYPE',

View File

@ -11,6 +11,8 @@ INSTANCE_TYPES = {
2: "EXTERNAL_INTERNALIZED_STRING_TYPE",
8: "ONE_BYTE_INTERNALIZED_STRING_TYPE",
10: "EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE",
18: "UNCACHED_EXTERNAL_INTERNALIZED_STRING_TYPE",
26: "UNCACHED_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE",
32: "STRING_TYPE",
33: "CONS_STRING_TYPE",
34: "EXTERNAL_STRING_TYPE",
@ -296,73 +298,75 @@ KNOWN_MAPS = {
("read_only_space", 0x03035): (0, "InternalizedStringMap"),
("read_only_space", 0x0305d): (2, "ExternalInternalizedStringMap"),
("read_only_space", 0x03085): (10, "ExternalOneByteInternalizedStringMap"),
("read_only_space", 0x030ad): (58, "UncachedExternalOneByteStringMap"),
("read_only_space", 0x030d5): (67, "SelfReferenceMarkerMap"),
("read_only_space", 0x030fd): (67, "BasicBlockCountersMarkerMap"),
("read_only_space", 0x03141): (87, "ArrayBoilerplateDescriptionMap"),
("read_only_space", 0x03229): (99, "InterceptorInfoMap"),
("read_only_space", 0x05355): (72, "PromiseFulfillReactionJobTaskMap"),
("read_only_space", 0x0537d): (73, "PromiseRejectReactionJobTaskMap"),
("read_only_space", 0x053a5): (74, "CallableTaskMap"),
("read_only_space", 0x053cd): (75, "CallbackTaskMap"),
("read_only_space", 0x053f5): (76, "PromiseResolveThenableJobTaskMap"),
("read_only_space", 0x0541d): (79, "FunctionTemplateInfoMap"),
("read_only_space", 0x05445): (80, "ObjectTemplateInfoMap"),
("read_only_space", 0x0546d): (81, "AccessCheckInfoMap"),
("read_only_space", 0x05495): (82, "AccessorInfoMap"),
("read_only_space", 0x054bd): (83, "AccessorPairMap"),
("read_only_space", 0x054e5): (84, "AliasedArgumentsEntryMap"),
("read_only_space", 0x0550d): (85, "AllocationMementoMap"),
("read_only_space", 0x05535): (88, "AsmWasmDataMap"),
("read_only_space", 0x0555d): (89, "AsyncGeneratorRequestMap"),
("read_only_space", 0x05585): (90, "BreakPointMap"),
("read_only_space", 0x055ad): (91, "BreakPointInfoMap"),
("read_only_space", 0x055d5): (92, "CachedTemplateObjectMap"),
("read_only_space", 0x055fd): (94, "ClassPositionsMap"),
("read_only_space", 0x05625): (95, "DebugInfoMap"),
("read_only_space", 0x0564d): (98, "FunctionTemplateRareDataMap"),
("read_only_space", 0x05675): (100, "InterpreterDataMap"),
("read_only_space", 0x0569d): (101, "ModuleRequestMap"),
("read_only_space", 0x056c5): (102, "PromiseCapabilityMap"),
("read_only_space", 0x056ed): (103, "PromiseReactionMap"),
("read_only_space", 0x05715): (104, "PropertyDescriptorObjectMap"),
("read_only_space", 0x0573d): (105, "PrototypeInfoMap"),
("read_only_space", 0x05765): (106, "ScriptMap"),
("read_only_space", 0x0578d): (107, "SourceTextModuleInfoEntryMap"),
("read_only_space", 0x057b5): (108, "StackFrameInfoMap"),
("read_only_space", 0x057dd): (109, "StackTraceFrameMap"),
("read_only_space", 0x05805): (110, "TemplateObjectDescriptionMap"),
("read_only_space", 0x0582d): (111, "Tuple2Map"),
("read_only_space", 0x05855): (112, "WasmExceptionTagMap"),
("read_only_space", 0x0587d): (113, "WasmExportedFunctionDataMap"),
("read_only_space", 0x058a5): (114, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x058cd): (115, "WasmJSFunctionDataMap"),
("read_only_space", 0x058f5): (134, "SloppyArgumentsElementsMap"),
("read_only_space", 0x0591d): (151, "DescriptorArrayMap"),
("read_only_space", 0x05945): (156, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x0596d): (155, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x05995): (171, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x059bd): (180, "WasmCapiFunctionDataMap"),
("read_only_space", 0x059e5): (168, "InternalClassMap"),
("read_only_space", 0x05a0d): (177, "SmiPairMap"),
("read_only_space", 0x05a35): (176, "SmiBoxMap"),
("read_only_space", 0x05a5d): (145, "ExportedSubClassBaseMap"),
("read_only_space", 0x05a85): (146, "ExportedSubClassMap"),
("read_only_space", 0x05aad): (68, "AbstractInternalClassSubclass1Map"),
("read_only_space", 0x05ad5): (69, "AbstractInternalClassSubclass2Map"),
("read_only_space", 0x05afd): (133, "InternalClassWithSmiElementsMap"),
("read_only_space", 0x05b25): (169, "InternalClassWithStructElementsMap"),
("read_only_space", 0x05b4d): (147, "ExportedSubClass2Map"),
("read_only_space", 0x05b75): (178, "SortStateMap"),
("read_only_space", 0x05b9d): (86, "AllocationSiteWithWeakNextMap"),
("read_only_space", 0x05bc5): (86, "AllocationSiteWithoutWeakNextMap"),
("read_only_space", 0x05bed): (77, "LoadHandler1Map"),
("read_only_space", 0x05c15): (77, "LoadHandler2Map"),
("read_only_space", 0x05c3d): (77, "LoadHandler3Map"),
("read_only_space", 0x05c65): (78, "StoreHandler0Map"),
("read_only_space", 0x05c8d): (78, "StoreHandler1Map"),
("read_only_space", 0x05cb5): (78, "StoreHandler2Map"),
("read_only_space", 0x05cdd): (78, "StoreHandler3Map"),
("read_only_space", 0x030ad): (18, "UncachedExternalInternalizedStringMap"),
("read_only_space", 0x030d5): (26, "UncachedExternalOneByteInternalizedStringMap"),
("read_only_space", 0x030fd): (58, "UncachedExternalOneByteStringMap"),
("read_only_space", 0x03125): (67, "SelfReferenceMarkerMap"),
("read_only_space", 0x0314d): (67, "BasicBlockCountersMarkerMap"),
("read_only_space", 0x03191): (87, "ArrayBoilerplateDescriptionMap"),
("read_only_space", 0x03279): (99, "InterceptorInfoMap"),
("read_only_space", 0x053a5): (72, "PromiseFulfillReactionJobTaskMap"),
("read_only_space", 0x053cd): (73, "PromiseRejectReactionJobTaskMap"),
("read_only_space", 0x053f5): (74, "CallableTaskMap"),
("read_only_space", 0x0541d): (75, "CallbackTaskMap"),
("read_only_space", 0x05445): (76, "PromiseResolveThenableJobTaskMap"),
("read_only_space", 0x0546d): (79, "FunctionTemplateInfoMap"),
("read_only_space", 0x05495): (80, "ObjectTemplateInfoMap"),
("read_only_space", 0x054bd): (81, "AccessCheckInfoMap"),
("read_only_space", 0x054e5): (82, "AccessorInfoMap"),
("read_only_space", 0x0550d): (83, "AccessorPairMap"),
("read_only_space", 0x05535): (84, "AliasedArgumentsEntryMap"),
("read_only_space", 0x0555d): (85, "AllocationMementoMap"),
("read_only_space", 0x05585): (88, "AsmWasmDataMap"),
("read_only_space", 0x055ad): (89, "AsyncGeneratorRequestMap"),
("read_only_space", 0x055d5): (90, "BreakPointMap"),
("read_only_space", 0x055fd): (91, "BreakPointInfoMap"),
("read_only_space", 0x05625): (92, "CachedTemplateObjectMap"),
("read_only_space", 0x0564d): (94, "ClassPositionsMap"),
("read_only_space", 0x05675): (95, "DebugInfoMap"),
("read_only_space", 0x0569d): (98, "FunctionTemplateRareDataMap"),
("read_only_space", 0x056c5): (100, "InterpreterDataMap"),
("read_only_space", 0x056ed): (101, "ModuleRequestMap"),
("read_only_space", 0x05715): (102, "PromiseCapabilityMap"),
("read_only_space", 0x0573d): (103, "PromiseReactionMap"),
("read_only_space", 0x05765): (104, "PropertyDescriptorObjectMap"),
("read_only_space", 0x0578d): (105, "PrototypeInfoMap"),
("read_only_space", 0x057b5): (106, "ScriptMap"),
("read_only_space", 0x057dd): (107, "SourceTextModuleInfoEntryMap"),
("read_only_space", 0x05805): (108, "StackFrameInfoMap"),
("read_only_space", 0x0582d): (109, "StackTraceFrameMap"),
("read_only_space", 0x05855): (110, "TemplateObjectDescriptionMap"),
("read_only_space", 0x0587d): (111, "Tuple2Map"),
("read_only_space", 0x058a5): (112, "WasmExceptionTagMap"),
("read_only_space", 0x058cd): (113, "WasmExportedFunctionDataMap"),
("read_only_space", 0x058f5): (114, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x0591d): (115, "WasmJSFunctionDataMap"),
("read_only_space", 0x05945): (134, "SloppyArgumentsElementsMap"),
("read_only_space", 0x0596d): (151, "DescriptorArrayMap"),
("read_only_space", 0x05995): (156, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x059bd): (155, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x059e5): (171, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x05a0d): (180, "WasmCapiFunctionDataMap"),
("read_only_space", 0x05a35): (168, "InternalClassMap"),
("read_only_space", 0x05a5d): (177, "SmiPairMap"),
("read_only_space", 0x05a85): (176, "SmiBoxMap"),
("read_only_space", 0x05aad): (145, "ExportedSubClassBaseMap"),
("read_only_space", 0x05ad5): (146, "ExportedSubClassMap"),
("read_only_space", 0x05afd): (68, "AbstractInternalClassSubclass1Map"),
("read_only_space", 0x05b25): (69, "AbstractInternalClassSubclass2Map"),
("read_only_space", 0x05b4d): (133, "InternalClassWithSmiElementsMap"),
("read_only_space", 0x05b75): (169, "InternalClassWithStructElementsMap"),
("read_only_space", 0x05b9d): (147, "ExportedSubClass2Map"),
("read_only_space", 0x05bc5): (178, "SortStateMap"),
("read_only_space", 0x05bed): (86, "AllocationSiteWithWeakNextMap"),
("read_only_space", 0x05c15): (86, "AllocationSiteWithoutWeakNextMap"),
("read_only_space", 0x05c3d): (77, "LoadHandler1Map"),
("read_only_space", 0x05c65): (77, "LoadHandler2Map"),
("read_only_space", 0x05c8d): (77, "LoadHandler3Map"),
("read_only_space", 0x05cb5): (78, "StoreHandler0Map"),
("read_only_space", 0x05cdd): (78, "StoreHandler1Map"),
("read_only_space", 0x05d05): (78, "StoreHandler2Map"),
("read_only_space", 0x05d2d): (78, "StoreHandler3Map"),
("map_space", 0x02115): (1057, "ExternalMap"),
("map_space", 0x0213d): (1084, "JSMessageObjectMap"),
("map_space", 0x02165): (181, "WasmRttEqrefMap"),
@ -393,32 +397,32 @@ KNOWN_OBJECTS = {
("read_only_space", 0x0282d): "TerminationException",
("read_only_space", 0x02895): "OptimizedOut",
("read_only_space", 0x028f5): "StaleRegister",
("read_only_space", 0x03125): "EmptyPropertyArray",
("read_only_space", 0x0312d): "EmptyByteArray",
("read_only_space", 0x03135): "EmptyObjectBoilerplateDescription",
("read_only_space", 0x03169): "EmptyArrayBoilerplateDescription",
("read_only_space", 0x03175): "EmptyClosureFeedbackCellArray",
("read_only_space", 0x0317d): "EmptySlowElementDictionary",
("read_only_space", 0x031a1): "EmptyOrderedHashMap",
("read_only_space", 0x031b5): "EmptyOrderedHashSet",
("read_only_space", 0x031c9): "EmptyFeedbackMetadata",
("read_only_space", 0x031d5): "EmptyPropertyCell",
("read_only_space", 0x031e9): "EmptyPropertyDictionary",
("read_only_space", 0x03211): "EmptyOrderedPropertyDictionary",
("read_only_space", 0x03251): "NoOpInterceptorInfo",
("read_only_space", 0x03279): "EmptyWeakArrayList",
("read_only_space", 0x03285): "InfinityValue",
("read_only_space", 0x03291): "MinusZeroValue",
("read_only_space", 0x0329d): "MinusInfinityValue",
("read_only_space", 0x032a9): "SelfReferenceMarker",
("read_only_space", 0x032e9): "BasicBlockCountersMarker",
("read_only_space", 0x0332d): "OffHeapTrampolineRelocationInfo",
("read_only_space", 0x03339): "TrampolineTrivialCodeDataContainer",
("read_only_space", 0x03345): "TrampolinePromiseRejectionCodeDataContainer",
("read_only_space", 0x03351): "GlobalThisBindingScopeInfo",
("read_only_space", 0x03389): "EmptyFunctionScopeInfo",
("read_only_space", 0x033b1): "NativeScopeInfo",
("read_only_space", 0x033cd): "HashSeed",
("read_only_space", 0x03175): "EmptyPropertyArray",
("read_only_space", 0x0317d): "EmptyByteArray",
("read_only_space", 0x03185): "EmptyObjectBoilerplateDescription",
("read_only_space", 0x031b9): "EmptyArrayBoilerplateDescription",
("read_only_space", 0x031c5): "EmptyClosureFeedbackCellArray",
("read_only_space", 0x031cd): "EmptySlowElementDictionary",
("read_only_space", 0x031f1): "EmptyOrderedHashMap",
("read_only_space", 0x03205): "EmptyOrderedHashSet",
("read_only_space", 0x03219): "EmptyFeedbackMetadata",
("read_only_space", 0x03225): "EmptyPropertyCell",
("read_only_space", 0x03239): "EmptyPropertyDictionary",
("read_only_space", 0x03261): "EmptyOrderedPropertyDictionary",
("read_only_space", 0x032a1): "NoOpInterceptorInfo",
("read_only_space", 0x032c9): "EmptyWeakArrayList",
("read_only_space", 0x032d5): "InfinityValue",
("read_only_space", 0x032e1): "MinusZeroValue",
("read_only_space", 0x032ed): "MinusInfinityValue",
("read_only_space", 0x032f9): "SelfReferenceMarker",
("read_only_space", 0x03339): "BasicBlockCountersMarker",
("read_only_space", 0x0337d): "OffHeapTrampolineRelocationInfo",
("read_only_space", 0x03389): "TrampolineTrivialCodeDataContainer",
("read_only_space", 0x03395): "TrampolinePromiseRejectionCodeDataContainer",
("read_only_space", 0x033a1): "GlobalThisBindingScopeInfo",
("read_only_space", 0x033d9): "EmptyFunctionScopeInfo",
("read_only_space", 0x03401): "NativeScopeInfo",
("read_only_space", 0x0341d): "HashSeed",
("old_space", 0x02115): "ArgumentsIteratorAccessor",
("old_space", 0x02159): "ArrayLengthAccessor",
("old_space", 0x0219d): "BoundFunctionLengthAccessor",