IOS LLE: checkpoint NAND conformance and diagnostic tooling
Preserve formatted NAND boot and Wii Remote pairing, add DMA/SRAM conformance tests and a Wii comparison probe. Keep P1 profiling tools and native update A/B evidence; reject the unhelpful targeted SRAM shortcut.
This commit is contained in:
1 parent
b931671fde
commit
c230971f07
64 files changed
+6488
-238
No files matched your search
@@ -0,0 +1,56 @@
|
||||
// Copyright 2026 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "Common/PerformanceTrace.h"
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
using namespace Common::PerformanceTrace;
|
||||
TEST(PerformanceTrace, NestedTimesAreExclusive)
|
||||
{
|
||||
ScopeStack stack;
|
||||
ASSERT_TRUE(stack.Begin(Region::Slice, 100));
|
||||
ASSERT_TRUE(stack.Begin(Region::ARM, 110));
|
||||
ASSERT_TRUE(stack.Begin(Region::Journal, 120));
|
||||
ASSERT_TRUE(stack.End(150));
|
||||
ASSERT_TRUE(stack.End(180));
|
||||
ASSERT_TRUE(stack.End(200));
|
||||
const auto& t = stack.Timings();
|
||||
EXPECT_EQ(t[static_cast<size_t>(Region::Slice)].inclusive, 100u);
|
||||
EXPECT_EQ(t[static_cast<size_t>(Region::Slice)].exclusive, 30u);
|
||||
EXPECT_EQ(t[static_cast<size_t>(Region::ARM)].exclusive, 40u);
|
||||
EXPECT_EQ(t[static_cast<size_t>(Region::Journal)].exclusive, 30u);
|
||||
EXPECT_EQ(stack.Errors(), 0u);
|
||||
EXPECT_EQ(stack.Depth(), 0u);
|
||||
}
|
||||
TEST(PerformanceTrace, RecursiveRegionAndReset)
|
||||
{
|
||||
ScopeStack stack;
|
||||
ASSERT_TRUE(stack.Begin(Region::ARM, 0));
|
||||
ASSERT_TRUE(stack.Begin(Region::ARM, 10));
|
||||
ASSERT_TRUE(stack.End(20));
|
||||
ASSERT_TRUE(stack.End(30));
|
||||
EXPECT_EQ(stack.Timings()[static_cast<size_t>(Region::ARM)].exclusive, 30u);
|
||||
EXPECT_EQ(stack.Timings()[static_cast<size_t>(Region::ARM)].calls, 2u);
|
||||
stack.Reset();
|
||||
EXPECT_EQ(stack.Timings()[static_cast<size_t>(Region::ARM)].calls, 0u);
|
||||
EXPECT_EQ(stack.Depth(), 0u);
|
||||
}
|
||||
TEST(PerformanceTrace, InvalidClockAndUnderflowAreReported)
|
||||
{
|
||||
ScopeStack stack;
|
||||
EXPECT_FALSE(stack.End(0));
|
||||
ASSERT_TRUE(stack.Begin(Region::ARM, 100));
|
||||
EXPECT_FALSE(stack.End(99));
|
||||
EXPECT_EQ(stack.Errors(), 2u);
|
||||
EXPECT_EQ(stack.Timings()[static_cast<size_t>(Region::ARM)].inclusive, 0u);
|
||||
}
|
||||
TEST(PerformanceTrace, DepthOverflowIsBounded)
|
||||
{
|
||||
ScopeStack stack;
|
||||
for (u64 i = 0; i < 32; ++i)
|
||||
ASSERT_TRUE(stack.Begin(Region::ARM, i));
|
||||
EXPECT_FALSE(stack.Begin(Region::ARM, 32));
|
||||
for (u64 i = 0; i < 32; ++i)
|
||||
ASSERT_TRUE(stack.End(40 + i));
|
||||
EXPECT_EQ(stack.Depth(), 0u);
|
||||
EXPECT_EQ(stack.Errors(), 1u);
|
||||
}
|
||||
Reference in new issue
Block a user