@@ -36,6 +36,7 @@ using ::llvm::memprof::Frame;
3636using ::llvm::memprof::FrameId;
3737using ::llvm::memprof::hashCallStack;
3838using ::llvm::memprof::IndexedAllocationInfo;
39+ using ::llvm::memprof::IndexedMemProfData;
3940using ::llvm::memprof::IndexedMemProfRecord;
4041using ::llvm::memprof::MemInfoBlock;
4142using ::llvm::memprof::MemProfReader;
@@ -221,31 +222,28 @@ TEST(MemProf, FillsValue) {
221222 EXPECT_THAT (Bar.AllocSites [0 ].CallStack [3 ],
222223 FrameContains (" abc" , 5U , 30U , false ));
223224
224- ASSERT_THAT (Bar.CallSites , SizeIs (1 ));
225- ASSERT_THAT (Bar.CallSites [0 ], SizeIs (2 ));
226- EXPECT_THAT (Bar.CallSites [0 ][0 ], FrameContains (" foo" , 5U , 30U , true ));
227- EXPECT_THAT (Bar.CallSites [0 ][1 ], FrameContains (" bar" , 51U , 20U , false ));
225+ EXPECT_THAT (Bar.CallSites ,
226+ ElementsAre (ElementsAre (FrameContains (" foo" , 5U , 30U , true ),
227+ FrameContains (" bar" , 51U , 20U , false ))));
228228
229229 // Check the memprof record for xyz.
230230 const llvm::GlobalValue::GUID XyzId = IndexedMemProfRecord::getGUID (" xyz" );
231231 ASSERT_TRUE (Records.contains (XyzId));
232232 const MemProfRecord &Xyz = Records[XyzId];
233- ASSERT_THAT (Xyz.CallSites , SizeIs (1 ));
234- ASSERT_THAT (Xyz.CallSites [0 ], SizeIs (2 ));
235233 // Expect the entire frame even though in practice we only need the first
236234 // entry here.
237- EXPECT_THAT (Xyz.CallSites [0 ][0 ], FrameContains (" xyz" , 5U , 30U , true ));
238- EXPECT_THAT (Xyz.CallSites [0 ][1 ], FrameContains (" abc" , 5U , 30U , false ));
235+ EXPECT_THAT (Xyz.CallSites ,
236+ ElementsAre (ElementsAre (FrameContains (" xyz" , 5U , 30U , true ),
237+ FrameContains (" abc" , 5U , 30U , false ))));
239238
240239 // Check the memprof record for abc.
241240 const llvm::GlobalValue::GUID AbcId = IndexedMemProfRecord::getGUID (" abc" );
242241 ASSERT_TRUE (Records.contains (AbcId));
243242 const MemProfRecord &Abc = Records[AbcId];
244243 EXPECT_TRUE (Abc.AllocSites .empty ());
245- ASSERT_THAT (Abc.CallSites , SizeIs (1 ));
246- ASSERT_THAT (Abc.CallSites [0 ], SizeIs (2 ));
247- EXPECT_THAT (Abc.CallSites [0 ][0 ], FrameContains (" xyz" , 5U , 30U , true ));
248- EXPECT_THAT (Abc.CallSites [0 ][1 ], FrameContains (" abc" , 5U , 30U , false ));
244+ EXPECT_THAT (Abc.CallSites ,
245+ ElementsAre (ElementsAre (FrameContains (" xyz" , 5U , 30U , true ),
246+ FrameContains (" abc" , 5U , 30U , false ))));
249247}
250248
251249TEST (MemProf, PortableWrapper) {
@@ -419,9 +417,8 @@ TEST(MemProf, SymbolizationFilter) {
419417
420418 ASSERT_THAT (Records, SizeIs (1 ));
421419 ASSERT_THAT (Records[0 ].AllocSites , SizeIs (1 ));
422- ASSERT_THAT (Records[0 ].AllocSites [0 ].CallStack , SizeIs (1 ));
423- EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack [0 ],
424- FrameContains (" foo" , 5U , 30U , false ));
420+ EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack ,
421+ ElementsAre (FrameContains (" foo" , 5U , 30U , false )));
425422}
426423
427424TEST (MemProf, BaseMemProfReader) {
@@ -452,11 +449,9 @@ TEST(MemProf, BaseMemProfReader) {
452449
453450 ASSERT_THAT (Records, SizeIs (1 ));
454451 ASSERT_THAT (Records[0 ].AllocSites , SizeIs (1 ));
455- ASSERT_THAT (Records[0 ].AllocSites [0 ].CallStack , SizeIs (2 ));
456- EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack [0 ],
457- FrameContains (" foo" , 20U , 5U , true ));
458- EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack [1 ],
459- FrameContains (" bar" , 10U , 2U , false ));
452+ EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack ,
453+ ElementsAre (FrameContains (" foo" , 20U , 5U , true ),
454+ FrameContains (" bar" , 10U , 2U , false )));
460455}
461456
462457TEST (MemProf, BaseMemProfReaderWithCSIdMap) {
@@ -489,36 +484,33 @@ TEST(MemProf, BaseMemProfReaderWithCSIdMap) {
489484
490485 ASSERT_THAT (Records, SizeIs (1 ));
491486 ASSERT_THAT (Records[0 ].AllocSites , SizeIs (1 ));
492- ASSERT_THAT (Records[0 ].AllocSites [0 ].CallStack , SizeIs (2 ));
493- EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack [0 ],
494- FrameContains (" foo" , 20U , 5U , true ));
495- EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack [1 ],
496- FrameContains (" bar" , 10U , 2U , false ));
487+ EXPECT_THAT (Records[0 ].AllocSites [0 ].CallStack ,
488+ ElementsAre (FrameContains (" foo" , 20U , 5U , true ),
489+ FrameContains (" bar" , 10U , 2U , false )));
497490}
498491
499492TEST (MemProf, IndexedMemProfRecordToMemProfRecord) {
500493 // Verify that MemProfRecord can be constructed from IndexedMemProfRecord with
501494 // CallStackIds only.
502495
503- llvm::DenseMap<FrameId, Frame> FrameIdMap ;
496+ IndexedMemProfData MemProfData ;
504497 Frame F1 (1 , 0 , 0 , false );
505498 Frame F2 (2 , 0 , 0 , false );
506499 Frame F3 (3 , 0 , 0 , false );
507500 Frame F4 (4 , 0 , 0 , false );
508- FrameIdMap. insert ({F1. hash (), F1} );
509- FrameIdMap. insert ({F2. hash (), F2} );
510- FrameIdMap. insert ({F3. hash (), F3} );
511- FrameIdMap. insert ({F4. hash (), F4} );
501+ MemProfData. addFrame (F1 );
502+ MemProfData. addFrame (F2 );
503+ MemProfData. addFrame (F3 );
504+ MemProfData. addFrame (F4 );
512505
513- llvm::DenseMap<CallStackId, llvm::SmallVector<FrameId>> CallStackIdMap;
514506 llvm::SmallVector<FrameId> CS1 = {F1.hash (), F2.hash ()};
515507 llvm::SmallVector<FrameId> CS2 = {F1.hash (), F3.hash ()};
516508 llvm::SmallVector<FrameId> CS3 = {F2.hash (), F3.hash ()};
517509 llvm::SmallVector<FrameId> CS4 = {F2.hash (), F4.hash ()};
518- CallStackIdMap. insert ({ hashCallStack ( CS1), CS1} );
519- CallStackIdMap. insert ({ hashCallStack ( CS2), CS2} );
520- CallStackIdMap. insert ({ hashCallStack ( CS3), CS3} );
521- CallStackIdMap. insert ({ hashCallStack ( CS4), CS4} );
510+ MemProfData. addCallStack ( CS1);
511+ MemProfData. addCallStack ( CS2);
512+ MemProfData. addCallStack ( CS3);
513+ MemProfData. addCallStack ( CS4);
522514
523515 IndexedMemProfRecord IndexedRecord;
524516 IndexedAllocationInfo AI;
@@ -529,9 +521,10 @@ TEST(MemProf, IndexedMemProfRecordToMemProfRecord) {
529521 IndexedRecord.CallSiteIds .push_back (hashCallStack (CS3));
530522 IndexedRecord.CallSiteIds .push_back (hashCallStack (CS4));
531523
532- llvm::memprof::FrameIdConverter<decltype (FrameIdMap)> FrameIdConv (FrameIdMap);
533- llvm::memprof::CallStackIdConverter<decltype (CallStackIdMap)> CSIdConv (
534- CallStackIdMap, FrameIdConv);
524+ llvm::memprof::FrameIdConverter<decltype (MemProfData.Frames )> FrameIdConv (
525+ MemProfData.Frames );
526+ llvm::memprof::CallStackIdConverter<decltype (MemProfData.CallStacks )>
527+ CSIdConv (MemProfData.CallStacks , FrameIdConv);
535528
536529 MemProfRecord Record = IndexedRecord.toMemProfRecord (CSIdConv);
537530
0 commit comments