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

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

Issue 1299413002: Move common identifiers, names and selectors to a separate library. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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 '../common/names.dart' show
10 Names,
11 Selectors;
9 import '../common/tasks.dart' show 12 import '../common/tasks.dart' show
10 CompilerTask; 13 CompilerTask;
11 import '../compiler.dart' show 14 import '../compiler.dart' show
12 Compiler; 15 Compiler;
13 import '../constants/expressions.dart'; 16 import '../constants/expressions.dart';
14 import '../dart_types.dart'; 17 import '../dart_types.dart';
15 import '../diagnostics/invariant.dart' show 18 import '../diagnostics/invariant.dart' show
16 invariant; 19 invariant;
17 import '../elements/elements.dart'; 20 import '../elements/elements.dart';
18 import '../elements/modelx.dart' show 21 import '../elements/modelx.dart' show
(...skipping 1424 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 setValue: (ir.Primitive result) { 1446 setValue: (ir.Primitive result) {
1444 irBuilder.buildDynamicSet( 1447 irBuilder.buildDynamicSet(
1445 target, setterSelector, elements.getTypeMask(node), result); 1448 target, setterSelector, elements.getTypeMask(node), result);
1446 }); 1449 });
1447 } 1450 }
1448 return node.isConditional 1451 return node.isConditional
1449 ? irBuilder.buildIfNotNullSend(target, nested(helper)) 1452 ? irBuilder.buildIfNotNullSend(target, nested(helper))
1450 : helper(); 1453 : helper();
1451 } 1454 }
1452 1455
1453 ir.Primitive buildLocalNoSuchSetter(Local local, ir.Primitive value) { 1456 ir.Primitive buildLocalNoSuchSetter(LocalElement local, ir.Primitive value) {
1454 Selector selector = new Selector.setter(local.name, null); 1457 Selector selector = new Selector.setter(
1458 new Name(local.name, local.library, isSetter: true));
1455 return buildStaticNoSuchMethod(selector, [value]); 1459 return buildStaticNoSuchMethod(selector, [value]);
1456 } 1460 }
1457 1461
1458 @override 1462 @override
1459 ir.Primitive handleLocalCompounds( 1463 ir.Primitive handleLocalCompounds(
1460 ast.SendSet node, 1464 ast.SendSet node,
1461 LocalElement local, 1465 LocalElement local,
1462 CompoundRhs rhs, 1466 CompoundRhs rhs,
1463 arg, 1467 arg,
1464 {bool isSetterValid}) { 1468 {bool isSetterValid}) {
(...skipping 11 matching lines...) Expand all
1476 if (isSetterValid) { 1480 if (isSetterValid) {
1477 irBuilder.buildLocalVariableSet(local, result); 1481 irBuilder.buildLocalVariableSet(local, result);
1478 } else { 1482 } else {
1479 return buildLocalNoSuchSetter(local, result); 1483 return buildLocalNoSuchSetter(local, result);
1480 } 1484 }
1481 }); 1485 });
1482 } 1486 }
1483 1487
1484 ir.Primitive buildStaticNoSuchGetter(Element element) { 1488 ir.Primitive buildStaticNoSuchGetter(Element element) {
1485 return buildStaticNoSuchMethod( 1489 return buildStaticNoSuchMethod(
1486 new Selector.getter(element.name, element.library), 1490 new Selector.getter(new Name(element.name, element.library)),
1487 const <ir.Primitive>[]); 1491 const <ir.Primitive>[]);
1488 } 1492 }
1489 1493
1490 ir.Primitive buildStaticNoSuchSetter(Element element, ir.Primitive value) { 1494 ir.Primitive buildStaticNoSuchSetter(Element element, ir.Primitive value) {
1491 return buildStaticNoSuchMethod( 1495 return buildStaticNoSuchMethod(
1492 new Selector.setter(element.name, element.library), 1496 new Selector.setter(new Name(element.name, element.library)),
1493 <ir.Primitive>[value]); 1497 <ir.Primitive>[value]);
1494 } 1498 }
1495 1499
1496 @override 1500 @override
1497 ir.Primitive handleStaticCompounds( 1501 ir.Primitive handleStaticCompounds(
1498 ast.SendSet node, 1502 ast.SendSet node,
1499 Element getter, 1503 Element getter,
1500 CompoundGetter getterKind, 1504 CompoundGetter getterKind,
1501 Element setter, 1505 Element setter,
1502 CompoundSetter setterKind, 1506 CompoundSetter setterKind,
(...skipping 25 matching lines...) Expand all
1528 case CompoundSetter.INVALID: 1532 case CompoundSetter.INVALID:
1529 // TODO(johnniwinther): Ensure [setter] is non null. 1533 // TODO(johnniwinther): Ensure [setter] is non null.
1530 return buildStaticNoSuchSetter( 1534 return buildStaticNoSuchSetter(
1531 setter != null ? setter : getter, result); 1535 setter != null ? setter : getter, result);
1532 } 1536 }
1533 }); 1537 });
1534 } 1538 }
1535 1539
1536 ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) { 1540 ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) {
1537 return buildInstanceNoSuchMethod( 1541 return buildInstanceNoSuchMethod(
1538 new Selector.getter(element.name, element.library), 1542 new Selector.getter(new Name(element.name, element.library)),
1539 mask, 1543 mask,
1540 const <ir.Primitive>[]); 1544 const <ir.Primitive>[]);
1541 } 1545 }
1542 1546
1543 ir.Primitive buildSuperNoSuchSetter(Element element, 1547 ir.Primitive buildSuperNoSuchSetter(Element element,
1544 TypeMask mask, 1548 TypeMask mask,
1545 ir.Primitive value) { 1549 ir.Primitive value) {
1546 return buildInstanceNoSuchMethod( 1550 return buildInstanceNoSuchMethod(
1547 new Selector.setter(element.name, element.library), 1551 new Selector.setter(new Name(element.name, element.library)),
1548 mask, 1552 mask,
1549 <ir.Primitive>[value]); 1553 <ir.Primitive>[value]);
1550 } 1554 }
1551 1555
1552 @override 1556 @override
1553 ir.Primitive handleSuperCompounds( 1557 ir.Primitive handleSuperCompounds(
1554 ast.SendSet node, 1558 ast.SendSet node,
1555 Element getter, 1559 Element getter,
1556 CompoundGetter getterKind, 1560 CompoundGetter getterKind,
1557 Element setter, 1561 Element setter,
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 } 1875 }
1872 1876
1873 @override 1877 @override
1874 ir.Primitive visitClassTypeLiteralSet( 1878 ir.Primitive visitClassTypeLiteralSet(
1875 ast.SendSet node, 1879 ast.SendSet node,
1876 TypeConstantExpression constant, 1880 TypeConstantExpression constant,
1877 ast.Node rhs, _) { 1881 ast.Node rhs, _) {
1878 InterfaceType type = constant.type; 1882 InterfaceType type = constant.type;
1879 ClassElement element = type.element; 1883 ClassElement element = type.element;
1880 return buildStaticNoSuchMethod( 1884 return buildStaticNoSuchMethod(
1881 new Selector.setter(element.name, element.library), [visit(rhs)]); 1885 new Selector.setter(element.memberName),
1886 [visit(rhs)]);
1882 } 1887 }
1883 1888
1884 @override 1889 @override
1885 ir.Primitive visitTypedefTypeLiteralSet( 1890 ir.Primitive visitTypedefTypeLiteralSet(
1886 ast.SendSet node, 1891 ast.SendSet node,
1887 TypeConstantExpression constant, 1892 TypeConstantExpression constant,
1888 ast.Node rhs, _) { 1893 ast.Node rhs, _) {
1889 TypedefType type = constant.type; 1894 TypedefType type = constant.type;
1890 TypedefElement element = type.element; 1895 TypedefElement element = type.element;
1891 return buildStaticNoSuchMethod( 1896 return buildStaticNoSuchMethod(
1892 new Selector.setter(element.name, element.library), [visit(rhs)]); 1897 new Selector.setter(element.memberName),
1898 [visit(rhs)]);
1893 } 1899 }
1894 1900
1895 @override 1901 @override
1896 ir.Primitive visitTypeVariableTypeLiteralSet( 1902 ir.Primitive visitTypeVariableTypeLiteralSet(
1897 ast.SendSet node, 1903 ast.SendSet node,
1898 TypeVariableElement element, 1904 TypeVariableElement element,
1899 ast.Node rhs, _) { 1905 ast.Node rhs, _) {
1900 return buildStaticNoSuchMethod( 1906 return buildStaticNoSuchMethod(
1901 new Selector.setter(element.name, element.library), [visit(rhs)]); 1907 new Selector.setter(element.memberName), [visit(rhs)]);
1902 } 1908 }
1903 1909
1904 @override 1910 @override
1905 ir.Primitive visitDynamicTypeLiteralSet( 1911 ir.Primitive visitDynamicTypeLiteralSet(
1906 ast.SendSet node, 1912 ast.SendSet node,
1907 ConstantExpression constant, 1913 ConstantExpression constant,
1908 ast.Node rhs, _) { 1914 ast.Node rhs, _) {
1909 return buildStaticNoSuchMethod( 1915 return buildStaticNoSuchMethod(
1910 new Selector.setter('dynamic', null), [visit(rhs)]); 1916 new Selector.setter(Names.dynamic_), [visit(rhs)]);
1911 } 1917 }
1912 1918
1913 @override 1919 @override
1914 ir.Primitive visitAbstractClassConstructorInvoke( 1920 ir.Primitive visitAbstractClassConstructorInvoke(
1915 ast.NewExpression node, 1921 ast.NewExpression node,
1916 ConstructorElement element, 1922 ConstructorElement element,
1917 InterfaceType type, 1923 InterfaceType type,
1918 ast.NodeList arguments, 1924 ast.NodeList arguments,
1919 CallStructure callStructure, _) { 1925 CallStructure callStructure, _) {
1920 return buildAbstractClassInstantiationError(element.enclosingClass); 1926 return buildAbstractClassInstantiationError(element.enclosingClass);
1921 } 1927 }
1922 1928
1923 @override 1929 @override
1924 ir.Primitive handleFinalStaticFieldSet( 1930 ir.Primitive handleFinalStaticFieldSet(
1925 ast.SendSet node, 1931 ast.SendSet node,
1926 FieldElement field, 1932 FieldElement field,
1927 ast.Node rhs, _) { 1933 ast.Node rhs, _) {
1928 // TODO(asgerf): Include class name somehow for static class members? 1934 // TODO(asgerf): Include class name somehow for static class members?
1929 return buildStaticNoSuchMethod( 1935 return buildStaticNoSuchMethod(
1930 new Selector.setter(field.name, field.library), 1936 new Selector.setter(field.memberName),
1931 [visit(rhs)]); 1937 [visit(rhs)]);
1932 } 1938 }
1933 1939
1934 @override 1940 @override
1935 ir.Primitive visitFinalSuperFieldSet( 1941 ir.Primitive visitFinalSuperFieldSet(
1936 ast.SendSet node, 1942 ast.SendSet node,
1937 FieldElement field, 1943 FieldElement field,
1938 ast.Node rhs, _) { 1944 ast.Node rhs, _) {
1939 return buildInstanceNoSuchMethod( 1945 return buildInstanceNoSuchMethod(
1940 new Selector.setter(field.name, field.library), 1946 new Selector.setter(field.memberName),
1941 elements.getTypeMask(node), 1947 elements.getTypeMask(node),
1942 [visit(rhs)]); 1948 [visit(rhs)]);
1943 } 1949 }
1944 1950
1945 @override 1951 @override
1946 ir.Primitive handleImmutableLocalSet( 1952 ir.Primitive handleImmutableLocalSet(
1947 ast.SendSet node, 1953 ast.SendSet node,
1948 LocalElement local, 1954 LocalElement local,
1949 ast.Node rhs, _) { 1955 ast.Node rhs, _) {
1950 return buildStaticNoSuchMethod( 1956 return buildStaticNoSuchMethod(
1951 new Selector.setter(local.name, null), 1957 new Selector.setter(new Name(local.name, local.library)),
1952 [visit(rhs)]); 1958 [visit(rhs)]);
1953 } 1959 }
1954 1960
1955 @override 1961 @override
1956 ir.Primitive handleStaticFunctionSet( 1962 ir.Primitive handleStaticFunctionSet(
1957 ast.Send node, 1963 ast.Send node,
1958 MethodElement function, 1964 MethodElement function,
1959 ast.Node rhs, 1965 ast.Node rhs,
1960 _) { 1966 _) {
1961 return buildStaticNoSuchMethod( 1967 return buildStaticNoSuchMethod(
1962 new Selector.setter(function.name, function.library), 1968 new Selector.setter(function.memberName),
1963 [visit(rhs)]); 1969 [visit(rhs)]);
1964 } 1970 }
1965 1971
1966 @override 1972 @override
1967 ir.Primitive handleStaticGetterSet( 1973 ir.Primitive handleStaticGetterSet(
1968 ast.SendSet node, 1974 ast.SendSet node,
1969 FunctionElement getter, 1975 GetterElement getter,
1970 ast.Node rhs, 1976 ast.Node rhs,
1971 _) { 1977 _) {
1972 return buildStaticNoSuchMethod( 1978 return buildStaticNoSuchMethod(
1973 new Selector.setter(getter.name, getter.library), 1979 new Selector.setter(getter.memberName),
1974 [visit(rhs)]); 1980 [visit(rhs)]);
1975 } 1981 }
1976 1982
1977 @override 1983 @override
1978 ir.Primitive handleStaticSetterGet( 1984 ir.Primitive handleStaticSetterGet(
1979 ast.Send node, 1985 ast.Send node,
1980 FunctionElement setter, 1986 SetterElement setter,
1981 _) { 1987 _) {
1982 return buildStaticNoSuchMethod( 1988 return buildStaticNoSuchMethod(
1983 new Selector.getter(setter.name, setter.library), 1989 new Selector.getter(setter.memberName),
1984 []); 1990 []);
1985 } 1991 }
1986 1992
1987 @override 1993 @override
1988 ir.Primitive handleStaticSetterInvoke( 1994 ir.Primitive handleStaticSetterInvoke(
1989 ast.Send node, 1995 ast.Send node,
1990 FunctionElement setter, 1996 SetterElement setter,
1991 ast.NodeList arguments, 1997 ast.NodeList arguments,
1992 CallStructure callStructure, _) { 1998 CallStructure callStructure, _) {
1993 // Translate as a method call. 1999 // Translate as a method call.
1994 List<ir.Primitive> args = arguments.nodes.mapToList(visit); 2000 List<ir.Primitive> args = arguments.nodes.mapToList(visit);
1995 Name name = new Name(setter.name, setter.library);
1996 return buildStaticNoSuchMethod( 2001 return buildStaticNoSuchMethod(
1997 new Selector(SelectorKind.CALL, name, callStructure), 2002 new Selector(SelectorKind.CALL, setter.memberName, callStructure),
1998 args); 2003 args);
1999 } 2004 }
2000 2005
2001 @override 2006 @override
2002 ir.Primitive visitSuperGetterSet( 2007 ir.Primitive visitSuperGetterSet(
2003 ast.SendSet node, 2008 ast.SendSet node,
2004 FunctionElement getter, 2009 GetterElement getter,
2005 ast.Node rhs, 2010 ast.Node rhs,
2006 _) { 2011 _) {
2007 return buildInstanceNoSuchMethod( 2012 return buildInstanceNoSuchMethod(
2008 new Selector.setter(getter.name, getter.library), 2013 new Selector.setter(getter.memberName),
2009 elements.getTypeMask(node), 2014 elements.getTypeMask(node),
2010 [visit(rhs)]); 2015 [visit(rhs)]);
2011 } 2016 }
2012 2017
2013 @override 2018 @override
2014 ir.Primitive visitSuperMethodSet( 2019 ir.Primitive visitSuperMethodSet(
2015 ast.Send node, 2020 ast.Send node,
2016 MethodElement method, 2021 MethodElement method,
2017 ast.Node rhs, 2022 ast.Node rhs,
2018 _) { 2023 _) {
2019 return buildInstanceNoSuchMethod( 2024 return buildInstanceNoSuchMethod(
2020 new Selector.setter(method.name, method.library), 2025 new Selector.setter(method.memberName),
2021 elements.getTypeMask(node), 2026 elements.getTypeMask(node),
2022 [visit(rhs)]); 2027 [visit(rhs)]);
2023 } 2028 }
2024 2029
2025 @override 2030 @override
2026 ir.Primitive visitSuperSetterGet( 2031 ir.Primitive visitSuperSetterGet(
2027 ast.Send node, 2032 ast.Send node,
2028 FunctionElement setter, _) { 2033 SetterElement setter, _) {
2029 return buildInstanceNoSuchMethod( 2034 return buildInstanceNoSuchMethod(
2030 new Selector.setter(setter.name, setter.library), 2035 new Selector.setter(setter.memberName),
2031 elements.getTypeMask(node), 2036 elements.getTypeMask(node),
2032 []); 2037 []);
2033 } 2038 }
2034 2039
2035 @override 2040 @override
2036 ir.Primitive visitSuperSetterInvoke( 2041 ir.Primitive visitSuperSetterInvoke(
2037 ast.Send node, 2042 ast.Send node,
2038 FunctionElement setter, 2043 SetterElement setter,
2039 ast.NodeList arguments, 2044 ast.NodeList arguments,
2040 CallStructure callStructure, _) { 2045 CallStructure callStructure, _) {
2041 List<ir.Primitive> args = 2046 List<ir.Primitive> args =
2042 translateDynamicArguments(arguments, callStructure); 2047 translateDynamicArguments(arguments, callStructure);
2043 Name name = new Name(setter.name, setter.library);
2044 return buildInstanceNoSuchMethod( 2048 return buildInstanceNoSuchMethod(
2045 new Selector(SelectorKind.CALL, name, callStructure), 2049 new Selector(SelectorKind.CALL, setter.memberName, callStructure),
2046 elements.getTypeMask(node), 2050 elements.getTypeMask(node),
2047 args); 2051 args);
2048 } 2052 }
2049 2053
2050 ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { 2054 ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) {
2051 try { 2055 try {
2052 return action(); 2056 return action();
2053 } catch(e) { 2057 } catch(e) {
2054 if (e == ABORT_IRNODE_BUILDER) { 2058 if (e == ABORT_IRNODE_BUILDER) {
2055 return null; 2059 return null;
(...skipping 1027 matching lines...) Expand 10 before | Expand all | Expand 10 after
3083 new CallStructure.unnamed(4), 3087 new CallStructure.unnamed(4),
3084 [receiver, name, argumentList, expectedArgumentNames]); 3088 [receiver, name, argumentList, expectedArgumentNames]);
3085 } 3089 }
3086 3090
3087 @override 3091 @override
3088 ir.Primitive buildInstanceNoSuchMethod(Selector selector, 3092 ir.Primitive buildInstanceNoSuchMethod(Selector selector,
3089 TypeMask mask, 3093 TypeMask mask,
3090 List<ir.Primitive> arguments) { 3094 List<ir.Primitive> arguments) {
3091 return irBuilder.buildDynamicInvocation( 3095 return irBuilder.buildDynamicInvocation(
3092 irBuilder.buildThis(), 3096 irBuilder.buildThis(),
3093 compiler.noSuchMethodSelector, 3097 Selectors.noSuchMethod_,
3094 mask, 3098 mask,
3095 [irBuilder.buildInvocationMirror(selector, arguments)]); 3099 [irBuilder.buildInvocationMirror(selector, arguments)]);
3096 } 3100 }
3097 3101
3098 @override 3102 @override
3099 ir.Primitive buildRuntimeError(String message) { 3103 ir.Primitive buildRuntimeError(String message) {
3100 return irBuilder.buildStaticFunctionInvocation( 3104 return irBuilder.buildStaticFunctionInvocation(
3101 backend.getThrowRuntimeError(), 3105 backend.getThrowRuntimeError(),
3102 new CallStructure.unnamed(1), 3106 new CallStructure.unnamed(1),
3103 [irBuilder.buildStringConstant(message)]); 3107 [irBuilder.buildStringConstant(message)]);
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
3364 if (compiler.backend.isForeign(function)) { 3368 if (compiler.backend.isForeign(function)) {
3365 return handleForeignCode(node, function, argumentList, callStructure); 3369 return handleForeignCode(node, function, argumentList, callStructure);
3366 } else { 3370 } else {
3367 return irBuilder.buildStaticFunctionInvocation(function, callStructure, 3371 return irBuilder.buildStaticFunctionInvocation(function, callStructure,
3368 translateStaticArguments(argumentList, function, callStructure), 3372 translateStaticArguments(argumentList, function, callStructure),
3369 sourceInformation: 3373 sourceInformation:
3370 sourceInformationBuilder.buildCall(node, node.selector)); 3374 sourceInformationBuilder.buildCall(node, node.selector));
3371 } 3375 }
3372 } 3376 }
3373 } 3377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698