From 53190d99102c9b3a5e0a8751e2f4f957d7736ccf Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Mon, 4 Dec 2017 15:42:15 +0000 Subject: Remove XFA isolate tracker We don't add anything to the tracker lists so we can remove the tracker. The only thing the Initialize and Finialize methods are doing now is to trigger a v8::V8::Dispose which should happen automatically at exit anyway. Change-Id: I1f783ae5a1df3df63fb067ab30310791b6c44929 Reviewed-on: https://pdfium-review.googlesource.com/20192 Reviewed-by: Ryan Harrison Commit-Queue: dsinclair --- BUILD.gn | 1 - fpdfsdk/fpdfview.cpp | 2 -- fxjs/cfxjse_isolatetracker.cpp | 42 ------------------------------------------ fxjs/cfxjse_isolatetracker.h | 20 -------------------- fxjs/cfxjse_runtimedata.cpp | 38 -------------------------------------- fxjs/fxjse.h | 3 --- 6 files changed, 106 deletions(-) delete mode 100644 fxjs/cfxjse_isolatetracker.cpp diff --git a/BUILD.gn b/BUILD.gn index 6fb2bd8885..db82f1b6e2 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1297,7 +1297,6 @@ static_library("fxjs") { "fxjs/cfxjse_engine.h", "fxjs/cfxjse_formcalc_context.cpp", "fxjs/cfxjse_formcalc_context.h", - "fxjs/cfxjse_isolatetracker.cpp", "fxjs/cfxjse_isolatetracker.h", "fxjs/cfxjse_resolveprocessor.cpp", "fxjs/cfxjse_resolveprocessor.h", diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp index 2736b8dd6a..ad669614bb 100644 --- a/fpdfsdk/fpdfview.cpp +++ b/fpdfsdk/fpdfview.cpp @@ -477,7 +477,6 @@ FPDF_InitLibraryWithConfig(const FPDF_LIBRARY_CONFIG* cfg) { pModuleMgr->Init(); #ifdef PDF_ENABLE_XFA - FXJSE_Initialize(); BC_Library_Init(); #endif // PDF_ENABLE_XFA if (cfg && cfg->version >= 2) @@ -492,7 +491,6 @@ FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyLibrary() { #ifdef PDF_ENABLE_XFA BC_Library_Destroy(); - FXJSE_Finalize(); #endif // PDF_ENABLE_XFA CPDF_ModuleMgr::Destroy(); diff --git a/fxjs/cfxjse_isolatetracker.cpp b/fxjs/cfxjse_isolatetracker.cpp deleted file mode 100644 index 0dd4158714..0000000000 --- a/fxjs/cfxjse_isolatetracker.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "fxjs/cfxjse_isolatetracker.h" - -#include -#include - -CFXJSE_IsolateTracker::CFXJSE_IsolateTracker() {} - -CFXJSE_IsolateTracker::~CFXJSE_IsolateTracker() {} - -void CFXJSE_IsolateTracker::Append( - v8::Isolate* pIsolate, - std::unique_ptr alloc) { - m_OwnedIsolates.push_back(pIsolate); - m_AllocatorMap[pIsolate] = std::move(alloc); -} - -void CFXJSE_IsolateTracker::Remove( - v8::Isolate* pIsolate, - CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback) { - auto it = std::find(m_OwnedIsolates.begin(), m_OwnedIsolates.end(), pIsolate); - bool bFound = it != m_OwnedIsolates.end(); - if (bFound) - m_OwnedIsolates.erase(it); - lpfnDisposeCallback(pIsolate, bFound); - - m_AllocatorMap.erase(pIsolate); -} - -void CFXJSE_IsolateTracker::RemoveAll( - CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback) { - for (v8::Isolate* pIsolate : m_OwnedIsolates) - lpfnDisposeCallback(pIsolate, true); - - m_OwnedIsolates.clear(); - m_AllocatorMap.clear(); -} diff --git a/fxjs/cfxjse_isolatetracker.h b/fxjs/cfxjse_isolatetracker.h index 5340d9b5c0..2bb16ca7ba 100644 --- a/fxjs/cfxjse_isolatetracker.h +++ b/fxjs/cfxjse_isolatetracker.h @@ -52,24 +52,4 @@ class CFXJSE_ScopeUtil_IsolateHandleRootContext { v8::Context::Scope m_cscope; }; -class CFXJSE_IsolateTracker { - public: - typedef void (*DisposeCallback)(v8::Isolate*, bool bOwnedIsolate); - - CFXJSE_IsolateTracker(); - ~CFXJSE_IsolateTracker(); - - void Append(v8::Isolate* pIsolate, - std::unique_ptr alloc); - void Remove(v8::Isolate* pIsolate, DisposeCallback lpfnDisposeCallback); - void RemoveAll(DisposeCallback lpfnDisposeCallback); - - static CFXJSE_IsolateTracker* g_pInstance; - - protected: - std::vector m_OwnedIsolates; - std::map> - m_AllocatorMap; -}; - #endif // FXJS_CFXJSE_ISOLATETRACKER_H_ diff --git a/fxjs/cfxjse_runtimedata.cpp b/fxjs/cfxjse_runtimedata.cpp index be6938e762..b5c2de9297 100644 --- a/fxjs/cfxjse_runtimedata.cpp +++ b/fxjs/cfxjse_runtimedata.cpp @@ -11,42 +11,6 @@ #include "fxjs/cfxjse_isolatetracker.h" #include "fxjs/fxjs_v8.h" -namespace { - -void Runtime_DisposeCallback(v8::Isolate* pIsolate, bool bOwned) { - if (FXJS_PerIsolateData* pData = FXJS_PerIsolateData::Get(pIsolate)) - delete pData; - if (bOwned) - pIsolate->Dispose(); -} - -void KillV8() { - v8::V8::Dispose(); -} - -} // namespace - -void FXJSE_Initialize() { - if (!CFXJSE_IsolateTracker::g_pInstance) - CFXJSE_IsolateTracker::g_pInstance = new CFXJSE_IsolateTracker; - - static bool bV8Initialized = false; - if (bV8Initialized) - return; - - bV8Initialized = true; - atexit(KillV8); -} - -void FXJSE_Finalize() { - if (!CFXJSE_IsolateTracker::g_pInstance) - return; - - CFXJSE_IsolateTracker::g_pInstance->RemoveAll(Runtime_DisposeCallback); - delete CFXJSE_IsolateTracker::g_pInstance; - CFXJSE_IsolateTracker::g_pInstance = nullptr; -} - CFXJSE_RuntimeData::CFXJSE_RuntimeData(v8::Isolate* pIsolate) : m_pIsolate(pIsolate) {} @@ -84,5 +48,3 @@ CFXJSE_RuntimeData* CFXJSE_RuntimeData::Get(v8::Isolate* pIsolate) { pData->m_pFXJSERuntimeData = CFXJSE_RuntimeData::Create(pIsolate); return pData->m_pFXJSERuntimeData.get(); } - -CFXJSE_IsolateTracker* CFXJSE_IsolateTracker::g_pInstance = nullptr; diff --git a/fxjs/fxjse.h b/fxjs/fxjse.h index 9a38d20ddf..df1dff6243 100644 --- a/fxjs/fxjse.h +++ b/fxjs/fxjse.h @@ -61,9 +61,6 @@ struct FXJSE_CLASS_DESCRIPTOR { FXJSE_FuncCallback dynMethodCall; }; -void FXJSE_Initialize(); -void FXJSE_Finalize(); - void FXJSE_ThrowMessage(const ByteStringView& utf8Message); #endif // FXJS_FXJSE_H_ -- cgit v1.2.3