diff --git a/fxjs/xfa/cfxjse_class.cpp b/fxjs/xfa/cfxjse_class.cpp
index 936c799..ce1d465 100644
--- a/fxjs/xfa/cfxjse_class.cpp
+++ b/fxjs/xfa/cfxjse_class.cpp
@@ -299,18 +299,15 @@
       hFunctionTemplate->InstanceTemplate();
   SetUpNamedPropHandler(pIsolate, hObjectTemplate, pClassDescriptor);
 
-  if (pClassDescriptor->methNum) {
-    for (int32_t i = 0; i < pClassDescriptor->methNum; i++) {
-      v8::Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(
-          pIsolate, V8FunctionCallback_Wrapper,
-          v8::External::New(pIsolate, const_cast<FXJSE_FUNCTION_DESCRIPTOR*>(
-                                          pClassDescriptor->methods + i)));
-      fun->RemovePrototype();
-      hObjectTemplate->Set(
-          fxv8::NewStringHelper(pIsolate, pClassDescriptor->methods[i].name),
-          fun,
-          static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete));
-    }
+  for (const auto& method : pClassDescriptor->methods) {
+    v8::Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(
+        pIsolate, V8FunctionCallback_Wrapper,
+        v8::External::New(pIsolate,
+                          const_cast<FXJSE_FUNCTION_DESCRIPTOR*>(&method)));
+    fun->RemovePrototype();
+    hObjectTemplate->Set(
+        fxv8::NewStringHelper(pIsolate, method.name), fun,
+        static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete));
   }
 
   if (bIsJSGlobal) {
diff --git a/fxjs/xfa/cfxjse_engine.cpp b/fxjs/xfa/cfxjse_engine.cpp
index 977250b..616e84f 100644
--- a/fxjs/xfa/cfxjse_engine.cpp
+++ b/fxjs/xfa/cfxjse_engine.cpp
@@ -44,8 +44,7 @@
 const FXJSE_CLASS_DESCRIPTOR kGlobalClassDescriptor = {
     kClassTag,  // tag
     "Root",     // name
-    nullptr,    // methods
-    0,          // method count
+    {},         // methods
     CFXJSE_Engine::GlobalPropTypeGetter,
     CFXJSE_Engine::GlobalPropertyGetter,
     CFXJSE_Engine::GlobalPropertySetter,
@@ -55,8 +54,7 @@
 const FXJSE_CLASS_DESCRIPTOR kNormalClassDescriptor = {
     kClassTag,    // tag
     "XFAObject",  // name
-    nullptr,      // methods
-    0,            // method count
+    {},           // methods
     CFXJSE_Engine::NormalPropTypeGetter,
     CFXJSE_Engine::NormalPropertyGetter,
     CFXJSE_Engine::NormalPropertySetter,
@@ -66,8 +64,7 @@
 const FXJSE_CLASS_DESCRIPTOR kVariablesClassDescriptor = {
     kClassTag,          // tag
     "XFAScriptObject",  // name
-    nullptr,            // methods
-    0,                  // method count
+    {},                 // methods
     CFXJSE_Engine::NormalPropTypeGetter,
     CFXJSE_Engine::GlobalPropertyGetter,
     CFXJSE_Engine::GlobalPropertySetter,
diff --git a/fxjs/xfa/cfxjse_formcalc_context.cpp b/fxjs/xfa/cfxjse_formcalc_context.cpp
index 1a66c90..a18d00c 100644
--- a/fxjs/xfa/cfxjse_formcalc_context.cpp
+++ b/fxjs/xfa/cfxjse_formcalc_context.cpp
@@ -1361,7 +1361,6 @@
     kClassTag,                      // tag
     "XFA_FormCalcClass",            // name
     kFormCalcFunctions,             // methods
-    std::size(kFormCalcFunctions),  // number of methods
     nullptr,                        // dynamic prop type
     nullptr,                        // dynamic prop getter
     nullptr,                        // dynamic prop setter
diff --git a/fxjs/xfa/fxjse.h b/fxjs/xfa/fxjse.h
index 04d746b..08ddc3e 100644
--- a/fxjs/xfa/fxjse.h
+++ b/fxjs/xfa/fxjse.h
@@ -10,7 +10,7 @@
 #include <stdint.h>
 
 #include "core/fxcrt/fx_string.h"
-#include "core/fxcrt/unowned_ptr_exclusion.h"
+#include "core/fxcrt/span.h"
 #include "v8/include/v8-forward.h"
 
 namespace pdfium {
@@ -79,8 +79,7 @@
 struct FXJSE_CLASS_DESCRIPTOR {
   const char* tag;  // `pdfium::fxjse::kClassTag` always.
   const char* name;
-  UNOWNED_PTR_EXCLUSION const FXJSE_FUNCTION_DESCRIPTOR* methods;
-  int32_t methNum;
+  pdfium::span<const FXJSE_FUNCTION_DESCRIPTOR> methods;
   FXJSE_PropTypeGetter dynPropTypeGetter;
   FXJSE_PropGetter dynPropGetter;
   FXJSE_PropSetter dynPropSetter;
