@@ -53,13 +53,13 @@ typedef struct {
5353
5454// Start values
5555void initDummy (Dummy * dummy ) {
56- dummy -> val0 = 1 ;
56+ dummy -> val0 = 4 ;
5757 dummy -> val1 = 1 ;
58- dummy -> val2 = 1 ;
58+ dummy -> val2 = 2 ;
5959}
6060
6161void printDummy (Dummy * dummy ) {
62- emscripten_outf ("Values: 0x%08X, 0x%08X, 0x%08X " , dummy -> val0 , dummy -> val1 , dummy -> val2 );
62+ emscripten_outf ("Values: %u, %u, %u " , dummy -> val0 , dummy -> val1 , dummy -> val2 );
6363}
6464
6565// Run a simple calculation that will only be stable *if* all values are atomically updated
@@ -70,20 +70,18 @@ void runCalcs(Dummy* dummy, int num) {
7070 int have = emscripten_lock_busyspin_wait_acquire (& testLock , 10 );
7171 assert (have );
7272#endif
73- dummy -> val0 += dummy -> val2 * 7 ;
74- dummy -> val1 += dummy -> val0 * 7 ;
75- dummy -> val2 += dummy -> val1 * 7 ;
76- dummy -> val0 += dummy -> val2 / 3 ;
77- dummy -> val1 += dummy -> val0 / 3 ;
78- dummy -> val2 += dummy -> val1 / 3 ;
79- #ifndef DISABLE_LOCKS
73+ dummy -> val0 += dummy -> val1 * dummy -> val2 ;
74+ dummy -> val1 += dummy -> val2 * dummy -> val0 ;
75+ dummy -> val2 += dummy -> val0 * dummy -> val1 ;
76+ dummy -> val0 /= 4 ;
77+ dummy -> val1 /= 3 ;
78+ dummy -> val2 /= 2 ;
8079 emscripten_lock_release (& testLock );
81- #endif
8280 }
8381}
8482
8583void stopping () {
86- emscripten_out ("Expect: all values are equal " );
84+ emscripten_out ("Expect: 811100370, 759556424, 723197652 " );
8785 emscripten_out ("Ending test" );
8886 emscripten_destroy_audio_context (context );
8987 emscripten_force_exit (0 );
@@ -134,8 +132,10 @@ bool mainLoop(double time, void* data) {
134132 break ;
135133 case TEST_DONE :
136134 printDummy ((Dummy * ) data );
137- assert (((Dummy * ) data )-> val0 == ((Dummy * ) data )-> val1
138- && ((Dummy * ) data )-> val1 == ((Dummy * ) data )-> val2 );
135+ // 32-bit maths with locks *should* result in these:
136+ assert (((Dummy * ) data )-> val0 == 811100370
137+ && ((Dummy * ) data )-> val1 == 759556424
138+ && ((Dummy * ) data )-> val2 == 723197652 );
139139 stopping ();
140140 return false;
141141 }
0 commit comments