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

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

Issue 2872613003: Pass data objects directly to NativeEmitter (Closed)
Patch Set: Cleanup Created 3 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) 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;
11 import '../../constants/values.dart' show ConstantValue; 11 import '../../constants/values.dart' show ConstantValue;
12 import '../../deferred_load.dart' show OutputUnit; 12 import '../../deferred_load.dart' show OutputUnit;
13 import '../../elements/elements.dart' 13 import '../../elements/elements.dart'
14 show ClassElement, Element, FieldElement, MethodElement; 14 show ClassElement, Element, FieldElement, MethodElement;
15 import '../../elements/entities.dart'; 15 import '../../elements/entities.dart';
16 import '../../js/js.dart' as js; 16 import '../../js/js.dart' as js;
17 import '../../js_backend/js_backend.dart' show JavaScriptBackend, Namer; 17 import '../../js_backend/js_backend.dart' show JavaScriptBackend, Namer;
18 import '../../js_backend/interceptor_data.dart' show InterceptorData;
18 import '../../world.dart' show ClosedWorld; 19 import '../../world.dart' show ClosedWorld;
19 import '../js_emitter.dart' show CodeEmitterTask, NativeEmitter; 20 import '../js_emitter.dart' show CodeEmitterTask, NativeEmitter;
20 import '../js_emitter.dart' as emitterTask show Emitter, EmitterFactory; 21 import '../js_emitter.dart' as emitterTask show Emitter, EmitterFactory;
21 import '../model.dart'; 22 import '../model.dart';
22 import '../program_builder/program_builder.dart' show ProgramBuilder; 23 import '../program_builder/program_builder.dart' show ProgramBuilder;
23 import 'model_emitter.dart'; 24 import 'model_emitter.dart';
24 25
25 class EmitterFactory implements emitterTask.EmitterFactory { 26 class EmitterFactory implements emitterTask.EmitterFactory {
26 @override 27 @override
27 bool get supportsReflection => false; 28 bool get supportsReflection => false;
28 29
29 @override 30 @override
30 Emitter createEmitter( 31 Emitter createEmitter(
31 CodeEmitterTask task, Namer namer, ClosedWorld closedWorld) { 32 CodeEmitterTask task, Namer namer, ClosedWorld closedWorld) {
32 return new Emitter(task.compiler, namer, task.nativeEmitter); 33 return new Emitter(
34 task.compiler, namer, task.nativeEmitter, closedWorld.interceptorData);
33 } 35 }
34 } 36 }
35 37
36 class Emitter implements emitterTask.Emitter { 38 class Emitter implements emitterTask.Emitter {
37 final Compiler _compiler; 39 final Compiler _compiler;
38 final Namer namer; 40 final Namer namer;
39 final ModelEmitter _emitter; 41 final ModelEmitter _emitter;
40 42
41 JavaScriptBackend get _backend => _compiler.backend; 43 JavaScriptBackend get _backend => _compiler.backend;
42 44
43 Emitter(Compiler compiler, Namer namer, NativeEmitter nativeEmitter) 45 Emitter(Compiler compiler, Namer namer, NativeEmitter nativeEmitter,
46 InterceptorData interceptorData)
44 : this._compiler = compiler, 47 : this._compiler = compiler,
45 this.namer = namer, 48 this.namer = namer,
46 _emitter = new ModelEmitter(compiler, namer, nativeEmitter); 49 _emitter =
50 new ModelEmitter(compiler, namer, nativeEmitter, interceptorData);
47 51
48 DiagnosticReporter get reporter => _compiler.reporter; 52 DiagnosticReporter get reporter => _compiler.reporter;
49 53
50 @override 54 @override
51 int emitProgram(ProgramBuilder programBuilder) { 55 int emitProgram(ProgramBuilder programBuilder) {
52 Program program = programBuilder.buildProgram(); 56 Program program = programBuilder.buildProgram();
53 return _emitter.emitProgram(program); 57 return _emitter.emitProgram(program);
54 } 58 }
55 59
56 // TODO(floitsch): copied from full emitter. Adjust or share. 60 // TODO(floitsch): copied from full emitter. Adjust or share.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 reporter.internalError( 187 reporter.internalError(
184 NO_LOCATION_SPANNABLE, "Unhandled Builtin: $builtin"); 188 NO_LOCATION_SPANNABLE, "Unhandled Builtin: $builtin");
185 return null; 189 return null;
186 } 190 }
187 } 191 }
188 192
189 @override 193 @override
190 // TODO(het): Generate this correctly 194 // TODO(het): Generate this correctly
191 int generatedSize(OutputUnit unit) => 0; 195 int generatedSize(OutputUnit unit) => 0;
192 } 196 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698