Lines Matching refs:node
45 void SetNext(Node *node)
47 next_ = node;
55 void SetPrev(Node *node)
57 prev_ = node;
95 // If isUsing is true, it means that the node is being used, otherwise it means that node is be freed
236 inline static NodeList<T> *NodeToNodeList(T *node)
238 uintptr_t ptr = ToUintPtr(node) - node->GetIndex() * sizeof(T);
247 T *node = &nodeList_[index_++];
248 node->Reset(thread, usedList_, value, true);
250 usedList_->SetPrev(node);
253 usedList_ = node;
254 return node;
259 T *node = freeList_;
260 if (node != nullptr) {
261 freeList_ = reinterpret_cast<T *>(node->GetNext());
262 node->Reset(thread, usedList_, value, true);
264 usedList_->SetPrev(node);
266 usedList_ = node;
268 return node;
271 inline void FreeNode(JSThread *thread, T *node)
273 if (node->GetPrev() != nullptr) {
274 node->GetPrev()->SetNext(node->GetNext());
276 if (node->GetNext() != nullptr) {
277 node->GetNext()->SetPrev(node->GetPrev());
279 if (node == usedList_) {
280 usedList_ = reinterpret_cast<T *>(node->GetNext());
282 node->Reset(thread, freeList_, JSTaggedValue::Undefined().GetRawData(), false);
283 if (node->IsWeak()) {
284 reinterpret_cast<WeakNode *>(node)->SetReference(nullptr);
285 reinterpret_cast<WeakNode *>(node)->SetFreeGlobalCallback(nullptr);
286 reinterpret_cast<WeakNode *>(node)->SetNativeFinalizeCallback(nullptr);
289 freeList_->SetPrev(node);
291 freeList_ = node;
383 T *freeList_ {nullptr}; // dispose node
384 T *usedList_ {nullptr}; // usage node
411 weakCurrent->IterateUsageGlobal([] (WeakNode *node) {
412 node->SetUsing(false);
413 node->SetObject(JSTaggedValue::Undefined().GetRawData());
414 node->CallFreeGlobalCallback();
415 node->CallNativeFinalizeCallback();
425 current->IterateUsageGlobal([] (T *node) {
426 node->SetUsing(false);
427 node->SetObject(JSTaggedValue::Undefined().GetRawData());
440 T *node = reinterpret_cast<T *>(nodeAddr);
441 if (!node->IsUsing()) {
444 if (node->IsWeak()) {
445 DisposeGlobalHandleInner(reinterpret_cast<WeakNode *>(node), &weakFreeListNodes_, &topWeakGlobalNodes_,
448 DisposeGlobalHandleInner(node, &freeListNodes_, &topGlobalNodes_, &lastGlobalNodes_);
458 WeakNode *node = reinterpret_cast<WeakNode *>(addr);
459 node->SetReference(ref);
460 node->SetFreeGlobalCallback(freeGlobalCallBack);
461 node->SetNativeFinalizeCallback(nativeFinalizeCallBack);
474 T *node = reinterpret_cast<T *>(addr);
475 return node->IsWeak();
509 inline void DisposeGlobalHandleInner(S *node, NodeList<S> **freeList, NodeList<S> **topNodes,
512 NodeList<S> *list = NodeList<S>::NodeToNodeList(node);
513 list->FreeNode(thread_, node);
515 // If NodeList has no usage node, then delete NodeList
548 S *node = (*storage)->NewNode(thread_, value);
549 ASSERT(node != nullptr);
550 return node->GetObjectAddress();
553 // use free_list node
554 S *node = (*freeList)->GetFreeNode(thread_, value);
555 ASSERT(node != nullptr);
565 return node->GetObjectAddress();
574 // use node in block finally
575 S *node = (*storage)->NewNode(thread_, value);
576 ASSERT(node != nullptr);
577 return node->GetObjectAddress();