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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/old_emitter/interceptor_emitter.dart

Issue 809433004: dart2js: is-checks for the new emitter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Improved test. Created 5 years, 11 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 dart2js.js_emitter; 5 part of dart2js.js_emitter;
6 6
7 class InterceptorEmitter extends CodeEmitterHelper { 7 class InterceptorEmitter extends CodeEmitterHelper {
8 final Set<String> interceptorInvocationNames = new Set<String>(); 8 final Set<String> interceptorInvocationNames = new Set<String>();
9 9
10 void recordMangledNameOfMemberMethod(FunctionElement member, String name) { 10 void recordMangledNameOfMemberMethod(FunctionElement member, String name) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 handler.getConstantsForEmission(emitter.compareConstants); 105 handler.getConstantsForEmission(emitter.compareConstants);
106 for (ConstantValue constant in constants) { 106 for (ConstantValue constant in constants) {
107 if (constant is TypeConstantValue) { 107 if (constant is TypeConstantValue) {
108 TypeConstantValue typeConstant = constant; 108 TypeConstantValue typeConstant = constant;
109 Element element = typeConstant.representedType.element; 109 Element element = typeConstant.representedType.element;
110 if (element is ClassElement) { 110 if (element is ClassElement) {
111 ClassElement classElement = element; 111 ClassElement classElement = element;
112 if (!analysis.needsClass(classElement)) continue; 112 if (!analysis.needsClass(classElement)) continue;
113 113
114 elements.add(emitter.constantReference(constant)); 114 elements.add(emitter.constantReference(constant));
115 elements.add(backend.emitter.classAccess(classElement)); 115 elements.add(backend.emitter.interceptorClassAccess(classElement));
116 116
117 // Create JavaScript Object map for by-name lookup of generative 117 // Create JavaScript Object map for by-name lookup of generative
118 // constructors. For example, the class A has three generative 118 // constructors. For example, the class A has three generative
119 // constructors 119 // constructors
120 // 120 //
121 // class A { 121 // class A {
122 // A() {} 122 // A() {}
123 // A.foo() {} 123 // A.foo() {}
124 // A.bar() {} 124 // A.bar() {}
125 // } 125 // }
126 // 126 //
127 // Which are described by the map 127 // Which are described by the map
128 // 128 //
129 // {"": A.A$, "foo": A.A$foo, "bar": A.A$bar} 129 // {"": A.A$, "foo": A.A$foo, "bar": A.A$bar}
130 // 130 //
131 // We expect most of the time the map will be a singleton. 131 // We expect most of the time the map will be a singleton.
132 var properties = []; 132 var properties = [];
133 for (Element member in analysis.constructors(classElement)) { 133 for (Element member in analysis.constructors(classElement)) {
134 properties.add( 134 properties.add(
135 new jsAst.Property( 135 new jsAst.Property(
136 js.string(member.name), 136 js.string(member.name),
137 backend.emitter.classAccess(member))); 137 backend.emitter.staticFunctionAccess(member)));
138 } 138 }
139 139
140 var map = new jsAst.ObjectInitializer(properties); 140 var map = new jsAst.ObjectInitializer(properties);
141 elements.add(map); 141 elements.add(map);
142 } 142 }
143 } 143 }
144 } 144 }
145 145
146 jsAst.ArrayInitializer array = new jsAst.ArrayInitializer(elements); 146 jsAst.ArrayInitializer array = new jsAst.ArrayInitializer(elements);
147 String name = 147 String name =
148 backend.namer.getNameOfGlobalField(backend.mapTypeToInterceptor); 148 backend.namer.getNameOfGlobalField(backend.mapTypeToInterceptor);
149 jsAst.Expression assignment = 149 jsAst.Expression assignment =
150 js('${emitter.isolateProperties}.# = #', [name, array]); 150 js('${emitter.isolateProperties}.# = #', [name, array]);
151 151
152 buffer.write(jsAst.prettyPrint(assignment, compiler)); 152 buffer.write(jsAst.prettyPrint(assignment, compiler));
153 buffer.write(N); 153 buffer.write(N);
154 } 154 }
155 } 155 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698