/* Unref() marks an object as detached from the event loop. This is its * default state. When an object with a "weak" reference changes from * attached to detached state it will be freed. Be careful not to access * the object after making this call as it might be gone! * (A "weak reference" means an object that only has a * persistant handle.) * * DO NOT CALL THIS FROM DESTRUCTOR */ virtual void Unref() { assert(!persistent().IsEmpty()); assert(!persistent().IsWeak()); assert(refs_ > 0); if (--refs_ == 0) MakeWeak(); }
virtual ~ObjectWrap() { if (persistent().IsEmpty()) return; assert(persistent().IsNearDeath()); persistent().ClearWeak(); persistent().Dispose(); }
void JavaObject::wrap(Isolate* isolate, Local<Object> jsObject) { ASSERT(persistent().IsEmpty()); ASSERT(jsObject->InternalFieldCount() > 0); jsObject->SetAlignedPointerInInternalField(0, this); persistent().Reset(isolate, jsObject); }
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(); }
void JavaObject::MakeJSWeak() { // So we've stopped the JS object from being marked fully weak for GC. // Now, as an ugly hack, we mark this JS object as weak in a different way so taht V8 can tell us // when the JS object is ready to be GCed (the first step in it's death) // but this time, we say call us back as a finalizer so we can resurrect the // object (save it from really being GCd by V8) and move it's Java object twin // to a weak reference in the JVM. (where we can track when that gets GC'd by the JVM to call back and kill this) persistent().SetWeak(this, DetachCallback, v8::WeakCallbackType::kFinalizer); // MUST BE kFinalizer or our object cannot be resurrected! persistent().MarkIndependent(); }
JavaObject::~JavaObject() { UPDATE_STATS(-1, 0); // remove one from total counter // If we have anything wrapped, get rid of it in JNI/JVM if (javaObject_ || refTableKey_ != 0) { DeleteJavaRef(); } // Make sure we wipe the persistent, in case we called delete on the proxy and didn't get deleted as a result of the NativeObject WeakCallback if (persistent().IsEmpty()) return; persistent().Reset(); }
JavaObject::~JavaObject() { UPDATE_STATS(-1, isDetached() ? -1 : 0); if (javaObject_ || refTableKey_ > 0) { deleteGlobalRef(); } if (persistent().IsEmpty()) return; assert(persistent().IsNearDeath()); persistent().ClearWeak(); persistent().Reset(); }
AAFRESULT STDMETHODCALLTYPE ImplAAFTimecodeStream::GetSize (aafLength_t *pSize) { if (NULL == pSize) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; AAFRESULT result = AAFRESULT_SUCCESS; try { *pSize = _sourceStreamFilter->size(); } //catch (OMException& ome) //{ //} catch(...) { result = AAFRESULT_INTERNAL_ERROR; } return result; }
AAFRESULT STDMETHODCALLTYPE ImplAAFTimecodeStream::Read (aafUInt32 bytes, aafDataBuffer_t buffer, aafUInt32 *bytesRead) { AAFRESULT result = AAFRESULT_SUCCESS; if (NULL == buffer || NULL == bytesRead) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; try { _sourceStreamFilter->read(buffer, bytes, *bytesRead); if (0 < bytes && 0 == *bytesRead) result = AAFRESULT_END_OF_DATA; } //catch (OMException& ome) //{ //} catch(...) { result = AAFRESULT_INTERNAL_ERROR; } return result; }
// Attaches the Java object to this native wrapper. // This wrapper will create a global reference to the // Java object and keep it from becoming collected by Dalvik // until it is detached or made weak (weakGlobalRef()). void JavaObject::attach(jobject javaObject) { ASSERT((javaObject && javaObject_ == NULL) || javaObject == NULL); UPDATE_STATS(0, -1); if (javaObject) { javaObject_ = javaObject; } // make strong ref to Java object in JVM newGlobalRef(); // So let's mark this JS object as independent and weak so V8 can tell us // when the JS object is ready to be GCed, which is first step in it's death persistent().SetWeak(this, DetachCallback); persistent().MarkIndependent(); }
int main() { double PixelHeight=(CyMax-CyMin)/iYmax; /* Minhas variáveis em memória */ unsigned char *vetorR = (unsigned char *)malloc(iXmax * iYmax * sizeof(char)); unsigned char *vetorG = (unsigned char *)malloc(iXmax * iYmax * sizeof(char)); unsigned char *vetorB = (unsigned char *)malloc(iXmax * iYmax * sizeof(char)); int inc = 0; void __attribute__((target(mic))) innerLoop(unsigned char *red, unsigned char *green, unsigned char *blue); #pragma offload target(mic) out(vetorR:length(iXmax * iYmax)) out(vetorG:length(iXmax * iYmax)) out(vetorB:length(iXmax * iYmax)) for(iY=0;iY<iYmax;iY++) { Cy=CyMin + iY*PixelHeight; if (fabs(Cy)< PixelHeight/2) Cy=0.0; /* Main antenna */ innerLoop(&vetorR[inc], &vetorG[inc], &vetorB[inc]); inc += iXmax; } /* write to the file */ persistent(vetorR, vetorG, vetorB); return 0; }
AAFRESULT STDMETHODCALLTYPE ImplAAFTimecodeStream::GetPosition (aafPosition_t *pOffset) { AAFRESULT result = AAFRESULT_SUCCESS; if (NULL == pOffset) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; try { OMUInt64 tmpOffset; tmpOffset = _sourceStreamFilter->position(); *pOffset = tmpOffset; } //catch (OMException& ome) //{ //} catch(...) { result = AAFRESULT_INTERNAL_ERROR; } return result; }
tERROR cTmProfile::InitTask(tTaskRequestState state) { // if( m_dad && m_dad->m_dad ) // m_request->wait_for_parent_inited(); cAutoCS locker(m_lock, true); if( m_remoteTask ) { m_request->m_flags |= REQUEST_FLAG_SAME_TASKID; } else if( !(m_request->m_flags & REQUEST_FLAG_RESTART_TASK) ) { m_timeStart = (tDWORD)cDateTime::now_utc(); m_statistics.init(m_nSerIdStatistics); m_stateFlags &= ~dfTaskRestarted; } else { m_request->m_flags |= REQUEST_FLAG_SAME_TASKID; m_stateFlags |= dfTaskRestarted; } if( m_dad && !((m_request->m_flags & REQUEST_FLAG_SAME_TASKID) && m_nRuntimeId != TASKID_UNK) ) m_nRuntimeId = m_tm->GetUniqueId(); m_request->set_inited(); m_lastErr = errOK; m_timeFinish = -1; m_client = !persistent() ? m_request->m_client : NULL; m_dieWithClient = !!(m_request->m_flags & OPEN_TASK_MODE_CLOSE_TASK_IF_OWNER_DIED); m_bImpersonated = cFALSE; if( (m_request->m_flags & REQUEST_FLAG_BY_SCHEDULE) || schedule().auto_mode() ) SaveScheduledRun(); tDWORD i, c = m_aReports.count(); if( !m_dad || !c ) return errOK; for(i = 0; i < c; ++i) { cTaskReportDsc& dsc = m_aReports[i]; tCHAR buff[MAX_PATH]; if( dsc.m_id.empty() || !dsc.m_id.compare("sys") ) pr_sprintf(buff, sizeof(buff), "%04x_%S.rpt", m_nRuntimeId, m_sName.data()); else pr_sprintf(buff, sizeof(buff), "%04x_%S_%S.rpt", m_nRuntimeId, m_sName.data(), dsc.m_id.data()); dsc.m_name = buff; } return errOK; }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::SetSampleIndexPosition (aafPosition_t offset) { // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; OMUInt64 tmpOffset = offset; _indexData.setPosition(tmpOffset); return AAFRESULT_SUCCESS; }
//----------------------------------------------------------------------------- QList<QPersistentModelIndex> ctkCheckableComboBoxPrivate ::modelIndexesToPersistentIndexes(const QModelIndexList& indexes)const { QList<QPersistentModelIndex> res; foreach(const QModelIndex& index, indexes) { QPersistentModelIndex persistent(index); if (persistent.isValid()) { res << persistent; } }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::GetSampleIndexSize (aafLength_t *pSize) { if (NULL == pSize) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; *pSize = _indexData.size(); return AAFRESULT_SUCCESS; }
void JavaObject::detach() { // WAIT A SECOND V8!!! DON'T KILL MY OBJECT YET! THE JVM MAY STILL WANT IT! persistent().ClearWeak(); if (isDetached()) { return; } // V8 says we don't need the object on the JS side // Let's make the object weak in the JVM now... UPDATE_STATS(0, 1); weakGlobalRef(); }
void JavaObject::detach() { // WAIT A SECOND V8!!! DON'T KILL MY OBJECT YET! THE JVM MAY STILL WANT IT! persistent().ClearWeak(); // Make JS Strong Again! // if the JVM side is a weak reference or we have no object wrapped, don't do anything else if (isDetached()) { return; } // V8 says we don't need the object on the JS side // Let's make the object weak in the JVM now... MakeJavaWeak(); }
// Returns a global reference to the wrapped Java object. // If the object has become "detached" this will re-attach // it to ensure the Java object will not get collected. jobject JavaObject::getJavaObject() { if (useGlobalRefs) { ASSERT(javaObject_ != NULL); // We must always return a valid Java proxy reference. // Otherwise we risk crashing in the calling code. // If we are "detached" we will re-attach whenever the Java // proxy is requested. if (isDetached()) { attach(NULL); } return javaObject_; } else { if (isWeakRef_) { // Did JS side try to collect our object already? // OH SNAP, DON'T KILL OUR OBJECT YET JVM! // make reference strong again on Java side if we can... jobject javaObject = ReferenceTable::clearWeakReference(refTableKey_); UPDATE_STATS(0, -1); if (javaObject == NULL) { // SHIT! Java collected it. ummmm, not much we can do here. // Maybe we can... Nope. It's gone. Live with it. LOGE(TAG, "Java object reference has been invalidated."); } isWeakRef_ = false; // not weak on Java side anymore // tell V8 to let us know when it thinks the JS object can be collected again persistent().SetWeak(this, DetachCallback); persistent().MarkIndependent(); return javaObject; } return ReferenceTable::getReference(refTableKey_); } }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::GetSampleIndexPosition (aafPosition_t *pOffset) { if (NULL == pOffset) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; OMUInt64 tmpOffset; tmpOffset = _indexData.position(); *pOffset = tmpOffset; return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::SetEssenceElementKey( aafUID_constref key) { // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; if (!_mediaData.hasEssenceElementKey()) return AAFRESULT_OPERATION_NOT_PERMITTED; OMKLVKey klvKey; convert( klvKey, *reinterpret_cast<const OMUniqueObjectIdentification*>(&key) ); _mediaData.setEssenceElementKey(klvKey); return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::GetEssenceElementKey( aafUID_t * pEssenceElementKey) { if (NULL == pEssenceElementKey) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; if (!_mediaData.hasEssenceElementKey()) return AAFRESULT_OPERATION_NOT_PERMITTED; convert( *reinterpret_cast<OMUniqueObjectIdentification*>(pEssenceElementKey), _mediaData.essenceElementKey() ); return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::ReadSampleIndex (aafUInt32 bytes, aafDataBuffer_t buffer, aafUInt32 *bytesRead) { if (NULL == buffer || NULL == bytesRead) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; _indexData.read(buffer, bytes, *bytesRead); if (0 < bytes && 0 == *bytesRead) return AAFRESULT_END_OF_DATA; return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFEssenceData::Write (aafUInt32 bytes, aafDataBuffer_t buffer, aafUInt32 *bytesWritten) { if (NULL == buffer || NULL == bytesWritten) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; _mediaData.write(buffer, bytes, *bytesWritten); if (0 < bytes && 0 == *bytesWritten) return AAFRESULT_CONTAINERWRITE; return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::SetPosition( aafPosition_t offset ) { if( !isInitialized() ) { return AAFRESULT_NOT_INITIALIZED; } if( !persistent() ) { return AAFRESULT_OBJECT_NOT_PERSISTENT; } OMUInt64 omPosition = offset; _chunkDataFilter->setPosition( omPosition ); return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::Read ( aafUInt32 bytes, aafDataBuffer_t buffer, aafUInt32 * pBytesRead) { if (NULL == buffer || NULL == pBytesRead) return AAFRESULT_NULL_PARAM; // Cannot access the data property if it is NOT associated with a file. if (!persistent()) return AAFRESULT_OBJECT_NOT_PERSISTENT; _chunkDataFilter->read(buffer, bytes, *pBytesRead); if (0 < bytes && 0 == *pBytesRead) return AAFRESULT_END_OF_DATA; return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::GetPosition( aafPosition_t* pOffset ) { if( pOffset == 0 ) { return AAFRESULT_NULL_PARAM; } if( !isInitialized() ) { return AAFRESULT_NOT_INITIALIZED; } if( !persistent() ) { return AAFRESULT_OBJECT_NOT_PERSISTENT; } OMUInt64 omPosition = _chunkDataFilter->position(); *pOffset = omPosition; return AAFRESULT_SUCCESS; }
AAFRESULT STDMETHODCALLTYPE ImplAAFRIFFChunk::GetLength ( aafLength_t * pLength) { if( pLength == NULL ) { return AAFRESULT_NULL_PARAM; } if( !isInitialized() ) { return AAFRESULT_NOT_INITIALIZED; } if( !persistent() ) { return AAFRESULT_OBJECT_NOT_PERSISTENT; } OMUInt64 omSize = _chunkDataFilter->size(); *pLength = omSize; return AAFRESULT_SUCCESS; }
inline void MakeWeak(void) { persistent().MakeWeak(this, WeakCallback); persistent().MarkIndependent(); }
/* Ref() marks the object as being attached to an event loop. * Refed objects will not be garbage collected, even if * all references are lost. */ virtual void Ref() { assert(!persistent().IsEmpty()); persistent().ClearWeak(); refs_++; }