Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: pkg/analyzer/lib/src/summary/summary_file_builder.dart

Issue 2077583002: Make SDK summary writing available to analyzer clients. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Review feedbacks. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer/tool/summary/build_sdk_summaries.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/summary_file_builder.dart
diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
index 0d340b925b6691244041dcc75cca28af823f4b74..d4097706616456c7d461889b11b6ba088fb9b15f 100644
--- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart
+++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
@@ -14,10 +14,16 @@ import 'package:analyzer/src/generated/java_io.dart';
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/sdk_io.dart';
import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/summary/flat_buffers.dart' as fb;
import 'package:analyzer/src/summary/index_unit.dart';
import 'package:analyzer/src/summary/summarize_elements.dart';
import 'package:path/path.dart';
+const int FIELD_SPEC_INDEX = 1;
+const int FIELD_SPEC_SUM = 0;
+const int FIELD_STRONG_INDEX = 3;
+const int FIELD_STRONG_SUM = 2;
+
class BuilderOutput {
final List<int> sum;
final List<int> index;
@@ -76,6 +82,35 @@ class SummaryBuilder {
BuilderOutput build() => new _Builder(_context, _librarySources).build();
}
+/**
+ * Intermediary summary output result.
+ */
+class SummaryOutput {
+ final BuilderOutput spec;
+ final BuilderOutput strong;
+ SummaryOutput(this.spec, this.strong);
+
+ /**
+ * Write this summary output to the given [outputPath] and return the
+ * created file.
+ */
+ File write(String outputPath) {
+ fb.Builder builder = new fb.Builder();
+ fb.Offset specSumOffset = builder.writeListUint8(spec.sum);
+ fb.Offset specIndexOffset = builder.writeListUint8(spec.index);
+ fb.Offset strongSumOffset = builder.writeListUint8(strong.sum);
+ fb.Offset strongIndexOffset = builder.writeListUint8(strong.index);
+ builder.startTable();
+ builder.addOffset(FIELD_SPEC_SUM, specSumOffset);
+ builder.addOffset(FIELD_SPEC_INDEX, specIndexOffset);
+ builder.addOffset(FIELD_STRONG_SUM, strongSumOffset);
+ builder.addOffset(FIELD_STRONG_INDEX, strongIndexOffset);
+ fb.Offset offset = builder.endTable();
+ return new File(outputPath)
+ ..writeAsBytesSync(builder.finish(offset), mode: FileMode.WRITE_ONLY);
+ }
+}
+
class _Builder {
final Set<Source> processedSources = new Set<Source>();
« no previous file with comments | « no previous file | pkg/analyzer/tool/summary/build_sdk_summaries.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698