diff --git a/core/fpdfapi/parser/cpdf_read_validator.h b/core/fpdfapi/parser/cpdf_read_validator.h
index ba07dfa..439d904 100644
--- a/core/fpdfapi/parser/cpdf_read_validator.h
+++ b/core/fpdfapi/parser/cpdf_read_validator.h
@@ -6,6 +6,7 @@
 #define CORE_FPDFAPI_PARSER_CPDF_READ_VALIDATOR_H_
 
 #include "core/fpdfapi/parser/cpdf_data_avail.h"
+#include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_stream.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxcrt/unowned_ptr.h"
@@ -14,16 +15,14 @@
  public:
   class ScopedSession {
    public:
+    FX_STACK_ALLOCATED();
+
     explicit ScopedSession(RetainPtr<CPDF_ReadValidator> validator);
     ScopedSession(const ScopedSession& that) = delete;
     ScopedSession& operator=(const ScopedSession& that) = delete;
     ~ScopedSession();
 
    private:
-    // Make stack-allocated.
-    void* operator new(size_t) = delete;
-    void* operator new(size_t, void*) = delete;
-
     RetainPtr<CPDF_ReadValidator> const validator_;
     const bool saved_read_error_;
     const bool saved_has_unavailable_data_;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 778c5df..979a70d 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -51,6 +51,7 @@
 #include "core/fpdfapi/render/cpdf_textrenderer.h"
 #include "core/fpdfapi/render/cpdf_type3cache.h"
 #include "core/fxcrt/autorestorer.h"
+#include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_safe_types.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/unowned_ptr.h"
@@ -146,6 +147,8 @@
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 class ScopedSkiaDeviceFlush {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit ScopedSkiaDeviceFlush(CFX_RenderDevice* pDevice)
       : m_pDevice(pDevice) {}
 
diff --git a/core/fpdfdoc/cpdf_formfield_unittest.cpp b/core/fpdfdoc/cpdf_formfield_unittest.cpp
index 9db7510..9766924 100644
--- a/core/fpdfdoc/cpdf_formfield_unittest.cpp
+++ b/core/fpdfdoc/cpdf_formfield_unittest.cpp
@@ -20,6 +20,7 @@
 #include "core/fpdfapi/parser/cpdf_string.h"
 #include "core/fpdfapi/render/cpdf_docrenderdata.h"
 #include "core/fpdfdoc/cpdf_interactiveform.h"
+#include "core/fxcrt/fx_memory.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/base/stl_util.h"
 
@@ -29,6 +30,8 @@
 // CPDF_Document.
 class ScopedCPDF_PageModule {
  public:
+  FX_STACK_ALLOCATED();
+
   ScopedCPDF_PageModule() { CPDF_PageModule::Create(); }
   ~ScopedCPDF_PageModule() { CPDF_PageModule::Destroy(); }
 };
diff --git a/core/fxcrt/fx_memory.h b/core/fxcrt/fx_memory.h
index 3312191..f6d04f4 100644
--- a/core/fxcrt/fx_memory.h
+++ b/core/fxcrt/fx_memory.h
@@ -58,6 +58,8 @@
 #define FX_AllocUninit2D(type, w, h) \
   static_cast<type*>(pdfium::internal::AllocOrDie2D(w, h, sizeof(type)))
 
+void FX_Free(void* ptr);
+
 namespace pdfium {
 namespace internal {
 
@@ -74,7 +76,10 @@
 }  // namespace internal
 }  // namespace pdfium
 
-void FX_Free(void* ptr);
+// Force stack allocation of a class.
+#define FX_STACK_ALLOCATED()           \
+  void* operator new(size_t) = delete; \
+  void* operator new(size_t, void*) = delete
 
 // Round up to the power-of-two boundary N.
 template <int N, typename T>
diff --git a/core/fxcrt/scoped_set_insertion.h b/core/fxcrt/scoped_set_insertion.h
index 890e75f..35b3b0a 100644
--- a/core/fxcrt/scoped_set_insertion.h
+++ b/core/fxcrt/scoped_set_insertion.h
@@ -8,6 +8,7 @@
 #include <set>
 #include <utility>
 
+#include "core/fxcrt/fx_memory.h"
 #include "third_party/base/check.h"
 
 namespace fxcrt {
@@ -17,6 +18,8 @@
 template <typename T>
 class ScopedSetInsertion {
  public:
+  FX_STACK_ALLOCATED();
+
   ScopedSetInsertion(std::set<T>* org_set, const T& elem)
       : set_(org_set), insert_results_(set_->insert(elem)) {
     CHECK(insert_results_.second);
@@ -25,10 +28,6 @@
   ScopedSetInsertion& operator=(const ScopedSetInsertion&) = delete;
   ~ScopedSetInsertion() { set_->erase(insert_results_.first); }
 
-  // Stack allocated only.
-  void* operator new(size_t) = delete;
-  void* operator new(size_t, void*) = delete;
-
  private:
   std::set<T>* const set_;
   const std::pair<typename std::set<T>::iterator, bool> insert_results_;
diff --git a/core/fxge/scoped_font_transform.h b/core/fxge/scoped_font_transform.h
index d96d4ed..f4e7b1e 100644
--- a/core/fxge/scoped_font_transform.h
+++ b/core/fxge/scoped_font_transform.h
@@ -7,6 +7,7 @@
 #ifndef CORE_FXGE_SCOPED_FONT_TRANSFORM_H_
 #define CORE_FXGE_SCOPED_FONT_TRANSFORM_H_
 
+#include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxge/cfx_face.h"
 #include "core/fxge/fx_freetype.h"
@@ -15,6 +16,8 @@
 // goes out of scope.
 class ScopedFontTransform {
  public:
+  FX_STACK_ALLOCATED();
+
   ScopedFontTransform(RetainPtr<CFX_Face> face, FT_Matrix* matrix);
   ~ScopedFontTransform();
 
diff --git a/core/fxge/win32/cgdi_printer_driver.cpp b/core/fxge/win32/cgdi_printer_driver.cpp
index d7f4981..51b1646 100644
--- a/core/fxge/win32/cgdi_printer_driver.cpp
+++ b/core/fxge/win32/cgdi_printer_driver.cpp
@@ -12,6 +12,7 @@
 #include <memory>
 #include <vector>
 
+#include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxge/cfx_font.h"
@@ -28,6 +29,8 @@
 
 class ScopedState {
  public:
+  FX_STACK_ALLOCATED();
+
   ScopedState(HDC hDC, HFONT hFont)
       : m_hDC(hDC),
         m_iState(SaveDC(m_hDC)),
diff --git a/fxjs/ijs_runtime.h b/fxjs/ijs_runtime.h
index e18b8d4..97e30aa 100644
--- a/fxjs/ijs_runtime.h
+++ b/fxjs/ijs_runtime.h
@@ -9,6 +9,7 @@
 
 #include <memory>
 
+#include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_string.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/unowned_ptr.h"
@@ -33,6 +34,8 @@
 
   class ScopedEventContext {
    public:
+    FX_STACK_ALLOCATED();
+
     explicit ScopedEventContext(IJS_Runtime* pRuntime);
     ~ScopedEventContext();
 
diff --git a/fxjs/xfa/cfxjse_isolatetracker.h b/fxjs/xfa/cfxjse_isolatetracker.h
index 3e78c57..3b0b058 100644
--- a/fxjs/xfa/cfxjse_isolatetracker.h
+++ b/fxjs/xfa/cfxjse_isolatetracker.h
@@ -7,12 +7,15 @@
 #ifndef FXJS_XFA_CFXJSE_ISOLATETRACKER_H_
 #define FXJS_XFA_CFXJSE_ISOLATETRACKER_H_
 
+#include "core/fxcrt/fx_memory.h"
 #include "v8/include/v8.h"
 
 class CFXJSE_Context;
 
 class CFXJSE_ScopeUtil_IsolateHandle {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit CFXJSE_ScopeUtil_IsolateHandle(v8::Isolate* pIsolate);
   CFXJSE_ScopeUtil_IsolateHandle(const CFXJSE_ScopeUtil_IsolateHandle&) =
       delete;
@@ -21,29 +24,27 @@
   ~CFXJSE_ScopeUtil_IsolateHandle();
 
  private:
-  void* operator new(size_t size) = delete;
-  void operator delete(void*, size_t) = delete;
-
   v8::Isolate::Scope isolate_scope_;
   v8::HandleScope handle_scope_;
 };
 
 class CFXJSE_ScopeUtil_Context {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit CFXJSE_ScopeUtil_Context(CFXJSE_Context* pContext);
   CFXJSE_ScopeUtil_Context(const CFXJSE_ScopeUtil_Context&) = delete;
   CFXJSE_ScopeUtil_Context& operator=(const CFXJSE_ScopeUtil_Context&) = delete;
   ~CFXJSE_ScopeUtil_Context();
 
  private:
-  void* operator new(size_t size) = delete;
-  void operator delete(void*, size_t) = delete;
-
   v8::Context::Scope context_scope_;
 };
 
 class CFXJSE_ScopeUtil_IsolateHandleContext {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit CFXJSE_ScopeUtil_IsolateHandleContext(CFXJSE_Context* pContext);
   CFXJSE_ScopeUtil_IsolateHandleContext(
       const CFXJSE_ScopeUtil_IsolateHandleContext&) = delete;
@@ -52,15 +53,14 @@
   ~CFXJSE_ScopeUtil_IsolateHandleContext();
 
  private:
-  void* operator new(size_t size) = delete;
-  void operator delete(void*, size_t) = delete;
-
   CFXJSE_ScopeUtil_IsolateHandle isolate_handle_;
   CFXJSE_ScopeUtil_Context context_;
 };
 
 class CFXJSE_ScopeUtil_RootContext {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit CFXJSE_ScopeUtil_RootContext(v8::Isolate* pIsolate);
   CFXJSE_ScopeUtil_RootContext(const CFXJSE_ScopeUtil_RootContext&) = delete;
   CFXJSE_ScopeUtil_RootContext& operator=(const CFXJSE_ScopeUtil_RootContext&) =
@@ -68,14 +68,13 @@
   ~CFXJSE_ScopeUtil_RootContext();
 
  private:
-  void* operator new(size_t size) = delete;
-  void operator delete(void*, size_t) = delete;
-
   v8::Context::Scope context_scope_;
 };
 
 class CFXJSE_ScopeUtil_IsolateHandleRootContext {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit CFXJSE_ScopeUtil_IsolateHandleRootContext(v8::Isolate* pIsolate);
   CFXJSE_ScopeUtil_IsolateHandleRootContext(
       const CFXJSE_ScopeUtil_IsolateHandleRootContext&) = delete;
@@ -84,9 +83,6 @@
   ~CFXJSE_ScopeUtil_IsolateHandleRootContext();
 
  private:
-  void* operator new(size_t size) = delete;
-  void operator delete(void*, size_t) = delete;
-
   CFXJSE_ScopeUtil_IsolateHandle isolate_handle_;
   CFXJSE_ScopeUtil_RootContext root_context_;
 };
diff --git a/testing/scoped_set_tz.h b/testing/scoped_set_tz.h
index 37a0a32..19c633c 100644
--- a/testing/scoped_set_tz.h
+++ b/testing/scoped_set_tz.h
@@ -7,10 +7,13 @@
 
 #include <string>
 
+#include "core/fxcrt/fx_memory.h"
 #include "third_party/base/optional.h"
 
 class ScopedSetTZ {
  public:
+  FX_STACK_ALLOCATED();
+
   explicit ScopedSetTZ(const std::string& tz);
   ScopedSetTZ(const ScopedSetTZ&) = delete;
   ScopedSetTZ& operator=(const ScopedSetTZ&) = delete;
