stdlib: Add some inlining attributes to help the optimizer getting the right inlining decisions.

This is more or less a workaround for some optimizations (mainly ARC opt) to avoid performance degradation with the upcoming inliner changes
In some situations it makes a big difference for ARC opt if a function is inlined or not, althought this shouldn't be the case.
This commit is contained in:
Erik Eckstein
2016-03-26 08:02:15 -07:00
parent 8e624a655b
commit 8b0e36779e
5 changed files with 51 additions and 19 deletions

View File

@@ -41,6 +41,7 @@ extension String {
self.idx = pos
self.core = core
}
@inline(__always)
mutating func next() -> UTF16.CodeUnit? {
if idx == core.endIndex {
return nil
@@ -61,6 +62,7 @@ extension String {
///
/// - Precondition: The next value is representable.
@warn_unused_result
@inline(__always)
public func successor() -> Index {
var scratch = _ScratchIterator(_core, _position)
var decoder = UTF16()