1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Improved tracing code.

Change-Id: I8aeb9085e1de9876ddb078a63ccdbfb17858311b
This commit is contained in:
Sergey Prigogin 2017-02-05 20:39:51 -08:00
parent 0b641f1216
commit 6ddaed7dd7

View file

@ -84,6 +84,7 @@ import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider; import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
import org.eclipse.cdt.core.dom.parser.IExtensionToken; import org.eclipse.cdt.core.dom.parser.IExtensionToken;
import org.eclipse.cdt.core.dom.parser.ISourceCodeParser; import org.eclipse.cdt.core.dom.parser.ISourceCodeParser;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.AbstractParserLogService; import org.eclipse.cdt.core.parser.AbstractParserLogService;
import org.eclipse.cdt.core.parser.EndOfFileException; import org.eclipse.cdt.core.parser.EndOfFileException;
import org.eclipse.cdt.core.parser.IGCCToken; import org.eclipse.cdt.core.parser.IGCCToken;
@ -177,7 +178,6 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
protected static enum ExprKind {eExpression, eAssignment, eConstant} protected static enum ExprKind {eExpression, eAssignment, eConstant}
protected static final int DEFAULT_DESIGNATOR_LIST_SIZE = 4; protected static final int DEFAULT_DESIGNATOR_LIST_SIZE = 4;
protected static int parseCount = 0;
protected final AbstractParserLogService log; protected final AbstractParserLogService log;
protected final IScanner scanner; protected final IScanner scanner;
@ -194,7 +194,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
protected boolean supportExtendedSizeofOperator; protected boolean supportExtendedSizeofOperator;
protected final IBuiltinBindingsProvider builtinBindingsProvider; protected final IBuiltinBindingsProvider builtinBindingsProvider;
protected boolean functionCallCanBeLValue= false; protected boolean functionCallCanBeLValue;
protected int maximumTrivialExpressionsInAggregateInitializers= Integer.MAX_VALUE; protected int maximumTrivialExpressionsInAggregateInitializers= Integer.MAX_VALUE;
/** /**
@ -677,20 +677,21 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser {
@Override @Override
public IASTTranslationUnit parse() { public IASTTranslationUnit parse() {
long startTime = System.currentTimeMillis(); long t0 = log.isTracing() ? System.currentTimeMillis() : 0;
translationUnit(); translationUnit();
log.traceLog("Parse " //$NON-NLS-1$ long t1 = log.isTracing() ? System.currentTimeMillis() : 0;
+ (++parseCount) + ": " //$NON-NLS-1$
+ (System.currentTimeMillis() - startTime) + "ms" //$NON-NLS-1$
+ (parsePassed ? "" : " - parse failure")); //$NON-NLS-1$ //$NON-NLS-2$
startTime = System.currentTimeMillis();
resolveAmbiguities(); resolveAmbiguities();
log.traceLog("Ambiguity resolution : " //$NON-NLS-1$ IASTTranslationUnit ast = getTranslationUnit();
+ (System.currentTimeMillis() - startTime) + "ms"); //$NON-NLS-1$ if (log.isTracing()) {
IASTTranslationUnit result = getTranslationUnit(); ITranslationUnit tu = ast.getOriginatingTranslationUnit();
String name = tu == null ? "<unknown>" : tu.getElementName(); //$NON-NLS-1$
String message = String.format("Parsed %s: %d ms %s. Ambiguity resolution: %d ms", //$NON-NLS-1$
name, t1 - t0, parsePassed ? "" : " - parse failure", System.currentTimeMillis() - t1); //$NON-NLS-1$//$NON-NLS-2$
log.traceLog(message);
}
nullifyTranslationUnit(); nullifyTranslationUnit();
result.freeze(); // Make the AST immutable. ast.freeze(); // Make the AST immutable.
return result; return ast;
} }
protected void resolveAmbiguities() { protected void resolveAmbiguities() {