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

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

Issue 954253002: dart2js: add compiler builtins to the core-runtime. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Move more foreigns to builtins. Created 5 years, 8 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) 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.new_js_emitter.model_emitter; 5 library dart2js.new_js_emitter.model_emitter;
6 6
7 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue; 7 import '../../constants/values.dart' show ConstantValue, FunctionConstantValue;
8 import '../../dart2jslib.dart' show Compiler; 8 import '../../dart2jslib.dart' show Compiler;
9 import '../../dart_types.dart' show DartType; 9 import '../../dart_types.dart' show DartType;
10 import '../../elements/elements.dart' show ClassElement, FunctionElement; 10 import '../../elements/elements.dart' show ClassElement, FunctionElement;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 final NativeEmitter nativeEmitter; 43 final NativeEmitter nativeEmitter;
44 44
45 JavaScriptBackend get backend => compiler.backend; 45 JavaScriptBackend get backend => compiler.backend;
46 46
47 /// For deferred loading we communicate the initializers via this global var. 47 /// For deferred loading we communicate the initializers via this global var.
48 static const String deferredInitializersGlobal = 48 static const String deferredInitializersGlobal =
49 r"$__dart_deferred_initializers__"; 49 r"$__dart_deferred_initializers__";
50 50
51 static const String deferredExtension = "part.js"; 51 static const String deferredExtension = "part.js";
52 52
53 static const String typeNameProperty = r"builtin$cls";
54
53 ModelEmitter(Compiler compiler, Namer namer, this.nativeEmitter) 55 ModelEmitter(Compiler compiler, Namer namer, this.nativeEmitter)
54 : this.compiler = compiler, 56 : this.compiler = compiler,
55 this.namer = namer { 57 this.namer = namer {
56 // TODO(floitsch): remove hard-coded name. 58 // TODO(floitsch): remove hard-coded name.
57 // TODO(floitsch): there is no harm in caching the template. 59 // TODO(floitsch): there is no harm in caching the template.
58 js.Template makeConstantListTemplate = 60 js.Template makeConstantListTemplate =
59 js.js.uncachedExpressionTemplate('makeConstList(#)'); 61 js.js.uncachedExpressionTemplate('makeConstList(#)');
60 62
61 this.constantEmitter = new ConstantEmitter( 63 this.constantEmitter = new ConstantEmitter(
62 compiler, namer, this.generateConstantReference, 64 compiler, namer, this.generateConstantReference,
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 } else { 1085 } else {
1084 constructor = descriptor[2]; 1086 constructor = descriptor[2];
1085 functionsIndex = 3; 1087 functionsIndex = 3;
1086 } 1088 }
1087 1089
1088 for (var i = functionsIndex; i < descriptor.length; i += 2) { 1090 for (var i = functionsIndex; i < descriptor.length; i += 2) {
1089 parseFunctionDescriptor(prototype, descriptor[i], descriptor[i + 1], 1091 parseFunctionDescriptor(prototype, descriptor[i], descriptor[i + 1],
1090 typesOffset); 1092 typesOffset);
1091 } 1093 }
1092 1094
1093 constructor.builtin\$cls = name; // Needed for RTI. 1095 constructor.$typeNameProperty = name; // Needed for RTI.
1094 constructor.prototype = prototype; 1096 constructor.prototype = prototype;
1095 prototype[#operatorIsPrefix + name] = constructor; 1097 prototype[#operatorIsPrefix + name] = constructor;
1096 prototype.constructor = constructor; 1098 prototype.constructor = constructor;
1097 return constructor; 1099 return constructor;
1098 } 1100 }
1099 1101
1100 function fillPrototypeWithMixedIn(mixinName, mixinHolderIndex, prototype) { 1102 function fillPrototypeWithMixedIn(mixinName, mixinHolderIndex, prototype) {
1101 var mixin = holders[mixinHolderIndex][mixinName].ensureResolved(); 1103 var mixin = holders[mixinHolderIndex][mixinName].ensureResolved();
1102 var mixinPrototype = mixin.prototype; 1104 var mixinPrototype = mixin.prototype;
1103 1105
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1174 1176
1175 var end = Date.now(); 1177 var end = Date.now();
1176 // print('Setup: ' + (end - start) + ' ms.'); 1178 // print('Setup: ' + (end - start) + ' ms.');
1177 1179
1178 #invokeMain; // Start main. 1180 #invokeMain; // Start main.
1179 1181
1180 }(Date.now(), #code) 1182 }(Date.now(), #code)
1181 }"""; 1183 }""";
1182 1184
1183 } 1185 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698