@@ -1309,7 +1309,7 @@ namespace TTD
1309
1309
1310
1310
Js::JavascriptPromiseCapability* capabilities = InflatePromiseCapabilityInfo (&aInfo->Capabilities , ctx, inflator);
1311
1311
1312
- if (!inflator->IsPromiseInfoDefined <Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper>(aInfo->RemainingElementsWrapperId ))
1312
+ if (!inflator->IsPromiseInfoDefined <Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper>(aInfo->RemainingElementsWrapperId ))
1313
1313
{
1314
1314
Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper* remainingWrapper = ctx->GetLibrary ()->CreateRemainingElementsWrapper_TTD (ctx, aInfo->RemainingElementsValue );
1315
1315
inflator->AddInflatedPromiseInfo (aInfo->RemainingElementsWrapperId , remainingWrapper);
@@ -1376,6 +1376,95 @@ namespace TTD
1376
1376
1377
1377
// ////////////////
1378
1378
1379
+ // //
1380
+ // AllSettledResolveOrRejectElementFunctionObject Info
1381
+ Js::RecyclableObject* DoObjectInflation_SnapPromiseAllSettledResolveOrRejectElementFunctionInfo (const SnapObject* snpObject, InflateMap* inflator)
1382
+ {
1383
+ const SnapPromiseAllSettledResolveOrRejectElementFunctionInfo* aInfo = SnapObjectGetAddtlInfoAs<SnapPromiseAllSettledResolveOrRejectElementFunctionInfo*, SnapObjectType::SnapPromiseAllSettledResolveOrRejectElementFunctionObject>(snpObject);
1384
+ Js::ScriptContext* ctx = inflator->LookupScriptContext (snpObject->SnapType ->ScriptContextLogId );
1385
+
1386
+ Js::JavascriptPromiseCapability* capabilities = InflatePromiseCapabilityInfo (&aInfo->Capabilities , ctx, inflator);
1387
+
1388
+ if (!inflator->IsPromiseInfoDefined <Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper>(aInfo->RemainingElementsWrapperId ))
1389
+ {
1390
+ Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper* remainingWrapper = ctx->GetLibrary ()->CreateRemainingElementsWrapper_TTD (ctx, aInfo->RemainingElementsValue );
1391
+ inflator->AddInflatedPromiseInfo (aInfo->RemainingElementsWrapperId , remainingWrapper);
1392
+ }
1393
+ Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper* wrapper = inflator->LookupInflatedPromiseInfo <Js::JavascriptPromiseAllResolveElementFunctionRemainingElementsWrapper>(aInfo->RemainingElementsWrapperId );
1394
+
1395
+ if (!inflator->IsPromiseInfoDefined <Js::JavascriptPromiseResolveOrRejectFunctionAlreadyResolvedWrapper>(aInfo->AlreadyCalledWrapperId ))
1396
+ {
1397
+ Js::JavascriptPromiseResolveOrRejectFunctionAlreadyResolvedWrapper* alreadyCalledWrapper = ctx->GetLibrary ()->CreateAlreadyCalledWrapper_TTD (ctx, aInfo->AlreadyCalledValue );
1398
+ inflator->AddInflatedPromiseInfo (aInfo->AlreadyCalledWrapperId , alreadyCalledWrapper);
1399
+ }
1400
+ Js::JavascriptPromiseResolveOrRejectFunctionAlreadyResolvedWrapper* alreadyCalledWrapper = inflator->LookupInflatedPromiseInfo <Js::JavascriptPromiseResolveOrRejectFunctionAlreadyResolvedWrapper>(aInfo->AlreadyCalledWrapperId );
1401
+
1402
+ Js::RecyclableObject* values = inflator->LookupObject (aInfo->Values );
1403
+
1404
+ return ctx->GetLibrary ()->CreatePromiseAllSettledResolveOrRejectElementFunction_TTD (capabilities, aInfo->Index , wrapper, values, alreadyCalledWrapper, aInfo->IsRejecting );
1405
+ }
1406
+
1407
+ void EmitAddtlInfo_SnapPromiseAllSettledResolveOrRejectElementFunctionInfo (const SnapObject* snpObject, FileWriter* writer)
1408
+ {
1409
+ SnapPromiseAllSettledResolveOrRejectElementFunctionInfo* aInfo = SnapObjectGetAddtlInfoAs<SnapPromiseAllSettledResolveOrRejectElementFunctionInfo*, SnapObjectType::SnapPromiseAllSettledResolveOrRejectElementFunctionObject>(snpObject);
1410
+
1411
+ writer->WriteKey (NSTokens::Key::entry, NSTokens::Separator::CommaSeparator);
1412
+ NSSnapValues::EmitPromiseCapabilityInfo (&aInfo->Capabilities, writer, NSTokens::Separator::NoSeparator);
1413
+
1414
+ writer->WriteUInt32 (NSTokens::Key::u32Val, aInfo->Index , NSTokens::Separator::CommaSeparator);
1415
+ writer->WriteAddr (NSTokens::Key::ptrIdVal, aInfo->RemainingElementsWrapperId , NSTokens::Separator::CommaSeparator);
1416
+ writer->WriteUInt32 (NSTokens::Key::u32Val, aInfo->RemainingElementsValue , NSTokens::Separator::CommaSeparator);
1417
+
1418
+ writer->WriteAddr (NSTokens::Key::ptrIdVal, aInfo->AlreadyCalledWrapperId , NSTokens::Separator::CommaSeparator);
1419
+ writer->WriteBool (NSTokens::Key::boolVal, aInfo->AlreadyCalledValue , NSTokens::Separator::CommaSeparator);
1420
+
1421
+ writer->WriteBool (NSTokens::Key::boolVal, aInfo->IsRejecting , NSTokens::Separator::CommaSeparator);
1422
+ writer->WriteAddr (NSTokens::Key::ptrIdVal, aInfo->Values , NSTokens::Separator::CommaSeparator);
1423
+ }
1424
+
1425
+ void ParseAddtlInfo_SnapPromiseAllSettledResolveOrRejectElementFunctionInfo (SnapObject* snpObject, FileReader* reader, SlabAllocator& alloc)
1426
+ {
1427
+ SnapPromiseAllSettledResolveOrRejectElementFunctionInfo* aInfo = alloc.SlabAllocateStruct <SnapPromiseAllSettledResolveOrRejectElementFunctionInfo>();
1428
+
1429
+ reader->ReadKey (NSTokens::Key::entry, true );
1430
+ NSSnapValues::ParsePromiseCapabilityInfo (&aInfo->Capabilities, false , reader, alloc);
1431
+
1432
+ aInfo->Index = reader->ReadUInt32 (NSTokens::Key::u32Val, true );
1433
+ aInfo->RemainingElementsWrapperId = reader->ReadAddr (NSTokens::Key::ptrIdVal, true );
1434
+ aInfo->RemainingElementsValue = reader->ReadUInt32 (NSTokens::Key::u32Val, true );
1435
+
1436
+ aInfo->AlreadyCalledWrapperId = reader->ReadAddr (NSTokens::Key::ptrIdVal, true );
1437
+ aInfo->AlreadyCalledValue = reader->ReadBool (NSTokens::Key::boolVal, true );
1438
+
1439
+ aInfo->IsRejecting = reader->ReadBool (NSTokens::Key::boolVal, true );
1440
+ aInfo->Values = reader->ReadAddr (NSTokens::Key::ptrIdVal, true );
1441
+
1442
+ SnapObjectSetAddtlInfoAs<SnapPromiseAllSettledResolveOrRejectElementFunctionInfo*, SnapObjectType::SnapPromiseAllSettledResolveOrRejectElementFunctionObject>(snpObject, aInfo);
1443
+ }
1444
+
1445
+
1446
+ #if ENABLE_SNAPSHOT_COMPARE
1447
+ void AssertSnapEquiv_SnapPromiseAllSettledResolveOrRejectElementFunctionInfo (const SnapObject* sobj1, const SnapObject* sobj2, TTDCompareMap& compareMap)
1448
+ {
1449
+ SnapPromiseAllSettledResolveOrRejectElementFunctionInfo* aInfo1 = SnapObjectGetAddtlInfoAs<SnapPromiseAllSettledResolveOrRejectElementFunctionInfo*, SnapObjectType::SnapPromiseAllSettledResolveOrRejectElementFunctionObject>(sobj1);
1450
+ SnapPromiseAllSettledResolveOrRejectElementFunctionInfo* aInfo2 = SnapObjectGetAddtlInfoAs<SnapPromiseAllSettledResolveOrRejectElementFunctionInfo*, SnapObjectType::SnapPromiseAllSettledResolveOrRejectElementFunctionObject>(sobj2);
1451
+
1452
+ NSSnapValues::AssertSnapEquiv (&aInfo1->Capabilities, &aInfo2->Capabilities, compareMap);
1453
+
1454
+ compareMap.DiagnosticAssert (aInfo1->Index == aInfo2->Index );
1455
+ compareMap.DiagnosticAssert (aInfo1->RemainingElementsValue == aInfo2->RemainingElementsValue );
1456
+ compareMap.DiagnosticAssert (aInfo1->AlreadyCalledValue == aInfo2->AlreadyCalledValue );
1457
+ compareMap.DiagnosticAssert (aInfo1->IsRejecting == aInfo2->IsRejecting );
1458
+
1459
+ compareMap.CheckConsistentAndAddPtrIdMapping_Special (aInfo1->Values , aInfo2->Values , _u (" values" ));
1460
+
1461
+ compareMap.CheckConsistentAndAddPtrIdMapping_NoEnqueue (aInfo1->RemainingElementsWrapperId , aInfo2->RemainingElementsWrapperId );
1462
+ compareMap.CheckConsistentAndAddPtrIdMapping_NoEnqueue (aInfo1->AlreadyCalledWrapperId , aInfo2->AlreadyCalledWrapperId );
1463
+ }
1464
+ #endif
1465
+
1466
+ // ////////////////
1467
+
1379
1468
Js::RecyclableObject* DoObjectInflation_SnapBoxedValue (const SnapObject* snpObject, InflateMap* inflator)
1380
1469
{
1381
1470
// Boxed values are not too common and have special internal state so it seems easiest to always re-create them.
0 commit comments