示例#1
0
void JS_SetPrivate(IJS_Runtime* pJSRuntime, v8::Handle<v8::Object> pObj, void* p)
{
	if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return;
	CJS_PrivateData* pPrivateData  = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
	if(!pPrivateData) return;
	pPrivateData->pPrivate = p;
}
 inline void Wrap(v8::Handle<v8::Object> handle) {
   assert(persistent().IsEmpty());
   assert(handle->InternalFieldCount() > 0);
   handle->SetAlignedPointerInInternalField(0, this);
   persistent().Reset(v8::Isolate::GetCurrent(), handle);
   MakeWeak();
 }
示例#3
0
bool isWrappedNPObject(v8::Handle<v8::Object> object)
{
    if (object->InternalFieldCount() == npObjectInternalFieldCount) {
        const WrapperTypeInfo* typeInfo = static_cast<const WrapperTypeInfo*>(object->GetAlignedPointerFromInternalField(v8DOMWrapperTypeIndex));
        return typeInfo == npObjectTypeInfo();
    }
    return false;
}
示例#4
0
int	JS_GetObjDefnID(v8::Handle<v8::Object> pObj)
{
	if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return -1;
	CJS_PrivateData* pPrivateData = (CJS_PrivateData*)pObj->GetAlignedPointerFromInternalField(0);
	if(pPrivateData)
		return pPrivateData->ObjDefID;
	return -1;
}
static bool globalObjectPrototypeIsDOMWindow(v8::Handle<v8::Object> objectPrototype)
{
#if ENABLE(SHARED_WORKERS)
    // We can identify what type of context the global object is wrapping by looking at the
    // internal field count of its prototype. This assumes WorkerContexts and DOMWindows have different numbers
    // of internal fields, so a COMPILE_ASSERT is included to warn if this ever changes. DOMWindow has
    // traditionally had far more internal fields than any other class.
    COMPILE_ASSERT(V8DOMWindow::internalFieldCount != V8WorkerContext::internalFieldCount && V8DOMWindow::internalFieldCount != V8SharedWorkerContext::internalFieldCount,
        DOMWindowAndWorkerContextHaveUnequalFieldCounts);
#endif
    return objectPrototype->InternalFieldCount() == V8DOMWindow::internalFieldCount;
}
示例#6
0
void JS_FreePrivate(v8::Handle<v8::Object> pObj)
{
	if(pObj.IsEmpty() || !pObj->InternalFieldCount()) return;
	JS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0));
	pObj->SetAlignedPointerInInternalField(0, NULL);
}