Index: fpdfsdk/src/jsapi/fxjs_v8.cpp |
diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp |
index c55c092d1774bceae50fdab83774e7bc1c9728bf..a8faae275c16572bf267c57ecd0bfd11963de7ad 100644 |
--- a/fpdfsdk/src/jsapi/fxjs_v8.cpp |
+++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp |
@@ -265,9 +265,8 @@ void JS_InitialRuntime(IJS_Runtime* pJSRuntime,IFXJS_Runtime* pFXRuntime, IFXJS_ |
CJS_PrivateData* pPrivateData = new CJS_PrivateData; |
pPrivateData->ObjDefID = i; |
- v8::Handle<v8::External> ptr = v8::External::New(isolate, pPrivateData); |
- v8Context->Global()->GetPrototype()->ToObject()->SetInternalField(0, ptr); |
+ v8Context->Global()->GetPrototype()->ToObject()->SetAlignedPointerInInternalField(0, pPrivateData); |
if(pObjDef->m_pConstructor) |
pObjDef->m_pConstructor(context, v8Context->Global()->GetPrototype()->ToObject(), v8Context->Global()->GetPrototype()->ToObject()); |
@@ -382,8 +381,7 @@ v8::Handle<v8::Object> JS_NewFxDynamicObj(IJS_Runtime* pJSRuntime, IFXJS_Context |
CJS_PrivateData* pPrivateData = new CJS_PrivateData; |
pPrivateData->ObjDefID = nObjDefnID; |
- v8::Handle<v8::External> ptr = v8::External::New(isolate, pPrivateData); |
- obj->SetInternalField(0, ptr); |
+ obj->SetAlignedPointerInInternalField(0, pPrivateData); |
if(pObjDef->m_pConstructor) |
pObjDef->m_pConstructor(pJSContext, obj, context->Global()->GetPrototype()->ToObject()); |
@@ -424,8 +422,7 @@ v8::Handle<v8::Object> JS_GetThisObj(IJS_Runtime * pJSRuntime) |
int JS_GetObjDefnID(v8::Handle<v8::Object> pObj) |
{ |
if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return -1; |
- v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(pObj->GetInternalField(0)); |
- CJS_PrivateData* pPrivateData = (CJS_PrivateData*)field->Value(); |
+ CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
if(pPrivateData) |
return pPrivateData->ObjDefID; |
return -1; |
@@ -508,8 +505,7 @@ void* JS_GetPrivate(v8::Handle<v8::Object> pObj) |
void JS_SetPrivate(IJS_Runtime* pJSRuntime, v8::Handle<v8::Object> pObj, void* p) |
{ |
if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return; |
- v8::Handle<v8::External> ptr = v8::Handle<v8::External>::Cast(pObj->GetInternalField(0)); |
- CJS_PrivateData* pPrivateData = (CJS_PrivateData*)ptr->Value(); |
+ CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
if(!pPrivateData) return; |
pPrivateData->pPrivate = p; |
} |
@@ -517,19 +513,16 @@ void JS_SetPrivate(IJS_Runtime* pJSRuntime, v8::Handle<v8::Object> pObj, void* p |
void* JS_GetPrivate(IJS_Runtime* pJSRuntime, v8::Handle<v8::Object> pObj) |
{ |
if(pObj.IsEmpty()) return NULL; |
- v8::Local<v8::Value> value; |
+ CJS_PrivateData* pPrivateData = NULL; |
if(pObj->InternalFieldCount()) |
- value = pObj->GetInternalField(0); |
+ pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
else |
{ |
//It could be a global proxy object. |
v8::Local<v8::Value> v = pObj->GetPrototype(); |
if(v->IsObject()) |
- value = v->ToObject()->GetInternalField(0); |
+ pPrivateData = (CJS_PrivateData*)v->ToObject()->GetAlignedPointerFromInternalField(0); |
} |
- if(value.IsEmpty() || value->IsUndefined()) return NULL; |
- v8::Handle<v8::External> ptr = v8::Handle<v8::External>::Cast(value); |
- CJS_PrivateData* pPrivateData = (CJS_PrivateData*)ptr->Value(); |
if(!pPrivateData) return NULL; |
return pPrivateData->pPrivate; |
} |
@@ -537,11 +530,8 @@ void* JS_GetPrivate(IJS_Runtime* pJSRuntime, v8::Handle<v8::Object> pObj) |
void JS_FreePrivate(v8::Handle<v8::Object> pObj) |
{ |
if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return; |
- v8::Handle<v8::External> ptr = v8::Handle<v8::External>::Cast(pObj->GetInternalField(0)); |
- delete (CJS_PrivateData*)ptr->Value(); |
- v8::Local<v8::Context> context = pObj->CreationContext(); |
- |
- pObj->SetInternalField(0, v8::External::New(context->GetIsolate(), NULL)); |
+ delete (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0); |
+ pObj->SetAlignedPointerInInternalField(0, NULL); |
} |