mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 16:00:45 +00:00
[dart2js] Ensure Dart2JS only reports relevant metrics.
Prior to this change the metrics modified here are all printed during every run of the compiler, even when the compiler is running in phase mode on a phase that cannot modify these metrics. This will make collection of these metrics easier and ensure the collected data is cleaner. Change-Id: I62a081d9dbae71256882f24156faf246f4076e61 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/297440 Commit-Queue: Nate Biggs <natebiggs@google.com> Reviewed-by: Mayank Patke <fishythefish@google.com>
This commit is contained in:
parent
233a7298e0
commit
4bbdc97d1c
|
@ -344,8 +344,11 @@ class DeferredLoadTask extends CompilerTask {
|
|||
|
||||
final KernelToElementMap _elementMap;
|
||||
|
||||
_DeferredLoadTaskMetrics? _deferredLoadMetrics;
|
||||
_DeferredLoadTaskMetrics get deferredLoadMetrics =>
|
||||
_deferredLoadMetrics ??= _DeferredLoadTaskMetrics();
|
||||
@override
|
||||
final _DeferredLoadTaskMetrics metrics = _DeferredLoadTaskMetrics();
|
||||
Metrics get metrics => _deferredLoadMetrics ?? Metrics.none();
|
||||
|
||||
bool get disableProgramSplit => compiler.options.disableProgramSplit;
|
||||
|
||||
|
@ -379,7 +382,7 @@ class DeferredLoadTask extends CompilerTask {
|
|||
counter++;
|
||||
importSet.unit = unit;
|
||||
_allOutputUnits.add(unit);
|
||||
metrics.outputUnitElements.add(1);
|
||||
deferredLoadMetrics.outputUnitElements.add(1);
|
||||
}
|
||||
|
||||
// Generate an output unit for all import sets that are associated with an
|
||||
|
@ -429,7 +432,7 @@ class DeferredLoadTask extends CompilerTask {
|
|||
///
|
||||
/// See the top-level library comment for details.
|
||||
OutputUnitData run(FunctionEntity main, KClosedWorld closedWorld) {
|
||||
return metrics.time.measure(() => _run(main, closedWorld));
|
||||
return deferredLoadMetrics.time.measure(() => _run(main, closedWorld));
|
||||
}
|
||||
|
||||
OutputUnitData _run(FunctionEntity main, KClosedWorld closedWorld) {
|
||||
|
|
|
@ -50,8 +50,10 @@ class CodeEmitterTask extends CompilerTask {
|
|||
/// See [neededClasses] but for class types.
|
||||
late final Set<ClassEntity> neededClassTypes;
|
||||
|
||||
_EmitterMetrics? _emitterMetrics;
|
||||
_EmitterMetrics get emitterMetrics => _emitterMetrics ??= _EmitterMetrics();
|
||||
@override
|
||||
final _EmitterMetrics metrics = _EmitterMetrics();
|
||||
Metrics get metrics => _emitterMetrics ?? Metrics.none();
|
||||
|
||||
CodeEmitterTask(this._compiler, this._generateSourceMap)
|
||||
: super(_compiler.measurer);
|
||||
|
|
|
@ -193,7 +193,7 @@ class EmitterImpl extends ModularEmitterBase implements Emitter {
|
|||
finalizedFragmentsToLoad = _emitter.finalizedFragmentsToLoad;
|
||||
fragmentMerger = _emitter.fragmentMerger;
|
||||
finalizedFragmentsToLoad.values.forEach((fragments) {
|
||||
_task.metrics.hunkListElements.add(fragments.length);
|
||||
_task.emitterMetrics.hunkListElements.add(fragments.length);
|
||||
});
|
||||
if (retainDataForTesting) {
|
||||
preDeferredFragmentsForTesting =
|
||||
|
|
|
@ -54,7 +54,8 @@ abstract class CodegenPhase {
|
|||
class SsaCodeGeneratorTask extends CompilerTask {
|
||||
final CompilerOptions _options;
|
||||
final SourceInformationStrategy sourceInformationStrategy;
|
||||
final _CodegenMetrics _metrics = _CodegenMetrics();
|
||||
_CodegenMetrics? _codegenMetrics;
|
||||
_CodegenMetrics get codegenMetrics => _codegenMetrics ??= _CodegenMetrics();
|
||||
|
||||
SsaCodeGeneratorTask(
|
||||
Measurer super.measurer, this._options, this.sourceInformationStrategy);
|
||||
|
@ -63,7 +64,7 @@ class SsaCodeGeneratorTask extends CompilerTask {
|
|||
String get name => 'SSA code generator';
|
||||
|
||||
@override
|
||||
Metrics get metrics => _metrics;
|
||||
Metrics get metrics => _codegenMetrics ?? Metrics.none();
|
||||
|
||||
js.Fun buildJavaScriptFunction(bool needsAsyncRewrite, FunctionEntity element,
|
||||
List<js.Parameter> parameters, js.Block body) {
|
||||
|
@ -124,7 +125,7 @@ class SsaCodeGeneratorTask extends CompilerTask {
|
|||
SsaCodeGenerator codeGenerator = SsaCodeGenerator(
|
||||
this,
|
||||
_options,
|
||||
_metrics,
|
||||
codegenMetrics,
|
||||
emitter,
|
||||
codegen.rtiSubstitutions,
|
||||
codegen.rtiRecipeEncoder,
|
||||
|
@ -154,7 +155,7 @@ class SsaCodeGeneratorTask extends CompilerTask {
|
|||
SsaCodeGenerator codeGenerator = SsaCodeGenerator(
|
||||
this,
|
||||
_options,
|
||||
_metrics,
|
||||
codegenMetrics,
|
||||
emitter,
|
||||
codegen.rtiSubstitutions,
|
||||
codegen.rtiRecipeEncoder,
|
||||
|
|
|
@ -321,13 +321,13 @@ class SsaBuilderTask extends CompilerTask {
|
|||
final SourceInformationStrategy _sourceInformationFactory;
|
||||
late SsaBuilder _builder;
|
||||
|
||||
final SsaMetrics _metrics;
|
||||
final SsaMetrics _ssaMetrics;
|
||||
|
||||
@override
|
||||
Metrics get metrics => _metrics;
|
||||
Metrics metrics = Metrics.none();
|
||||
|
||||
SsaBuilderTask(super.measurer, this._backendStrategy,
|
||||
this._sourceInformationFactory, this._metrics);
|
||||
this._sourceInformationFactory, this._ssaMetrics);
|
||||
|
||||
@override
|
||||
String get name => 'SSA builder';
|
||||
|
@ -335,6 +335,7 @@ class SsaBuilderTask extends CompilerTask {
|
|||
void onCodegenStart() {
|
||||
_builder =
|
||||
_backendStrategy.createSsaBuilder(this, _sourceInformationFactory);
|
||||
metrics = _ssaMetrics;
|
||||
}
|
||||
|
||||
/// Creates the [HGraph] for [member] or returns `null` if no code is needed
|
||||
|
|
Loading…
Reference in a new issue