Apply patch. rdar://problem/69375258

Canonical link: https://commits.webkit.org/228499.101@safari-610.2.6.0-branch
git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-610.2.6.0-branch@267436 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 7a21e05..e0a19cc 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,87 @@
+2020-09-22  Russell Epstein  <repstein@apple.com>
+
+        Apply patch. rdar://problem/69375258
+
+    2020-09-22  Dean Jackson  <dino@apple.com>
+
+            Cherry-pick r266809. rdar://problem/68421590
+
+        2020-09-09  Dean Jackson  <dino@apple.com>
+
+                CrashTracer: com.apple.WebKit.WebContent at WebCore: WebCore::WebGLRenderingContext::getExtension
+                https://bugs.webkit.org/show_bug.cgi?id=216337
+                <rdar://problem/68421590>
+
+                Reviewed by Sam Weinig.
+
+                Bug 215599 added IsoHeap storage to WebGLExtension, but didn't add it
+                to any of the subclasses. This causes a crash in ::getExtension because
+                allocation of the new instance fails.
+
+                Add WTF_MAKE_ISO_ALLOCATED_IMPL to the .cpp files, and
+                WTF_MAKE_ISO_ALLOCATED to the .h files.
+
+                This should have been detected by on-device testing, since a debug
+                build would have asserted because the size passed into the constructor
+                was different from the actual size of the class.
+
+                * html/canvas/ANGLEInstancedArrays.cpp:
+                * html/canvas/ANGLEInstancedArrays.h:
+                * html/canvas/EXTBlendMinMax.cpp:
+                * html/canvas/EXTBlendMinMax.h:
+                * html/canvas/EXTColorBufferFloat.cpp:
+                * html/canvas/EXTColorBufferFloat.h:
+                * html/canvas/EXTColorBufferHalfFloat.cpp:
+                * html/canvas/EXTColorBufferHalfFloat.h:
+                * html/canvas/EXTFragDepth.cpp:
+                * html/canvas/EXTFragDepth.h:
+                * html/canvas/EXTShaderTextureLOD.cpp:
+                * html/canvas/EXTShaderTextureLOD.h:
+                * html/canvas/EXTTextureFilterAnisotropic.cpp:
+                * html/canvas/EXTTextureFilterAnisotropic.h:
+                * html/canvas/EXTsRGB.cpp:
+                * html/canvas/EXTsRGB.h:
+                * html/canvas/OESElementIndexUint.cpp:
+                * html/canvas/OESElementIndexUint.h:
+                * html/canvas/OESStandardDerivatives.cpp:
+                * html/canvas/OESStandardDerivatives.h:
+                * html/canvas/OESTextureFloat.cpp:
+                * html/canvas/OESTextureFloat.h:
+                * html/canvas/OESTextureFloatLinear.cpp:
+                * html/canvas/OESTextureFloatLinear.h:
+                * html/canvas/OESTextureHalfFloat.cpp:
+                * html/canvas/OESTextureHalfFloat.h:
+                * html/canvas/OESTextureHalfFloatLinear.cpp:
+                * html/canvas/OESTextureHalfFloatLinear.h:
+                * html/canvas/OESVertexArrayObject.cpp:
+                * html/canvas/OESVertexArrayObject.h:
+                * html/canvas/WebGLColorBufferFloat.cpp:
+                * html/canvas/WebGLColorBufferFloat.h:
+                * html/canvas/WebGLCompressedTextureASTC.cpp:
+                * html/canvas/WebGLCompressedTextureASTC.h:
+                * html/canvas/WebGLCompressedTextureATC.cpp:
+                * html/canvas/WebGLCompressedTextureATC.h:
+                * html/canvas/WebGLCompressedTextureETC.cpp:
+                * html/canvas/WebGLCompressedTextureETC.h:
+                * html/canvas/WebGLCompressedTextureETC1.cpp:
+                * html/canvas/WebGLCompressedTextureETC1.h:
+                * html/canvas/WebGLCompressedTexturePVRTC.cpp:
+                * html/canvas/WebGLCompressedTexturePVRTC.h:
+                * html/canvas/WebGLCompressedTextureS3TC.cpp:
+                * html/canvas/WebGLCompressedTextureS3TC.h:
+                * html/canvas/WebGLCompressedTextureS3TCsRGB.cpp:
+                * html/canvas/WebGLCompressedTextureS3TCsRGB.h:
+                * html/canvas/WebGLDebugRendererInfo.cpp:
+                * html/canvas/WebGLDebugRendererInfo.h:
+                * html/canvas/WebGLDebugShaders.cpp:
+                * html/canvas/WebGLDebugShaders.h:
+                * html/canvas/WebGLDepthTexture.cpp:
+                * html/canvas/WebGLDepthTexture.h:
+                * html/canvas/WebGLDrawBuffers.cpp:
+                * html/canvas/WebGLDrawBuffers.h:
+                * html/canvas/WebGLLoseContext.cpp:
+                * html/canvas/WebGLLoseContext.h:
+
 2020-09-15  Russell Epstein  <repstein@apple.com>
 
         Cherry-pick r266121. rdar://problem/68949237
diff --git a/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp b/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp
index 0b448ab..80b2a72 100644
--- a/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp
+++ b/Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp
@@ -32,8 +32,12 @@
 #include "ExtensionsGL.h"
 #endif
 
+#include <wtf/IsoMallocInlines.h>
+
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(ANGLEInstancedArrays);
+
 ANGLEInstancedArrays::ANGLEInstancedArrays(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/ANGLEInstancedArrays.h b/Source/WebCore/html/canvas/ANGLEInstancedArrays.h
index 8370914..32eb897 100644
--- a/Source/WebCore/html/canvas/ANGLEInstancedArrays.h
+++ b/Source/WebCore/html/canvas/ANGLEInstancedArrays.h
@@ -32,6 +32,7 @@
 class WebGLRenderingContextBase;
 
 class ANGLEInstancedArrays final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(ANGLEInstancedArrays);
 public:
     explicit ANGLEInstancedArrays(WebGLRenderingContextBase&);
     virtual ~ANGLEInstancedArrays();
diff --git a/Source/WebCore/html/canvas/EXTBlendMinMax.cpp b/Source/WebCore/html/canvas/EXTBlendMinMax.cpp
index 44051da..39b8141 100644
--- a/Source/WebCore/html/canvas/EXTBlendMinMax.cpp
+++ b/Source/WebCore/html/canvas/EXTBlendMinMax.cpp
@@ -30,6 +30,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTBlendMinMax);
+
 EXTBlendMinMax::EXTBlendMinMax(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTBlendMinMax.h b/Source/WebCore/html/canvas/EXTBlendMinMax.h
index 5959684..3becc4a 100644
--- a/Source/WebCore/html/canvas/EXTBlendMinMax.h
+++ b/Source/WebCore/html/canvas/EXTBlendMinMax.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTBlendMinMax final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTBlendMinMax);
 public:
     explicit EXTBlendMinMax(WebGLRenderingContextBase&);
     virtual ~EXTBlendMinMax();
diff --git a/Source/WebCore/html/canvas/EXTColorBufferFloat.cpp b/Source/WebCore/html/canvas/EXTColorBufferFloat.cpp
index 167f739..58e49ca 100644
--- a/Source/WebCore/html/canvas/EXTColorBufferFloat.cpp
+++ b/Source/WebCore/html/canvas/EXTColorBufferFloat.cpp
@@ -32,6 +32,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTColorBufferFloat);
+
 EXTColorBufferFloat::EXTColorBufferFloat(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTColorBufferFloat.h b/Source/WebCore/html/canvas/EXTColorBufferFloat.h
index c3b5837..eb29fa0e 100644
--- a/Source/WebCore/html/canvas/EXTColorBufferFloat.h
+++ b/Source/WebCore/html/canvas/EXTColorBufferFloat.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTColorBufferFloat final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTColorBufferFloat);
 public:
     explicit EXTColorBufferFloat(WebGLRenderingContextBase&);
     virtual ~EXTColorBufferFloat();
diff --git a/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.cpp b/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.cpp
index 8eda2ef..79e1cc1 100644
--- a/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.cpp
+++ b/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.cpp
@@ -29,9 +29,12 @@
 #include "EXTColorBufferHalfFloat.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTColorBufferHalfFloat);
+
 EXTColorBufferHalfFloat::EXTColorBufferHalfFloat(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.h b/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.h
index 0dca592..10779ef 100644
--- a/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.h
+++ b/Source/WebCore/html/canvas/EXTColorBufferHalfFloat.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTColorBufferHalfFloat final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTColorBufferHalfFloat);
 public:
     explicit EXTColorBufferHalfFloat(WebGLRenderingContextBase&);
     virtual ~EXTColorBufferHalfFloat();
diff --git a/Source/WebCore/html/canvas/EXTFragDepth.cpp b/Source/WebCore/html/canvas/EXTFragDepth.cpp
index 8513e30..c0c0219 100644
--- a/Source/WebCore/html/canvas/EXTFragDepth.cpp
+++ b/Source/WebCore/html/canvas/EXTFragDepth.cpp
@@ -27,9 +27,12 @@
 
 #if ENABLE(WEBGL)
 #include "EXTFragDepth.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTFragDepth);
+
 EXTFragDepth::EXTFragDepth(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTFragDepth.h b/Source/WebCore/html/canvas/EXTFragDepth.h
index 5e8a4f9..b4ac47a 100644
--- a/Source/WebCore/html/canvas/EXTFragDepth.h
+++ b/Source/WebCore/html/canvas/EXTFragDepth.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTFragDepth final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTFragDepth);
 public:
     explicit EXTFragDepth(WebGLRenderingContextBase&);
     virtual ~EXTFragDepth();
diff --git a/Source/WebCore/html/canvas/EXTShaderTextureLOD.cpp b/Source/WebCore/html/canvas/EXTShaderTextureLOD.cpp
index a2e918c..ff5d7fa 100644
--- a/Source/WebCore/html/canvas/EXTShaderTextureLOD.cpp
+++ b/Source/WebCore/html/canvas/EXTShaderTextureLOD.cpp
@@ -27,9 +27,12 @@
 
 #if ENABLE(WEBGL)
 #include "EXTShaderTextureLOD.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTShaderTextureLOD);
+
 EXTShaderTextureLOD::EXTShaderTextureLOD(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTShaderTextureLOD.h b/Source/WebCore/html/canvas/EXTShaderTextureLOD.h
index 47c192f..8fccad8 100644
--- a/Source/WebCore/html/canvas/EXTShaderTextureLOD.h
+++ b/Source/WebCore/html/canvas/EXTShaderTextureLOD.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTShaderTextureLOD final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTShaderTextureLOD);
 public:
     explicit EXTShaderTextureLOD(WebGLRenderingContextBase&);
     virtual ~EXTShaderTextureLOD();
diff --git a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.cpp b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.cpp
index de82c06..b52a4f0 100644
--- a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.cpp
+++ b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.cpp
@@ -28,9 +28,12 @@
 #if ENABLE(WEBGL)
 
 #include "EXTTextureFilterAnisotropic.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTTextureFilterAnisotropic);
+
 EXTTextureFilterAnisotropic::EXTTextureFilterAnisotropic(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.h b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.h
index 4197d5f..4394804 100644
--- a/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.h
+++ b/Source/WebCore/html/canvas/EXTTextureFilterAnisotropic.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTTextureFilterAnisotropic final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTTextureFilterAnisotropic);
 public:
     explicit EXTTextureFilterAnisotropic(WebGLRenderingContextBase&);
     virtual ~EXTTextureFilterAnisotropic();
diff --git a/Source/WebCore/html/canvas/EXTsRGB.cpp b/Source/WebCore/html/canvas/EXTsRGB.cpp
index 3dd8615..c523f68 100644
--- a/Source/WebCore/html/canvas/EXTsRGB.cpp
+++ b/Source/WebCore/html/canvas/EXTsRGB.cpp
@@ -27,9 +27,12 @@
 
 #if ENABLE(WEBGL)
 #include "EXTsRGB.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(EXTsRGB);
+
 EXTsRGB::EXTsRGB(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/EXTsRGB.h b/Source/WebCore/html/canvas/EXTsRGB.h
index 4a69cba..ef56d2d 100644
--- a/Source/WebCore/html/canvas/EXTsRGB.h
+++ b/Source/WebCore/html/canvas/EXTsRGB.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class EXTsRGB final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(EXTsRGB);
 public:
     explicit EXTsRGB(WebGLRenderingContextBase&);
     virtual ~EXTsRGB();
diff --git a/Source/WebCore/html/canvas/OESElementIndexUint.cpp b/Source/WebCore/html/canvas/OESElementIndexUint.cpp
index 9213a89..8b981cd 100644
--- a/Source/WebCore/html/canvas/OESElementIndexUint.cpp
+++ b/Source/WebCore/html/canvas/OESElementIndexUint.cpp
@@ -31,6 +31,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESElementIndexUint);
+
 OESElementIndexUint::OESElementIndexUint(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESElementIndexUint.h b/Source/WebCore/html/canvas/OESElementIndexUint.h
index 460321d..33b7696 100644
--- a/Source/WebCore/html/canvas/OESElementIndexUint.h
+++ b/Source/WebCore/html/canvas/OESElementIndexUint.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESElementIndexUint final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESElementIndexUint);
 public:
     explicit OESElementIndexUint(WebGLRenderingContextBase&);
     virtual ~OESElementIndexUint();
diff --git a/Source/WebCore/html/canvas/OESStandardDerivatives.cpp b/Source/WebCore/html/canvas/OESStandardDerivatives.cpp
index d1aa8d6..86078df 100644
--- a/Source/WebCore/html/canvas/OESStandardDerivatives.cpp
+++ b/Source/WebCore/html/canvas/OESStandardDerivatives.cpp
@@ -28,9 +28,12 @@
 #if ENABLE(WEBGL)
 
 #include "OESStandardDerivatives.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESStandardDerivatives);
+
 OESStandardDerivatives::OESStandardDerivatives(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESStandardDerivatives.h b/Source/WebCore/html/canvas/OESStandardDerivatives.h
index ccfc884..3963f29 100644
--- a/Source/WebCore/html/canvas/OESStandardDerivatives.h
+++ b/Source/WebCore/html/canvas/OESStandardDerivatives.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESStandardDerivatives final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESStandardDerivatives);
 public:
     explicit OESStandardDerivatives(WebGLRenderingContextBase&);
     virtual ~OESStandardDerivatives();
diff --git a/Source/WebCore/html/canvas/OESTextureFloat.cpp b/Source/WebCore/html/canvas/OESTextureFloat.cpp
index d801f60..19dfbed 100644
--- a/Source/WebCore/html/canvas/OESTextureFloat.cpp
+++ b/Source/WebCore/html/canvas/OESTextureFloat.cpp
@@ -29,9 +29,12 @@
 #include "OESTextureFloat.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESTextureFloat);
+
 OESTextureFloat::OESTextureFloat(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESTextureFloat.h b/Source/WebCore/html/canvas/OESTextureFloat.h
index 63be12c..8a7274d 100644
--- a/Source/WebCore/html/canvas/OESTextureFloat.h
+++ b/Source/WebCore/html/canvas/OESTextureFloat.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESTextureFloat final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESTextureFloat);
 public:
     OESTextureFloat(WebGLRenderingContextBase&);
     virtual ~OESTextureFloat();
diff --git a/Source/WebCore/html/canvas/OESTextureFloatLinear.cpp b/Source/WebCore/html/canvas/OESTextureFloatLinear.cpp
index 626bdcd..743c1e9 100644
--- a/Source/WebCore/html/canvas/OESTextureFloatLinear.cpp
+++ b/Source/WebCore/html/canvas/OESTextureFloatLinear.cpp
@@ -27,9 +27,12 @@
 
 #if ENABLE(WEBGL)
 #include "OESTextureFloatLinear.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESTextureFloatLinear);
+
 OESTextureFloatLinear::OESTextureFloatLinear(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESTextureFloatLinear.h b/Source/WebCore/html/canvas/OESTextureFloatLinear.h
index 93dd134..a111281 100644
--- a/Source/WebCore/html/canvas/OESTextureFloatLinear.h
+++ b/Source/WebCore/html/canvas/OESTextureFloatLinear.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESTextureFloatLinear final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESTextureFloatLinear);
 public:
     explicit OESTextureFloatLinear(WebGLRenderingContextBase&);
     virtual ~OESTextureFloatLinear();
diff --git a/Source/WebCore/html/canvas/OESTextureHalfFloat.cpp b/Source/WebCore/html/canvas/OESTextureHalfFloat.cpp
index ea53f5d..40b9899 100644
--- a/Source/WebCore/html/canvas/OESTextureHalfFloat.cpp
+++ b/Source/WebCore/html/canvas/OESTextureHalfFloat.cpp
@@ -30,9 +30,12 @@
 #include "OESTextureHalfFloat.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESTextureHalfFloat);
+
 OESTextureHalfFloat::OESTextureHalfFloat(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESTextureHalfFloat.h b/Source/WebCore/html/canvas/OESTextureHalfFloat.h
index 54f19f5..a354fcb 100644
--- a/Source/WebCore/html/canvas/OESTextureHalfFloat.h
+++ b/Source/WebCore/html/canvas/OESTextureHalfFloat.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESTextureHalfFloat final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESTextureHalfFloat);
 public:
     OESTextureHalfFloat(WebGLRenderingContextBase&);
     virtual ~OESTextureHalfFloat();
diff --git a/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.cpp b/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.cpp
index 95840db..2c120d5 100644
--- a/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.cpp
+++ b/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.cpp
@@ -27,9 +27,12 @@
 
 #if ENABLE(WEBGL)
 #include "OESTextureHalfFloatLinear.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESTextureHalfFloatLinear);
+
 OESTextureHalfFloatLinear::OESTextureHalfFloatLinear(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.h b/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.h
index 4810a11..796c6f0 100644
--- a/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.h
+++ b/Source/WebCore/html/canvas/OESTextureHalfFloatLinear.h
@@ -30,6 +30,7 @@
 namespace WebCore {
 
 class OESTextureHalfFloatLinear final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESTextureHalfFloatLinear);
 public:
     OESTextureHalfFloatLinear(WebGLRenderingContextBase&);
     virtual ~OESTextureHalfFloatLinear();
diff --git a/Source/WebCore/html/canvas/OESVertexArrayObject.cpp b/Source/WebCore/html/canvas/OESVertexArrayObject.cpp
index c11cf6f7..78fd4f8 100644
--- a/Source/WebCore/html/canvas/OESVertexArrayObject.cpp
+++ b/Source/WebCore/html/canvas/OESVertexArrayObject.cpp
@@ -30,11 +30,14 @@
 
 #include "ExtensionsGL.h"
 #include "WebGLRenderingContext.h"
+#include <wtf/IsoMallocInlines.h>
 #include <wtf/Lock.h>
 #include <wtf/Locker.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(OESVertexArrayObject);
+
 OESVertexArrayObject::OESVertexArrayObject(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/OESVertexArrayObject.h b/Source/WebCore/html/canvas/OESVertexArrayObject.h
index 9508e6a..1be0ea9 100644
--- a/Source/WebCore/html/canvas/OESVertexArrayObject.h
+++ b/Source/WebCore/html/canvas/OESVertexArrayObject.h
@@ -36,6 +36,7 @@
 class WebGLVertexArrayObjectOES;
 
 class OESVertexArrayObject final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(OESVertexArrayObject);
 public:
     explicit OESVertexArrayObject(WebGLRenderingContextBase&);
 
diff --git a/Source/WebCore/html/canvas/WebGLColorBufferFloat.cpp b/Source/WebCore/html/canvas/WebGLColorBufferFloat.cpp
index 7ff7dec..a81a49c 100644
--- a/Source/WebCore/html/canvas/WebGLColorBufferFloat.cpp
+++ b/Source/WebCore/html/canvas/WebGLColorBufferFloat.cpp
@@ -29,9 +29,12 @@
 #include "WebGLColorBufferFloat.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLColorBufferFloat);
+
 WebGLColorBufferFloat::WebGLColorBufferFloat(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLColorBufferFloat.h b/Source/WebCore/html/canvas/WebGLColorBufferFloat.h
index bf6f48d..0d2d07c 100644
--- a/Source/WebCore/html/canvas/WebGLColorBufferFloat.h
+++ b/Source/WebCore/html/canvas/WebGLColorBufferFloat.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLColorBufferFloat final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLColorBufferFloat);
 public:
     explicit WebGLColorBufferFloat(WebGLRenderingContextBase&);
     virtual ~WebGLColorBufferFloat();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.cpp b/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.cpp
index 1bff43b..f149af3 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.cpp
@@ -33,7 +33,9 @@
 #include "WebGLRenderingContextBase.h"
 
 namespace WebCore {
-    
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTextureASTC);
+
 WebGLCompressedTextureASTC::WebGLCompressedTextureASTC(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
     , m_isHDRSupported(context.graphicsContextGL()->getExtensions().supports("GL_KHR_texture_compression_astc_hdr"_s))
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.h b/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.h
index 93b7e61..30efe3d 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureASTC.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLCompressedTextureASTC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTextureASTC);
 public:
     explicit WebGLCompressedTextureASTC(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTextureASTC();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureATC.cpp b/Source/WebCore/html/canvas/WebGLCompressedTextureATC.cpp
index 9f81fb0..da8f0ef 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureATC.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureATC.cpp
@@ -33,6 +33,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTextureATC);
+
 WebGLCompressedTextureATC::WebGLCompressedTextureATC(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureATC.h b/Source/WebCore/html/canvas/WebGLCompressedTextureATC.h
index 8196a06..e0bd266 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureATC.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureATC.h
@@ -34,6 +34,7 @@
 class WebGLTexture;
 
 class WebGLCompressedTextureATC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTextureATC);
 public:
     explicit WebGLCompressedTextureATC(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTextureATC();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureETC.cpp b/Source/WebCore/html/canvas/WebGLCompressedTextureETC.cpp
index a6a54aa..f1272dd 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureETC.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureETC.cpp
@@ -33,6 +33,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTextureETC);
+
 WebGLCompressedTextureETC::WebGLCompressedTextureETC(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureETC.h b/Source/WebCore/html/canvas/WebGLCompressedTextureETC.h
index 7a338ad..746778c 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureETC.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureETC.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLCompressedTextureETC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTextureETC);
 public:
     explicit WebGLCompressedTextureETC(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTextureETC();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.cpp b/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.cpp
index fb3dfea..115b762 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.cpp
@@ -33,6 +33,8 @@
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTextureETC1);
+
 WebGLCompressedTextureETC1::WebGLCompressedTextureETC1(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.h b/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.h
index 0f76a48..06fe27a 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureETC1.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLCompressedTextureETC1 final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTextureETC1);
 public:
     explicit WebGLCompressedTextureETC1(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTextureETC1();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.cpp b/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.cpp
index 93599ac..1a20c07 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.cpp
@@ -31,9 +31,12 @@
 
 #include "ExtensionsGL.h"
 #include "WebGLRenderingContextBase.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTexturePVRTC);
+
 WebGLCompressedTexturePVRTC::WebGLCompressedTexturePVRTC(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.h b/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.h
index a18f3cf..a8669f0 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLCompressedTexturePVRTC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTexturePVRTC);
 public:
     explicit WebGLCompressedTexturePVRTC(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTexturePVRTC();
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp
index a3d151e..07ba4fa 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp
@@ -31,9 +31,12 @@
 
 #include "ExtensionsGL.h"
 #include "WebGLRenderingContextBase.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLCompressedTextureS3TC);
+
 WebGLCompressedTextureS3TC::WebGLCompressedTextureS3TC(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.h b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.h
index a76c318..a3473d8 100644
--- a/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.h
+++ b/Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.h
@@ -34,6 +34,7 @@
 class WebGLTexture;
 
 class WebGLCompressedTextureS3TC final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLCompressedTextureS3TC);
 public:
     explicit WebGLCompressedTextureS3TC(WebGLRenderingContextBase&);
     virtual ~WebGLCompressedTextureS3TC();
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp
index c9bd9f1..4e7414f5 100644
--- a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp
+++ b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.cpp
@@ -30,9 +30,12 @@
 #include "WebGLDebugRendererInfo.h"
 
 #include "WebGLRenderingContextBase.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLDebugRendererInfo);
+
 WebGLDebugRendererInfo::WebGLDebugRendererInfo(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h
index 6d3562e..4fadd32 100644
--- a/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h
+++ b/Source/WebCore/html/canvas/WebGLDebugRendererInfo.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLDebugRendererInfo final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLDebugRendererInfo);
 public:
     enum EnumType {
         UNMASKED_VENDOR_WEBGL = 0x9245,
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.cpp b/Source/WebCore/html/canvas/WebGLDebugShaders.cpp
index dbb1bd3..6b04954 100644
--- a/Source/WebCore/html/canvas/WebGLDebugShaders.cpp
+++ b/Source/WebCore/html/canvas/WebGLDebugShaders.cpp
@@ -32,9 +32,12 @@
 #include "ExtensionsGL.h"
 #include "WebGLRenderingContextBase.h"
 #include "WebGLShader.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLDebugShaders);
+
 WebGLDebugShaders::WebGLDebugShaders(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLDebugShaders.h b/Source/WebCore/html/canvas/WebGLDebugShaders.h
index 4560e22..b5ef2c1 100644
--- a/Source/WebCore/html/canvas/WebGLDebugShaders.h
+++ b/Source/WebCore/html/canvas/WebGLDebugShaders.h
@@ -34,6 +34,7 @@
 class WebGLShader;
 
 class WebGLDebugShaders final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLDebugShaders);
 public:
     explicit WebGLDebugShaders(WebGLRenderingContextBase&);
     virtual ~WebGLDebugShaders();
diff --git a/Source/WebCore/html/canvas/WebGLDepthTexture.cpp b/Source/WebCore/html/canvas/WebGLDepthTexture.cpp
index 4531e9f..af2ed90 100644
--- a/Source/WebCore/html/canvas/WebGLDepthTexture.cpp
+++ b/Source/WebCore/html/canvas/WebGLDepthTexture.cpp
@@ -30,9 +30,12 @@
 #include "WebGLDepthTexture.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLDepthTexture);
+
 WebGLDepthTexture::WebGLDepthTexture(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLDepthTexture.h b/Source/WebCore/html/canvas/WebGLDepthTexture.h
index 0f8b99d..616100a 100644
--- a/Source/WebCore/html/canvas/WebGLDepthTexture.h
+++ b/Source/WebCore/html/canvas/WebGLDepthTexture.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLDepthTexture final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLDepthTexture);
 public:
     explicit WebGLDepthTexture(WebGLRenderingContextBase&);
     virtual ~WebGLDepthTexture();
diff --git a/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp b/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp
index 81131a7..b5c4112 100644
--- a/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp
+++ b/Source/WebCore/html/canvas/WebGLDrawBuffers.cpp
@@ -29,9 +29,12 @@
 #include "WebGLDrawBuffers.h"
 
 #include "ExtensionsGL.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLDrawBuffers);
+
 WebGLDrawBuffers::WebGLDrawBuffers(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLDrawBuffers.h b/Source/WebCore/html/canvas/WebGLDrawBuffers.h
index 22cc015..6b9e2a5 100644
--- a/Source/WebCore/html/canvas/WebGLDrawBuffers.h
+++ b/Source/WebCore/html/canvas/WebGLDrawBuffers.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLDrawBuffers final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLDrawBuffers);
 public:
     explicit WebGLDrawBuffers(WebGLRenderingContextBase&);
     virtual ~WebGLDrawBuffers();
diff --git a/Source/WebCore/html/canvas/WebGLLoseContext.cpp b/Source/WebCore/html/canvas/WebGLLoseContext.cpp
index f3cf32f..7243535 100644
--- a/Source/WebCore/html/canvas/WebGLLoseContext.cpp
+++ b/Source/WebCore/html/canvas/WebGLLoseContext.cpp
@@ -30,9 +30,12 @@
 #include "WebGLLoseContext.h"
 
 #include "WebGLRenderingContextBase.h"
+#include <wtf/IsoMallocInlines.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebGLLoseContext);
+
 WebGLLoseContext::WebGLLoseContext(WebGLRenderingContextBase& context)
     : WebGLExtension(context)
 {
diff --git a/Source/WebCore/html/canvas/WebGLLoseContext.h b/Source/WebCore/html/canvas/WebGLLoseContext.h
index cd622a5..b072f477 100644
--- a/Source/WebCore/html/canvas/WebGLLoseContext.h
+++ b/Source/WebCore/html/canvas/WebGLLoseContext.h
@@ -32,6 +32,7 @@
 namespace WebCore {
 
 class WebGLLoseContext final : public WebGLExtension {
+    WTF_MAKE_ISO_ALLOCATED(WebGLLoseContext);
 public:
     explicit WebGLLoseContext(WebGLRenderingContextBase&);
     virtual ~WebGLLoseContext();