Make SingleThreadMarkAndSweep support multiple threads

This commit is contained in:
Alexander Shabalin
2021-05-21 13:59:22 +03:00
committed by Space
parent 10ae9c511b
commit 9ebba93dd9
15 changed files with 556 additions and 127 deletions
@@ -1073,6 +1073,11 @@ class TestSharedRefs {
}
}
// This will free `object1` and release+dealloc its associated `Deinit` which nils `Deinit.object2`
ValuesKt.gc()
// This will free `object2`.
ValuesKt.gc()
try assertTrue(Deinit.weakVar2 === nil)
}
@@ -1403,10 +1408,7 @@ class ValuesTests : SimpleTestProvider {
test("TestInvalidIdentifiers", testInvalidIdentifiers)
test("TestDeprecation", testDeprecation)
test("TestWeakRefs", testWeakRefs)
if !ValuesKt.isExperimentalMM {
// Experimental MM doesn't support multiple mutators yet.
test("TestSharedRefs", TestSharedRefs().test)
}
test("TestSharedRefs", TestSharedRefs().test)
test("TestClassTypeCheck", testClassTypeCheck)
test("TestInterfaceTypeCheck", testInterfaceTypeCheck)
test("TestGH3503_1", testGH3503_1)
@@ -1419,9 +1421,6 @@ class ValuesTests : SimpleTestProvider {
test("TestFakeOverrideInInterface", testFakeOverrideInInterface)
// Stress test, must remain the last one:
if !ValuesKt.isExperimentalMM {
// Experimental MM doesn't support multiple mutators yet.
test("TestGH2931", testGH2931)
}
test("TestGH2931", testGH2931)
}
}