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

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

Issue 11348317: Revert r15577 dart2js: Dot-separated field-and-super descriptor string... (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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 | « sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart ('k') | no next file » | 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) 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 NativeEmitter { 7 class NativeEmitter {
8 8
9 CodeEmitterTask emitter; 9 CodeEmitterTask emitter;
10 CodeBuffer nativeBuffer; 10 CodeBuffer nativeBuffer;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 const SourceString('hashCodeForNativeObject')); 83 const SourceString('hashCodeForNativeObject'));
84 return backend.namer.isolateAccess(element); 84 return backend.namer.isolateAccess(element);
85 } 85 }
86 86
87 String get defineNativeClassName 87 String get defineNativeClassName
88 => '${backend.namer.CURRENT_ISOLATE}.\$defineNativeClass'; 88 => '${backend.namer.CURRENT_ISOLATE}.\$defineNativeClass';
89 89
90 String get defineNativeClassFunction { 90 String get defineNativeClassFunction {
91 return """ 91 return """
92 function(cls, desc) { 92 function(cls, desc) {
93 var fields = desc[''] || [];
93 var generateGetterSetter = ${emitter.generateGetterSetterFunction}; 94 var generateGetterSetter = ${emitter.generateGetterSetterFunction};
94 var fields = desc['']; 95 for (var i = 0; i < fields.length; i++) {
95 var fields_array = fields ? fields.split('.') : []; 96 generateGetterSetter(fields[i], desc);
96 for (var i = 0; i < fields_array.length; i++) {
97 generateGetterSetter(fields_array[i], desc);
98 } 97 }
99 var hasOwnProperty = Object.prototype.hasOwnProperty; 98 var hasOwnProperty = Object.prototype.hasOwnProperty;
100 for (var method in desc) { 99 for (var method in desc) {
101 if (method) { """/* method != '' */""" 100 if (method !== '') {
102 if (hasOwnProperty.call(desc, method)) { 101 if (hasOwnProperty.call(desc, method)) {
103 $dynamicName(method)[cls] = desc[method]; 102 $dynamicName(method)[cls] = desc[method];
104 } 103 }
105 } 104 }
106 } 105 }
107 }"""; 106 }""";
108 } 107 }
109 108
110 void generateNativeLiteral(ClassElement classElement) { 109 void generateNativeLiteral(ClassElement classElement) {
111 String quotedNative = classElement.nativeTagInfo.slowToString(); 110 String quotedNative = classElement.nativeTagInfo.slowToString();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 generateNativeLiteral(classElement); 153 generateNativeLiteral(classElement);
155 // The native literal kind needs to be dealt with specially when 154 // The native literal kind needs to be dealt with specially when
156 // generating code for it. 155 // generating code for it.
157 return; 156 return;
158 } 157 }
159 158
160 CodeBuffer fieldBuffer = new CodeBuffer(); 159 CodeBuffer fieldBuffer = new CodeBuffer();
161 CodeBuffer getterSetterBuffer = new CodeBuffer(); 160 CodeBuffer getterSetterBuffer = new CodeBuffer();
162 CodeBuffer methodBuffer = new CodeBuffer(); 161 CodeBuffer methodBuffer = new CodeBuffer();
163 162
164 emitter.emitClassFields( 163 emitter.emitClassFields(classElement, fieldBuffer, false);
165 classElement, fieldBuffer, isNative: true, emitEndingComma: false);
166 emitter.emitClassGettersSetters(classElement, getterSetterBuffer, false); 164 emitter.emitClassGettersSetters(classElement, getterSetterBuffer, false);
167 emitter.emitInstanceMembers(classElement, methodBuffer, false); 165 emitter.emitInstanceMembers(classElement, methodBuffer, false);
168 166
169 if (methodBuffer.isEmpty 167 if (methodBuffer.isEmpty
170 && fieldBuffer.isEmpty 168 && fieldBuffer.isEmpty
171 && getterSetterBuffer.isEmpty) { 169 && getterSetterBuffer.isEmpty) {
172 return; 170 return;
173 } 171 }
174 172
175 String nativeTag = toNativeTag(classElement); 173 String nativeTag = toNativeTag(classElement);
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 if (!first) targetBuffer.add(",\n"); 566 if (!first) targetBuffer.add(",\n");
569 targetBuffer.add(" $name: $function"); 567 targetBuffer.add(" $name: $function");
570 first = false; 568 first = false;
571 }); 569 });
572 targetBuffer.add("\n});\n\n"); 570 targetBuffer.add("\n});\n\n");
573 } 571 }
574 targetBuffer.add(nativeBuffer); 572 targetBuffer.add(nativeBuffer);
575 targetBuffer.add('\n'); 573 targetBuffer.add('\n');
576 } 574 }
577 } 575 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/js_backend/emitter_no_eval.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698