| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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.serialization_model_test; | 5 library dart2js.serialization_model_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 import 'package:async_helper/async_helper.dart'; | 9 import 'package:async_helper/async_helper.dart'; |
| 10 import 'package:expect/expect.dart'; | 10 import 'package:expect/expect.dart'; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 resolutionInputs: resolutionInputs, | 89 resolutionInputs: resolutionInputs, |
| 90 options: [Flags.analyzeOnly]); | 90 options: [Flags.analyzeOnly]); |
| 91 compilerDeserialized.resolution.retainCachesForTesting = true; | 91 compilerDeserialized.resolution.retainCachesForTesting = true; |
| 92 await compilerDeserialized.run(entryPoint); | 92 await compilerDeserialized.run(entryPoint); |
| 93 compilerDeserialized.closeResolution(); | 93 compilerDeserialized.closeResolution(); |
| 94 return compilerDeserialized; | 94 return compilerDeserialized; |
| 95 }); | 95 }); |
| 96 | 96 |
| 97 return measure(title, 'check models', () async { | 97 return measure(title, 'check models', () async { |
| 98 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose); | 98 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose); |
| 99 checkResolutionEnqueuers(compilerNormal.enqueuer.resolution, | 99 checkResolutionEnqueuers( |
| 100 compilerNormal.backend, |
| 101 compilerDeserialized.backend, |
| 102 compilerNormal.enqueuer.resolution, |
| 100 compilerDeserialized.enqueuer.resolution, | 103 compilerDeserialized.enqueuer.resolution, |
| 101 verbose: verbose); | 104 verbose: verbose); |
| 102 checkClosedWorlds( | 105 checkClosedWorlds( |
| 103 compilerNormal.resolutionWorldBuilder.closedWorldForTesting, | 106 compilerNormal.resolutionWorldBuilder.closedWorldForTesting, |
| 104 compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting, | 107 compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting, |
| 105 verbose: verbose); | 108 verbose: verbose); |
| 106 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); | 109 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); |
| 107 }); | 110 }); |
| 108 } | 111 } |
| 109 | 112 |
| 110 void checkResolutionEnqueuers( | 113 void checkResolutionEnqueuers( |
| 111 ResolutionEnqueuer enqueuer1, ResolutionEnqueuer enqueuer2, | 114 JavaScriptBackend backend1, |
| 115 JavaScriptBackend backend2, |
| 116 ResolutionEnqueuer enqueuer1, |
| 117 ResolutionEnqueuer enqueuer2, |
| 112 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): | 118 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): |
| 113 areTypesEquivalent, | 119 areTypesEquivalent, |
| 114 bool elementFilter(Element element), | 120 bool elementFilter(Element element), |
| 115 bool verbose: false}) { | 121 bool verbose: false}) { |
| 116 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, | 122 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, |
| 117 "Processed element mismatch", areElementsEquivalent, | 123 "Processed element mismatch", areElementsEquivalent, |
| 118 elementFilter: elementFilter, verbose: verbose); | 124 elementFilter: elementFilter, verbose: verbose); |
| 119 | 125 |
| 120 ResolutionWorldBuilderImpl worldBuilder1 = enqueuer1.worldBuilder; | 126 ResolutionWorldBuilderImpl worldBuilder1 = enqueuer1.worldBuilder; |
| 121 ResolutionWorldBuilderImpl worldBuilder2 = enqueuer2.worldBuilder; | 127 ResolutionWorldBuilderImpl worldBuilder2 = enqueuer2.worldBuilder; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 139 enqueuer1.worldBuilder.instantiatedTypes, | 145 enqueuer1.worldBuilder.instantiatedTypes, |
| 140 enqueuer2.worldBuilder.instantiatedTypes, | 146 enqueuer2.worldBuilder.instantiatedTypes, |
| 141 "Instantiated types mismatch", | 147 "Instantiated types mismatch", |
| 142 typeEquivalence, | 148 typeEquivalence, |
| 143 verbose: verbose); | 149 verbose: verbose); |
| 144 | 150 |
| 145 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, | 151 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, |
| 146 "Is-check mismatch", typeEquivalence, | 152 "Is-check mismatch", typeEquivalence, |
| 147 verbose: verbose); | 153 verbose: verbose); |
| 148 | 154 |
| 149 JavaScriptBackend backend1 = enqueuer1.backend; | |
| 150 JavaScriptBackend backend2 = enqueuer2.backend; | |
| 151 Expect.equals(backend1.hasInvokeOnSupport, backend2.hasInvokeOnSupport, | 155 Expect.equals(backend1.hasInvokeOnSupport, backend2.hasInvokeOnSupport, |
| 152 "JavaScriptBackend.hasInvokeOnSupport mismatch"); | 156 "JavaScriptBackend.hasInvokeOnSupport mismatch"); |
| 153 Expect.equals( | 157 Expect.equals( |
| 154 backend1.hasFunctionApplySupport, | 158 backend1.hasFunctionApplySupport, |
| 155 backend2.hasFunctionApplySupport, | 159 backend2.hasFunctionApplySupport, |
| 156 "JavaScriptBackend.hasFunctionApplySupport mismatch"); | 160 "JavaScriptBackend.hasFunctionApplySupport mismatch"); |
| 157 Expect.equals(backend1.hasRuntimeTypeSupport, backend2.hasRuntimeTypeSupport, | 161 Expect.equals(backend1.hasRuntimeTypeSupport, backend2.hasRuntimeTypeSupport, |
| 158 "JavaScriptBackend.hasRuntimeTypeSupport mismatch"); | 162 "JavaScriptBackend.hasRuntimeTypeSupport mismatch"); |
| 159 Expect.equals(backend1.hasIsolateSupport, backend2.hasIsolateSupport, | 163 Expect.equals(backend1.hasIsolateSupport, backend2.hasIsolateSupport, |
| 160 "JavaScriptBackend.hasIsolateSupport mismatch"); | 164 "JavaScriptBackend.hasIsolateSupport mismatch"); |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence))); | 445 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence))); |
| 442 return true; | 446 return true; |
| 443 } | 447 } |
| 444 | 448 |
| 445 bool areInstancesEquivalent(Instance instance1, Instance instance2, | 449 bool areInstancesEquivalent(Instance instance1, Instance instance2, |
| 446 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { | 450 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { |
| 447 return typeEquivalence(instance1.type, instance2.type) && | 451 return typeEquivalence(instance1.type, instance2.type) && |
| 448 instance1.kind == instance2.kind && | 452 instance1.kind == instance2.kind && |
| 449 instance1.isRedirection == instance2.isRedirection; | 453 instance1.isRedirection == instance2.isRedirection; |
| 450 } | 454 } |
| OLD | NEW |