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

Side by Side Diff: lib/compiler/implementation/js_backend/backend.dart

Issue 10917254: Move registering of interceptors to the JsBackend. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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 | Annotate | Revision Log
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 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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698