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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/lazy_emitter/emitter.dart

Issue 2935663002: Remove Compiler.commonElements (Closed)
Patch Set: Remove Compiler._commonElements Created 3 years, 6 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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.js_emitter.lazy_emitter; 5 library dart2js.js_emitter.lazy_emitter;
6 6
7 import 'package:js_runtime/shared/embedded_names.dart' show JsBuiltin; 7 import 'package:js_runtime/shared/embedded_names.dart' show JsBuiltin;
8 8
9 import '../../common.dart'; 9 import '../../common.dart';
10 import '../../compiler.dart' show Compiler; 10 import '../../compiler.dart' show Compiler;
(...skipping 18 matching lines...) Expand all
29 @override 29 @override
30 Emitter createEmitter( 30 Emitter createEmitter(
31 CodeEmitterTask task, Namer namer, ClosedWorld closedWorld) { 31 CodeEmitterTask task, Namer namer, ClosedWorld closedWorld) {
32 return new Emitter( 32 return new Emitter(
33 task.compiler, namer, task.nativeEmitter, closedWorld, task); 33 task.compiler, namer, task.nativeEmitter, closedWorld, task);
34 } 34 }
35 } 35 }
36 36
37 class Emitter extends emitterTask.EmitterBase { 37 class Emitter extends emitterTask.EmitterBase {
38 final Compiler _compiler; 38 final Compiler _compiler;
39 final ClosedWorld _closedWorld;
39 final Namer namer; 40 final Namer namer;
40 final ModelEmitter _emitter; 41 final ModelEmitter _emitter;
41 42
42 JavaScriptBackend get _backend => _compiler.backend; 43 JavaScriptBackend get _backend => _compiler.backend;
43 44
44 Emitter(Compiler compiler, Namer namer, NativeEmitter nativeEmitter, 45 Emitter(this._compiler, this.namer, NativeEmitter nativeEmitter,
45 ClosedWorld closedWorld, CodeEmitterTask task) 46 this._closedWorld, CodeEmitterTask task)
46 : this._compiler = compiler, 47 : _emitter = new ModelEmitter(
47 this.namer = namer, 48 _compiler, namer, nativeEmitter, _closedWorld, task);
48 _emitter =
49 new ModelEmitter(compiler, namer, nativeEmitter, closedWorld, task);
50 49
51 DiagnosticReporter get reporter => _compiler.reporter; 50 DiagnosticReporter get reporter => _compiler.reporter;
52 51
53 @override 52 @override
54 int emitProgram(ProgramBuilder programBuilder) { 53 int emitProgram(ProgramBuilder programBuilder) {
55 Program program = programBuilder.buildProgram(); 54 Program program = programBuilder.buildProgram();
56 return _emitter.emitProgram(program); 55 return _emitter.emitProgram(program);
57 } 56 }
58 57
59 // TODO(floitsch): copied from full emitter. Adjust or share. 58 // TODO(floitsch): copied from full emitter. Adjust or share.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 return js.js('#.ensureResolved()', globalPropertyAccessForType(element)); 118 return js.js('#.ensureResolved()', globalPropertyAccessForType(element));
120 } 119 }
121 120
122 @override 121 @override
123 js.Template templateForBuiltin(JsBuiltin builtin) { 122 js.Template templateForBuiltin(JsBuiltin builtin) {
124 String typeNameProperty = ModelEmitter.typeNameProperty; 123 String typeNameProperty = ModelEmitter.typeNameProperty;
125 124
126 switch (builtin) { 125 switch (builtin) {
127 case JsBuiltin.dartObjectConstructor: 126 case JsBuiltin.dartObjectConstructor:
128 return js.js.expressionTemplateYielding( 127 return js.js.expressionTemplateYielding(
129 typeAccess(_compiler.commonElements.objectClass)); 128 typeAccess(_closedWorld.commonElements.objectClass));
130 129
131 case JsBuiltin.isCheckPropertyToJsConstructorName: 130 case JsBuiltin.isCheckPropertyToJsConstructorName:
132 int isPrefixLength = namer.operatorIsPrefix.length; 131 int isPrefixLength = namer.operatorIsPrefix.length;
133 return js.js.expressionTemplateFor('#.substring($isPrefixLength)'); 132 return js.js.expressionTemplateFor('#.substring($isPrefixLength)');
134 133
135 case JsBuiltin.isFunctionType: 134 case JsBuiltin.isFunctionType:
136 return _backend.rtiEncoder.templateForIsFunctionType; 135 return _backend.rtiEncoder.templateForIsFunctionType;
137 136
138 case JsBuiltin.rawRtiToJsConstructorName: 137 case JsBuiltin.rawRtiToJsConstructorName:
139 return js.js.expressionTemplateFor("#.$typeNameProperty"); 138 return js.js.expressionTemplateFor("#.$typeNameProperty");
(...skipping 26 matching lines...) Expand all
166 reporter.internalError( 165 reporter.internalError(
167 NO_LOCATION_SPANNABLE, "Unhandled Builtin: $builtin"); 166 NO_LOCATION_SPANNABLE, "Unhandled Builtin: $builtin");
168 return null; 167 return null;
169 } 168 }
170 } 169 }
171 170
172 @override 171 @override
173 // TODO(het): Generate this correctly 172 // TODO(het): Generate this correctly
174 int generatedSize(OutputUnit unit) => 0; 173 int generatedSize(OutputUnit unit) => 0;
175 } 174 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698