Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 typedef void Recompile(Element element); | 5 typedef void Recompile(Element element); |
| 6 | 6 |
| 7 class ReturnInfo { | 7 class ReturnInfo { |
| 8 HType returnType; | 8 HType returnType; |
| 9 List<Element> compiledFunctions; | 9 List<Element> compiledFunctions; |
| 10 | 10 |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 423 | 423 |
| 424 final Map<Element, Map<Element, HType>> fieldInitializers; | 424 final Map<Element, Map<Element, HType>> fieldInitializers; |
| 425 final Map<Element, Map<Element, HType>> fieldConstructorSetters; | 425 final Map<Element, Map<Element, HType>> fieldConstructorSetters; |
| 426 final Map<Element, Map<Element, HType>> fieldSettersType; | 426 final Map<Element, Map<Element, HType>> fieldSettersType; |
| 427 | 427 |
| 428 final Map<Element, ReturnInfo> returnInfo; | 428 final Map<Element, ReturnInfo> returnInfo; |
| 429 | 429 |
| 430 final List<Element> invalidateAfterCodegen; | 430 final List<Element> invalidateAfterCodegen; |
| 431 ArgumentTypesRegistry argumentTypes; | 431 ArgumentTypesRegistry argumentTypes; |
| 432 | 432 |
| 433 Interceptors interceptors; | |
|
kasperl
2012/09/14 09:04:41
final?
karlklose
2012/10/08 13:15:35
Done.
| |
| 434 | |
| 433 List<CompilerTask> get tasks { | 435 List<CompilerTask> get tasks { |
| 434 return <CompilerTask>[builder, optimizer, generator, emitter]; | 436 return <CompilerTask>[builder, optimizer, generator, emitter]; |
| 435 } | 437 } |
| 436 | 438 |
| 437 JavaScriptBackend(Compiler compiler, bool generateSourceMap) | 439 JavaScriptBackend(Compiler compiler, bool generateSourceMap) |
| 438 : fieldInitializers = new Map<Element, Map<Element, HType>>(), | 440 : fieldInitializers = new Map<Element, Map<Element, HType>>(), |
| 439 fieldConstructorSetters = new Map<Element, Map<Element, HType>>(), | 441 fieldConstructorSetters = new Map<Element, Map<Element, HType>>(), |
| 440 fieldSettersType = new Map<Element, Map<Element, HType>>(), | 442 fieldSettersType = new Map<Element, Map<Element, HType>>(), |
| 441 namer = new Namer(compiler), | 443 namer = new Namer(compiler), |
| 442 returnInfo = new Map<Element, ReturnInfo>(), | 444 returnInfo = new Map<Element, ReturnInfo>(), |
| 443 invalidateAfterCodegen = new List<Element>(), | 445 invalidateAfterCodegen = new List<Element>(), |
| 446 interceptors = new Interceptors(compiler), | |
| 444 super(compiler, constantSystem: JAVA_SCRIPT_CONSTANT_SYSTEM) { | 447 super(compiler, constantSystem: JAVA_SCRIPT_CONSTANT_SYSTEM) { |
| 445 emitter = new CodeEmitterTask(compiler, namer, generateSourceMap); | 448 emitter = new CodeEmitterTask(compiler, namer, generateSourceMap); |
| 446 builder = new SsaBuilderTask(this); | 449 builder = new SsaBuilderTask(this); |
| 447 optimizer = new SsaOptimizerTask(this); | 450 optimizer = new SsaOptimizerTask(this); |
| 448 generator = new SsaCodeGeneratorTask(this); | 451 generator = new SsaCodeGeneratorTask(this); |
| 449 argumentTypes = new ArgumentTypesRegistry(this); | 452 argumentTypes = new ArgumentTypesRegistry(this); |
| 450 } | 453 } |
| 451 | 454 |
| 452 Element get cyclicThrowHelper { | 455 Element get cyclicThrowHelper { |
| 453 return compiler.findHelper(const SourceString("throwCyclicInit")); | 456 return compiler.findHelper(const SourceString("throwCyclicInit")); |
| 454 } | 457 } |
| 455 | 458 |
| 456 JavaScriptItemCompilationContext createItemCompilationContext() { | 459 JavaScriptItemCompilationContext createItemCompilationContext() { |
| 457 return new JavaScriptItemCompilationContext(); | 460 return new JavaScriptItemCompilationContext(); |
| 458 } | 461 } |
| 459 | 462 |
| 463 void onUseSelector(Selector selector, Enqueuer world) { | |
| 464 Element interceptor = interceptors.getStaticInterceptorBySelector(selector); | |
| 465 if (interceptor !== null) { | |
| 466 world.registerStaticUse(interceptor); | |
| 467 } | |
| 468 } | |
| 469 | |
| 460 void enqueueHelpers(Enqueuer world) { | 470 void enqueueHelpers(Enqueuer world) { |
| 461 enqueueAllTopLevelFunctions(compiler.jsHelperLibrary, world); | 471 enqueueAllTopLevelFunctions(compiler.jsHelperLibrary, world); |
| 462 | 472 |
| 463 jsIndexingBehaviorInterface = | 473 jsIndexingBehaviorInterface = |
| 464 compiler.findHelper(const SourceString('JavaScriptIndexingBehavior')); | 474 compiler.findHelper(const SourceString('JavaScriptIndexingBehavior')); |
| 465 if (jsIndexingBehaviorInterface != null) { | 475 if (jsIndexingBehaviorInterface != null) { |
| 466 world.registerIsCheck(jsIndexingBehaviorInterface.computeType(compiler)); | 476 world.registerIsCheck(jsIndexingBehaviorInterface.computeType(compiler)); |
| 467 } | 477 } |
| 468 | 478 |
| 469 for (var helper in [const SourceString('Closure'), | 479 for (var helper in [const SourceString('Closure'), |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 738 ? const SourceString('listSuperNativeTypeCheck') | 748 ? const SourceString('listSuperNativeTypeCheck') |
| 739 : const SourceString('listSuperTypeCheck'); | 749 : const SourceString('listSuperTypeCheck'); |
| 740 } else { | 750 } else { |
| 741 return nativeCheck | 751 return nativeCheck |
| 742 ? const SourceString('callTypeCheck') | 752 ? const SourceString('callTypeCheck') |
| 743 : const SourceString('propertyTypeCheck'); | 753 : const SourceString('propertyTypeCheck'); |
| 744 } | 754 } |
| 745 } | 755 } |
| 746 } | 756 } |
| 747 } | 757 } |
| OLD | NEW |