diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
index 620016e..1bf7be0 100644
--- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
+++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp
@@ -141,8 +141,9 @@
     return false;
   }
 
-  m_pXFADoc = CXFA_FFDoc::CreateAndOpen(m_pXFAApp.get(), &m_DocEnv,
-                                        m_pPDFDoc.Get(), stream);
+  m_pXFADoc = CXFA_FFDoc::CreateAndOpen(
+      m_pXFAApp.get(), &m_DocEnv, m_pPDFDoc.Get(), m_pGCHeap.get(), stream);
+
   if (!m_pXFADoc) {
     FXSYS_SetLastError(FPDF_ERR_XFALOAD);
     return false;
diff --git a/xfa/fxfa/BUILD.gn b/xfa/fxfa/BUILD.gn
index 8490abe..66bce13 100644
--- a/xfa/fxfa/BUILD.gn
+++ b/xfa/fxfa/BUILD.gn
@@ -110,6 +110,7 @@
     "../fxgraphics",
     "layout",
     "parser",
+    "//v8:cppgc",
   ]
   allow_circular_includes_from = [
     "../../fxjs",
diff --git a/xfa/fxfa/DEPS b/xfa/fxfa/DEPS
index cd0aa8d..2efe354 100644
--- a/xfa/fxfa/DEPS
+++ b/xfa/fxfa/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   '+fxjs',
+  '+v8/include/cppgc',
 
   # xfa/fwl should be standalone. https://crbug.com/pdfium/507
   '+xfa/fwl',
diff --git a/xfa/fxfa/cxfa_ffdoc.cpp b/xfa/fxfa/cxfa_ffdoc.cpp
index 78c6d20..f45e09e 100644
--- a/xfa/fxfa/cxfa_ffdoc.cpp
+++ b/xfa/fxfa/cxfa_ffdoc.cpp
@@ -22,6 +22,7 @@
 #include "core/fxge/dib/cfx_dibitmap.h"
 #include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/ptr_util.h"
+#include "v8/include/cppgc/heap.h"
 #include "xfa/fgas/font/cfgas_pdffontmgr.h"
 #include "xfa/fwl/cfwl_notedriver.h"
 #include "xfa/fxfa/cxfa_ffapp.h"
@@ -54,14 +55,15 @@
     CXFA_FFApp* pApp,
     IXFA_DocEnvironment* pDocEnvironment,
     CPDF_Document* pPDFDoc,
+    cppgc::Heap* pGCHeap,
     const RetainPtr<IFX_SeekableStream>& stream) {
   ASSERT(pApp);
   ASSERT(pDocEnvironment);
   ASSERT(pPDFDoc);
 
   // Use WrapUnique() to keep constructor private.
-  auto result =
-      pdfium::WrapUnique(new CXFA_FFDoc(pApp, pDocEnvironment, pPDFDoc));
+  auto result = pdfium::WrapUnique(
+      new CXFA_FFDoc(pApp, pDocEnvironment, pPDFDoc, pGCHeap));
   if (!result->OpenDoc(stream))
     return nullptr;
 
@@ -70,14 +72,16 @@
 
 CXFA_FFDoc::CXFA_FFDoc(CXFA_FFApp* pApp,
                        IXFA_DocEnvironment* pDocEnvironment,
-                       CPDF_Document* pPDFDoc)
+                       CPDF_Document* pPDFDoc,
+                       cppgc::Heap* pHeap)
     : m_pDocEnvironment(pDocEnvironment),
       m_pApp(pApp),
       m_pPDFDoc(pPDFDoc),
+      m_pHeap(pHeap),
       m_pNotify(std::make_unique<CXFA_FFNotify>(this)),
       m_pDocument(std::make_unique<CXFA_Document>(
           m_pNotify.get(),
-          std::make_unique<CXFA_LayoutProcessor>())) {}
+          std::make_unique<CXFA_LayoutProcessor>(pHeap))) {}
 
 CXFA_FFDoc::~CXFA_FFDoc() {
   if (m_DocView) {
diff --git a/xfa/fxfa/cxfa_ffdoc.h b/xfa/fxfa/cxfa_ffdoc.h
index 04d98bc..67852e4 100644
--- a/xfa/fxfa/cxfa_ffdoc.h
+++ b/xfa/fxfa/cxfa_ffdoc.h
@@ -26,6 +26,10 @@
 class CXFA_FFDocView;
 class CXFA_LayoutProcessor;
 
+namespace cppgc {
+class Heap;
+}  // namespace cppgc
+
 struct FX_IMAGEDIB_AND_DPI {
   FX_IMAGEDIB_AND_DPI();
   FX_IMAGEDIB_AND_DPI(const FX_IMAGEDIB_AND_DPI& that);
@@ -45,6 +49,7 @@
       CXFA_FFApp* pApp,
       IXFA_DocEnvironment* pDocEnvironment,
       CPDF_Document* pPDFDoc,
+      cppgc::Heap* pGCHeap,
       const RetainPtr<IFX_SeekableStream>& stream);
 
   ~CXFA_FFDoc();
@@ -73,13 +78,15 @@
  private:
   CXFA_FFDoc(CXFA_FFApp* pApp,
              IXFA_DocEnvironment* pDocEnvironment,
-             CPDF_Document* pPDFDoc);
+             CPDF_Document* pPDFDoc,
+             cppgc::Heap* pHeap);
   bool OpenDoc(const RetainPtr<IFX_SeekableStream>& stream);
   bool ParseDoc(const RetainPtr<IFX_SeekableStream>& stream);
 
   UnownedPtr<IXFA_DocEnvironment> const m_pDocEnvironment;
   UnownedPtr<CXFA_FFApp> const m_pApp;
   UnownedPtr<CPDF_Document> const m_pPDFDoc;
+  UnownedPtr<cppgc::Heap> const m_pHeap;
   std::unique_ptr<CFX_XMLDocument> m_pXMLDoc;
   std::unique_ptr<CXFA_FFNotify> m_pNotify;
   std::unique_ptr<CXFA_Document> m_pDocument;
diff --git a/xfa/fxfa/layout/BUILD.gn b/xfa/fxfa/layout/BUILD.gn
index 6c9295f..9770f3f 100644
--- a/xfa/fxfa/layout/BUILD.gn
+++ b/xfa/fxfa/layout/BUILD.gn
@@ -27,6 +27,7 @@
     "../../../core/fxcrt",
     "../../../fxjs",
     "../parser",
+    "//v8:cppgc",
   ]
   allow_circular_includes_from = [ "../../../fxjs" ]
   configs += [
diff --git a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
index dca3cb1..c9ea12c 100644
--- a/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutprocessor.cpp
@@ -8,6 +8,7 @@
 
 #include "fxjs/xfa/cjx_object.h"
 #include "third_party/base/stl_util.h"
+#include "v8/include/cppgc/heap.h"
 #include "xfa/fxfa/layout/cxfa_contentlayoutitem.h"
 #include "xfa/fxfa/layout/cxfa_contentlayoutprocessor.h"
 #include "xfa/fxfa/layout/cxfa_viewlayoutprocessor.h"
@@ -25,7 +26,8 @@
   return static_cast<CXFA_LayoutProcessor*>(pXFADoc->GetLayoutProcessor());
 }
 
-CXFA_LayoutProcessor::CXFA_LayoutProcessor() = default;
+CXFA_LayoutProcessor::CXFA_LayoutProcessor(cppgc::Heap* pHeap)
+    : m_pHeap(pHeap) {}
 
 CXFA_LayoutProcessor::~CXFA_LayoutProcessor() = default;
 
diff --git a/xfa/fxfa/layout/cxfa_layoutprocessor.h b/xfa/fxfa/layout/cxfa_layoutprocessor.h
index 18dc208..72c4b47 100644
--- a/xfa/fxfa/layout/cxfa_layoutprocessor.h
+++ b/xfa/fxfa/layout/cxfa_layoutprocessor.h
@@ -20,17 +20,22 @@
 class CXFA_ViewLayoutItem;
 class CXFA_ViewLayoutProcessor;
 
+namespace cppgc {
+class Heap;
+}  // namespace cppgc
+
 class CXFA_LayoutProcessor : public CXFA_Document::LayoutProcessorIface {
  public:
   static CXFA_LayoutProcessor* FromDocument(const CXFA_Document* pXFADoc);
 
-  CXFA_LayoutProcessor();
+  explicit CXFA_LayoutProcessor(cppgc::Heap* pHeap);
   ~CXFA_LayoutProcessor() override;
 
   // CXFA_Document::LayoutProcessorIface:
   void SetForceRelayout(bool bForceRestart) override;
   void AddChangedContainer(CXFA_Node* pContainer) override;
 
+  cppgc::Heap* GetHeap() { return m_pHeap.Get(); }
   int32_t StartLayout(bool bForceRestart);
   int32_t DoLayout();
   bool IncrementLayout();
@@ -47,6 +52,7 @@
  private:
   bool NeedLayout() const;
 
+  UnownedPtr<cppgc::Heap> const m_pHeap;
   std::unique_ptr<CXFA_ViewLayoutProcessor> m_pViewLayoutProcessor;
   std::unique_ptr<CXFA_ContentLayoutProcessor> m_pContentLayoutProcessor;
   std::vector<CXFA_Node*> m_rgChangedContainers;
