Skip to content

Commit 1ff1d7e

Browse files
committed
Use GetContainingLineNumber() to reduce allocations
Calling `GetContainingLine().LineNumber` causes `TextSnapshotLine` allocations. The `GetContainingLineNumber()` method avoids these.
1 parent 521dc4d commit 1ff1d7e

File tree

7 files changed

+10
-10
lines changed

7 files changed

+10
-10
lines changed

src/EditorFeatures/Core/Shared/Extensions/ITextViewExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,8 @@ public static bool TryGetSurfaceBufferSpan(
362362
var visibleEnd = visibleSpansInBuffer.Last().End;
363363

364364
var snapshot = subjectBuffer.CurrentSnapshot;
365-
var startLine = visibleStart.GetContainingLine().LineNumber;
366-
var endLine = visibleEnd.GetContainingLine().LineNumber;
365+
var startLine = visibleStart.GetContainingLineNumber();
366+
var endLine = visibleEnd.GetContainingLineNumber();
367367

368368
startLine = Math.Max(startLine - extraLines, 0);
369369
endLine = Math.Min(endLine + extraLines, snapshot.LineCount - 1);

src/EditorFeatures/Core/Shared/Extensions/SnapshotPointExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public static void GetLineAndCharacter(this SnapshotPoint point, out int lineNum
1313
=> point.Snapshot.GetLineAndCharacter(point.Position, out lineNumber, out characterIndex);
1414

1515
public static int GetContainingLineNumber(this SnapshotPoint point)
16-
=> point.GetContainingLine().LineNumber;
16+
=> point.GetContainingLineNumber();
1717

1818
public static ITrackingPoint CreateTrackingPoint(this SnapshotPoint point, PointTrackingMode trackingMode)
1919
=> point.Snapshot.CreateTrackingPoint(point, trackingMode);

src/EditorFeatures/Test2/Rename/RenameCommandHandlerTests.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ End Class
255255
Sub() AssertEx.Fail("Tab should not have been passed to the editor."),
256256
Utilities.TestCommandExecutionContext.Create())
257257

258-
Assert.Equal(3, view.Caret.Position.BufferPosition.GetContainingLine().LineNumber)
258+
Assert.Equal(3, view.Caret.Position.BufferPosition.GetContainingLineNumber())
259259

260260
session.Cancel()
261261
End Using

src/EditorFeatures/VisualBasic/LineCommit/CommitBufferManager.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.LineCommit
222222

223223
Public Shared Function IsMovementBetweenStatements(oldPoint As SnapshotPoint, newPoint As SnapshotPoint, cancellationToken As CancellationToken) As Boolean
224224
' If they are the same line, then definitely no
225-
If oldPoint.GetContainingLine().LineNumber = newPoint.GetContainingLine().LineNumber Then
225+
If oldPoint.GetContainingLineNumber() = newPoint.GetContainingLineNumber() Then
226226
Return False
227227
End If
228228

src/EditorFeatures/VisualBasicTest/ImplementInterface/ImplementInterfaceCommandHandlerTests.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ End Class
462462
End Sub,
463463
Sub(expected, actual, view)
464464
AssertEx.AssertEqualToleratingWhitespaceDifferences(expected, actual)
465-
Assert.Equal(4, view.Caret.Position.BufferPosition.GetContainingLine().LineNumber)
465+
Assert.Equal(4, view.Caret.Position.BufferPosition.GetContainingLineNumber())
466466
Assert.Equal(4, view.Caret.Position.VirtualSpaces)
467467
End Sub)
468468
End Sub

src/EditorFeatures/VisualBasicTest/LineCommit/CommitOnEnterTests.vb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ rem Hello World$$|]
253253
testData.CommandHandler.ExecuteCommand(New ReturnKeyCommandArgs(testData.View, testData.Buffer), Sub() testData.EditorOperations.InsertNewLine(), TestCommandExecutionContext.Create())
254254
testData.UndoHistory.Undo(count:=1)
255255

256-
Assert.Equal(0, testData.View.Caret.Position.BufferPosition.GetContainingLine().LineNumber)
256+
Assert.Equal(0, testData.View.Caret.Position.BufferPosition.GetContainingLineNumber())
257257
End Using
258258
End Sub
259259

@@ -342,14 +342,14 @@ End Module
342342

343343
Private Shared Sub AssertCommitsStatement(test As XElement, expectCommit As Boolean, Optional usedSemantics As Boolean = True)
344344
Using testData = CommitTestData.Create(test)
345-
Dim lineNumber = testData.View.Caret.Position.BufferPosition.GetContainingLine().LineNumber
345+
Dim lineNumber = testData.View.Caret.Position.BufferPosition.GetContainingLineNumber()
346346
testData.CommandHandler.ExecuteCommand(New ReturnKeyCommandArgs(testData.View, testData.Buffer), Sub() testData.EditorOperations.InsertNewLine(), TestCommandExecutionContext.Create())
347347
testData.AssertHadCommit(expectCommit)
348348
If expectCommit Then
349349
testData.AssertUsedSemantics(usedSemantics)
350350
End If
351351

352-
Assert.Equal(lineNumber + 1, testData.View.Caret.Position.BufferPosition.GetContainingLine().LineNumber)
352+
Assert.Equal(lineNumber + 1, testData.View.Caret.Position.BufferPosition.GetContainingLineNumber())
353353
End Using
354354
End Sub
355355
End Class

src/VisualStudio/CSharp/Test/CodeModel/MockTextManagerAdapter.TextPoint.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public int Line
8282
get
8383
{
8484
// These line numbers start at 1!
85-
return _point.GetContainingLine().LineNumber + 1;
85+
return _point.GetContainingLineNumber() + 1;
8686
}
8787
}
8888

0 commit comments

Comments
 (0)