Lines Matching refs:thread
42 static JSHandle<JSTaggedValue> CreateFinalizationRegistry(JSThread *thread)
44 auto vm = thread->GetEcmaVM();
51 auto ecmaRuntimeCallInfo = TestHelper::CreateEcmaRuntimeCallInfo(thread, JSTaggedValue(*finaRegFunc), 6);
56 auto prev = TestHelper::SetupFrame(thread, ecmaRuntimeCallInfo);
59 JSHandle<JSTaggedValue> finalizationRegistryHandle(thread, finalizationRegistry);
60 TestHelper::TearDownFrame(thread, prev);
76 auto vm = thread->GetEcmaVM();
83 JSHandle<JSTaggedValue> value(thread, JSTaggedValue(1));
84 JSObject::SetProperty(thread, target, key, value);
85 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100));
86 JSHandle<JSTaggedValue> unregisterToken(thread, JSTaggedValue::Undefined());
87 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
88 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
92 cellRecord->SetToWeakRefTarget(thread, target.GetTaggedValue());
93 cellRecord->SetHeldValue(thread, heldValue);
95 JSHandle<CellRecordVector> expectNoUnregister(thread, finaRegObj->GetNoUnregister());
96 expectNoUnregister = CellRecordVector::Append(thread, expectNoUnregister, cell);
98 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
99 JSHandle<JSTaggedValue> noUnregister(thread, finaRegObj->GetNoUnregister());
110 auto vm = thread->GetEcmaVM();
117 JSHandle<JSTaggedValue> value(thread, JSTaggedValue(2));
118 JSObject::SetProperty(thread, target, key, value);
119 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100));
121 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
122 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
126 cellRecord->SetToWeakRefTarget(thread, target.GetTaggedValue());
127 cellRecord->SetHeldValue(thread, heldValue);
129 JSHandle<CellRecordVector> array = JSHandle<CellRecordVector>(CellRecordVector::Create(thread));
130 array = CellRecordVector::Append(thread, array, cell);
132 JSHandle<LinkedHashMap> expectMaybeUnregister(thread, finaRegObj->GetMaybeUnregister());
133 expectMaybeUnregister = LinkedHashMap::SetWeakRef(thread, expectMaybeUnregister, unregisterToken, arrayValue);
135 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
136 JSHandle<JSTaggedValue> maybeUnregister(thread, finaRegObj->GetMaybeUnregister());
145 static void RegisterUnRegisterTestCommon(JSThread *thread, bool testUnRegister = false, bool addFinReg = false)
148 auto vm = thread->GetEcmaVM();
154 JSHandle<JSTaggedValue> target(thread, JSTaggedValue::Undefined());
156 [[maybe_unused]] EcmaHandleScope handleScope(thread);
159 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100)); // 100: tag value
161 JSHandle<JSTaggedValue>(thread, JSTaggedValue::Undefined());
162 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
163 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
166 cellRecord->SetToWeakRefTarget(thread, target.GetTaggedValue());
167 cellRecord->SetHeldValue(thread, heldValue);
169 JSHandle<CellRecordVector> noUnregister(thread, finaRegObj->GetNoUnregister());
170 noUnregister = CellRecordVector::Append(thread, noUnregister, cell);
171 finaRegObj->SetNoUnregister(thread, noUnregister);
172 JSFinalizationRegistry::AddFinRegLists(thread, finaRegObj);
176 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
178 JSFinalizationRegistry::Unregister(thread, target, finaRegObj);
184 if (!thread->HasPendingException()) {
185 job::MicroJobQueue::ExecutePendingJob(thread, thread->GetCurrentEcmaContext()->GetMicroJobQueue());
190 static void RegisterUnRegisterTestCommonTwoTarget(JSThread *thread, bool testUnRegister = false)
193 auto vm = thread->GetEcmaVM();
199 JSHandle<JSTaggedValue> target1(thread, JSTaggedValue::Undefined());
200 JSHandle<JSTaggedValue> target2(thread, JSTaggedValue::Undefined());
202 [[maybe_unused]] EcmaHandleScope handleScope(thread);
206 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100)); // 100: held value
208 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
209 JSHandle<JSFinalizationRegistry> finaRegObj1(thread, constructor.GetTaggedValue());
210 JSHandle<JSFinalizationRegistry> finaRegObj2(thread, constructor.GetTaggedValue());
212 JSFinalizationRegistry::Register(thread, target1, heldValue, unregisterToken, finaRegObj1);
214 JSFinalizationRegistry::Unregister(thread, target1, finaRegObj1);
216 JSFinalizationRegistry::Register(thread, target2, heldValue, unregisterToken, finaRegObj2);
220 if (!thread->HasPendingException()) {
221 job::MicroJobQueue::ExecutePendingJob(thread, thread->GetCurrentEcmaContext()->GetMicroJobQueue());
228 RegisterUnRegisterTestCommon(thread);
234 RegisterUnRegisterTestCommonTwoTarget(thread);
246 RegisterUnRegisterTestCommon(thread, true);
252 RegisterUnRegisterTestCommonTwoTarget(thread, true);
267 auto vm = thread->GetEcmaVM();
272 JSHandle<JSTaggedValue> target(thread, JSTaggedValue::Undefined());
273 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
274 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
275 JSHandle<JSTaggedValue> finRegLists(thread, JSTaggedValue::Undefined());
278 [[maybe_unused]] EcmaHandleScope handleScope(thread);
281 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100));
282 JSHandle<JSTaggedValue> unregisterToken(thread, JSTaggedValue::Undefined());
283 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
289 if (!thread->HasPendingException()) {
290 job::MicroJobQueue::ExecutePendingJob(thread, thread->GetCurrentEcmaContext()->GetMicroJobQueue());
296 JSFinalizationRegistry::CheckAndCall(thread);
312 auto vm = thread->GetEcmaVM();
317 JSHandle<JSTaggedValue> target(thread, JSTaggedValue::Undefined());
318 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
319 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
323 [[maybe_unused]] EcmaHandleScope handleScope(thread);
326 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100));
327 JSHandle<JSTaggedValue> unregisterToken(thread, JSTaggedValue::Undefined());
328 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
331 isCleared = JSFinalizationRegistry::CleanupFinalizationRegistry(thread, finaRegObj);
335 if (!thread->HasPendingException()) {
336 job::MicroJobQueue::ExecutePendingJob(thread, thread->GetCurrentEcmaContext()->GetMicroJobQueue());
340 isCleared = JSFinalizationRegistry::CleanupFinalizationRegistry(thread, finaRegObj);
353 auto vm = thread->GetEcmaVM();
360 JSHandle<JSTaggedValue> value(thread, JSTaggedValue(3));
361 JSObject::SetProperty(thread, target, key, value);
362 JSHandle<JSTaggedValue> heldValue(thread, JSTaggedValue(100));
363 JSHandle<JSTaggedValue> unregisterToken(thread, JSTaggedValue::Undefined());
364 JSHandle<JSTaggedValue> constructor = CreateFinalizationRegistry(thread);
365 JSHandle<JSFinalizationRegistry> finaRegObj(thread, constructor.GetTaggedValue());
367 JSFinalizationRegistry::Register(thread, target, heldValue, unregisterToken, finaRegObj);
372 JSFinalizationRegistry::CleanFinRegLists(thread, finaRegObj);
385 RegisterUnRegisterTestCommon(thread, false, true);