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

Side by Side Diff: pkg/compiler/lib/src/inferrer/builder.dart

Issue 2814453005: Merge CommonElements and BackendHelpers! (Closed)
Patch Set: comments and re-merge, take two Created 3 years, 8 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
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/inferrer/closure_tracer.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 simple_types_inferrer; 5 library simple_types_inferrer;
6 6
7 import '../closure.dart' show ClosureClassMap; 7 import '../closure.dart' show ClosureClassMap;
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/names.dart' show Identifiers, Selectors; 9 import '../common/names.dart' show Identifiers, Selectors;
10 import '../compiler.dart' show Compiler; 10 import '../compiler.dart' show Compiler;
11 import '../constants/constant_system.dart'; 11 import '../constants/constant_system.dart';
12 import '../constants/expressions.dart'; 12 import '../constants/expressions.dart';
13 import '../constants/values.dart' show ConstantValue, IntConstantValue; 13 import '../constants/values.dart' show ConstantValue, IntConstantValue;
14 import '../elements/resolution_types.dart' 14 import '../elements/resolution_types.dart'
15 show ResolutionDartType, ResolutionInterfaceType; 15 show ResolutionDartType, ResolutionInterfaceType;
16 import '../elements/elements.dart'; 16 import '../elements/elements.dart';
17 import '../elements/entities.dart'; 17 import '../elements/entities.dart';
18 import '../js_backend/backend_helpers.dart'; 18 import '../js_backend/backend.dart' show JavaScriptBackend;
19 import '../js_backend/js_backend.dart' as js;
20 import '../native/native.dart' as native; 19 import '../native/native.dart' as native;
21 import '../resolution/operators.dart' as op; 20 import '../resolution/operators.dart' as op;
22 import '../resolution/semantic_visitor.dart'; 21 import '../resolution/semantic_visitor.dart';
23 import '../resolution/tree_elements.dart' show TreeElements; 22 import '../resolution/tree_elements.dart' show TreeElements;
24 import '../tree/tree.dart' as ast; 23 import '../tree/tree.dart' as ast;
25 import '../types/constants.dart' show computeTypeMask; 24 import '../types/constants.dart' show computeTypeMask;
26 import '../types/types.dart' show TypeMask, GlobalTypeInferenceElementData; 25 import '../types/types.dart' show TypeMask, GlobalTypeInferenceElementData;
27 import '../universe/call_structure.dart' show CallStructure; 26 import '../universe/call_structure.dart' show CallStructure;
28 import '../universe/selector.dart' show Selector; 27 import '../universe/selector.dart' show Selector;
29 import '../universe/side_effects.dart' show SideEffects; 28 import '../universe/side_effects.dart' show SideEffects;
(...skipping 2474 matching lines...) Expand 10 before | Expand all | Expand 10 after
2504 ast.NodeList arguments, Selector selector, _) { 2503 ast.NodeList arguments, Selector selector, _) {
2505 return handleInvalidStaticInvoke(node); 2504 return handleInvalidStaticInvoke(node);
2506 } 2505 }
2507 2506
2508 TypeInformation handleForeignSend(ast.Send node, Element element) { 2507 TypeInformation handleForeignSend(ast.Send node, Element element) {
2509 ArgumentsTypes arguments = analyzeArguments(node.arguments); 2508 ArgumentsTypes arguments = analyzeArguments(node.arguments);
2510 Selector selector = elements.getSelector(node); 2509 Selector selector = elements.getSelector(node);
2511 TypeMask mask = inTreeData.typeOfSend(node); 2510 TypeMask mask = inTreeData.typeOfSend(node);
2512 String name = element.name; 2511 String name = element.name;
2513 handleStaticSend(node, selector, mask, element, arguments); 2512 handleStaticSend(node, selector, mask, element, arguments);
2514 if (name == BackendHelpers.JS || 2513 if (name == JavaScriptBackend.JS ||
2515 name == BackendHelpers.JS_EMBEDDED_GLOBAL || 2514 name == JavaScriptBackend.JS_EMBEDDED_GLOBAL ||
2516 name == BackendHelpers.JS_BUILTIN) { 2515 name == JavaScriptBackend.JS_BUILTIN) {
2517 native.NativeBehavior nativeBehavior = elements.getNativeData(node); 2516 native.NativeBehavior nativeBehavior = elements.getNativeData(node);
2518 sideEffects.add(nativeBehavior.sideEffects); 2517 sideEffects.add(nativeBehavior.sideEffects);
2519 return inferrer.typeOfNativeBehavior(nativeBehavior); 2518 return inferrer.typeOfNativeBehavior(nativeBehavior);
2520 } else if (name == 'JS_OPERATOR_AS_PREFIX' || name == 'JS_STRING_CONCAT') { 2519 } else if (name == 'JS_OPERATOR_AS_PREFIX' || name == 'JS_STRING_CONCAT') {
2521 return types.stringType; 2520 return types.stringType;
2522 } else { 2521 } else {
2523 sideEffects.setAllSideEffects(); 2522 sideEffects.setAllSideEffects();
2524 return types.dynamicType; 2523 return types.dynamicType;
2525 } 2524 }
2526 } 2525 }
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
2913 } 2912 }
2914 2913
2915 TypeInformation visitAsyncForIn(ast.AsyncForIn node) { 2914 TypeInformation visitAsyncForIn(ast.AsyncForIn node) {
2916 TypeInformation expressionType = visit(node.expression); 2915 TypeInformation expressionType = visit(node.expression);
2917 2916
2918 Selector currentSelector = Selectors.current; 2917 Selector currentSelector = Selectors.current;
2919 TypeMask currentMask = inTreeData.typeOfIteratorCurrent(node); 2918 TypeMask currentMask = inTreeData.typeOfIteratorCurrent(node);
2920 Selector moveNextSelector = Selectors.moveNext; 2919 Selector moveNextSelector = Selectors.moveNext;
2921 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); 2920 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node);
2922 2921
2923 js.JavaScriptBackend backend = compiler.backend; 2922 ConstructorElement ctor = compiler.commonElements.streamIteratorConstructor;
2924 ConstructorElement ctor = backend.helpers.streamIteratorConstructor;
2925 2923
2926 /// Synthesize a call to the [StreamIterator] constructor. 2924 /// Synthesize a call to the [StreamIterator] constructor.
2927 TypeInformation iteratorType = handleStaticSend( 2925 TypeInformation iteratorType = handleStaticSend(
2928 node, null, null, ctor, new ArgumentsTypes([expressionType], null)); 2926 node, null, null, ctor, new ArgumentsTypes([expressionType], null));
2929 2927
2930 return handleForInLoop(node, iteratorType, currentSelector, currentMask, 2928 return handleForInLoop(node, iteratorType, currentSelector, currentMask,
2931 moveNextSelector, moveNextMask); 2929 moveNextSelector, moveNextMask);
2932 } 2930 }
2933 2931
2934 TypeInformation visitSyncForIn(ast.SyncForIn node) { 2932 TypeInformation visitSyncForIn(ast.SyncForIn node) {
2935 TypeInformation expressionType = visit(node.expression); 2933 TypeInformation expressionType = visit(node.expression);
2936 Selector iteratorSelector = Selectors.iterator; 2934 Selector iteratorSelector = Selectors.iterator;
2937 TypeMask iteratorMask = inTreeData.typeOfIterator(node); 2935 TypeMask iteratorMask = inTreeData.typeOfIterator(node);
2938 Selector currentSelector = Selectors.current; 2936 Selector currentSelector = Selectors.current;
2939 TypeMask currentMask = inTreeData.typeOfIteratorCurrent(node); 2937 TypeMask currentMask = inTreeData.typeOfIteratorCurrent(node);
2940 Selector moveNextSelector = Selectors.moveNext; 2938 Selector moveNextSelector = Selectors.moveNext;
2941 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node); 2939 TypeMask moveNextMask = inTreeData.typeOfIteratorMoveNext(node);
2942 2940
2943 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector, 2941 TypeInformation iteratorType = handleDynamicSend(node, iteratorSelector,
2944 iteratorMask, expressionType, new ArgumentsTypes.empty()); 2942 iteratorMask, expressionType, new ArgumentsTypes.empty());
2945 2943
2946 return handleForInLoop(node, iteratorType, currentSelector, currentMask, 2944 return handleForInLoop(node, iteratorType, currentSelector, currentMask,
2947 moveNextSelector, moveNextMask); 2945 moveNextSelector, moveNextMask);
2948 } 2946 }
2949 } 2947 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/inferrer/closure_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698