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

Side by Side Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 1939703002: Don't crash on deserialized type inference. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments + minor fix. 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 part of js_backend; 5 part of js_backend;
6 6
7 const VERBOSE_OPTIMIZER_HINTS = false; 7 const VERBOSE_OPTIMIZER_HINTS = false;
8 8
9 class JavaScriptItemCompilationContext extends ItemCompilationContext { 9 class JavaScriptItemCompilationContext extends ItemCompilationContext {
10 final Set<HInstruction> boundsChecked = new Set<HInstruction>(); 10 final Set<HInstruction> boundsChecked = new Set<HInstruction>();
(...skipping 2489 matching lines...) Expand 10 before | Expand all | Expand 10 after
2500 JSFrontendAccess(this.compiler); 2500 JSFrontendAccess(this.compiler);
2501 2501
2502 Resolution get resolution => compiler.resolution; 2502 Resolution get resolution => compiler.resolution;
2503 2503
2504 @override 2504 @override
2505 ResolutionImpact getResolutionImpact(Element element) { 2505 ResolutionImpact getResolutionImpact(Element element) {
2506 return resolution.getResolutionImpact(element); 2506 return resolution.getResolutionImpact(element);
2507 } 2507 }
2508 2508
2509 @override 2509 @override
2510 bool hasResolvedAst(Element element) { 2510 bool hasResolvedAst(ExecutableElement element) {
2511 if (element is SynthesizedCallMethodElementX) { 2511 if (element is SynthesizedCallMethodElementX) {
2512 return true; 2512 return true;
2513 } else if (element is ConstructorBodyElementX) { 2513 } else if (element is ConstructorBodyElementX) {
2514 return true; 2514 return true;
2515 } else if (element is FieldElementX) { 2515 } else if (element is FieldElementX) {
2516 return true; 2516 return true;
2517 } else if (element is DeferredLoaderGetterElementX) {
2518 return true;
2517 } else { 2519 } else {
2518 return resolution.hasResolvedAst(element); 2520 return resolution.hasResolvedAst(element);
2519 } 2521 }
2520 } 2522 }
2521 2523
2522 @override 2524 @override
2523 ResolvedAst getResolvedAst(Element element) { 2525 ResolvedAst getResolvedAst(ExecutableElement element) {
2524 if (element is SynthesizedCallMethodElementX) { 2526 if (element is SynthesizedCallMethodElementX) {
2525 return element.resolvedAst; 2527 return element.resolvedAst;
2526 } else if (element is ConstructorBodyElementX) { 2528 } else if (element is ConstructorBodyElementX) {
2527 return element.resolvedAst; 2529 return element.resolvedAst;
2530 } else if (element is DeferredLoaderGetterElementX) {
2531 return element.resolvedAst;
2528 } else if (element is FieldElementX) { 2532 } else if (element is FieldElementX) {
2529 // TODO(johnniwinther): Find a good invariant for resolution of fields. 2533 // TODO(johnniwinther): Find a good invariant for resolution of fields.
2530 // Currently some but not all are resolved (maybe it has to do with 2534 // Currently some but not all are resolved (maybe it has to do with
2531 // initializers?) 2535 // initializers?)
2532 return element.resolvedAst; 2536 return element.resolvedAst;
2533 } else { 2537 } else {
2534 assert(invariant(element, resolution.hasResolvedAst(element.declaration), 2538 assert(invariant(element, resolution.hasResolvedAst(element.declaration),
2535 message: 'No ResolvedAst for $element')); 2539 message: 'No ResolvedAst for $element'));
2536 return resolution.getResolvedAst(element.declaration); 2540 return resolution.getResolvedAst(element.declaration);
2537 } 2541 }
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
3039 3043
3040 @override 3044 @override
3041 void onImpactUsed(ImpactUseCase impactUse) { 3045 void onImpactUsed(ImpactUseCase impactUse) {
3042 if (impactUse == DeferredLoadTask.IMPACT_USE && !supportSerialization) { 3046 if (impactUse == DeferredLoadTask.IMPACT_USE && !supportSerialization) {
3043 // TODO(johnniwinther): Allow emptying when serialization has been 3047 // TODO(johnniwinther): Allow emptying when serialization has been
3044 // performed. 3048 // performed.
3045 resolution.emptyCache(); 3049 resolution.emptyCache();
3046 } 3050 }
3047 } 3051 }
3048 } 3052 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart ('k') | pkg/compiler/lib/src/js_backend/js_backend.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698