Title: [283605] trunk
Revision
283605
Author
[email protected]
Date
2021-10-06 00:49:30 -0700 (Wed, 06 Oct 2021)

Log Message

[Build-time perf] Forward declare JS TypedArrays
https://bugs.webkit.org/show_bug.cgi?id=231196

Reviewed by Tim Horton.

Source/_javascript_Core:

Add a new file, Forward.h, containing forward declarations of commonly used _javascript_Core types. Removed duplicate declarations
of TypedArray classes from TypedArrayAdapters.h and TypedArrays.h.

* _javascript_Core.xcodeproj/project.pbxproj:
* runtime/Forward.h: Added.
* runtime/TypedArrayAdaptors.h:
* runtime/TypedArrayAdaptersForwardDeclarations.h: Added.
* runtime/TypedArrays.h:

Source/WebCore:

According to `clang -ftime-trace`, compilation is spending a large amount of time inside TypedArrays.h.
Most of the places where _javascript_Core/<Type>Array.h is included in a header only needed a forward
declaration, so include the new _javascript_Core/Forward.h header instead, and move the include of the
<Type>Array.h header into the implementation file.

* Modules/encryptedmedia/legacy/LegacyCDM.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp:
* Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/webaudio/AudioBuffer.h:
* Modules/webaudio/AudioParam.h:
* Modules/webaudio/AudioParamTimeline.h:
* Modules/webaudio/IIRFilterNode.h:
* Modules/webaudio/PeriodicWave.h:
* Modules/webaudio/RealtimeAnalyser.h:
* Modules/webaudio/WaveShaperDSPKernel.cpp:
* Modules/webaudio/WaveShaperProcessor.h:
* Modules/webxr/WebXRRigidTransform.h:
* Modules/webxr/WebXRView.h:
* css/DOMMatrix.cpp:
* css/DOMMatrixReadOnly.h:
* dom/TextEncoder.h:
* dom/TextEncoderStreamEncoder.h:
* html/ImageData.h:
* html/WebKitMediaKeyError.h:
* html/canvas/WebGLAny.h:
* html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::elementArrayBuffer const):
* html/canvas/WebGLBuffer.h:
* platform/graphics/LegacyCDMSession.h:
* platform/graphics/MediaPlayer.h:
* platform/graphics/angle/GraphicsContextGLANGLE.cpp:
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
(WebCore::CDMSessionAVFoundationCF::cachedKeyForKeyID const):
* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:
* platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
* platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
(WebCore::CDMSessionAVContentKeySession::cachedKeyForKeyID const):
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
(WebCore::CDMSessionAVFoundationObjC::cachedKeyForKeyID const):
* platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
* platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
(WebCore::CDMSessionAVStreamSession::cachedKeyForKeyID const):
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
* platform/graphics/cocoa/SourceBufferParser.h:
* platform/graphics/filters/FELighting.h:
* platform/graphics/filters/FilterEffect.h:
* testing/Internals.h:
* testing/LegacyMockCDM.cpp:

Source/WebKit:

* GPUProcess/media/RemoteMediaPlayerProxy.cpp:

Tools:

* TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/CMakeLists.txt (283604 => 283605)


--- trunk/Source/_javascript_Core/CMakeLists.txt	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/_javascript_Core/CMakeLists.txt	2021-10-06 07:49:30 UTC (rev 283605)
@@ -987,6 +987,7 @@
     runtime/ExecutableBaseInlines.h
     runtime/Float32Array.h
     runtime/Float64Array.h
+    runtime/Forward.h
     runtime/FunctionConstructor.h
     runtime/FunctionExecutable.h
     runtime/FunctionHasExecutedCache.h
@@ -1178,6 +1179,7 @@
     runtime/ToNativeFromValue.h
     runtime/TypeError.h
     runtime/TypeSet.h
+    runtime/TypedArrayAdaptersForwardDeclarations.h
     runtime/TypedArrayAdaptors.h
     runtime/TypedArrayController.h
     runtime/TypedArrayInlines.h

Modified: trunk/Source/_javascript_Core/ChangeLog (283604 => 283605)


--- trunk/Source/_javascript_Core/ChangeLog	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/_javascript_Core/ChangeLog	2021-10-06 07:49:30 UTC (rev 283605)
@@ -1,3 +1,19 @@
+2021-10-06  Jer Noble  <[email protected]>
+
+        [Build-time perf] Forward declare JS TypedArrays
+        https://bugs.webkit.org/show_bug.cgi?id=231196
+
+        Reviewed by Tim Horton.
+
+        Add a new file, Forward.h, containing forward declarations of commonly used _javascript_Core types. Removed duplicate declarations
+        of TypedArray classes from TypedArrayAdapters.h and TypedArrays.h.
+
+        * _javascript_Core.xcodeproj/project.pbxproj:
+        * runtime/Forward.h: Added.
+        * runtime/TypedArrayAdaptors.h:
+        * runtime/TypedArrayAdaptersForwardDeclarations.h: Added.
+        * runtime/TypedArrays.h:
+
 2021-10-06  Mikhail R. Gadelha  <[email protected]>
 
         Fix wrong edge type from get-by-val in 32 bits

Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (283604 => 283605)


--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2021-10-06 07:49:30 UTC (rev 283605)
@@ -1785,6 +1785,8 @@
 		C4F4B6F41A05C944005CAB76 /* cpp_generator.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D01A05C76F005CAB76 /* cpp_generator.py */; settings = {ATTRIBUTES = (Private, ); }; };
 		C4F4B6F51A05C984005CAB76 /* generate_objc_protocol_types_implementation.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D71A05C76F005CAB76 /* generate_objc_protocol_types_implementation.py */; settings = {ATTRIBUTES = (Private, ); }; };
 		C4F4B6F61A05C984005CAB76 /* objc_generator_templates.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D81A05C76F005CAB76 /* objc_generator_templates.py */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD1F9B3A270B9AAD00617EB6 /* Forward.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1F9B39270B9AAD00617EB6 /* Forward.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD1F9B3C270C0C1A00617EB6 /* TypedArrayAdaptersForwardDeclarations.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1F9B3B270C0C1A00617EB6 /* TypedArrayAdaptersForwardDeclarations.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CE20BD05237D3E230046E520 /* FileBasedFuzzerAgentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = CE20BD03237D3AD40046E520 /* FileBasedFuzzerAgentBase.h */; };
 		CE20BD07237D3E480046E520 /* PredictionFileCreatingFuzzerAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = CE20BD01237D3AD40046E520 /* PredictionFileCreatingFuzzerAgent.h */; };
 		CEAE7D7B889B477BA93ABA6C /* ScriptFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8852151A9C3842389B3215B7 /* ScriptFetcher.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -5022,6 +5024,8 @@
 		C4F4B6D61A05C76F005CAB76 /* generate_cpp_protocol_types_implementation.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = generate_cpp_protocol_types_implementation.py; sourceTree = "<group>"; };
 		C4F4B6D71A05C76F005CAB76 /* generate_objc_protocol_types_implementation.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = generate_objc_protocol_types_implementation.py; sourceTree = "<group>"; };
 		C4F4B6D81A05C76F005CAB76 /* objc_generator_templates.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = objc_generator_templates.py; sourceTree = "<group>"; };
+		CD1F9B39270B9AAD00617EB6 /* Forward.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Forward.h; sourceTree = "<group>"; };
+		CD1F9B3B270C0C1A00617EB6 /* TypedArrayAdaptersForwardDeclarations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TypedArrayAdaptersForwardDeclarations.h; sourceTree = "<group>"; };
 		CE20BD01237D3AD40046E520 /* PredictionFileCreatingFuzzerAgent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PredictionFileCreatingFuzzerAgent.h; sourceTree = "<group>"; };
 		CE20BD02237D3AD40046E520 /* PredictionFileCreatingFuzzerAgent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = PredictionFileCreatingFuzzerAgent.cpp; sourceTree = "<group>"; };
 		CE20BD03237D3AD40046E520 /* FileBasedFuzzerAgentBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FileBasedFuzzerAgentBase.h; sourceTree = "<group>"; };
@@ -6277,10 +6281,10 @@
 				0F24E53B17EA9F5900ABB217 /* AssemblyHelpers.cpp */,
 				0F24E53C17EA9F5900ABB217 /* AssemblyHelpers.h */,
 				6B767E7A26791F270017F8D1 /* AssemblyHelpersSpoolers.h */,
+				52DD000726E039B40054E408 /* BaselineJITCode.cpp */,
+				52DD000626E039B30054E408 /* BaselineJITCode.h */,
 				723998F6265DBCDB0057867F /* BaselineJITPlan.cpp */,
 				723998F5265DBCDB0057867F /* BaselineJITPlan.h */,
-				52DD000726E039B40054E408 /* BaselineJITCode.cpp */,
-				52DD000626E039B30054E408 /* BaselineJITCode.h */,
 				0F64B26F1A784BAF006E4E66 /* BinarySwitch.cpp */,
 				0F64B2701A784BAF006E4E66 /* BinarySwitch.h */,
 				65B8392D1BACA9D30044E824 /* CachedRecovery.cpp */,
@@ -7482,6 +7486,7 @@
 				531EE7B922DE6BBB0030DA81 /* FinalizationRegistryPrototype.h */,
 				A7A8AF2917ADB5F3005AB174 /* Float32Array.h */,
 				A7A8AF2A17ADB5F3005AB174 /* Float64Array.h */,
+				CD1F9B39270B9AAD00617EB6 /* Forward.h */,
 				BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */,
 				BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */,
 				147341DC1DC2CE9600AA29BA /* FunctionExecutable.cpp */,
@@ -8040,6 +8045,7 @@
 				FE2E6A7A1D6EA5FE0060F896 /* ThrowScope.cpp */,
 				FE3422111D6B818C0032BE88 /* ThrowScope.h */,
 				0F55989717C86C5600A1E543 /* ToNativeFromValue.h */,
+				CD1F9B3B270C0C1A00617EB6 /* TypedArrayAdaptersForwardDeclarations.h */,
 				0F2B66D817B6B5AB00A7AE3F /* TypedArrayAdaptors.h */,
 				0F2B66D917B6B5AB00A7AE3F /* TypedArrayController.cpp */,
 				0F2B66DA17B6B5AB00A7AE3F /* TypedArrayController.h */,
@@ -9496,6 +9502,7 @@
 				53D444DC1DAF08AB00B92784 /* B3WasmAddressValue.h in Headers */,
 				5341FC721DAC343C00E7E4D7 /* B3WasmBoundsCheckValue.h in Headers */,
 				0F2C63B21E60AE4700C13839 /* B3Width.h in Headers */,
+				52DD000826E039B90054E408 /* BaselineJITCode.h in Headers */,
 				723998F7265DBCDB0057867F /* BaselineJITPlan.h in Headers */,
 				52678F8F1A031009006A306D /* BasicBlockLocation.h in Headers */,
 				147B83AC0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h in Headers */,
@@ -9631,7 +9638,6 @@
 				5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
 				535C24611F78928E006EC40E /* create_regex_tables in Headers */,
 				9959E92B1BD17FA4001AA413 /* cssmin.py in Headers */,
-				E386FD7B26E867B800E4C28B /* TemporalPlainTimeConstructor.h in Headers */,
 				2A111246192FCE79005EE18D /* CustomGetterSetter.h in Headers */,
 				0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
 				0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
@@ -9735,10 +9741,8 @@
 				0F2017821DCADD4200EA5950 /* DFGFlowMap.h in Headers */,
 				0F9D339717FFC4E60073C2BC /* DFGFlushedAt.h in Headers */,
 				A7D89CF817A0B8CC00773AD8 /* DFGFlushFormat.h in Headers */,
-				52DD000826E039B90054E408 /* BaselineJITCode.h in Headers */,
 				0F2DD8151AB3D8BE00BBB8E8 /* DFGForAllKills.h in Headers */,
 				0F69CC89193AC60A0045759E /* DFGFrozenValue.h in Headers */,
-				E386FD7E26E867B800E4C28B /* TemporalPlainTime.h in Headers */,
 				86EC9DC61328DF82002B2AD7 /* DFGGenerationInfo.h in Headers */,
 				86EC9DC81328DF82002B2AD7 /* DFGGraph.h in Headers */,
 				0F2FCCFA18A60070001A27F8 /* DFGGraphSafepoint.h in Headers */,
@@ -9895,6 +9899,7 @@
 				531EE7BA22DE6BBB0030DA81 /* FinalizationRegistryPrototype.h in Headers */,
 				A7A8AF3817ADB5F3005AB174 /* Float32Array.h in Headers */,
 				A7A8AF3917ADB5F3005AB174 /* Float64Array.h in Headers */,
+				CD1F9B3A270B9AAD00617EB6 /* Forward.h in Headers */,
 				0F24E54317EA9F5900ABB217 /* FPRInfo.h in Headers */,
 				E34EDBF71DB5FFC900DC87A5 /* FrameTracers.h in Headers */,
 				0F5513A61D5A682C00C32BD8 /* FreeList.h in Headers */,
@@ -10281,7 +10286,6 @@
 				0F2B66F217B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructor.h in Headers */,
 				0F2B66F317B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructorInlines.h in Headers */,
 				0F2B66F417B6B5AB00A7AE3F /* JSGenericTypedArrayViewInlines.h in Headers */,
-				E386FD7F26E867B800E4C28B /* TemporalPlainTimePrototype.h in Headers */,
 				0F2B66F517B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototype.h in Headers */,
 				53917E7B1B7906FA000EBD33 /* JSGenericTypedArrayViewPrototypeFunctions.h in Headers */,
 				0F2B66F617B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototypeInlines.h in Headers */,
@@ -10743,6 +10747,9 @@
 				A3C7EDBA26B0DB38004C34C5 /* TemporalDurationConstructor.h in Headers */,
 				A3C7EDB626B0DB38004C34C5 /* TemporalDurationPrototype.h in Headers */,
 				F6F150212693D450004B98EF /* TemporalObject.lut.h in Headers */,
+				E386FD7E26E867B800E4C28B /* TemporalPlainTime.h in Headers */,
+				E386FD7B26E867B800E4C28B /* TemporalPlainTimeConstructor.h in Headers */,
+				E386FD7F26E867B800E4C28B /* TemporalPlainTimePrototype.h in Headers */,
 				E30E8A5626DE2E4800DA4915 /* TemporalTimeZone.h in Headers */,
 				E30E8A5726DE2E4800DA4915 /* TemporalTimeZoneConstructor.h in Headers */,
 				E30E8A5426DE2E4800DA4915 /* TemporalTimeZonePrototype.h in Headers */,
@@ -10756,6 +10763,7 @@
 				0F55989817C86C5800A1E543 /* ToNativeFromValue.h in Headers */,
 				0F2D4DE919832DAC007D4B19 /* ToThisStatus.h in Headers */,
 				0F952ABD1B487A7700C367C5 /* TrackedReferences.h in Headers */,
+				CD1F9B3C270C0C1A00617EB6 /* TypedArrayAdaptersForwardDeclarations.h in Headers */,
 				0F2B670617B6B5AB00A7AE3F /* TypedArrayAdaptors.h in Headers */,
 				0F2B670817B6B5AB00A7AE3F /* TypedArrayController.h in Headers */,
 				0F4B94DC17B9F07500DD03A4 /* TypedArrayInlines.h in Headers */,

Copied: trunk/Source/_javascript_Core/runtime/Forward.h (from rev 283604, trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h) (0 => 283605)


--- trunk/Source/_javascript_Core/runtime/Forward.h	                        (rev 0)
+++ trunk/Source/_javascript_Core/runtime/Forward.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2021 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 "TypedArrayAdaptersForwardDeclarations.h"
+
+namespace JSC {
+class ArrayBuffer;
+}
+
+using JSC::ArrayBuffer;

Copied: trunk/Source/_javascript_Core/runtime/TypedArrayAdaptersForwardDeclarations.h (from rev 283604, trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h) (0 => 283605)


--- trunk/Source/_javascript_Core/runtime/TypedArrayAdaptersForwardDeclarations.h	                        (rev 0)
+++ trunk/Source/_javascript_Core/runtime/TypedArrayAdaptersForwardDeclarations.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2021 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
+
+namespace JSC {
+
+struct Int8Adaptor;
+struct Int16Adaptor;
+struct Int32Adaptor;
+struct Uint8Adaptor;
+struct Uint8ClampedAdaptor;
+struct Uint16Adaptor;
+struct Uint32Adaptor;
+struct Float32Adaptor;
+struct Float64Adaptor;
+struct BigInt64Adaptor;
+struct BigUint64Adaptor;
+
+template<typename Adaptor> class GenericTypedArrayView;
+typedef GenericTypedArrayView<Int8Adaptor> Int8Array;
+typedef GenericTypedArrayView<Int16Adaptor> Int16Array;
+typedef GenericTypedArrayView<Int32Adaptor> Int32Array;
+typedef GenericTypedArrayView<Uint8Adaptor> Uint8Array;
+typedef GenericTypedArrayView<Uint8ClampedAdaptor> Uint8ClampedArray;
+typedef GenericTypedArrayView<Uint16Adaptor> Uint16Array;
+typedef GenericTypedArrayView<Uint32Adaptor> Uint32Array;
+typedef GenericTypedArrayView<Float32Adaptor> Float32Array;
+typedef GenericTypedArrayView<Float64Adaptor> Float64Array;
+typedef GenericTypedArrayView<BigInt64Adaptor> BigInt64Array;
+typedef GenericTypedArrayView<BigUint64Adaptor> BigUint64Array;
+
+}
+
+using JSC::Int8Array;
+using JSC::Int16Array;
+using JSC::Int32Array;
+using JSC::Uint8Array;
+using JSC::Uint8ClampedArray;
+using JSC::Uint16Array;
+using JSC::Uint32Array;
+using JSC::Float32Array;
+using JSC::Float64Array;
+using JSC::BigInt64Array;
+using JSC::BigUint64Array;

Modified: trunk/Source/_javascript_Core/runtime/TypedArrayAdaptors.h (283604 => 283605)


--- trunk/Source/_javascript_Core/runtime/TypedArrayAdaptors.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/_javascript_Core/runtime/TypedArrayAdaptors.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -28,6 +28,7 @@
 #include "JSBigInt.h"
 #include "JSCJSValue.h"
 #include "MathCommon.h"
+#include "TypedArrayAdaptersForwardDeclarations.h"
 #include "TypedArrayType.h"
 #include <wtf/MathExtras.h>
 
@@ -208,31 +209,6 @@
     }
 };
 
-struct Int8Adaptor;
-struct Int16Adaptor;
-struct Int32Adaptor;
-struct Uint8Adaptor;
-struct Uint8ClampedAdaptor;
-struct Uint16Adaptor;
-struct Uint32Adaptor;
-struct Float32Adaptor;
-struct Float64Adaptor;
-struct BigInt64Adaptor;
-struct BigUint64Adaptor;
-
-template<typename Adaptor> class GenericTypedArrayView;
-typedef GenericTypedArrayView<Int8Adaptor> Int8Array;
-typedef GenericTypedArrayView<Int16Adaptor> Int16Array;
-typedef GenericTypedArrayView<Int32Adaptor> Int32Array;
-typedef GenericTypedArrayView<Uint8Adaptor> Uint8Array;
-typedef GenericTypedArrayView<Uint8ClampedAdaptor> Uint8ClampedArray;
-typedef GenericTypedArrayView<Uint16Adaptor> Uint16Array;
-typedef GenericTypedArrayView<Uint32Adaptor> Uint32Array;
-typedef GenericTypedArrayView<Float32Adaptor> Float32Array;
-typedef GenericTypedArrayView<Float64Adaptor> Float64Array;
-typedef GenericTypedArrayView<BigInt64Adaptor> BigInt64Array;
-typedef GenericTypedArrayView<BigUint64Adaptor> BigUint64Array;
-
 template<typename Adaptor> class JSGenericTypedArrayView;
 using JSInt8Array = JSGenericTypedArrayView<Int8Adaptor>;
 using JSInt16Array = JSGenericTypedArrayView<Int16Adaptor>;

Modified: trunk/Source/_javascript_Core/runtime/TypedArrays.h (283604 => 283605)


--- trunk/Source/_javascript_Core/runtime/TypedArrays.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/_javascript_Core/runtime/TypedArrays.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,19 +27,3 @@
 
 #include "GenericTypedArrayView.h"
 #include "TypedArrayAdaptors.h"
-
-namespace JSC {
-
-typedef GenericTypedArrayView<Int8Adaptor> Int8Array;
-typedef GenericTypedArrayView<Int16Adaptor> Int16Array;
-typedef GenericTypedArrayView<Int32Adaptor> Int32Array;
-typedef GenericTypedArrayView<Uint8Adaptor> Uint8Array;
-typedef GenericTypedArrayView<Uint8ClampedAdaptor> Uint8ClampedArray;
-typedef GenericTypedArrayView<Uint16Adaptor> Uint16Array;
-typedef GenericTypedArrayView<Uint32Adaptor> Uint32Array;
-typedef GenericTypedArrayView<Float32Adaptor> Float32Array;
-typedef GenericTypedArrayView<Float64Adaptor> Float64Array;
-typedef GenericTypedArrayView<BigInt64Adaptor> BigInt64Array;
-typedef GenericTypedArrayView<BigUint64Adaptor> BigUint64Array;
-
-} // namespace JSC

Modified: trunk/Source/WebCore/ChangeLog (283604 => 283605)


--- trunk/Source/WebCore/ChangeLog	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/ChangeLog	2021-10-06 07:49:30 UTC (rev 283605)
@@ -1,3 +1,63 @@
+2021-10-06  Jer Noble  <[email protected]>
+
+        [Build-time perf] Forward declare JS TypedArrays
+        https://bugs.webkit.org/show_bug.cgi?id=231196
+
+        Reviewed by Tim Horton.
+
+        According to `clang -ftime-trace`, compilation is spending a large amount of time inside TypedArrays.h.
+        Most of the places where _javascript_Core/<Type>Array.h is included in a header only needed a forward
+        declaration, so include the new _javascript_Core/Forward.h header instead, and move the include of the
+        <Type>Array.h header into the implementation file.
+
+        * Modules/encryptedmedia/legacy/LegacyCDM.h:
+        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
+        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
+        * Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp:
+        * Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
+        * Modules/mediastream/RTCPeerConnection.h:
+        * Modules/webaudio/AudioBuffer.h:
+        * Modules/webaudio/AudioParam.h:
+        * Modules/webaudio/AudioParamTimeline.h:
+        * Modules/webaudio/IIRFilterNode.h:
+        * Modules/webaudio/PeriodicWave.h:
+        * Modules/webaudio/RealtimeAnalyser.h:
+        * Modules/webaudio/WaveShaperDSPKernel.cpp:
+        * Modules/webaudio/WaveShaperProcessor.h:
+        * Modules/webxr/WebXRRigidTransform.h:
+        * Modules/webxr/WebXRView.h:
+        * css/DOMMatrix.cpp:
+        * css/DOMMatrixReadOnly.h:
+        * dom/TextEncoder.h:
+        * dom/TextEncoderStreamEncoder.h:
+        * html/ImageData.h:
+        * html/WebKitMediaKeyError.h:
+        * html/canvas/WebGLAny.h:
+        * html/canvas/WebGLBuffer.cpp:
+        (WebCore::WebGLBuffer::elementArrayBuffer const):
+        * html/canvas/WebGLBuffer.h:
+        * platform/graphics/LegacyCDMSession.h:
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/angle/GraphicsContextGLANGLE.cpp:
+        * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
+        (WebCore::CDMSessionAVFoundationCF::cachedKeyForKeyID const):
+        * platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:
+        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
+        * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
+        (WebCore::CDMSessionAVContentKeySession::cachedKeyForKeyID const):
+        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
+        * platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
+        (WebCore::CDMSessionAVFoundationObjC::cachedKeyForKeyID const):
+        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
+        * platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
+        (WebCore::CDMSessionAVStreamSession::cachedKeyForKeyID const):
+        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
+        * platform/graphics/cocoa/SourceBufferParser.h:
+        * platform/graphics/filters/FELighting.h:
+        * platform/graphics/filters/FilterEffect.h:
+        * testing/Internals.h:
+        * testing/LegacyMockCDM.cpp:
+
 2021-10-05  Basuke Suzuki  <[email protected]>
 
         [PlayStation] Fix build break after r283441

Modified: trunk/Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -28,7 +28,6 @@
 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
 
 #include "LegacyCDMSession.h"
-#include <_javascript_Core/Uint8Array.h>
 #include <wtf/Forward.h>
 #include <wtf/Function.h>
 #include <wtf/text/WTFString.h>

Modified: trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp (283604 => 283605)


--- trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -37,6 +37,7 @@
 #include "WebKitMediaKeyError.h"
 #include "WebKitMediaKeyMessageEvent.h"
 #include "WebKitMediaKeys.h"
+#include <_javascript_Core/Uint8Array.h>
 #include <wtf/FileSystem.h>
 #include <wtf/IsoMallocInlines.h>
 

Modified: trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeySession.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -32,7 +32,7 @@
 #include "ExceptionOr.h"
 #include "LegacyCDMSession.h"
 #include "Timer.h"
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Deque.h>
 
 namespace WebCore {

Modified: trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp (283604 => 283605)


--- trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -30,6 +30,7 @@
 
 #include "HTMLMediaElement.h"
 #include "WebKitMediaKeySession.h"
+#include <_javascript_Core/Uint8Array.h>
 
 namespace WebCore {
 

Modified: trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/encryptedmedia/legacy/WebKitMediaKeys.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -29,7 +29,7 @@
 
 #include "ExceptionOr.h"
 #include "LegacyCDM.h"
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Vector.h>
 #include <wtf/WeakPtr.h>
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -50,7 +50,7 @@
 #include "RTCRtpTransceiver.h"
 #include "RTCSessionDescriptionInit.h"
 #include "RTCSignalingState.h"
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/LoggerHelper.h>
 #include <wtf/WeakPtr.h>
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioBuffer.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/AudioBuffer.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/AudioBuffer.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -32,7 +32,7 @@
 #include "AudioBufferOptions.h"
 #include "ExceptionOr.h"
 #include "JSValueInWrappedObject.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Lock.h>
 #include <wtf/Vector.h>
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParam.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/AudioParam.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParam.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -32,7 +32,7 @@
 #include "AudioParamTimeline.h"
 #include "AudioSummingJunction.h"
 #include "AutomationRate.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <sys/types.h>
 #include <wtf/LoggerHelper.h>
 #include <wtf/RefCounted.h>

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -29,7 +29,7 @@
 #pragma once
 
 #include "AudioContext.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Lock.h>
 #include <wtf/Vector.h>
 

Modified: trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/IIRFilterNode.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -28,7 +28,7 @@
 #include "AudioBasicProcessorNode.h"
 #include "IIRFilterOptions.h"
 #include "IIRProcessor.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/IsoMalloc.h>
 
 namespace WebCore {

Modified: trunk/Source/WebCore/Modules/webaudio/PeriodicWave.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/PeriodicWave.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/PeriodicWave.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -31,7 +31,7 @@
 #include "AudioArray.h"
 #include "ExceptionOr.h"
 #include "PeriodicWaveOptions.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <memory>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>

Modified: trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/RealtimeAnalyser.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -25,8 +25,7 @@
 #pragma once
 
 #include "AudioArray.h"
-#include <_javascript_Core/Float32Array.h>
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <memory>
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>

Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperDSPKernel.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -30,6 +30,7 @@
 
 #include "AudioUtilities.h"
 #include "WaveShaperProcessor.h"
+#include <_javascript_Core/Float32Array.h>
 #include <algorithm>
 #include <wtf/MainThread.h>
 #include <wtf/Threading.h>

Modified: trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webaudio/WaveShaperProcessor.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,7 +27,7 @@
 #include "AudioDSPKernel.h"
 #include "AudioDSPKernelProcessor.h"
 #include "AudioNode.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <memory>
 #include <wtf/Lock.h>
 #include <wtf/RefPtr.h>

Modified: trunk/Source/WebCore/Modules/webxr/WebXRRigidTransform.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webxr/WebXRRigidTransform.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webxr/WebXRRigidTransform.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -30,7 +30,7 @@
 #include "ExceptionOr.h"
 #include "JSValueInWrappedObject.h"
 #include "TransformationMatrix.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/IsoMalloc.h>
 #include <wtf/RefCounted.h>
 #include <wtf/WeakPtr.h>

Modified: trunk/Source/WebCore/Modules/webxr/WebXRView.h (283604 => 283605)


--- trunk/Source/WebCore/Modules/webxr/WebXRView.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/Modules/webxr/WebXRView.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -30,7 +30,7 @@
 #include "JSValueInWrappedObject.h"
 #include "WebXRRigidTransform.h"
 #include "XREye.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/IsoMalloc.h>
 #include <wtf/Ref.h>
 #include <wtf/RefCounted.h>

Modified: trunk/Source/WebCore/css/DOMMatrix.cpp (283604 => 283605)


--- trunk/Source/WebCore/css/DOMMatrix.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/css/DOMMatrix.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,6 +27,7 @@
 #include "DOMMatrix.h"
 
 #include "ScriptExecutionContext.h"
+#include <_javascript_Core/Float32Array.h>
 #include <cmath>
 #include <limits>
 

Modified: trunk/Source/WebCore/css/DOMMatrixReadOnly.h (283604 => 283605)


--- trunk/Source/WebCore/css/DOMMatrixReadOnly.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/css/DOMMatrixReadOnly.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -29,8 +29,7 @@
 #include "ExceptionOr.h"
 #include "ScriptWrappable.h"
 #include "TransformationMatrix.h"
-#include <_javascript_Core/Float32Array.h>
-#include <_javascript_Core/Float64Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Variant.h>
 #include <wtf/Vector.h>

Modified: trunk/Source/WebCore/dom/TextEncoder.h (283604 => 283605)


--- trunk/Source/WebCore/dom/TextEncoder.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/dom/TextEncoder.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -25,7 +25,7 @@
 #pragma once
 
 #include "JSDOMConvertBufferSource.h"
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Ref.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>

Modified: trunk/Source/WebCore/dom/TextEncoderStreamEncoder.h (283604 => 283605)


--- trunk/Source/WebCore/dom/TextEncoderStreamEncoder.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/dom/TextEncoderStreamEncoder.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -24,7 +24,7 @@
 
 #pragma once
 
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Ref.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>

Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (283604 => 283605)


--- trunk/Source/WebCore/html/HTMLTrackElement.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -37,6 +37,7 @@
 #include "LoadableTextTrack.h"
 #include "Logging.h"
 #include <wtf/IsoMallocInlines.h>
+#include <wtf/SetForScope.h>
 #include <wtf/text/CString.h>
 
 namespace WebCore {

Modified: trunk/Source/WebCore/html/ImageData.h (283604 => 283605)


--- trunk/Source/WebCore/html/ImageData.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/ImageData.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -33,7 +33,7 @@
 #include "IntSize.h"
 #include "PixelBuffer.h"
 #include "PredefinedColorSpace.h"
-#include <_javascript_Core/Uint8ClampedArray.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Forward.h>
 
 namespace WebCore {

Modified: trunk/Source/WebCore/html/WebKitMediaKeyError.h (283604 => 283605)


--- trunk/Source/WebCore/html/WebKitMediaKeyError.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/WebKitMediaKeyError.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,7 +27,7 @@
 
 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
 
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {

Modified: trunk/Source/WebCore/html/canvas/WebGLAny.h (283604 => 283605)


--- trunk/Source/WebCore/html/canvas/WebGLAny.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/canvas/WebGLAny.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,10 +27,7 @@
 
 #if ENABLE(WEBGL)
 
-#include <_javascript_Core/Float32Array.h>
-#include <_javascript_Core/Int32Array.h>
-#include <_javascript_Core/Uint32Array.h>
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 
 namespace JSC {
 class CallFrame;

Modified: trunk/Source/WebCore/html/canvas/WebGLBuffer.cpp (283604 => 283605)


--- trunk/Source/WebCore/html/canvas/WebGLBuffer.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/canvas/WebGLBuffer.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -236,6 +236,11 @@
     return m_byteLength;
 }
 
+const RefPtr<JSC::ArrayBuffer> WebGLBuffer::elementArrayBuffer() const
+{
+    return m_elementArrayBuffer;
+}
+
 std::optional<unsigned> WebGLBuffer::getCachedMaxIndex(GCGLenum type)
 {
     for (auto& cache : m_maxIndexCache) {

Modified: trunk/Source/WebCore/html/canvas/WebGLBuffer.h (283604 => 283605)


--- trunk/Source/WebCore/html/canvas/WebGLBuffer.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/canvas/WebGLBuffer.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -52,7 +52,7 @@
     void disassociateBufferData();
 
     GCGLsizeiptr byteLength() const;
-    const RefPtr<JSC::ArrayBuffer> elementArrayBuffer() const { return m_elementArrayBuffer; }
+    const RefPtr<JSC::ArrayBuffer> elementArrayBuffer() const;
 
     // Gets the cached max index for the given type if one has been set.
     std::optional<unsigned> getCachedMaxIndex(GCGLenum type);

Modified: trunk/Source/WebCore/html/canvas/WebGLMultiDraw.h (283604 => 283605)


--- trunk/Source/WebCore/html/canvas/WebGLMultiDraw.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/canvas/WebGLMultiDraw.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include "WebGLExtension.h"
+#include <_javascript_Core/TypedArrays.h>
 
 namespace WebCore {
 

Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (283604 => 283605)


--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -43,6 +43,7 @@
 #include "WebGLStateTracker.h"
 #include "WebGLTexture.h"
 #include "WebGLVertexArrayObjectOES.h"
+#include <_javascript_Core/ArrayBufferView.h>
 #include <_javascript_Core/ConsoleTypes.h>
 #include <limits>
 #include <memory>

Modified: trunk/Source/WebCore/platform/graphics/LegacyCDMSession.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/LegacyCDMSession.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/LegacyCDMSession.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -27,7 +27,7 @@
 
 #if ENABLE(LEGACY_ENCRYPTED_MEDIA)
 
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/Forward.h>
 
 namespace WebCore {
@@ -71,7 +71,7 @@
     virtual RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) = 0;
     virtual void releaseKeys() = 0;
     virtual bool update(Uint8Array*, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) = 0;
-    virtual RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const { return nullptr; }
+    virtual RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const = 0;
 };
 
 }

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -37,8 +37,7 @@
 #include "SecurityOriginData.h"
 #include "Timer.h"
 #include "VideoPlaybackQualityMetrics.h"
-#include <wtf/URL.h>
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/CompletionHandler.h>
 #include <wtf/Function.h>
 #include <wtf/HashSet.h>
@@ -45,6 +44,7 @@
 #include <wtf/Logger.h>
 #include <wtf/MediaTime.h>
 #include <wtf/ThreadSafeRefCounted.h>
+#include <wtf/URL.h>
 #include <wtf/WallTime.h>
 #include <wtf/WeakPtr.h>
 #include <wtf/text/StringHash.h>

Modified: trunk/Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -41,6 +41,7 @@
 #include "PixelBuffer.h"
 #include "TemporaryANGLESetting.h"
 #include <_javascript_Core/RegularExpression.h>
+#include <_javascript_Core/Uint8ClampedArray.h>
 #include <algorithm>
 #include <cstring>
 #include <wtf/HexNumber.h>

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -34,6 +34,8 @@
 #include "MediaPlayerPrivateAVFoundationCF.h"
 #include "NotImplemented.h"
 #include <AVFoundationCF/AVFoundationCF.h>
+#include <_javascript_Core/ArrayBuffer.h>
+#include <_javascript_Core/Uint8Array.h>
 #include <wtf/SoftLinking.h>
 #include <wtf/UUID.h>
 #include <wtf/text/CString.h>
@@ -120,6 +122,11 @@
     return true;
 }
 
+RefPtr<ArrayBuffer> CDMSessionAVFoundationCF::cachedKeyForKeyID(const String&) const
+{
+    return nullptr;
 }
 
+}
+
 #endif

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -48,6 +48,7 @@
     RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) final;
     void releaseKeys() final;
     bool update(Uint8Array*, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) final;
+    RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const final;
 
     MediaPlayerPrivateAVFoundationCF& m_parent;
     const String m_sessionId;

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -52,6 +52,7 @@
     RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) override;
     void releaseKeys() override;
     bool update(Uint8Array* key, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) override;
+    RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const override;
 
     // CDMSessionMediaSourceAVFObjC
     void addParser(AVStreamDataParser *) override;

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm	2021-10-06 07:49:30 UTC (rev 283605)
@@ -316,6 +316,11 @@
     return true;
 }
 
+RefPtr<ArrayBuffer> CDMSessionAVContentKeySession::cachedKeyForKeyID(const String&) const
+{
+    return nullptr;
+}
+
 void CDMSessionAVContentKeySession::addParser(AVStreamDataParser* parser)
 {
     if ([contentKeySession() respondsToSelector:@selector(addContentKeyRecipient:)])

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -51,6 +51,7 @@
     RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) override;
     void releaseKeys() override;
     bool update(Uint8Array*, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) override;
+    RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const override;
 
     void playerDidReceiveError(NSError *);
 

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm	2021-10-06 07:49:30 UTC (rev 283605)
@@ -114,6 +114,11 @@
     return true;
 }
 
+RefPtr<ArrayBuffer> CDMSessionAVFoundationObjC::cachedKeyForKeyID(const String&) const
+{
+    return nullptr;
+}
+
 void CDMSessionAVFoundationObjC::playerDidReceiveError(NSError *error)
 {
     if (!m_client)

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -50,6 +50,7 @@
     RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) override;
     void releaseKeys() override;
     bool update(Uint8Array*, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) override;
+    RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const override;
 
     // CDMSessionMediaSourceAVFObjC
     void addParser(AVStreamDataParser*) override;

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm	2021-10-06 07:49:30 UTC (rev 283605)
@@ -269,6 +269,11 @@
     return true;
 }
 
+RefPtr<ArrayBuffer> CDMSessionAVStreamSession::cachedKeyForKeyID(const String&) const
+{
+    return nullptr;
+}
+
 void CDMSessionAVStreamSession::setStreamSession(AVStreamSession *streamSession)
 {
     if (m_streamSession)

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -26,7 +26,7 @@
 #pragma once
 
 #include "MediaSample.h"
-#include <_javascript_Core/Uint8ClampedArray.h>
+#include <_javascript_Core/Forward.h>
 #include <pal/avfoundation/MediaTimeAVFoundation.h>
 #include <wtf/Forward.h>
 

Modified: trunk/Source/WebCore/platform/graphics/cocoa/SourceBufferParser.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/cocoa/SourceBufferParser.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/cocoa/SourceBufferParser.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -29,10 +29,11 @@
 
 #include "MediaPlayerEnums.h"
 #include "SourceBufferPrivateClient.h"
-#include <_javascript_Core/Uint8Array.h>
+#include <_javascript_Core/Forward.h>
 #include <pal/spi/cocoa/MediaToolboxSPI.h>
 #include <wtf/CompletionHandler.h>
 #include <wtf/RefCounted.h>
+#include <wtf/ThreadSafeRefCounted.h>
 #include <wtf/Variant.h>
 
 namespace WTF {

Modified: trunk/Source/WebCore/platform/graphics/filters/FELighting.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/filters/FELighting.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/filters/FELighting.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -30,7 +30,7 @@
 #include "Filter.h"
 #include "FilterEffect.h"
 #include "LightSource.h"
-#include <_javascript_Core/Uint8ClampedArray.h>
+#include <_javascript_Core/Forward.h>
 
 // Common base class for FEDiffuseLighting and FESpecularLighting
 

Modified: trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/filters/FilterEffect.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -28,7 +28,7 @@
 #include "IntRect.h"
 #include "IntRectExtent.h"
 #include "PixelBuffer.h"
-#include <_javascript_Core/Uint8ClampedArray.h>
+#include <_javascript_Core/Forward.h>
 #include <wtf/MathExtras.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (283604 => 283605)


--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -34,6 +34,7 @@
 #include <cstdint>
 #include <wtf/Condition.h>
 #include <wtf/DataMutex.h>
+#include <wtf/PrintStream.h>
 #include <wtf/RunLoop.h>
 #include <wtf/Scope.h>
 #include <wtf/glib/WTFGType.h>

Modified: trunk/Source/WebCore/testing/Internals.h (283604 => 283605)


--- trunk/Source/WebCore/testing/Internals.h	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/testing/Internals.h	2021-10-06 07:49:30 UTC (rev 283605)
@@ -38,7 +38,7 @@
 #include "SleepDisabler.h"
 #include "TextIndicator.h"
 #include "VP9Utilities.h"
-#include <_javascript_Core/Float32Array.h>
+#include <_javascript_Core/Forward.h>
 
 #if ENABLE(VIDEO)
 #include "MediaElementSession.h"

Modified: trunk/Source/WebCore/testing/LegacyMockCDM.cpp (283604 => 283605)


--- trunk/Source/WebCore/testing/LegacyMockCDM.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebCore/testing/LegacyMockCDM.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -48,6 +48,7 @@
     RefPtr<Uint8Array> generateKeyRequest(const String& mimeType, Uint8Array* initData, String& destinationURL, unsigned short& errorCode, uint32_t& systemCode) override;
     void releaseKeys() override;
     bool update(Uint8Array*, RefPtr<Uint8Array>& nextMessage, unsigned short& errorCode, uint32_t& systemCode) override;
+    RefPtr<ArrayBuffer> cachedKeyForKeyID(const String&) const override { return nullptr; }
 
 protected:
     LegacyCDMSessionClient* m_client;

Modified: trunk/Source/WebKit/ChangeLog (283604 => 283605)


--- trunk/Source/WebKit/ChangeLog	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebKit/ChangeLog	2021-10-06 07:49:30 UTC (rev 283605)
@@ -1,3 +1,12 @@
+2021-10-06  Jer Noble  <[email protected]>
+
+        [Build-time perf] Forward declare JS TypedArrays
+        https://bugs.webkit.org/show_bug.cgi?id=231196
+
+        Reviewed by Tim Horton.
+
+        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
+
 2021-10-06  Youenn Fablet  <[email protected]>
 
         Close NetworkRTCProvider sockets explicitly when closing NetworkRTCProvider

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp (283604 => 283605)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -48,6 +48,7 @@
 #include "TextTrackPrivateRemoteConfiguration.h"
 #include "TrackPrivateRemoteConfiguration.h"
 #include "WebCoreArgumentCoders.h"
+#include <_javascript_Core/Uint8Array.h>
 #include <WebCore/LayoutRect.h>
 #include <WebCore/MediaPlayer.h>
 #include <WebCore/MediaPlayerPrivate.h>

Modified: trunk/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm (283604 => 283605)


--- trunk/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Source/WebKit/UIProcess/WebAuthentication/Mock/MockLocalConnection.mm	2021-10-06 07:49:30 UTC (rev 283605)
@@ -28,6 +28,7 @@
 
 #if ENABLE(WEB_AUTHN)
 
+#import <_javascript_Core/ArrayBuffer.h>
 #import <Security/SecItem.h>
 #import <WebCore/AuthenticatorAssertionResponse.h>
 #import <WebCore/ExceptionData.h>

Modified: trunk/Tools/ChangeLog (283604 => 283605)


--- trunk/Tools/ChangeLog	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Tools/ChangeLog	2021-10-06 07:49:30 UTC (rev 283605)
@@ -1,3 +1,12 @@
+2021-10-06  Jer Noble  <[email protected]>
+
+        [Build-time perf] Forward declare JS TypedArrays
+        https://bugs.webkit.org/show_bug.cgi?id=231196
+
+        Reviewed by Tim Horton.
+
+        * TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
+
 2021-10-05  Alex Christensen  <[email protected]>
 
         [ iOS15 ] TestWebKitAPI.ResourceLoadStatistics.DataTaskIdentifierCollision is a constant crash

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp (283604 => 283605)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp	2021-10-06 07:34:37 UTC (rev 283604)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp	2021-10-06 07:49:30 UTC (rev 283605)
@@ -32,6 +32,7 @@
 #if ENABLE(WEB_AUTHN)
 
 #include "FidoTestData.h"
+#include <_javascript_Core/ArrayBuffer.h>
 #include <WebCore/AuthenticatorAttachment.h>
 #include <WebCore/CBORReader.h>
 #include <WebCore/CBORValue.h>
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to