stdlib, optimizer: add Array. reserveCapacityForAppend as a new array semantics operation.

This function reserves capacity in an Array for new elements which are about to be appended.
This commit is contained in:
Erik Eckstein
2017-04-17 10:49:53 -07:00
parent e3ae6f29b6
commit 9ac13ae606
4 changed files with 24 additions and 10 deletions

View File

@@ -486,6 +486,7 @@ static bool isNonMutatingArraySemanticCall(SILInstruction *Inst) {
return true;
case ArrayCallKind::kMakeMutable:
case ArrayCallKind::kMutateUnknown:
case ArrayCallKind::kReserveCapacityForAppend:
case ArrayCallKind::kWithUnsafeMutableBufferPointer:
case ArrayCallKind::kArrayInit:
case ArrayCallKind::kArrayUninitialized:
@@ -824,6 +825,7 @@ static bool mayChangeArrayValueToNonUniqueState(ArraySemanticsCall &Call) {
case ArrayCallKind::kNone:
case ArrayCallKind::kMutateUnknown:
case ArrayCallKind::kReserveCapacityForAppend:
case ArrayCallKind::kWithUnsafeMutableBufferPointer:
case ArrayCallKind::kArrayInit:
case ArrayCallKind::kArrayUninitialized: