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

Side by Side Diff: pkg/compiler/lib/src/kernel/element_map_impl.dart

Issue 2978613002: Convert data objects eagerly from K to J (Closed)
Patch Set: Created 3 years, 5 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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.kernel.element_map; 5 library dart2js.kernel.element_map;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common/names.dart' show Identifiers; 10 import '../common/names.dart' show Identifiers;
(...skipping 1674 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 1685
1686 @override 1686 @override
1687 bool isJsInteropMember(MemberEntity element) { 1687 bool isJsInteropMember(MemberEntity element) {
1688 // TODO(redemption): Compute this. 1688 // TODO(redemption): Compute this.
1689 return false; 1689 return false;
1690 } 1690 }
1691 } 1691 }
1692 1692
1693 class JsToFrontendMapImpl extends JsToFrontendMapBase 1693 class JsToFrontendMapImpl extends JsToFrontendMapBase
1694 implements JsToFrontendMap { 1694 implements JsToFrontendMap {
1695 final KernelToElementMapBase _frontend;
1696 final KernelToElementMapBase _backend; 1695 final KernelToElementMapBase _backend;
1697 1696
1698 JsToFrontendMapImpl(this._frontend, this._backend); 1697 JsToFrontendMapImpl(this._backend);
1699 1698
1700 LibraryEntity toBackendLibrary(covariant IndexedLibrary library) { 1699 LibraryEntity toBackendLibrary(covariant IndexedLibrary library) {
1701 return _backend._libraryList[library.libraryIndex]; 1700 return _backend._libraryList[library.libraryIndex];
1702 } 1701 }
1703 1702
1704 LibraryEntity toFrontendLibrary(covariant IndexedLibrary library) {
1705 return _frontend._libraryList[library.libraryIndex];
1706 }
1707
1708 ClassEntity toBackendClass(covariant IndexedClass cls) { 1703 ClassEntity toBackendClass(covariant IndexedClass cls) {
1709 return _backend._classList[cls.classIndex]; 1704 return _backend._classList[cls.classIndex];
1710 } 1705 }
1711 1706
1712 ClassEntity toFrontendClass(covariant IndexedClass cls) {
1713 return _frontend._classList[cls.classIndex];
1714 }
1715
1716 MemberEntity toBackendMember(covariant IndexedMember member) { 1707 MemberEntity toBackendMember(covariant IndexedMember member) {
1717 return _backend._memberList[member.memberIndex]; 1708 return _backend._memberList[member.memberIndex];
1718 } 1709 }
1719 1710
1720 MemberEntity toFrontendMember(covariant IndexedMember member) {
1721 return _frontend._memberList[member.memberIndex];
1722 }
1723
1724 TypeVariableEntity toBackendTypeVariable( 1711 TypeVariableEntity toBackendTypeVariable(
1725 covariant IndexedTypeVariable typeVariable) { 1712 covariant IndexedTypeVariable typeVariable) {
1726 return _backend._typeVariableList[typeVariable.typeVariableIndex]; 1713 return _backend._typeVariableList[typeVariable.typeVariableIndex];
1727 } 1714 }
1728
1729 TypeVariableEntity toFrontendTypeVariable(
1730 covariant IndexedTypeVariable typeVariable) {
1731 return _frontend._typeVariableList[typeVariable.typeVariableIndex];
1732 }
1733 } 1715 }
1734 1716
1735 class JsKernelToElementMap extends KernelToElementMapBase 1717 class JsKernelToElementMap extends KernelToElementMapBase
1736 with 1718 with
1737 KernelToElementMapForBuildingMixin, 1719 KernelToElementMapForBuildingMixin,
1738 JsElementCreatorMixin, 1720 JsElementCreatorMixin,
1739 // TODO(johnniwinther): Avoid mixin in [ElementCreatorMixin]. The 1721 // TODO(johnniwinther): Avoid mixin in [ElementCreatorMixin]. The
1740 // codegen world should be a strict subset of the resolution world and 1722 // codegen world should be a strict subset of the resolution world and
1741 // creating elements for IR nodes should therefore not be needed. 1723 // creating elements for IR nodes should therefore not be needed.
1742 // Currently some are created purely for testing (like 1724 // Currently some are created purely for testing (like
1743 // `element == commonElements.foo`, where 'foo' might not be live). 1725 // `element == commonElements.foo`, where 'foo' might not be live).
1744 // Others are created because we do a 1726 // Others are created because we do a
1745 // `elementEnvironment.forEachLibraryMember(...)` call on each emitted 1727 // `elementEnvironment.forEachLibraryMember(...)` call on each emitted
1746 // library. 1728 // library.
1747 ElementCreatorMixin 1729 ElementCreatorMixin
1748 implements 1730 implements
1749 KernelToWorldBuilder { 1731 KernelToWorldBuilder {
1750 JsToFrontendMap _jsToFrontendMap;
1751
1752 JsKernelToElementMap(DiagnosticReporter reporter, Environment environment, 1732 JsKernelToElementMap(DiagnosticReporter reporter, Environment environment,
1753 KernelToElementMapForImpactImpl _elementMap) 1733 KernelToElementMapForImpactImpl _elementMap)
1754 : super(reporter, environment) { 1734 : super(reporter, environment) {
1755 _jsToFrontendMap = new JsToFrontendMapImpl(_elementMap, this);
1756 _env = _elementMap._env; 1735 _env = _elementMap._env;
1757 for (int libraryIndex = 0; 1736 for (int libraryIndex = 0;
1758 libraryIndex < _elementMap._libraryEnvs.length; 1737 libraryIndex < _elementMap._libraryEnvs.length;
1759 libraryIndex++) { 1738 libraryIndex++) {
1760 LibraryEnv env = _elementMap._libraryEnvs[libraryIndex]; 1739 LibraryEnv env = _elementMap._libraryEnvs[libraryIndex];
1761 LibraryEntity oldLibrary = _elementMap._libraryList[libraryIndex]; 1740 LibraryEntity oldLibrary = _elementMap._libraryList[libraryIndex];
1762 LibraryEntity newLibrary = convertLibrary(oldLibrary); 1741 LibraryEntity newLibrary = convertLibrary(oldLibrary);
1763 _libraryMap[env.library] = newLibrary; 1742 _libraryMap[env.library] = newLibrary;
1764 _libraryList.add(newLibrary); 1743 _libraryList.add(newLibrary);
1765 _libraryEnvs.add(env); 1744 _libraryEnvs.add(env);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1820 1799
1821 @override 1800 @override
1822 bool checkFamily(Entity entity) { 1801 bool checkFamily(Entity entity) {
1823 assert( 1802 assert(
1824 '$entity'.startsWith(jsElementPrefix), 1803 '$entity'.startsWith(jsElementPrefix),
1825 failedAt(entity, 1804 failedAt(entity,
1826 "Unexpected entity $entity, expected family $jsElementPrefix.")); 1805 "Unexpected entity $entity, expected family $jsElementPrefix."));
1827 return true; 1806 return true;
1828 } 1807 }
1829 1808
1830 JsToFrontendMap get jsToFrontendMap => _jsToFrontendMap;
1831
1832 @override 1809 @override
1833 Spannable getSpannable(MemberEntity member, ir.Node node) { 1810 Spannable getSpannable(MemberEntity member, ir.Node node) {
1834 return _getSpannable(member, node); 1811 return _getSpannable(member, node);
1835 } 1812 }
1836 1813
1837 Iterable<LibraryEntity> get _libraries { 1814 Iterable<LibraryEntity> get _libraries {
1838 return _libraryMap.values; 1815 return _libraryMap.values;
1839 } 1816 }
1840 1817
1841 @override 1818 @override
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 if (data.constructorBody != null) { 1921 if (data.constructorBody != null) {
1945 f(data.constructorBody); 1922 f(data.constructorBody);
1946 } 1923 }
1947 }); 1924 });
1948 } 1925 }
1949 1926
1950 String getDeferredUri(ir.LibraryDependency node) { 1927 String getDeferredUri(ir.LibraryDependency node) {
1951 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri'); 1928 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri');
1952 } 1929 }
1953 } 1930 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_model/js_strategy.dart ('k') | pkg/compiler/lib/src/native/behavior.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698