diff --git a/fxjs/xfa/cfxjse_isolatetracker.cpp b/fxjs/xfa/cfxjse_isolatetracker.cpp
index e9e92d4..11274a0 100644
--- a/fxjs/xfa/cfxjse_isolatetracker.cpp
+++ b/fxjs/xfa/cfxjse_isolatetracker.cpp
@@ -12,13 +12,18 @@
 
 CFXJSE_ScopeUtil_IsolateHandle::CFXJSE_ScopeUtil_IsolateHandle(
     v8::Isolate* pIsolate)
-    : m_iscope(pIsolate), m_hscope(pIsolate) {}
+    : isolate_scope_(pIsolate), handle_scope_(pIsolate) {}
 
 CFXJSE_ScopeUtil_IsolateHandle::~CFXJSE_ScopeUtil_IsolateHandle() = default;
 
+CFXJSE_ScopeUtil_Context::CFXJSE_ScopeUtil_Context(CFXJSE_Context* pContext)
+    : context_scope_(pContext->GetContext()) {}
+
+CFXJSE_ScopeUtil_Context::~CFXJSE_ScopeUtil_Context() = default;
+
 CFXJSE_ScopeUtil_IsolateHandleContext::CFXJSE_ScopeUtil_IsolateHandleContext(
     CFXJSE_Context* pContext)
-    : m_parent(pContext->GetIsolate()), m_cscope(pContext->GetContext()) {}
+    : isolate_handle_(pContext->GetIsolate()), context_(pContext) {}
 
 CFXJSE_ScopeUtil_IsolateHandleContext::CFXJSE_ScopeUtil_IsolateHandleContext(
     CFXJSE_Engine* pEngine)
@@ -27,12 +32,17 @@
 CFXJSE_ScopeUtil_IsolateHandleContext::
     ~CFXJSE_ScopeUtil_IsolateHandleContext() = default;
 
-CFXJSE_ScopeUtil_IsolateHandleRootContext::
-    CFXJSE_ScopeUtil_IsolateHandleRootContext(v8::Isolate* pIsolate)
-    : CFXJSE_ScopeUtil_IsolateHandle(pIsolate),
-      m_cscope(v8::Local<v8::Context>::New(
+CFXJSE_ScopeUtil_RootContext::CFXJSE_ScopeUtil_RootContext(
+    v8::Isolate* pIsolate)
+    : context_scope_(v8::Local<v8::Context>::New(
           pIsolate,
           CFXJSE_RuntimeData::Get(pIsolate)->m_hRootContext)) {}
 
+CFXJSE_ScopeUtil_RootContext::~CFXJSE_ScopeUtil_RootContext() = default;
+
+CFXJSE_ScopeUtil_IsolateHandleRootContext::
+    CFXJSE_ScopeUtil_IsolateHandleRootContext(v8::Isolate* pIsolate)
+    : isolate_handle_(pIsolate), root_context_(pIsolate) {}
+
 CFXJSE_ScopeUtil_IsolateHandleRootContext::
     ~CFXJSE_ScopeUtil_IsolateHandleRootContext() = default;
diff --git a/fxjs/xfa/cfxjse_isolatetracker.h b/fxjs/xfa/cfxjse_isolatetracker.h
index 32623b7..d3105c8 100644
--- a/fxjs/xfa/cfxjse_isolatetracker.h
+++ b/fxjs/xfa/cfxjse_isolatetracker.h
@@ -25,8 +25,22 @@
   void* operator new(size_t size) = delete;
   void operator delete(void*, size_t) = delete;
 
-  v8::Isolate::Scope m_iscope;
-  v8::HandleScope m_hscope;
+  v8::Isolate::Scope isolate_scope_;
+  v8::HandleScope handle_scope_;
+};
+
+class CFXJSE_ScopeUtil_Context {
+ public:
+  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 {
@@ -43,12 +57,26 @@
   void* operator new(size_t size) = delete;
   void operator delete(void*, size_t) = delete;
 
-  CFXJSE_ScopeUtil_IsolateHandle m_parent;
-  v8::Context::Scope m_cscope;
+  CFXJSE_ScopeUtil_IsolateHandle isolate_handle_;
+  CFXJSE_ScopeUtil_Context context_;
 };
 
-class CFXJSE_ScopeUtil_IsolateHandleRootContext final
-    : public CFXJSE_ScopeUtil_IsolateHandle {
+class CFXJSE_ScopeUtil_RootContext {
+ public:
+  explicit CFXJSE_ScopeUtil_RootContext(v8::Isolate* pIsolate);
+  CFXJSE_ScopeUtil_RootContext(const CFXJSE_ScopeUtil_RootContext&) = delete;
+  CFXJSE_ScopeUtil_RootContext& operator=(const CFXJSE_ScopeUtil_RootContext&) =
+      delete;
+  ~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:
   explicit CFXJSE_ScopeUtil_IsolateHandleRootContext(v8::Isolate* pIsolate);
   CFXJSE_ScopeUtil_IsolateHandleRootContext(
@@ -61,7 +89,8 @@
   void* operator new(size_t size) = delete;
   void operator delete(void*, size_t) = delete;
 
-  v8::Context::Scope m_cscope;
+  CFXJSE_ScopeUtil_IsolateHandle isolate_handle_;
+  CFXJSE_ScopeUtil_RootContext root_context_;
 };
 
 #endif  // FXJS_XFA_CFXJSE_ISOLATETRACKER_H_
