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

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

Issue 948383003: Force slow objects for select objects during startup. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7
8 class OldEmitter implements Emitter { 8 class OldEmitter implements Emitter {
9 final Compiler compiler; 9 final Compiler compiler;
10 final CodeEmitterTask task; 10 final CodeEmitterTask task;
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 324
325 var str = "function " + name + "("; 325 var str = "function " + name + "(";
326 var body = ""; 326 var body = "";
327 if (#hasIsolateSupport) { var fieldNames = ""; } 327 if (#hasIsolateSupport) { var fieldNames = ""; }
328 328
329 for (var i = 0; i < fields.length; i++) { 329 for (var i = 0; i < fields.length; i++) {
330 if(i != 0) str += ", "; 330 if(i != 0) str += ", ";
331 331
332 var field = generateAccessor(fields[i], accessors, name); 332 var field = generateAccessor(fields[i], accessors, name);
333 if (#hasIsolateSupport) { fieldNames += "'" + field + "',"; } 333 if (#hasIsolateSupport) { fieldNames += "'" + field + "',"; }
334 var parameter = "parameter_" + field; 334 var parameter = "p_" + field;
335 str += parameter; 335 str += parameter;
336 body += ("this." + field + " = " + parameter + ";\n"); 336 body += ("this." + field + " = " + parameter + ";\n");
337 } 337 }
338 str += ") {\n" + body + "}\n"; 338 str += ") {\n" + body + "}\n";
339 str += name + ".builtin$cls=\"" + name + "\";\n"; 339 str += name + ".builtin$cls=\"" + name + "\";\n";
340 str += "$desc=$collectedClasses." + name + ";\n"; 340 str += "$desc=$collectedClasses." + name + "[1];\n";
341 str += "if($desc instanceof Array) $desc = \$desc[1];\n";
342 str += name + ".prototype = $desc;\n"; 341 str += name + ".prototype = $desc;\n";
343 if (typeof defineClass.name != "string") { 342 if (typeof defineClass.name != "string") {
344 str += name + ".name=\"" + name + "\";\n"; 343 str += name + ".name=\"" + name + "\";\n";
345 } 344 }
346 if (#hasIsolateSupport) { 345 if (#hasIsolateSupport) {
347 str += name + "." + #fieldNamesProperty + "=[" + fieldNames 346 str += name + "." + #fieldNamesProperty + "=[" + fieldNames
348 + "];\n"; 347 + "];\n";
349 } 348 }
350 str += accessors.join(""); 349 str += accessors.join("");
351 350
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 } 418 }
420 419
421 /** Needs defineClass to be defined. */ 420 /** Needs defineClass to be defined. */
422 jsAst.Expression buildInheritFrom() { 421 jsAst.Expression buildInheritFrom() {
423 jsAst.Expression result = js(r""" 422 jsAst.Expression result = js(r"""
424 function() { 423 function() {
425 function tmp() {} 424 function tmp() {}
426 return function (constructor, superConstructor) { 425 return function (constructor, superConstructor) {
427 tmp.prototype = superConstructor.prototype; 426 tmp.prototype = superConstructor.prototype;
428 var object = new tmp(); 427 var object = new tmp();
428 object.x = 0; delete object.x; // Make object slow.
floitsch 2015/02/24 20:21:39 I discussed and benchmarked this with Slava. It lo
herhut 2015/03/09 15:11:05 Acknowledged.
429 var properties = constructor.prototype; 429 var properties = constructor.prototype;
430 var members = Object.keys(properties); 430 var members = Object.keys(properties);
431 for (var i = 0; i < members.length; i++) { 431 for (var i = 0; i < members.length; i++) {
432 var member = members[i]; 432 var member = members[i];
433 object[member] = properties[member]; 433 object[member] = properties[member];
434 } 434 }
435 // Use a function for `true` here, as functions are stored in the 435 // Use a function for `true` here, as functions are stored in the
436 // hidden class and not as properties in the object. 436 // hidden class and not as properties in the object.
437 object[#operatorIsPrefix + constructor.name] = constructor; 437 object[#operatorIsPrefix + constructor.name] = constructor;
438 object.constructor = constructor; 438 object.constructor = constructor;
(...skipping 1560 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 for (Element element in compiler.enqueuer.codegen.newlyEnqueuedElements) { 1999 for (Element element in compiler.enqueuer.codegen.newlyEnqueuedElements) {
2000 if (element.isInstanceMember) { 2000 if (element.isInstanceMember) {
2001 cachedClassBuilders.remove(element.enclosingClass); 2001 cachedClassBuilders.remove(element.enclosingClass);
2002 2002
2003 nativeEmitter.cachedBuilders.remove(element.enclosingClass); 2003 nativeEmitter.cachedBuilders.remove(element.enclosingClass);
2004 2004
2005 } 2005 }
2006 } 2006 }
2007 } 2007 }
2008 } 2008 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_emitter/old_emitter/reflection_data_parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698