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

Side by Side Diff: pkg/compiler/lib/src/serialization/equivalence.dart

Issue 1967073002: Check closure data for serialization (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 7 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 /// Functions for asserting equivalence across serialization. 5 /// Functions for asserting equivalence across serialization.
6 6
7 library dart2js.serialization.equivalence; 7 library dart2js.serialization.equivalence;
8 8
9 import '../closure.dart';
9 import '../common.dart'; 10 import '../common.dart';
10 import '../common/resolution.dart'; 11 import '../common/resolution.dart';
11 import '../constants/expressions.dart'; 12 import '../constants/expressions.dart';
12 import '../dart_types.dart'; 13 import '../dart_types.dart';
13 import '../elements/elements.dart'; 14 import '../elements/elements.dart';
14 import '../elements/visitor.dart'; 15 import '../elements/visitor.dart';
15 import '../js_backend/backend_serialization.dart' 16 import '../js_backend/backend_serialization.dart'
16 show JavaScriptBackendSerializer; 17 show JavaScriptBackendSerializer;
17 import '../native/native.dart' show NativeBehavior; 18 import '../native/native.dart' show NativeBehavior;
18 import '../resolution/access_semantics.dart'; 19 import '../resolution/access_semantics.dart';
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 return visit(element1.library, element2.library); 399 return visit(element1.library, element2.library);
399 } 400 }
400 } 401 }
401 402
402 @override 403 @override
403 bool visitFieldElement(FieldElement element1, FieldElement element2) { 404 bool visitFieldElement(FieldElement element1, FieldElement element2) {
404 return checkMembers(element1, element2); 405 return checkMembers(element1, element2);
405 } 406 }
406 407
407 @override 408 @override
409 bool visitBoxFieldElement(
410 BoxFieldElement element1, BoxFieldElement element2) {
411 return element1.box.name == element2.box.name &&
412 visit(element1.box.executableContext, element2.box.executableContext) &&
413 visit(element1.variableElement, element2.variableElement);
414 }
415
416 @override
408 bool visitConstructorElement( 417 bool visitConstructorElement(
409 ConstructorElement element1, ConstructorElement element2) { 418 ConstructorElement element1, ConstructorElement element2) {
410 return checkMembers(element1, element2); 419 return checkMembers(element1, element2);
411 } 420 }
412 421
413 @override 422 @override
414 bool visitMethodElement(MethodElement element1, MethodElement element2) { 423 bool visitMethodElement(MethodElement element1, MethodElement element2) {
415 return checkMembers(element1, element2); 424 return checkMembers(element1, element2);
416 } 425 }
417 426
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 resolvedAst1.node.accept(indices1); 824 resolvedAst1.node.accept(indices1);
816 AstIndexComputer indices2 = new AstIndexComputer(); 825 AstIndexComputer indices2 = new AstIndexComputer();
817 resolvedAst2.node.accept(indices2); 826 resolvedAst2.node.accept(indices2);
818 827
819 TreeElements elements1 = resolvedAst1.elements; 828 TreeElements elements1 = resolvedAst1.elements;
820 TreeElements elements2 = resolvedAst2.elements; 829 TreeElements elements2 = resolvedAst2.elements;
821 830
822 TreeElementsEquivalenceVisitor visitor = new TreeElementsEquivalenceVisitor( 831 TreeElementsEquivalenceVisitor visitor = new TreeElementsEquivalenceVisitor(
823 indices1, indices2, elements1, elements2, strategy); 832 indices1, indices2, elements1, elements2, strategy);
824 resolvedAst1.node.accept(visitor); 833 resolvedAst1.node.accept(visitor);
825 return visitor.success; 834 if (visitor.success) {
835 return strategy.test(elements1, elements2, 'containsTryStatement',
836 elements1.containsTryStatement, elements2.containsTryStatement);
837 }
838 return false;
826 } 839 }
827 840
828 /// Visitor that checks the equivalence of [TreeElements] data. 841 /// Visitor that checks the equivalence of [TreeElements] data.
829 class TreeElementsEquivalenceVisitor extends Visitor { 842 class TreeElementsEquivalenceVisitor extends Visitor {
830 final TestStrategy strategy; 843 final TestStrategy strategy;
831 final AstIndexComputer indices1; 844 final AstIndexComputer indices1;
832 final AstIndexComputer indices2; 845 final AstIndexComputer indices2;
833 final TreeElements elements1; 846 final TreeElements elements1;
834 final TreeElements elements2; 847 final TreeElements elements2;
835 bool success = true; 848 bool success = true;
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after
1787 @override 1800 @override
1788 bool visitStatement(Statement node1, Statement node2) { 1801 bool visitStatement(Statement node1, Statement node2) {
1789 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); 1802 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2');
1790 } 1803 }
1791 1804
1792 @override 1805 @override
1793 bool visitStringNode(StringNode node1, StringNode node2) { 1806 bool visitStringNode(StringNode node1, StringNode node2) {
1794 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); 1807 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2');
1795 } 1808 }
1796 } 1809 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/serialization/keys.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698