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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart

Issue 11365170: Start new design for interceptors and implement String.charCodeAt with it. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 js_backend; 5 part of js_backend;
6 6
7 class CodeEmitterNoEvalTask extends CodeEmitterTask { 7 class CodeEmitterNoEvalTask extends CodeEmitterTask {
8 CodeEmitterNoEvalTask(Compiler compiler, 8 CodeEmitterNoEvalTask(Compiler compiler,
9 Namer namer, 9 Namer namer,
10 bool generateSourceMap) 10 bool generateSourceMap)
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 } 54 }
55 Isolate.prototype = oldIsolate.prototype; 55 Isolate.prototype = oldIsolate.prototype;
56 Isolate.prototype.constructor = Isolate; 56 Isolate.prototype.constructor = Isolate;
57 Isolate.${namer.ISOLATE_PROPERTIES} = isolateProperties; 57 Isolate.${namer.ISOLATE_PROPERTIES} = isolateProperties;
58 return Isolate; 58 return Isolate;
59 }"""; 59 }""";
60 } 60 }
61 61
62 void emitBoundClosureClassHeader(String mangledName, 62 void emitBoundClosureClassHeader(String mangledName,
63 String superName, 63 String superName,
64 String extraArg,
64 CodeBuffer buffer) { 65 CodeBuffer buffer) {
65 buffer.add(""" 66 if (!extraArg.isEmpty) {
67 buffer.add("""
68 $classesCollector.$mangledName = {'': function $mangledName(
69 self, $extraArg, target) {
70 this.self = self;
71 this.$extraArg = $extraArg,
72 this.target = target;
73 },
74 'super': '$superName',
75 """);
76 } else {
77 buffer.add("""
66 $classesCollector.$mangledName = {'': function $mangledName(self, target) { 78 $classesCollector.$mangledName = {'': function $mangledName(self, target) {
67 this.self = self; 79 this.self = self;
68 this.target = target; 80 this.target = target;
69 }, 81 },
70 'super': '$superName', 82 'super': '$superName',
71 """); 83 """);
84 }
72 } 85 }
73 86
74 void emitClassConstructor(ClassElement classElement, CodeBuffer buffer) { 87 void emitClassConstructor(ClassElement classElement, CodeBuffer buffer) {
75 // Say we have a class A with fields b, c and d, where c needs a getter and 88 // Say we have a class A with fields b, c and d, where c needs a getter and
76 // d needs both a getter and a setter. Then we produce: 89 // d needs both a getter and a setter. Then we produce:
77 // - a constructor (directly into the given [buffer]): 90 // - a constructor (directly into the given [buffer]):
78 // function A(b, c, d) { this.b = b, this.c = c, this.d = d; } 91 // function A(b, c, d) { this.b = b, this.c = c, this.d = d; }
79 // - getters and setters (stored in the [explicitGettersSetters] list): 92 // - getters and setters (stored in the [explicitGettersSetters] list):
80 // get$c : function() { return this.c; } 93 // get$c : function() { return this.c; }
81 // get$d : function() { return this.d; } 94 // get$d : function() { return this.d; }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 generateSetter(member, name, buffer); 148 generateSetter(member, name, buffer);
136 } 149 }
137 if (needsCheckedSetter) { 150 if (needsCheckedSetter) {
138 assert(!needsSetter); 151 assert(!needsSetter);
139 emitComma(); 152 emitComma();
140 generateCheckedSetter(member, name, buffer); 153 generateCheckedSetter(member, name, buffer);
141 } 154 }
142 }); 155 });
143 } 156 }
144 } 157 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698