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

Side by Side Diff: tests/compiler/dart2js/sourcemaps/js_tracer.dart

Issue 1678043003: Add Dart code to diff_view (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Cleanup Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library sourcemap.js_tracer; 5 library sourcemap.js_tracer;
6 6
7 import 'package:compiler/src/io/source_information.dart'; 7 import 'package:compiler/src/io/source_information.dart';
8 import 'package:compiler/src/io/position_information.dart'; 8 import 'package:compiler/src/io/position_information.dart';
9 import 'package:compiler/src/js/js.dart' as js; 9 import 'package:compiler/src/js/js.dart' as js;
10 import 'sourcemap_helper.dart'; 10 import 'sourcemap_helper.dart';
11 import 'trace_graph.dart'; 11 import 'trace_graph.dart';
12 12
13 /// Create a [TraceGraph] for [info] registering usage in [coverage]. 13 /// Create a [TraceGraph] for [info] registering usage in [coverage].
14 TraceGraph createTraceGraph(SourceMapInfo info, Coverage coverage) { 14 TraceGraph createTraceGraph(SourceMapInfo info, Coverage coverage) {
15 TraceGraph graph = new TraceGraph(); 15 TraceGraph graph = new TraceGraph();
16 TraceListener listener = new StepTraceListener(graph); 16 TraceListener listener = new StepTraceListener(graph);
17 CodePositionMap codePositions = 17 CodePositionMap codePositions =
18 new CodePositionCoverage(info.jsCodePositions, coverage); 18 new CodePositionCoverage(info.jsCodePositions, coverage);
19 JavaScriptTracer tracer = new JavaScriptTracer( 19 JavaScriptTracer tracer = new JavaScriptTracer(
20 codePositions, [new CoverageListener(coverage), listener]); 20 codePositions, [new CoverageListener(coverage), listener]);
21 info.node.accept(tracer); 21 info.node.accept(tracer);
22 return graph; 22 return graph;
23 } 23 }
24 24
25 class StepTraceListener extends TraceListener { 25 class StepTraceListener extends TraceListener
26 with NodeToSourceInformationMixin {
26 Map<js.Node, TraceStep> steppableMap = <js.Node, TraceStep>{}; 27 Map<js.Node, TraceStep> steppableMap = <js.Node, TraceStep>{};
27 final TraceGraph graph; 28 final TraceGraph graph;
28 29
29 StepTraceListener(this.graph); 30 StepTraceListener(this.graph);
30 31
31 @override 32 @override
32 void onStep(js.Node node, Offset offset, StepKind kind) { 33 void onStep(js.Node node, Offset offset, StepKind kind) {
33 SourceInformation sourceInformation = node.sourceInformation; 34 SourceInformation sourceInformation = computeSourceInformation(node);
34 SourcePositionKind sourcePositionKind = SourcePositionKind.START; 35 SourcePositionKind sourcePositionKind = SourcePositionKind.START;
35 List text = [node]; 36 List text = [node];
36 switch (kind) { 37 switch (kind) {
37 case StepKind.FUN: 38 case StepKind.FUN:
38 sourcePositionKind = SourcePositionKind.INNER; 39 sourcePositionKind = SourcePositionKind.INNER;
39 text = ['<exit>']; 40 text = ['<exit>'];
40 break; 41 break;
41 case StepKind.CALL: 42 case StepKind.CALL:
42 CallPosition callPosition = 43 CallPosition callPosition =
43 CallPosition.getSemanticPositionForCall(node); 44 CallPosition.getSemanticPositionForCall(node);
(...skipping 30 matching lines...) Expand all
74 js.Do doNode = node; 75 js.Do doNode = node;
75 text = ['do {... } (', doNode.condition, ')']; 76 text = ['do {... } (', doNode.condition, ')'];
76 break; 77 break;
77 case StepKind.SWITCH_EXPRESSION: 78 case StepKind.SWITCH_EXPRESSION:
78 js.Switch switchNode = node; 79 js.Switch switchNode = node;
79 text = ['switch(', switchNode.key, ') ...']; 80 text = ['switch(', switchNode.key, ') ...'];
80 break; 81 break;
81 82
82 } 83 }
83 createTraceStep( 84 createTraceStep(
85 kind,
84 node, 86 node,
85 offset: offset, 87 offset: offset,
86 sourceLocation: getSourceLocation( 88 sourceLocation: getSourceLocation(
87 node.sourceInformation, sourcePositionKind), 89 sourceInformation, sourcePositionKind),
88 text: text); 90 text: text);
89 } 91 }
90 92
91 void createTraceStep( 93 void createTraceStep(
94 StepKind kind,
92 js.Node node, 95 js.Node node,
93 {Offset offset, 96 {Offset offset,
94 List text, 97 List text,
95 String note, 98 String note,
96 SourceLocation sourceLocation}) { 99 SourceLocation sourceLocation}) {
97 int id = steppableMap.length; 100 int id = steppableMap.length;
98 101
99 if (text == null) { 102 if (text == null) {
100 text = [node]; 103 text = [node];
101 } 104 }
102 105
103 TraceStep step = new TraceStep( 106 TraceStep step = new TraceStep(
104 id, node, 107 kind,
108 id,
109 node,
105 offset, 110 offset,
106 text, sourceLocation); 111 text,
112 sourceLocation);
107 graph.addStep(step); 113 graph.addStep(step);
108 114
109 steppableMap[node] = step; 115 steppableMap[node] = step;
110 } 116 }
111 117
112 118
113 void pushBranch(BranchKind kind, [value]) { 119 void pushBranch(BranchKind kind, [value]) {
114 var branch; 120 var branch;
115 switch (kind) { 121 switch (kind) {
116 case BranchKind.CONDITION: 122 case BranchKind.CONDITION:
(...skipping 12 matching lines...) Expand all
129 branch = '$value'; 135 branch = '$value';
130 break; 136 break;
131 } 137 }
132 graph.pushBranch(branch); 138 graph.pushBranch(branch);
133 } 139 }
134 140
135 void popBranch() { 141 void popBranch() {
136 graph.popBranch(); 142 graph.popBranch();
137 } 143 }
138 } 144 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698