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

Unified Diff: pkg/compiler/lib/src/serialization/equivalence.dart

Issue 1896843002: Store and serialize NativeBehavior in TreeElements. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/resolution/tree_elements.dart ('k') | pkg/compiler/lib/src/serialization/keys.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/serialization/equivalence.dart
diff --git a/pkg/compiler/lib/src/serialization/equivalence.dart b/pkg/compiler/lib/src/serialization/equivalence.dart
index e40d5a6346b32d9d404a025f08d5d77429fd881c..686ddace2942891ce8275be382daed4f87c61773 100644
--- a/pkg/compiler/lib/src/serialization/equivalence.dart
+++ b/pkg/compiler/lib/src/serialization/equivalence.dart
@@ -11,6 +11,9 @@ import '../constants/expressions.dart';
import '../dart_types.dart';
import '../elements/elements.dart';
import '../elements/visitor.dart';
+import '../js_backend/backend_serialization.dart'
+ show JavaScriptBackendSerializer;
+import '../native/native.dart' show NativeBehavior;
import '../resolution/access_semantics.dart';
import '../resolution/send_structure.dart';
import '../resolution/tree_elements.dart';
@@ -828,6 +831,49 @@ class TreeElementsEquivalenceVisitor extends Visitor {
a, b, 'isContinueTarget', a.isContinueTarget, b.isContinueTarget);
}
+ bool testNativeData(Node node1, Node node2, String property, a, b) {
+ if (identical(a, b)) return true;
+ if (a == null || b == null) return false;
+ if (a is NativeBehavior && b is NativeBehavior) {
+ return strategy.test(a, b, 'codeTemplateText', a.codeTemplateText,
+ b.codeTemplateText) &&
+ strategy.test(a, b, 'isAllocation', a.isAllocation, b.isAllocation) &&
+ strategy.test(a, b, 'sideEffects', a.sideEffects, b.sideEffects) &&
+ strategy.test(
+ a, b, 'throwBehavior', a.throwBehavior, b.throwBehavior) &&
+ strategy.testTypeLists(
+ a,
+ b,
+ 'dartTypesReturned',
+ JavaScriptBackendSerializer.filterDartTypes(a.typesReturned),
+ JavaScriptBackendSerializer.filterDartTypes(b.typesReturned)) &&
+ strategy.testLists(
+ a,
+ b,
+ 'specialTypesReturned',
+ JavaScriptBackendSerializer.filterSpecialTypes(a.typesReturned),
+ JavaScriptBackendSerializer
+ .filterSpecialTypes(b.typesReturned)) &&
+ strategy.testTypeLists(
+ a,
+ b,
+ 'dartTypesInstantiated',
+ JavaScriptBackendSerializer.filterDartTypes(a.typesInstantiated),
+ JavaScriptBackendSerializer
+ .filterDartTypes(b.typesInstantiated)) &&
+ strategy.testLists(
+ a,
+ b,
+ 'specialTypesInstantiated',
+ JavaScriptBackendSerializer
+ .filterSpecialTypes(a.typesInstantiated),
+ JavaScriptBackendSerializer
+ .filterSpecialTypes(b.typesInstantiated)) &&
+ strategy.test(a, b, 'useGvn', a.useGvn, b.useGvn);
+ }
+ return true;
+ }
+
visitNode(Node node1) {
if (!success) return;
int index = indices1.nodeIndices[node1];
@@ -852,7 +898,9 @@ class TreeElementsEquivalenceVisitor extends Visitor {
node2,
'getTargetDefinition($index)',
elements1.getTargetDefinition(node1),
- elements2.getTargetDefinition(node2));
+ elements2.getTargetDefinition(node2)) &&
+ testNativeData(node1, node2, 'getNativeData($index)',
+ elements1.getNativeData(node1), elements2.getNativeData(node2));
node1.visitChildren(this);
}
« no previous file with comments | « pkg/compiler/lib/src/resolution/tree_elements.dart ('k') | pkg/compiler/lib/src/serialization/keys.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698