diff --git a/Aurora/Runtime b/Aurora/Runtime index 5830258..3747fb7 160000 --- a/Aurora/Runtime +++ b/Aurora/Runtime @@ -1 +1 @@ -Subproject commit 58302586a90613d4cf041de8b37c08a36ceeaadc +Subproject commit 3747fb7c6ff1e1a2ad5a37a2b0ead2984c958268 diff --git a/Tests/Public/2. Hello Threading/Main.cpp b/Tests/Public/2. Hello Threading/Main.cpp index 40583ea..d52aa5f 100644 --- a/Tests/Public/2. Hello Threading/Main.cpp +++ b/Tests/Public/2. Hello Threading/Main.cpp @@ -40,7 +40,7 @@ TEST(Allocationless, SOO) } -#if defined(TO_PROVE_A_POINT) +#if defined(TO_PROVE_A_POINT) && defined(AURORA_ARCH_X64) static_assert(sizeof(AuThreadPrimitives::Mutex) < sizeof(std::mutex)); static_assert(sizeof(AuThreadPrimitives::Mutex) <= sizeof(std::mutex) / 5); // to really prove a point @@ -52,7 +52,9 @@ TEST(Allocationless, SOO) static_assert(230 < sizeof(std::shared_timed_mutex)); static_assert(103 > sizeof(AuThreadPrimitives::RWLock)); static_assert(90 > sizeof(AuThreadPrimitives::RWLock)); - static_assert(89 > sizeof(AuThreadPrimitives::RWLock)); + static_assert(57 > sizeof(AuThreadPrimitives::RWLock)); + static_assert(18 > sizeof(AuMutex)); + static_assert(18 > sizeof(AuFutexMutex)); static_assert(sizeof(AuThreadPrimitives::Mutex) < sizeof(SRWLOCK) + sizeof(CONDITION_VARIABLE) + 4); // (SRWLOCKs are too dumb to used by themselves) static_assert(sizeof(AuThreadPrimitives::ConditionVariable) < sizeof(std::condition_variable)); @@ -76,13 +78,15 @@ TEST(Allocationless, SOO) #endif // So, uh, wouldn't it be funny if we could beat these too? // Oh wait.. - static_assert((sizeof(AuFutexMutex) - sizeof(void *) /*ignore vtable; these are final and declared in the header*/) < sizeof(std::timed_mutex)); static_assert((sizeof(AuFutexMutex) - sizeof(void *) /*ignore vtable; these are final and declared in the header*/) < sizeof(std::mutex)); static_assert((sizeof(AuFutexCond) - sizeof(void *) /*ignore vtable; these are final and declared in the header*/) < sizeof(std::condition_variable)); static_assert(sizeof(AuFutexCond) < sizeof(std::condition_variable)); static_assert(sizeof(AuFutexMutex) < sizeof(CRITICAL_SECTION)); static_assert(sizeof(AuFutexCond) == sizeof(CONDITION_VARIABLE)); + static_assert(sizeof(std::condition_variable) > sizeof(AuFutexCond)); + static_assert(8 == sizeof(AuFutexCond)); + static_assert(sizeof(std::counting_semaphore<0>) > (sizeof(AuFutexSemaphore) - /*ignore vtable*/sizeof(void *))); #endif }