diff --git a/fpdfsdk/include/jsapi/fxjs_v8.h b/fpdfsdk/include/jsapi/fxjs_v8.h
index 289a73e..f174b21 100644
--- a/fpdfsdk/include/jsapi/fxjs_v8.h
+++ b/fpdfsdk/include/jsapi/fxjs_v8.h
@@ -57,9 +57,7 @@
   void Free(void* data, size_t length) override;
 };
 
-using FXJS_CONSTRUCTOR = void (*)(IFXJS_Context* cc,
-                                  v8::Local<v8::Object> obj,
-                                  v8::Local<v8::Object> global);
+using FXJS_CONSTRUCTOR = void (*)(IFXJS_Context* cc, v8::Local<v8::Object> obj);
 using FXJS_DESTRUCTOR = void (*)(v8::Local<v8::Object> obj);
 
 // Call before making FXJS_PrepareIsolate call.
diff --git a/fpdfsdk/src/javascript/JS_Define.h b/fpdfsdk/src/javascript/JS_Define.h
index 3881951..a3d98d5 100644
--- a/fpdfsdk/src/javascript/JS_Define.h
+++ b/fpdfsdk/src/javascript/JS_Define.h
@@ -246,20 +246,18 @@
     DefineMethods(pIsolate);                                                \
   }
 
-#define DECLARE_JS_CLASS_RICH_PART()                                      \
-  static void JSConstructor(IFXJS_Context* cc, v8::Local<v8::Object> obj, \
-                            v8::Local<v8::Object> global);                \
-  static void JSDestructor(v8::Local<v8::Object> obj);                    \
-  static void DefineProps(v8::Isolate* pIsoalte);                         \
-  static void DefineMethods(v8::Isolate* pIsoalte);                       \
-  static JSPropertySpec JS_Class_Properties[];                            \
+#define DECLARE_JS_CLASS_RICH_PART()                                       \
+  static void JSConstructor(IFXJS_Context* cc, v8::Local<v8::Object> obj); \
+  static void JSDestructor(v8::Local<v8::Object> obj);                     \
+  static void DefineProps(v8::Isolate* pIsoalte);                          \
+  static void DefineMethods(v8::Isolate* pIsoalte);                        \
+  static JSPropertySpec JS_Class_Properties[];                             \
   static JSMethodSpec JS_Class_Methods[];
 
 #define IMPLEMENT_JS_CLASS_RICH_PART(js_class_name, class_alternate,          \
                                      class_name)                              \
   void js_class_name::JSConstructor(IFXJS_Context* cc,                        \
-                                    v8::Local<v8::Object> obj,                \
-                                    v8::Local<v8::Object> global) {           \
+                                    v8::Local<v8::Object> obj) {              \
     CJS_Object* pObj = new js_class_name(obj);                                \
     pObj->SetEmbedObject(new class_alternate(pObj));                          \
     FXJS_SetPrivate(nullptr, obj, (void*)pObj);                               \
diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp
index 4715d2a..ca9deb7 100644
--- a/fpdfsdk/src/jsapi/fxjs_v8.cpp
+++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp
@@ -308,11 +308,7 @@
         pObjDef->m_pConstructor(context, v8Context->Global()
                                              ->GetPrototype()
                                              ->ToObject(v8Context)
-                                             .ToLocalChecked(),
-                                v8Context->Global()
-                                    ->GetPrototype()
-                                    ->ToObject(v8Context)
-                                    .ToLocalChecked());
+                                             .ToLocalChecked());
     } else if (pObjDef->m_ObjType == FXJSOBJTYPE_STATIC) {
       v8::Local<v8::Object> obj = FXJS_NewFxDynamicObj(pIsolate, context, i);
       v8Context->Global()->Set(v8Context, m_ObjName, obj).FromJust();
@@ -416,11 +412,8 @@
     return v8::Local<v8::Object>();
 
   obj->SetAlignedPointerInInternalField(0, new CFXJS_PrivateData(nObjDefnID));
-  if (pObjDef->m_pConstructor) {
-    pObjDef->m_pConstructor(
-        pJSContext, obj,
-        context->Global()->GetPrototype()->ToObject(context).ToLocalChecked());
-  }
+  if (pObjDef->m_pConstructor)
+    pObjDef->m_pConstructor(pJSContext, obj);
 
   return obj;
 }
