<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[286502] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/286502">286502</a></dd>
<dt>Author</dt> <dd>keith_miller@apple.com</dd>
<dt>Date</dt> <dd>2021-12-03 10:30:11 -0800 (Fri, 03 Dec 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove StructureIDBlob
https://bugs.webkit.org/show_bug.cgi?id=233723

Reviewed by Yusuke Suzuki.

StructureIDBlob isn't very useful now that StructureIDs are just the
bottom bits of the pointer on 64 bit platforms. In a follow up patch
I'll change the layout of JSCell and Structure so that TypeInfo creation
can be a single load platforms that allow (and don't penalize) misaligned loads.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_put_to_scope):
* runtime/Structure.cpp:
(JSC::Structure::Structure):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::setBrandTransition):
* runtime/Structure.h:
(JSC::Structure::id const):
(JSC::Structure::objectInitializationBlob const):
(JSC::Structure::idBlob const):
(JSC::Structure::isProxy const):
(JSC::Structure::typeInfo const):
(JSC::Structure::indexingType const):
(JSC::Structure::indexingMode const):
(JSC::Structure::fencedIndexingMode):
(JSC::Structure::indexingModeIncludingHistory const):
(JSC::Structure::indexingModeIncludingHistoryOffset):
(JSC::Structure::structureIDOffset): Deleted.
* runtime/StructureIDBlob.h: Removed.
* runtime/StructureInlines.h:
(JSC::Structure::hasIndexingHeader const):
* tools/VMInspectorInlines.h:
(JSC::VMInspector::verifyCellSize):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositoryh">trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitAssemblyHelpersh">trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITPropertyAccesscpp">trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructurecpp">trunk/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureh">trunk/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureInlinesh">trunk/Source/JavaScriptCore/runtime/StructureInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsVMInspectorInlinesh">trunk/Source/JavaScriptCore/tools/VMInspectorInlines.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureIDBlobh">trunk/Source/JavaScriptCore/runtime/StructureIDBlob.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt       2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt  2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -1186,7 +1186,6 @@
</span><span class="cx">     runtime/StructureCache.h
</span><span class="cx">     runtime/StructureChain.h
</span><span class="cx">     runtime/StructureID.h
</span><del>-    runtime/StructureIDBlob.h
</del><span class="cx">     runtime/StructureInlines.h
</span><span class="cx">     runtime/StructureRareData.h
</span><span class="cx">     runtime/StructureRareDataInlines.h
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog    2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/ChangeLog       2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2021-12-03  Keith Miller  <keith_miller@apple.com>
+
+        Remove StructureIDBlob
+        https://bugs.webkit.org/show_bug.cgi?id=233723
+
+        Reviewed by Yusuke Suzuki.
+
+        StructureIDBlob isn't very useful now that StructureIDs are just the
+        bottom bits of the pointer on 64 bit platforms. In a follow up patch
+        I'll change the layout of JSCell and Structure so that TypeInfo creation
+        can be a single load platforms that allow (and don't penalize) misaligned loads.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * ftl/FTLAbstractHeapRepository.h:
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
+        * jit/AssemblyHelpers.h:
+        (JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):
+        * jit/JITPropertyAccess.cpp:
+        (JSC::JIT::emit_op_put_to_scope):
+        * runtime/Structure.cpp:
+        (JSC::Structure::Structure):
+        (JSC::Structure::addNewPropertyTransition):
+        (JSC::Structure::removeNewPropertyTransition):
+        (JSC::Structure::attributeChangeTransition):
+        (JSC::Structure::nonPropertyTransitionSlow):
+        (JSC::Structure::setBrandTransition):
+        * runtime/Structure.h:
+        (JSC::Structure::id const):
+        (JSC::Structure::objectInitializationBlob const):
+        (JSC::Structure::idBlob const):
+        (JSC::Structure::isProxy const):
+        (JSC::Structure::typeInfo const):
+        (JSC::Structure::indexingType const):
+        (JSC::Structure::indexingMode const):
+        (JSC::Structure::fencedIndexingMode):
+        (JSC::Structure::indexingModeIncludingHistory const):
+        (JSC::Structure::indexingModeIncludingHistoryOffset):
+        (JSC::Structure::structureIDOffset): Deleted.
+        * runtime/StructureIDBlob.h: Removed.
+        * runtime/StructureInlines.h:
+        (JSC::Structure::hasIndexingHeader const):
+        * tools/VMInspectorInlines.h:
+        (JSC::VMInspector::verifyCellSize):
+
</ins><span class="cx"> 2021-12-02  Yusuke Suzuki  <ysuzuki@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [JSC] shell's $.globalObjectFor is not safe for non object cells
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj     2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -852,7 +852,6 @@
</span><span class="cx">          2A4BB7F318A41179008A0FCD /* JSManagedValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4BB7F218A41179008A0FCD /* JSManagedValueInternal.h */; };
</span><span class="cx">          2A83638618D7D0EE0000EBCC /* EdenGCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A83638418D7D0EE0000EBCC /* EdenGCActivityCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          2A83638A18D7D0FE0000EBCC /* FullGCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A83638818D7D0FE0000EBCC /* FullGCActivityCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-               2AAAA31218BD49D100394CC8 /* StructureIDBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAAA31018BD49D100394CC8 /* StructureIDBlob.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">           2AABCDE718EF294200002096 /* GCLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AABCDE618EF294200002096 /* GCLogging.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          2AACE63D18CA5A0300ED0191 /* GCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AACE63B18CA5A0300ED0191 /* GCActivityCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">          2AD2EDFB19799E38004D6478 /* EnumerationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD2EDFA19799E38004D6478 /* EnumerationMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -3632,7 +3631,6 @@
</span><span class="cx">          2A83638418D7D0EE0000EBCC /* EdenGCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EdenGCActivityCallback.h; sourceTree = "<group>"; };
</span><span class="cx">          2A83638718D7D0FE0000EBCC /* FullGCActivityCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FullGCActivityCallback.cpp; sourceTree = "<group>"; };
</span><span class="cx">          2A83638818D7D0FE0000EBCC /* FullGCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FullGCActivityCallback.h; sourceTree = "<group>"; };
</span><del>-               2AAAA31018BD49D100394CC8 /* StructureIDBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureIDBlob.h; sourceTree = "<group>"; };
</del><span class="cx">           2AABCDE618EF294200002096 /* GCLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCLogging.h; sourceTree = "<group>"; };
</span><span class="cx">          2AACE63A18CA5A0300ED0191 /* GCActivityCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCActivityCallback.cpp; sourceTree = "<group>"; };
</span><span class="cx">          2AACE63B18CA5A0300ED0191 /* GCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCActivityCallback.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -8076,7 +8074,6 @@
</span><span class="cx">                          7E4EE70E0EBB7A5B005934AA /* StructureChain.cpp */,
</span><span class="cx">                          7E4EE7080EBB7963005934AA /* StructureChain.h */,
</span><span class="cx">                          537FEEC82742BDA300C9EFEE /* StructureID.h */,
</span><del>-                               2AAAA31018BD49D100394CC8 /* StructureIDBlob.h */,
</del><span class="cx">                           0FD2C92316D01EE900C7803F /* StructureInlines.h */,
</span><span class="cx">                          C2F0F2D016BAEEE900187C19 /* StructureRareData.cpp */,
</span><span class="cx">                          C2FE18A316BAEC4000AF3061 /* StructureRareData.h */,
</span><span class="lines">@@ -10160,6 +10157,7 @@
</span><span class="cx">                          A5398FAB1C750DA40060A963 /* HeapProfiler.h in Headers */,
</span><span class="cx">                          A54C2AB11C6544F200A18D78 /* HeapSnapshot.h in Headers */,
</span><span class="cx">                          A5311C361C77CEC500E6B1B6 /* HeapSnapshotBuilder.h in Headers */,
</span><ins>+                               FE2CC9302756B2B9003F5AB8 /* HeapSubspaceTypes.h in Headers */,
</ins><span class="cx">                           0FADE6731D4D23BE00768457 /* HeapUtil.h in Headers */,
</span><span class="cx">                          FE1BD0251E72053800134BC9 /* HeapVerifier.h in Headers */,
</span><span class="cx">                          DC2143071CA32E55000A8869 /* ICStats.h in Headers */,
</span><span class="lines">@@ -10276,6 +10274,7 @@
</span><span class="cx">                          0FB467811FDDA6F7003FCB09 /* IsoCellSetInlines.h in Headers */,
</span><span class="cx">                          E3BF1BAE238AAEDB003A1C2B /* IsoHeapCellType.h in Headers */,
</span><span class="cx">                          E3C8ED4323A1DBCB00131958 /* IsoInlinedHeapCellType.h in Headers */,
</span><ins>+                               FE65B1512748601F00DB5B16 /* IsoInlinedHeapCellTypeInlines.h in Headers */,
</ins><span class="cx">                           537FEED12742BDE100C9EFEE /* IsoMemoryAllocatorBase.h in Headers */,
</span><span class="cx">                          537FEECE2742BDE100C9EFEE /* IsoMemoryAllocatorBaseInlines.h in Headers */,
</span><span class="cx">                          0FDCE12D1FAFB4E5006F3901 /* IsoSubspace.h in Headers */,
</span><span class="lines">@@ -10426,7 +10425,6 @@
</span><span class="cx">                          E33F50811B8429A400413856 /* JSInternalPromise.h in Headers */,
</span><span class="cx">                          E33F50791B84225700413856 /* JSInternalPromiseConstructor.h in Headers */,
</span><span class="cx">                          E33F50871B8449EF00413856 /* JSInternalPromiseConstructor.lut.h in Headers */,
</span><del>-                               FE65B1512748601F00DB5B16 /* IsoInlinedHeapCellTypeInlines.h in Headers */,
</del><span class="cx">                           E33F50751B8421C000413856 /* JSInternalPromisePrototype.h in Headers */,
</span><span class="cx">                          A503FA1E188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h in Headers */,
</span><span class="cx">                          BC18C4160E16F5CD00B34460 /* JSLexicalEnvironment.h in Headers */,
</span><span class="lines">@@ -10832,7 +10830,6 @@
</span><span class="cx">                          7986943B1F8C0ACC009232AE /* StructureCache.h in Headers */,
</span><span class="cx">                          7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */,
</span><span class="cx">                          537FEEC92742BDA300C9EFEE /* StructureID.h in Headers */,
</span><del>-                               2AAAA31218BD49D100394CC8 /* StructureIDBlob.h in Headers */,
</del><span class="cx">                           0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */,
</span><span class="cx">                          C2FE18A416BAEC4000AF3061 /* StructureRareData.h in Headers */,
</span><span class="cx">                          C20BA92D16BB1C1500B3AEA2 /* StructureRareDataInlines.h in Headers */,
</span><span class="lines">@@ -10955,7 +10952,6 @@
</span><span class="cx">                          E337B967224324EA0093A820 /* WasmCapabilities.h in Headers */,
</span><span class="cx">                          526AC4B71E977C5D003500E1 /* WasmCodeBlock.h in Headers */,
</span><span class="cx">                          E3BD2B7622F275020011765C /* WasmCompilationMode.h in Headers */,
</span><del>-                               FE2CC9302756B2B9003F5AB8 /* HeapSubspaceTypes.h in Headers */,
</del><span class="cx">                           AD412B341E7B2E9E008AF157 /* WasmContext.h in Headers */,
</span><span class="cx">                          7593C898BE714A64BE93A6E7 /* WasmContextInlines.h in Headers */,
</span><span class="cx">                          E36CC9472086314F0051FFD6 /* WasmCreationMode.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLAbstractHeapRepositoryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h      2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h 2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -149,7 +149,6 @@
</span><span class="cx">     macro(Structure_outOfLineTypeFlags, Structure::outOfLineTypeFlagsOffset()) \
</span><span class="cx">     macro(Structure_previousOrRareData, Structure::previousOrRareDataOffset()) \
</span><span class="cx">     macro(Structure_prototype, Structure::prototypeOffset()) \
</span><del>-    macro(Structure_structureID, Structure::structureIDOffset()) \
</del><span class="cx">     macro(StructureRareData_cachedKeys, StructureRareData::offsetOfCachedPropertyNames(CachedPropertyNamesKind::Keys)) \
</span><span class="cx">     macro(StructureRareData_cachedGetOwnPropertyNames, StructureRareData::offsetOfCachedPropertyNames(CachedPropertyNamesKind::GetOwnPropertyNames)) \
</span><span class="cx">     macro(StructureRareData_cachedPropertyNameEnumeratorAndFlag, StructureRareData::offsetOfCachedPropertyNameEnumeratorAndFlag()) \
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp      2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp 2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -16802,7 +16802,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        LValue id = m_out.load32(structure, m_heaps.Structure_structureID);
</del><ins>+        LValue id = m_out.bitAnd(m_out.castToInt32(structure), m_out.constInt32(structureIDMask));
</ins><span class="cx">         m_out.store32(id, object, m_heaps.JSCell_structureID);
</span><span class="cx"> 
</span><span class="cx">         LValue blob = m_out.load32(structure, m_heaps.Structure_indexingModeIncludingHistory);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitAssemblyHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h        2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h   2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -1587,14 +1587,14 @@
</span><span class="cx"> 
</span><span class="cx">     void emitStoreStructureWithTypeInfo(RegisterID structure, RegisterID dest, RegisterID scratch)
</span><span class="cx">     {
</span><del>-#if USE(JSVALUE64)
-        load64(MacroAssembler::Address(structure, Structure::structureIDOffset()), scratch);
-        store64(scratch, MacroAssembler::Address(dest, JSCell::structureIDOffset()));
-#else
</del><span class="cx">         // Store all the info flags using a single 32-bit wide load and store.
</span><span class="cx">         load32(MacroAssembler::Address(structure, Structure::indexingModeIncludingHistoryOffset()), scratch);
</span><span class="cx">         store32(scratch, MacroAssembler::Address(dest, JSCell::indexingTypeAndMiscOffset()));
</span><span class="cx"> 
</span><ins>+#if CPU(ADDRESS64)
+        and32(MacroAssembler::TrustedImm32(structureIDMask), structure, scratch);
+        store32(scratch, MacroAssembler::Address(dest, JSCell::structureIDOffset()));
+#else
</ins><span class="cx">         // Store the StructureID
</span><span class="cx">         storePtr(structure, MacroAssembler::Address(dest, JSCell::structureIDOffset()));
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITPropertyAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp    2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp       2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -2464,7 +2464,7 @@
</span><span class="cx">             loadPtrFromMetadata(bytecode, OpPutToScope::Metadata::offsetOfStructure(), scratchGPR1);
</span><span class="cx">             emitGetVirtualRegisterPayload(scope, scopeGPR);
</span><span class="cx">             addSlowCase(branchTestPtr(Zero, scratchGPR1));
</span><del>-            load32(Address(scratchGPR1, Structure::structureIDOffset()), scratchGPR1);
</del><ins>+            and32(TrustedImm32(structureIDMask), scratchGPR1);
</ins><span class="cx">             addSlowCase(branch32(NotEqual, Address(scopeGPR, JSCell::structureIDOffset()), scratchGPR1));
</span><span class="cx"> 
</span><span class="cx">             emitGetVirtualRegister(value, valueJSR);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.cpp (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.cpp        2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/runtime/Structure.cpp   2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -197,7 +197,9 @@
</span><span class="cx"> 
</span><span class="cx"> Structure::Structure(VM& vm, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo, IndexingType indexingType, unsigned inlineCapacity)
</span><span class="cx">     : JSCell(vm, vm.structureStructure.get())
</span><del>-    , m_blob(StructureID::encode(this), indexingType, typeInfo)
</del><ins>+    , m_cellHeaderIndexingModeIncludingHistory(indexingType)
+    , m_cellHeaderType(typeInfo.type())
+    , m_cellHeaderInlineTypeFlags(typeInfo.inlineTypeFlags())
</ins><span class="cx">     , m_outOfLineTypeFlags(typeInfo.outOfLineTypeFlags())
</span><span class="cx">     , m_inlineCapacity(inlineCapacity)
</span><span class="cx">     , m_bitField(0)
</span><span class="lines">@@ -238,6 +240,8 @@
</span><span class="cx"> 
</span><span class="cx"> Structure::Structure(VM& vm, CreatingEarlyCellTag)
</span><span class="cx">     : JSCell(CreatingEarlyCell)
</span><ins>+    , m_cellHeaderIndexingModeIncludingHistory(NoIndexingShape)
+    , m_cellHeaderType(StructureType)
</ins><span class="cx">     , m_inlineCapacity(0)
</span><span class="cx">     , m_bitField(0)
</span><span class="cx">     , m_prototype(vm, this, jsNull())
</span><span class="lines">@@ -264,7 +268,7 @@
</span><span class="cx">     setMaxOffset(vm, invalidOffset);
</span><span class="cx">  
</span><span class="cx">     TypeInfo typeInfo = TypeInfo(StructureType, StructureFlags);
</span><del>-    m_blob = StructureIDBlob(StructureID::encode(this), 0, typeInfo);
</del><ins>+    m_cellHeaderInlineTypeFlags = typeInfo.inlineTypeFlags();
</ins><span class="cx">     m_outOfLineTypeFlags = typeInfo.outOfLineTypeFlags();
</span><span class="cx"> 
</span><span class="cx">     ASSERT(hasReadOnlyOrGetterSetterPropertiesExcludingProto() || !m_classInfo->hasStaticSetterOrReadonlyProperties());
</span><span class="lines">@@ -274,6 +278,10 @@
</span><span class="cx"> 
</span><span class="cx"> Structure::Structure(VM& vm, Structure* previous, DeferredStructureTransitionWatchpointFire* deferred)
</span><span class="cx">     : JSCell(vm, vm.structureStructure.get())
</span><ins>+    , m_cellHeaderIndexingModeIncludingHistory(previous->m_cellHeaderIndexingModeIncludingHistory)
+    , m_cellHeaderType(previous->m_cellHeaderType)
+    , m_cellHeaderInlineTypeFlags(previous->m_cellHeaderInlineTypeFlags)
+    , m_outOfLineTypeFlags(previous->m_outOfLineTypeFlags)
</ins><span class="cx">     , m_inlineCapacity(previous->m_inlineCapacity)
</span><span class="cx">     , m_bitField(0)
</span><span class="cx">     , m_prototype(vm, this, previous->m_prototype.get())
</span><span class="lines">@@ -300,10 +308,6 @@
</span><span class="cx">     setTransitionOffset(vm, invalidOffset);
</span><span class="cx">     setMaxOffset(vm, invalidOffset);
</span><span class="cx">  
</span><del>-    TypeInfo typeInfo = previous->typeInfo();
-    m_blob = StructureIDBlob(StructureID::encode(this), previous->indexingModeIncludingHistory(), typeInfo);
-    m_outOfLineTypeFlags = typeInfo.outOfLineTypeFlags();
-
</del><span class="cx">     ASSERT(!previous->typeInfo().structureIsImmortal());
</span><span class="cx">     setPreviousID(vm, previous);
</span><span class="cx"> 
</span><span class="lines">@@ -529,7 +533,7 @@
</span><span class="cx">         transition->setProtectPropertyTableWhileTransitioning(true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    transition->m_blob.setIndexingModeIncludingHistory(structure->indexingModeIncludingHistory() & ~CopyOnWrite);
</del><ins>+    transition->m_cellHeaderIndexingModeIncludingHistory = structure->indexingModeIncludingHistory() & ~CopyOnWrite;
</ins><span class="cx">     transition->m_transitionPropertyName = propertyName.uid();
</span><span class="cx">     transition->setTransitionPropertyAttributes(attributes);
</span><span class="cx">     transition->setTransitionKind(TransitionKind::PropertyAddition);
</span><span class="lines">@@ -626,7 +630,7 @@
</span><span class="cx">         transition->setProtectPropertyTableWhileTransitioning(true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    transition->m_blob.setIndexingModeIncludingHistory(structure->indexingModeIncludingHistory() & ~CopyOnWrite);
</del><ins>+    transition->m_cellHeaderIndexingModeIncludingHistory = structure->indexingModeIncludingHistory() & ~CopyOnWrite;
</ins><span class="cx">     transition->m_transitionPropertyName = propertyName.uid();
</span><span class="cx">     transition->setTransitionKind(TransitionKind::PropertyDeletion);
</span><span class="cx">     transition->setPropertyTable(vm, structure->takePropertyTableOrCloneIfPinned(vm));
</span><span class="lines">@@ -720,7 +724,7 @@
</span><span class="cx">         transition->setProtectPropertyTableWhileTransitioning(true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    transition->m_blob.setIndexingModeIncludingHistory(structure->indexingModeIncludingHistory() & ~CopyOnWrite);
</del><ins>+    transition->m_cellHeaderIndexingModeIncludingHistory = structure->indexingModeIncludingHistory() & ~CopyOnWrite;
</ins><span class="cx">     transition->m_transitionPropertyName = propertyName.uid();
</span><span class="cx">     transition->setTransitionPropertyAttributes(attributes);
</span><span class="cx">     transition->setTransitionKind(TransitionKind::PropertyAttributeChange);
</span><span class="lines">@@ -818,7 +822,7 @@
</span><span class="cx">     
</span><span class="cx">     Structure* transition = create(vm, structure);
</span><span class="cx">     transition->setTransitionKind(transitionKind);
</span><del>-    transition->m_blob.setIndexingModeIncludingHistory(indexingModeIncludingHistory);
</del><ins>+    transition->m_cellHeaderIndexingModeIncludingHistory = indexingModeIncludingHistory;
</ins><span class="cx">     
</span><span class="cx">     if (preventsExtensions(transitionKind))
</span><span class="cx">         transition->setDidPreventExtensions(true);
</span><span class="lines">@@ -1546,7 +1550,7 @@
</span><span class="cx">     transition->setTransitionKind(TransitionKind::SetBrand);
</span><span class="cx"> 
</span><span class="cx">     transition->m_cachedPrototypeChain.setMayBeNull(vm, transition, structure->m_cachedPrototypeChain.get());
</span><del>-    transition->m_blob.setIndexingModeIncludingHistory(structure->indexingModeIncludingHistory());
</del><ins>+    transition->m_cellHeaderIndexingModeIncludingHistory = structure->indexingModeIncludingHistory();
</ins><span class="cx">     transition->m_transitionPropertyName = &brand->uid();
</span><span class="cx">     transition->setTransitionPropertyAttributes(0);
</span><span class="cx">     transition->setPropertyTable(vm, structure->takePropertyTableOrCloneIfPinned(vm));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.h  2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/runtime/Structure.h     2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #include "PropertyNameArray.h"
</span><span class="cx"> #include "PropertyOffset.h"
</span><span class="cx"> #include "PutPropertySlot.h"
</span><del>-#include "StructureIDBlob.h"
</del><span class="cx"> #include "StructureRareData.h"
</span><span class="cx"> #include "StructureTransitionTable.h"
</span><span class="cx"> #include "TinyBloomFilter.h"
</span><span class="lines">@@ -165,14 +164,13 @@
</span><span class="cx">     void validateFlags();
</span><span class="cx"> 
</span><span class="cx"> public:
</span><del>-    StructureID id() const { ASSERT(m_blob.structureID() == StructureID::encode(this)); return m_blob.structureID(); }
-    int32_t objectInitializationBlob() const { return m_blob.blobExcludingStructureID(); }
-    int64_t idBlob() const { return m_blob.blob(); }
</del><ins>+    StructureID id() const { return StructureID::encode(this); }
+    int32_t objectInitializationBlob() const { return *reinterpret_cast_ptr<const uint32_t*>(&m_cellHeaderIndexingModeIncludingHistory); }
+    int64_t idBlob() const { return static_cast<uint64_t>(objectInitializationBlob()) << 32 | id().bits(); }
</ins><span class="cx"> 
</span><span class="cx">     bool isProxy() const
</span><span class="cx">     {
</span><del>-        JSType type = m_blob.type();
-        return type == PureForwardingProxyType || type == ProxyObjectType;
</del><ins>+        return m_cellHeaderType == PureForwardingProxyType || m_cellHeaderType == ProxyObjectType;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static void dumpStatistics();
</span><span class="lines">@@ -263,7 +261,7 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // Type accessors.
</span><del>-    TypeInfo typeInfo() const { return m_blob.typeInfo(m_outOfLineTypeFlags); }
</del><ins>+    TypeInfo typeInfo() const { return TypeInfo(m_cellHeaderType, m_cellHeaderInlineTypeFlags, m_outOfLineTypeFlags); }
</ins><span class="cx">     bool isObject() const { return typeInfo().isObject(); }
</span><span class="cx"> protected:
</span><span class="cx">     // You probably want typeInfo().type()
</span><span class="lines">@@ -270,15 +268,15 @@
</span><span class="cx">     JSType type() { return JSCell::type(); }
</span><span class="cx"> public:
</span><span class="cx"> 
</span><del>-    IndexingType indexingType() const { return m_blob.indexingModeIncludingHistory() & AllWritableArrayTypes; }
-    IndexingType indexingMode() const  { return m_blob.indexingModeIncludingHistory() & AllArrayTypes; }
</del><ins>+    IndexingType indexingType() const { return indexingModeIncludingHistory() & AllWritableArrayTypes; }
+    IndexingType indexingMode() const  { return indexingModeIncludingHistory() & AllArrayTypes; }
</ins><span class="cx">     Dependency fencedIndexingMode(IndexingType& indexingType)
</span><span class="cx">     {
</span><del>-        Dependency dependency = m_blob.fencedIndexingModeIncludingHistory(indexingType);
</del><ins>+        Dependency dependency = Dependency::loadAndFence(&m_cellHeaderIndexingModeIncludingHistory, indexingType);
</ins><span class="cx">         indexingType &= AllArrayTypes;
</span><span class="cx">         return dependency;
</span><span class="cx">     }
</span><del>-    IndexingType indexingModeIncludingHistory() const { return m_blob.indexingModeIncludingHistory(); }
</del><ins>+    IndexingType indexingModeIncludingHistory() const { return m_cellHeaderIndexingModeIncludingHistory; }
</ins><span class="cx">         
</span><span class="cx">     inline bool mayInterceptIndexedAccesses() const;
</span><span class="cx">     
</span><span class="lines">@@ -557,11 +555,6 @@
</span><span class="cx"> 
</span><span class="cx">     const ClassInfo* classInfo() const { return m_classInfo; }
</span><span class="cx"> 
</span><del>-    static ptrdiff_t structureIDOffset()
-    {
-        return OBJECT_OFFSETOF(Structure, m_blob) + StructureIDBlob::structureIDOffset();
-    }
-
</del><span class="cx">     static ptrdiff_t prototypeOffset()
</span><span class="cx">     {
</span><span class="cx">         return OBJECT_OFFSETOF(Structure, m_prototype);
</span><span class="lines">@@ -584,7 +577,7 @@
</span><span class="cx"> 
</span><span class="cx">     static ptrdiff_t indexingModeIncludingHistoryOffset()
</span><span class="cx">     {
</span><del>-        return OBJECT_OFFSETOF(Structure, m_blob) + StructureIDBlob::indexingModeIncludingHistoryOffset();
</del><ins>+        return OBJECT_OFFSETOF(Structure, m_cellHeaderIndexingModeIncludingHistory);
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     static ptrdiff_t propertyTableUnsafeOffset()
</span><span class="lines">@@ -860,8 +853,12 @@
</span><span class="cx">     static constexpr int s_maxTransitionLengthForNonEvalPutById = 512;
</span><span class="cx"> 
</span><span class="cx">     // These need to be properly aligned at the beginning of the 'Structure'
</span><del>-    // part of the object.
-    StructureIDBlob m_blob;
</del><ins>+    // part of the object. And need to match the order of the equivalent properties in
+    // JSCell.
+    IndexingType m_cellHeaderIndexingModeIncludingHistory;
+    const JSType m_cellHeaderType;
+    TypeInfo::InlineTypeFlags m_cellHeaderInlineTypeFlags;
+    const CellState m_cellHeaderDefaultCellState { CellState::DefinitelyWhite };
</ins><span class="cx">     TypeInfo::OutOfLineTypeFlags m_outOfLineTypeFlags;
</span><span class="cx"> 
</span><span class="cx">     uint8_t m_inlineCapacity;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureIDBlobh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/StructureIDBlob.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureIDBlob.h    2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/runtime/StructureIDBlob.h       2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014-2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include "CellState.h"
-#include "IndexingType.h"
-#include "JSTypeInfo.h"
-#include "StructureID.h"
-
-namespace JSC {
-
-class StructureIDBlob {
-    friend class LLIntOffsetsExtractor;
-public:
-    StructureIDBlob() = default;
-
-    StructureIDBlob(StructureID structureID, IndexingType indexingModeIncludingHistory, const TypeInfo& typeInfo)
-    {
-        u.fields.structureID = structureID;
-        u.fields.indexingModeIncludingHistory = indexingModeIncludingHistory;
-        u.fields.type = typeInfo.type();
-        u.fields.inlineTypeFlags = typeInfo.inlineTypeFlags();
-        u.fields.defaultCellState = CellState::DefinitelyWhite;
-    }
-
-    void operator=(const StructureIDBlob& other) { u.doubleWord = other.u.doubleWord; }
-    
-    StructureID structureID() const { return u.fields.structureID; }
-    IndexingType indexingModeIncludingHistory() const { return u.fields.indexingModeIncludingHistory; }
-    Dependency fencedIndexingModeIncludingHistory(IndexingType& indexingType)
-    {
-        return Dependency::loadAndFence(&u.fields.indexingModeIncludingHistory, indexingType);
-    }
-    void setIndexingModeIncludingHistory(IndexingType indexingModeIncludingHistory) { u.fields.indexingModeIncludingHistory = indexingModeIncludingHistory; }
-    JSType type() const { return u.fields.type; }
-    TypeInfo::InlineTypeFlags inlineTypeFlags() const { return u.fields.inlineTypeFlags; }
-    
-    TypeInfo typeInfo(TypeInfo::OutOfLineTypeFlags outOfLineTypeFlags) const { return TypeInfo(type(), inlineTypeFlags(), outOfLineTypeFlags); }
-    
-    int32_t blobExcludingStructureID() const { return u.words.word2; }
-    int64_t blob() const { return u.doubleWord; }
-    
-    static ptrdiff_t structureIDOffset()
-    {
-        return OBJECT_OFFSETOF(StructureIDBlob, u.fields.structureID);
-    }
-
-    static ptrdiff_t indexingModeIncludingHistoryOffset()
-    {
-        return OBJECT_OFFSETOF(StructureIDBlob, u.fields.indexingModeIncludingHistory);
-    }
-
-private:
-    union Data {
-        struct {
-            // FIXME: We should remove this since the structureID can be directly computed from the Structure*
-            StructureID structureID;
-            IndexingType indexingModeIncludingHistory;
-            JSType type;
-            TypeInfo::InlineTypeFlags inlineTypeFlags;
-            CellState defaultCellState;
-        } fields;
-        struct {
-            int32_t word1;
-            int32_t word2;
-        } words;
-        int64_t doubleWord;
-
-        Data() { doubleWord = 0xbbadbeef; }
-    };
-
-    Data u;
-};
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureInlines.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureInlines.h   2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/runtime/StructureInlines.h      2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx">     if (hasIndexedProperties(indexingType()))
</span><span class="cx">         return true;
</span><span class="cx">     
</span><del>-    if (!isTypedView(typedArrayTypeForType(m_blob.type())))
</del><ins>+    if (!isTypedView(typedArrayTypeForType(m_cellHeaderType)))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     return jsCast<const JSArrayBufferView*>(cell)->mode() == WastefulTypedArray;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsVMInspectorInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/VMInspectorInlines.h (286501 => 286502)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/VMInspectorInlines.h   2021-12-03 18:29:32 UTC (rev 286501)
+++ trunk/Source/JavaScriptCore/tools/VMInspectorInlines.h      2021-12-03 18:30:11 UTC (rev 286502)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx">     Structure* structure = cell->structure(vm);
</span><span class="cx">     const ClassInfo* classInfo = structure->classInfo();
</span><span class="cx">     JSType cellType = cell->type();
</span><del>-    AUDIT_VERIFY(action, verifier, cellType == structure->m_blob.type(), cell, cellType, structure->m_blob.type());
</del><ins>+    AUDIT_VERIFY(action, verifier, cellType == structure->typeInfo().type(), cell, cellType, structure->typeInfo().type());
</ins><span class="cx"> 
</span><span class="cx">     size_t size = cellSize(vm, cell);
</span><span class="cx">     AUDIT_VERIFY(action, verifier, size <= allocatorCellSize, cell, cellType, size, allocatorCellSize, classInfo->staticClassSize);
</span></span></pre>
</div>
</div>

</body>
</html>