Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <therzok@gmail.com>2017-05-11 19:50:12 +0300
committerMarius Ungureanu <teromario@yahoo.com>2017-05-12 17:05:51 +0300
commitab7ec81e0fa627968601c8dc1e62964ec6c095bd (patch)
tree3d293c6c51e9872631028c8c49e4c278fc59058a /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor
parent885d29f5181bee6988ab2b061ce38aa3e5ae2365 (diff)
[Ide] Avoid iterators on iterating textchanges.
This showed up pretty high on List<T> enumerator allocations.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/Projection.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/SegmentTree.cs3
2 files changed, 4 insertions, 2 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/Projection.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/Projection.cs
index a68ca66352..2b1e227480 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/Projection.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/Projection.cs
@@ -117,7 +117,8 @@ namespace MonoDevelop.Ide.Editor.Projection
void HandleTextChanging (object sender, TextChangeEventArgs e)
{
- foreach (var change in e.TextChanges) {
+ for (int i = 0; i < e.TextChanges.Count; ++i) {
+ var change = e.TextChanges[i];
foreach (var segment in originalProjections) {
if (segment.Contains (change.Offset)) {
var projectedOffset = change.Offset - segment.Offset + segment.LinkedTo.Offset;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/SegmentTree.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/SegmentTree.cs
index 81c4d8790f..1895919b68 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/SegmentTree.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/SegmentTree.cs
@@ -169,7 +169,8 @@ namespace MonoDevelop.Ide.Editor
internal void UpdateOnTextReplace (object sender, TextChangeEventArgs e)
{
- foreach (var change in e.TextChanges) {
+ for (int i = 0; i < e.TextChanges.Count; ++i) {
+ var change = e.TextChanges[i];
if (change.RemovalLength == 0) {
var length = change.InsertionLength;
foreach (var segment in GetSegmentsAt (change.Offset).Where (s => s.Offset < change.Offset && change.Offset < s.EndOffset)) {