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

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

Issue 1913033002: dart2js: Pass type information to constructor rather than add later. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: rebase Created 4 years, 4 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 part of dart2js.js_emitter; 5 part of dart2js.js_emitter;
6 6
7 // Function signatures used in the generation of runtime type information. 7 // Function signatures used in the generation of runtime type information.
8 typedef void FunctionTypeSignatureEmitter( 8 typedef void FunctionTypeSignatureEmitter(
9 Element method, FunctionType methodType); 9 Element method, FunctionType methodType);
10 10
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 StubMethod _generateTypeVariableReader( 305 StubMethod _generateTypeVariableReader(
306 ClassElement cls, TypeVariableElement element) { 306 ClassElement cls, TypeVariableElement element) {
307 jsAst.Name name = namer.nameForReadTypeVariable(element); 307 jsAst.Name name = namer.nameForReadTypeVariable(element);
308 int index = element.index; 308 int index = element.index;
309 jsAst.Expression computeTypeVariable; 309 jsAst.Expression computeTypeVariable;
310 310
311 Substitution substitution = 311 Substitution substitution =
312 backend.rti.getSubstitution(cls, element.typeDeclaration); 312 backend.rti.getSubstitution(cls, element.typeDeclaration);
313 if (substitution != null) { 313 if (substitution != null) {
314 computeTypeVariable = js( 314 computeTypeVariable = js(
315 r'#.apply(null, this.$builtinTypeInfo)', 315 r'#.apply(null, this.$ti)',
316 backend.rtiEncoder 316 backend.rtiEncoder
317 .getSubstitutionCodeForVariable(substitution, index)); 317 .getSubstitutionCodeForVariable(substitution, index));
318 } else { 318 } else {
319 // TODO(ahe): These can be generated dynamically. 319 // TODO(ahe): These can be generated dynamically.
320 computeTypeVariable = js( 320 computeTypeVariable = js(
321 r'this.$builtinTypeInfo && this.$builtinTypeInfo[#]', 321 r'this.$ti && this.$ti[#]',
322 js.number(index)); 322 js.number(index));
323 } 323 }
324 jsAst.Expression convertRtiToRuntimeType = backend.emitter 324 jsAst.Expression convertRtiToRuntimeType = backend.emitter
325 .staticFunctionAccess(backend.helpers.convertRtiToRuntimeType); 325 .staticFunctionAccess(backend.helpers.convertRtiToRuntimeType);
326 326
327 return new StubMethod( 327 return new StubMethod(
328 name, 328 name,
329 js('function () { return #(#) }', 329 js('function () { return #(#) }',
330 [convertRtiToRuntimeType, computeTypeVariable])); 330 [convertRtiToRuntimeType, computeTypeVariable]));
331 } 331 }
332 } 332 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698