save one volatile read on each charAt in editor

This commit is contained in:
peter
2014-02-20 20:05:41 +01:00
parent 5349f1e09a
commit 751ec20cc5
@@ -536,7 +536,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
}
});
}
updateHasTabsFlag(document.getCharsSequence());
updateHasTabsFlag(document.getImmutableCharSequence());
}
public static boolean isPresentationMode(Project project) {
@@ -1036,7 +1036,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
};
Disposer.register(myDisposable, myHighlighterDisposable);
highlighter.setEditor(this);
highlighter.setText(document.getCharsSequence());
highlighter.setText(document.getImmutableCharSequence());
EditorHighlighterCache.rememberEditorHighlighterForCachesOptimization(document, highlighter);
if (myPanel != null) {
@@ -1140,7 +1140,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
// We mark that we're under such circumstances then.
boolean activeSoftWrapProcessed = logicalPosition.softWrapLinesOnCurrentLogicalLine <= 0;
CharSequence text = myDocument.getCharsSequence();
CharSequence text = myDocument.getImmutableCharSequence();
LogicalPosition endLogicalPosition = visualToLogicalPosition(new VisualPosition(line + 1, 0));
int endOffset = logicalPositionToOffset(endLogicalPosition);
@@ -1324,7 +1324,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
return mySoftWrapModel.offsetToLogicalPosition(offset);
}
int line = offsetToLogicalLine(offset, false);
int column = calcColumnNumber(offset, line, false, myDocument.getCharsSequence());
int column = calcColumnNumber(offset, line, false, myDocument.getImmutableCharSequence());
return new LogicalPosition(line, column);
}
@@ -1526,7 +1526,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
}
int offset = startOffset;
CharSequence text = myDocument.getCharsSequence();
CharSequence text = myDocument.getImmutableCharSequence();
int textLength = myDocument.getTextLength();
// We need to calculate max offset to provide to the IterationState here based on the given start offset and target
@@ -2287,7 +2287,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
// background is already drawn.
boolean[] caretRowPainted = new boolean[1];
CharSequence text = myDocument.getCharsSequence();
CharSequence text = myDocument.getImmutableCharSequence();
while (!iterationState.atEnd() && !lIterator.atEnd()) {
int hEnd = iterationState.getEndOffset();
@@ -2748,7 +2748,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
int fontType = attributes.getFontType();
g.setColor(currentColor);
CharSequence chars = myDocument.getCharsSequence();
CharSequence chars = myDocument.getImmutableCharSequence();
while (!iterationState.atEnd() && !lIterator.atEnd()) {
int hEnd = iterationState.getEndOffset();
@@ -3623,7 +3623,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
if (pos.column == 0) return start;
int end = myDocument.getLineEndOffset(pos.line);
CharSequence text = myDocument.getCharsSequence();
CharSequence text = myDocument.getImmutableCharSequence();
return EditorUtil.calcOffset(this, text, start, end, pos.column, EditorUtil.getTabSize(this), debugBuffer);
}
@@ -3873,7 +3873,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
LOG.assertTrue(lineIndex >= 0 && lineIndex < myDocument.getLineCount());
if (softWrapAware && getSoftWrapModel().isSoftWrappingEnabled()) {
int column = calcColumnNumber(offset, lineIndex, false, myDocument.getCharsSequence());
int column = calcColumnNumber(offset, lineIndex, false, myDocument.getImmutableCharSequence());
return mySoftWrapModel.adjustLogicalPosition(new LogicalPosition(lineIndex, column), offset).line;
}
else {
@@ -3883,7 +3883,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
@Override
public int calcColumnNumber(int offset, int lineIndex) {
return calcColumnNumber(offset, lineIndex, true, myDocument.getCharsSequence());
return calcColumnNumber(offset, lineIndex, true, myDocument.getImmutableCharSequence());
}
public int calcColumnNumber(int offset, int lineIndex, boolean softWrapAware, CharSequence documentCharSequence) {
@@ -3954,7 +3954,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
if (!mySettings.isCaretInsideTabs()) {
int offset = logicalPositionToOffset(new LogicalPosition(line, column));
CharSequence text = myDocument.getCharsSequence();
CharSequence text = myDocument.getImmutableCharSequence();
if (offset >= 0 && offset < myDocument.getTextLength()) {
if (text.charAt(offset) == '\t') {
column = calcColumnNumber(offset, line);
@@ -4573,7 +4573,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
g.fillRect(x, y, width, lineHeight - 1);
final LogicalPosition startPosition = caret == null ? getCaretModel().getLogicalPosition() : caret.getLogicalPosition();
final int offset = logicalPositionToOffset(startPosition);
CharSequence chars = myDocument.getCharsSequence();
CharSequence chars = myDocument.getImmutableCharSequence();
if (chars.length() > offset && myDocument.getTextLength() > offset) {
FoldRegion folding = myFoldingModel.getCollapsedRegionAtOffset(offset);
final char ch;
@@ -5283,7 +5283,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
private String getText(int startIdx, int endIdx) {
if (startIdx >= 0 && endIdx > startIdx) {
CharSequence chars = getDocument().getCharsSequence();
CharSequence chars = getDocument().getImmutableCharSequence();
return chars.subSequence(startIdx, endIdx).toString();
}
@@ -6419,7 +6419,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
return;
}
final CharSequence text = myDocument.getCharsSequence();
final CharSequence text = myDocument.getImmutableCharSequence();
int documentLength = myDocument.getTextLength();
int x = 0;
boolean lastLineLengthCalculated = false;