java-decompiler: minor optimization

master
Roman Shevchenko 10 years ago
parent 37422ead1c
commit 41b8ab9299
  1. 7
      src/org/jetbrains/java/decompiler/main/ClassWriter.java
  2. 14
      src/org/jetbrains/java/decompiler/main/TextBuffer.java

@ -220,7 +220,7 @@ public class ClassWriter {
} }
// FIXME: fields don't matter at the moment // FIXME: fields don't matter at the moment
total_offset_lines = buffer.substring(start_class_def).toString().split(lineSeparator, -1).length - 1; total_offset_lines = buffer.count(lineSeparator, start_class_def);
// methods // methods
for (StructMethod mt : cl.getMethods()) { for (StructMethod mt : cl.getMethods()) {
@ -812,8 +812,7 @@ public class ClassWriter {
if (root != null && !methodWrapper.decompiledWithErrors) { // check for existence if (root != null && !methodWrapper.decompiledWithErrors) { // check for existence
try { try {
tracer.incrementCurrentSourceLine(buffer.count(lineSeparator, start_index_method));
tracer.incrementCurrentSourceLine(buffer.substring(start_index_method).split(lineSeparator, -1).length - 1);
String code = root.toJava(indent + 1, tracer); String code = root.toJava(indent + 1, tracer);
@ -842,7 +841,7 @@ public class ClassWriter {
// save total lines // save total lines
// TODO: optimize // TODO: optimize
tracer.setCurrentSourceLine(buffer.substring(start_index_method).split(lineSeparator, -1).length - 1); tracer.setCurrentSourceLine(buffer.count(lineSeparator, start_index_method));
return !hideMethod; return !hideMethod;
} }

@ -17,7 +17,10 @@ package org.jetbrains.java.decompiler.main;
import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences; import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences;
import java.util.*; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/** /**
* Allows to connect text with resulting lines * Allows to connect text with resulting lines
@ -172,4 +175,13 @@ public class TextBuffer {
} }
myStringBuilder.insert(offset, s); myStringBuilder.insert(offset, s);
} }
public int count(String substring, int from) {
int count = 0, length = substring.length(), p = from;
while ((p = myStringBuilder.indexOf(substring, p)) > 0) {
++count;
p += length;
}
return count;
}
} }

Loading…
Cancel
Save