[Serialization] Avoid some non-determinism in the serializer.

Unfortunately, we still have non-determinism coming from elsewhere, so we
can't start trying to test this yet.

Motivated by rdar://problem/20539158

Swift SVN r28576
This commit is contained in:
Jordan Rose
2015-05-14 20:10:53 +00:00
parent 09904467d9
commit 9ef66a35e1
3 changed files with 14 additions and 3 deletions

View File

@@ -1023,7 +1023,16 @@ void Serializer::writeNormalConformance(
return false;
});
for (auto defaulted : conformance->getDefaultedDefinitions()) {
SmallVector<ValueDecl *, 4> defaultedDefinitions{
conformance->getDefaultedDefinitions().begin(),
conformance->getDefaultedDefinitions().end()
};
llvm::array_pod_sort(defaultedDefinitions.begin(), defaultedDefinitions.end(),
[](ValueDecl * const *left, ValueDecl * const *right) {
return (*left)->getFullName().compare((*right)->getFullName());
});
for (auto defaulted : defaultedDefinitions) {
data.push_back(addDeclRef(defaulted));
++numDefaultedDefinitions;
}