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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart

Issue 1196433002: Create and test source mapping for invocations. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart2js.ir_builder_task; 5 library dart2js.ir_builder_task;
6 6
7 import '../closure.dart' as closurelib; 7 import '../closure.dart' as closurelib;
8 import '../closure.dart' hide ClosureScope; 8 import '../closure.dart' hide ClosureScope;
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 11 matching lines...) Expand all
22 import 'cps_ir_builder.dart'; 22 import 'cps_ir_builder.dart';
23 23
24 typedef void IrBuilderCallback(Element element, ir.FunctionDefinition irNode); 24 typedef void IrBuilderCallback(Element element, ir.FunctionDefinition irNode);
25 25
26 /// This task provides the interface to build IR nodes from [ast.Node]s, which 26 /// This task provides the interface to build IR nodes from [ast.Node]s, which
27 /// is used from the [CpsFunctionCompiler] to generate code. 27 /// is used from the [CpsFunctionCompiler] to generate code.
28 /// 28 ///
29 /// This class is mainly there to correctly measure how long building the IR 29 /// This class is mainly there to correctly measure how long building the IR
30 /// takes. 30 /// takes.
31 class IrBuilderTask extends CompilerTask { 31 class IrBuilderTask extends CompilerTask {
32 final SourceInformationFactory sourceInformationFactory; 32 final SourceInformationStrategy sourceInformationStrategy;
33 33
34 String bailoutMessage = null; 34 String bailoutMessage = null;
35 35
36 /// If not null, this function will be called with for each 36 /// If not null, this function will be called with for each
37 /// [ir.FunctionDefinition] node that has been built. 37 /// [ir.FunctionDefinition] node that has been built.
38 IrBuilderCallback builderCallback; 38 IrBuilderCallback builderCallback;
39 39
40 IrBuilderTask(Compiler compiler, this.sourceInformationFactory, 40 IrBuilderTask(Compiler compiler, this.sourceInformationStrategy,
41 [this.builderCallback]) 41 [this.builderCallback])
42 : super(compiler); 42 : super(compiler);
43 43
44 String get name => 'IR builder'; 44 String get name => 'IR builder';
45 45
46 ir.FunctionDefinition buildNode(AstElement element) { 46 ir.FunctionDefinition buildNode(AstElement element) {
47 return measure(() { 47 return measure(() {
48 bailoutMessage = null; 48 bailoutMessage = null;
49 49
50 TreeElements elementsMapping = element.resolvedAst.elements; 50 TreeElements elementsMapping = element.resolvedAst.elements;
51 element = element.implementation; 51 element = element.implementation;
52 return compiler.withCurrentElement(element, () { 52 return compiler.withCurrentElement(element, () {
53 SourceInformationBuilder sourceInformationBuilder = 53 SourceInformationBuilder sourceInformationBuilder =
54 sourceInformationFactory.forContext(element); 54 sourceInformationStrategy.createBuilderForContext(element);
55 55
56 IrBuilderVisitor builder = 56 IrBuilderVisitor builder =
57 new JsIrBuilderVisitor( 57 new JsIrBuilderVisitor(
58 elementsMapping, compiler, sourceInformationBuilder); 58 elementsMapping, compiler, sourceInformationBuilder);
59 ir.FunctionDefinition irNode = builder.buildExecutable(element); 59 ir.FunctionDefinition irNode = builder.buildExecutable(element);
60 if (irNode == null) { 60 if (irNode == null) {
61 bailoutMessage = builder.bailoutMessage; 61 bailoutMessage = builder.bailoutMessage;
62 } else if (builderCallback != null) { 62 } else if (builderCallback != null) {
63 builderCallback(element, irNode); 63 builderCallback(element, irNode);
64 } 64 }
(...skipping 932 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 MethodElement function, 997 MethodElement function,
998 ast.NodeList arguments, 998 ast.NodeList arguments,
999 CallStructure callStructure, 999 CallStructure callStructure,
1000 _) { 1000 _) {
1001 // TODO(karlklose): support foreign functions. 1001 // TODO(karlklose): support foreign functions.
1002 if (compiler.backend.isForeign(function)) { 1002 if (compiler.backend.isForeign(function)) {
1003 return giveup(node, 'handleStaticFunctionInvoke: foreign: $function'); 1003 return giveup(node, 'handleStaticFunctionInvoke: foreign: $function');
1004 } 1004 }
1005 return irBuilder.buildStaticFunctionInvocation(function, callStructure, 1005 return irBuilder.buildStaticFunctionInvocation(function, callStructure,
1006 translateStaticArguments(arguments, function, callStructure), 1006 translateStaticArguments(arguments, function, callStructure),
1007 sourceInformation: sourceInformationBuilder.buildCall(node)); 1007 sourceInformation: sourceInformationBuilder.buildCall(
1008 node, node.selector));
1008 } 1009 }
1009 1010
1010 @override 1011 @override
1011 ir.Primitive handleStaticFunctionIncompatibleInvoke( 1012 ir.Primitive handleStaticFunctionIncompatibleInvoke(
1012 ast.Send node, 1013 ast.Send node,
1013 MethodElement function, 1014 MethodElement function,
1014 ast.NodeList arguments, 1015 ast.NodeList arguments,
1015 CallStructure callStructure, _) { 1016 CallStructure callStructure, _) {
1016 return buildStaticNoSuchMethod( 1017 return buildStaticNoSuchMethod(
1017 elements.getSelector(node), 1018 elements.getSelector(node),
(...skipping 1842 matching lines...) Expand 10 before | Expand all | Expand 10 after
2860 } 2861 }
2861 2862
2862 processSetStatic(ir.SetStatic node) { 2863 processSetStatic(ir.SetStatic node) {
2863 node.body = replacementFor(node.body); 2864 node.body = replacementFor(node.body);
2864 } 2865 }
2865 2866
2866 processContinuation(ir.Continuation node) { 2867 processContinuation(ir.Continuation node) {
2867 node.body = replacementFor(node.body); 2868 node.body = replacementFor(node.body);
2868 } 2869 }
2869 } 2870 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698