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

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

Issue 1772703002: Add source information to variable declarations in CPS. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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 closure; 7 import '../closure.dart' as closure;
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/names.dart' show 9 import '../common/names.dart' show
10 Identifiers, 10 Identifiers,
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 irBuilder.addPrimitive(new ir.InvokeMethodDirectly( 480 irBuilder.addPrimitive(new ir.InvokeMethodDirectly(
481 instance, bodyElement, selector, bodyArguments, null)); 481 instance, bodyElement, selector, bodyArguments, null));
482 } 482 }
483 483
484 // --- step 4: return the created object ---- 484 // --- step 4: return the created object ----
485 irBuilder.buildReturn( 485 irBuilder.buildReturn(
486 value: instance, 486 value: instance,
487 sourceInformation: 487 sourceInformation:
488 sourceInformationBuilder.buildImplicitReturn(constructor)); 488 sourceInformationBuilder.buildImplicitReturn(constructor));
489 489
490 return irBuilder.makeFunctionDefinition(); 490 return irBuilder.makeFunctionDefinition(
491 sourceInformationBuilder.buildVariableDeclaration());
491 }); 492 });
492 } 493 }
493 494
494 /// Make a visitor suitable for translating ASTs taken from [context]. 495 /// Make a visitor suitable for translating ASTs taken from [context].
495 /// 496 ///
496 /// Every visitor can only be applied to nodes in one context, because 497 /// Every visitor can only be applied to nodes in one context, because
497 /// the [elements] field is specific to that context. 498 /// the [elements] field is specific to that context.
498 IrBuilderVisitor makeVisitorForContext(AstElement context) { 499 IrBuilderVisitor makeVisitorForContext(AstElement context) {
499 return new IrBuilderVisitor( 500 return new IrBuilderVisitor(
500 context.resolvedAst.elements, 501 context.resolvedAst.elements,
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 // TODO(kmillikin): We should combine closure conversion and try/catch 732 // TODO(kmillikin): We should combine closure conversion and try/catch
732 // variable analysis in some way. 733 // variable analysis in some way.
733 TryBoxedVariables variables = _analyzeTryBoxedVariables(node); 734 TryBoxedVariables variables = _analyzeTryBoxedVariables(node);
734 tryStatements = variables.tryStatements; 735 tryStatements = variables.tryStatements;
735 IrBuilder builder = getBuilderFor(body); 736 IrBuilder builder = getBuilderFor(body);
736 737
737 return withBuilder(builder, () { 738 return withBuilder(builder, () {
738 irBuilder.buildConstructorBodyHeader(getConstructorBodyParameters(body), 739 irBuilder.buildConstructorBodyHeader(getConstructorBodyParameters(body),
739 getClosureScopeForNode(node)); 740 getClosureScopeForNode(node));
740 visit(node.body); 741 visit(node.body);
741 return irBuilder.makeFunctionDefinition(); 742 return irBuilder.makeFunctionDefinition(
743 sourceInformationBuilder.buildVariableDeclaration());
742 }); 744 });
743 } 745 }
744 746
745 ir.FunctionDefinition buildFunction(FunctionElement element) { 747 ir.FunctionDefinition buildFunction(FunctionElement element) {
746 assert(invariant(element, element.isImplementation)); 748 assert(invariant(element, element.isImplementation));
747 ast.FunctionExpression node = element.node; 749 ast.FunctionExpression node = element.node;
748 750
749 assert(!element.isSynthesized); 751 assert(!element.isSynthesized);
750 assert(node != null); 752 assert(node != null);
751 assert(elements[node] != null); 753 assert(elements[node] != null);
(...skipping 22 matching lines...) Expand all
774 IrBuilder builder = getBuilderFor(element); 776 IrBuilder builder = getBuilderFor(element);
775 return withBuilder(builder, () { 777 return withBuilder(builder, () {
776 irBuilder.buildFunctionHeader(<Local>[]); 778 irBuilder.buildFunctionHeader(<Local>[]);
777 ir.Primitive initialValue = visit(element.initializer); 779 ir.Primitive initialValue = visit(element.initializer);
778 ast.VariableDefinitions node = element.node; 780 ast.VariableDefinitions node = element.node;
779 ast.SendSet sendSet = node.definitions.nodes.head; 781 ast.SendSet sendSet = node.definitions.nodes.head;
780 irBuilder.buildReturn( 782 irBuilder.buildReturn(
781 value: initialValue, 783 value: initialValue,
782 sourceInformation: 784 sourceInformation:
783 sourceInformationBuilder.buildReturn(sendSet.assignmentOperator)); 785 sourceInformationBuilder.buildReturn(sendSet.assignmentOperator));
784 return irBuilder.makeFunctionDefinition(); 786 return irBuilder.makeFunctionDefinition(
787 sourceInformationBuilder.buildVariableDeclaration());
785 }); 788 });
786 } 789 }
787 790
788 /// Builds the IR for a constant taken from a different [context]. 791 /// Builds the IR for a constant taken from a different [context].
789 /// 792 ///
790 /// Such constants need to be compiled with a different [sourceFile] and 793 /// Such constants need to be compiled with a different [sourceFile] and
791 /// [elements] mapping. 794 /// [elements] mapping.
792 ir.Primitive inlineConstant(AstElement context, ast.Expression exp) { 795 ir.Primitive inlineConstant(AstElement context, ast.Expression exp) {
793 IrBuilderVisitor visitor = makeVisitorForContext(context); 796 IrBuilderVisitor visitor = makeVisitorForContext(context);
794 return visitor.withBuilder(irBuilder, () => visitor.translateConstant(exp)); 797 return visitor.withBuilder(irBuilder, () => visitor.translateConstant(exp));
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 948
946 ir.Primitive refinement = irBuilder.addPrimitive( 949 ir.Primitive refinement = irBuilder.addPrimitive(
947 new ir.Refinement(allocation, typeMaskSystem.arrayType)); 950 new ir.Refinement(allocation, typeMaskSystem.arrayType));
948 951
949 irBuilder.buildReturn(value: refinement, 952 irBuilder.buildReturn(value: refinement,
950 sourceInformation: 953 sourceInformation:
951 sourceInformationBuilder.buildImplicitReturn(element)); 954 sourceInformationBuilder.buildImplicitReturn(element));
952 } else { 955 } else {
953 visit(node.body); 956 visit(node.body);
954 } 957 }
955 return irBuilder.makeFunctionDefinition(); 958 return irBuilder.makeFunctionDefinition(
959 sourceInformationBuilder.buildVariableDeclaration());
956 } 960 }
957 961
958 /// Builds the IR for creating an instance of the closure class corresponding 962 /// Builds the IR for creating an instance of the closure class corresponding
959 /// to the given nested function. 963 /// to the given nested function.
960 closure.ClosureClassElement makeSubFunction(ast.FunctionExpression node) { 964 closure.ClosureClassElement makeSubFunction(ast.FunctionExpression node) {
961 closure.ClosureClassMap innerMap = 965 closure.ClosureClassMap innerMap =
962 compiler.closureToClassMapper.getMappingForNestedFunction(node); 966 compiler.closureToClassMapper.getMappingForNestedFunction(node);
963 closure.ClosureClassElement closureClass = innerMap.closureClassElement; 967 closure.ClosureClassElement closureClass = innerMap.closureClassElement;
964 return closureClass; 968 return closureClass;
965 } 969 }
(...skipping 3077 matching lines...) Expand 10 before | Expand all | Expand 10 after
4043 _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass); 4047 _backend.jsInteropAnalysis.hasAnonymousAnnotation(element.contextClass);
4044 4048
4045 String getJsInteropTargetPath(FunctionElement element) { 4049 String getJsInteropTargetPath(FunctionElement element) {
4046 return '${_backend.namer.fixedBackendPath(element)}.' 4050 return '${_backend.namer.fixedBackendPath(element)}.'
4047 '${_backend.getFixedBackendName(element)}'; 4051 '${_backend.getFixedBackendName(element)}';
4048 } 4052 }
4049 4053
4050 DartType get jsJavascriptObjectType => 4054 DartType get jsJavascriptObjectType =>
4051 _backend.helpers.jsJavaScriptObjectClass.thisType; 4055 _backend.helpers.jsJavaScriptObjectClass.thisType;
4052 } 4056 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698