From 70bc04b16646c92f221c5aa56831b01d6ec7c1ca Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 22 Sep 2015 15:49:14 -0700 Subject: Merge to master: contention over isolate data slots Work on this was first performed on the XFA branch, since it has additional requirements (FXJSE layer) that needed to be accomodated by the solution. (cherry picked from commit ed7b2b50aa1744e0bc5a60bef12c61fa91d863b7) Original Review URL: https://codereview.chromium.org/1351173002 . R=thestig@chromium.org Review URL: https://codereview.chromium.org/1354593004 . --- fpdfsdk/include/jsapi/fxjs_v8.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'fpdfsdk/include') diff --git a/fpdfsdk/include/jsapi/fxjs_v8.h b/fpdfsdk/include/jsapi/fxjs_v8.h index a1541593a1..eb810c0695 100644 --- a/fpdfsdk/include/jsapi/fxjs_v8.h +++ b/fpdfsdk/include/jsapi/fxjs_v8.h @@ -11,7 +11,12 @@ #define FPDFSDK_INCLUDE_JSAPI_FXJS_V8_H_ #include -#include "../../../core/include/fxcrt/fx_string.h" // For CFX_WideString +#include "../../../core/include/fxcrt/fx_basic.h" + +// FXJS_V8 places no interpretation on these two classes; it merely +// passes them on to the caller-provided FXJS_CONSTRUCTORs. +class IFXJS_Context; +class IFXJS_Runtime; enum FXJSOBJTYPE { FXJS_DYNAMIC = 0, @@ -24,6 +29,18 @@ struct FXJSErr { unsigned linnum; }; +class FXJS_PerIsolateData { + public: + static void SetUp(v8::Isolate* pIsolate); + static FXJS_PerIsolateData* Get(v8::Isolate* pIsolate); + + CFX_PtrArray m_ObjectDefnArray; + IFXJS_Runtime* m_pFXJSRuntime; + + protected: + FXJS_PerIsolateData() : m_pFXJSRuntime(nullptr) {} +}; + extern const wchar_t kFXJSValueNameString[]; extern const wchar_t kFXJSValueNameNumber[]; extern const wchar_t kFXJSValueNameBoolean[]; @@ -33,10 +50,6 @@ extern const wchar_t kFXJSValueNameFxobj[]; extern const wchar_t kFXJSValueNameNull[]; extern const wchar_t kFXJSValueNameUndefined[]; -// FXJS_V8 places no interpretation on these two classes; it merely -// passes them on to the caller-provided FXJS_CONSTRUCTORs. -class IFXJS_Context; -class IFXJS_Runtime; class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { void* Allocate(size_t length) override; -- cgit v1.2.3