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

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

Issue 1616143003: Lower map literals to constructor or function calls in builder (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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 library dart2js.ir_nodes; 4 library dart2js.ir_nodes;
5 5
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'cps_fragment.dart' show CpsFragment; 7 import 'cps_fragment.dart' show CpsFragment;
8 import '../constants/values.dart' as values; 8 import '../constants/values.dart' as values;
9 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType; 9 import '../dart_types.dart' show DartType, InterfaceType, TypeVariableType;
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 1589
1590 bool get hasValue => true; 1590 bool get hasValue => true;
1591 bool get isSafeForElimination => true; 1591 bool get isSafeForElimination => true;
1592 bool get isSafeForReordering => true; 1592 bool get isSafeForReordering => true;
1593 1593
1594 void setParentPointers() { 1594 void setParentPointers() {
1595 _setParentsOnList(values, this); 1595 _setParentsOnList(values, this);
1596 } 1596 }
1597 } 1597 }
1598 1598
1599 class LiteralMapEntry {
1600 final Reference<Primitive> key;
1601 final Reference<Primitive> value;
1602
1603 LiteralMapEntry(Primitive key, Primitive value)
1604 : this.key = new Reference<Primitive>(key),
1605 this.value = new Reference<Primitive>(value);
1606 }
1607
1608 class LiteralMap extends Primitive {
1609 final InterfaceType dartType;
1610 final List<LiteralMapEntry> entries;
1611
1612 LiteralMap(this.dartType, this.entries);
1613
1614 accept(Visitor visitor) => visitor.visitLiteralMap(this);
1615
1616 bool get hasValue => true;
1617 bool get isSafeForElimination => true;
1618 bool get isSafeForReordering => true;
1619
1620 void setParentPointers() {
1621 for (LiteralMapEntry entry in entries) {
1622 entry.key.parent = this;
1623 entry.value.parent = this;
1624 }
1625 }
1626 }
1627
1628 class Parameter extends Primitive { 1599 class Parameter extends Primitive {
1629 Parameter(Entity hint) { 1600 Parameter(Entity hint) {
1630 super.hint = hint; 1601 super.hint = hint;
1631 } 1602 }
1632 1603
1633 accept(Visitor visitor) => visitor.visitParameter(this); 1604 accept(Visitor visitor) => visitor.visitParameter(this);
1634 1605
1635 String toString() => 'Parameter(${hint == null ? null : hint.name})'; 1606 String toString() => 'Parameter(${hint == null ? null : hint.name})';
1636 1607
1637 bool get hasValue => true; 1608 bool get hasValue => true;
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 T visitInvokeMethodDirectly(InvokeMethodDirectly node); 1929 T visitInvokeMethodDirectly(InvokeMethodDirectly node);
1959 T visitInvokeConstructor(InvokeConstructor node); 1930 T visitInvokeConstructor(InvokeConstructor node);
1960 T visitTypeCast(TypeCast node); 1931 T visitTypeCast(TypeCast node);
1961 T visitSetMutable(SetMutable node); 1932 T visitSetMutable(SetMutable node);
1962 T visitSetStatic(SetStatic node); 1933 T visitSetStatic(SetStatic node);
1963 T visitSetField(SetField node); 1934 T visitSetField(SetField node);
1964 T visitGetLazyStatic(GetLazyStatic node); 1935 T visitGetLazyStatic(GetLazyStatic node);
1965 T visitAwait(Await node); 1936 T visitAwait(Await node);
1966 T visitYield(Yield node); 1937 T visitYield(Yield node);
1967 T visitLiteralList(LiteralList node); 1938 T visitLiteralList(LiteralList node);
1968 T visitLiteralMap(LiteralMap node);
1969 T visitConstant(Constant node); 1939 T visitConstant(Constant node);
1970 T visitGetMutable(GetMutable node); 1940 T visitGetMutable(GetMutable node);
1971 T visitParameter(Parameter node); 1941 T visitParameter(Parameter node);
1972 T visitMutableVariable(MutableVariable node); 1942 T visitMutableVariable(MutableVariable node);
1973 T visitGetStatic(GetStatic node); 1943 T visitGetStatic(GetStatic node);
1974 T visitInterceptor(Interceptor node); 1944 T visitInterceptor(Interceptor node);
1975 T visitCreateInstance(CreateInstance node); 1945 T visitCreateInstance(CreateInstance node);
1976 T visitGetField(GetField node); 1946 T visitGetField(GetField node);
1977 T visitCreateBox(CreateBox node); 1947 T visitCreateBox(CreateBox node);
1978 T visitReifyRuntimeType(ReifyRuntimeType node); 1948 T visitReifyRuntimeType(ReifyRuntimeType node);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 visitGetLazyStatic(GetLazyStatic node) { 2109 visitGetLazyStatic(GetLazyStatic node) {
2140 processGetLazyStatic(node); 2110 processGetLazyStatic(node);
2141 } 2111 }
2142 2112
2143 processLiteralList(LiteralList node) {} 2113 processLiteralList(LiteralList node) {}
2144 visitLiteralList(LiteralList node) { 2114 visitLiteralList(LiteralList node) {
2145 processLiteralList(node); 2115 processLiteralList(node);
2146 node.values.forEach(processReference); 2116 node.values.forEach(processReference);
2147 } 2117 }
2148 2118
2149 processLiteralMap(LiteralMap node) {}
2150 visitLiteralMap(LiteralMap node) {
2151 processLiteralMap(node);
2152 for (LiteralMapEntry entry in node.entries) {
2153 processReference(entry.key);
2154 processReference(entry.value);
2155 }
2156 }
2157
2158 processConstant(Constant node) {} 2119 processConstant(Constant node) {}
2159 visitConstant(Constant node) { 2120 visitConstant(Constant node) {
2160 processConstant(node); 2121 processConstant(node);
2161 } 2122 }
2162 2123
2163 processMutableVariable(node) {} 2124 processMutableVariable(node) {}
2164 visitMutableVariable(MutableVariable node) { 2125 visitMutableVariable(MutableVariable node) {
2165 processMutableVariable(node); 2126 processMutableVariable(node);
2166 } 2127 }
2167 2128
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
2565 2526
2566 Definition visitYield(Yield node) { 2527 Definition visitYield(Yield node) {
2567 return new Yield(getCopy(node.input), node.hasStar); 2528 return new Yield(getCopy(node.input), node.hasStar);
2568 } 2529 }
2569 2530
2570 Definition visitLiteralList(LiteralList node) { 2531 Definition visitLiteralList(LiteralList node) {
2571 return new LiteralList(node.dartType, getList(node.values)) 2532 return new LiteralList(node.dartType, getList(node.values))
2572 ..allocationSiteType = node.allocationSiteType; 2533 ..allocationSiteType = node.allocationSiteType;
2573 } 2534 }
2574 2535
2575 Definition visitLiteralMap(LiteralMap node) {
2576 List<LiteralMapEntry> entries = node.entries.map((LiteralMapEntry entry) {
2577 return new LiteralMapEntry(getCopy(entry.key), getCopy(entry.value));
2578 }).toList();
2579 return new LiteralMap(node.dartType, entries);
2580 }
2581
2582 Definition visitConstant(Constant node) { 2536 Definition visitConstant(Constant node) {
2583 return new Constant(node.value, sourceInformation: node.sourceInformation); 2537 return new Constant(node.value, sourceInformation: node.sourceInformation);
2584 } 2538 }
2585 2539
2586 Definition visitGetMutable(GetMutable node) { 2540 Definition visitGetMutable(GetMutable node) {
2587 return new GetMutable(getCopy(node.variable)); 2541 return new GetMutable(getCopy(node.variable));
2588 } 2542 }
2589 2543
2590 Definition visitParameter(Parameter node) { 2544 Definition visitParameter(Parameter node) {
2591 return new Parameter(node.hint); 2545 return new Parameter(node.hint);
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
2830 plug(new Branch.loose(_definitions.getCopy(node.condition), 2784 plug(new Branch.loose(_definitions.getCopy(node.condition),
2831 _copies[node.trueContinuation.definition], 2785 _copies[node.trueContinuation.definition],
2832 _copies[node.falseContinuation.definition]) 2786 _copies[node.falseContinuation.definition])
2833 ..isStrictCheck = node.isStrictCheck); 2787 ..isStrictCheck = node.isStrictCheck);
2834 } 2788 }
2835 2789
2836 visitUnreachable(Unreachable node) { 2790 visitUnreachable(Unreachable node) {
2837 plug(new Unreachable()); 2791 plug(new Unreachable());
2838 } 2792 }
2839 } 2793 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes_sexpr.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698