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

Side by Side Diff: frog/var_member.dart

Issue 8457007: Better runtime type checks. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merged, and fix typo in member name Created 9 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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 /** A dynamic member stub. */ 5 /** A dynamic member stub. */
6 class VarMember { 6 class VarMember {
7 final String name; 7 final String name;
8 8
9 VarMember(this.name); 9 VarMember(this.name);
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 code.writeln('return ${body.code};'); 130 code.writeln('return ${body.code};');
131 code.exitBlock('}'); 131 code.exitBlock('}');
132 } 132 }
133 } 133 }
134 134
135 bool _useDirectCall(Member member, Arguments args) { 135 bool _useDirectCall(Member member, Arguments args) {
136 // TODO(jmesserly): for now disallow direct references to DOM types until we 136 // TODO(jmesserly): for now disallow direct references to DOM types until we
137 // figure out which types can be patched reliably. 137 // figure out which types can be patched reliably.
138 // I don't think our other native libs have this issue. 138 // I don't think our other native libs have this issue.
139 if (member is MethodMember && member.declaringType.library != world.dom) { 139 if (member is MethodMember && member.declaringType.library != world.dom) {
140 MethodMember method = member;
141 if (method.needsArgumentConversion(args)) {
142 return false;
143 }
144
140 // If we have the right number of parameters, or all defaults would be 145 // If we have the right number of parameters, or all defaults would be
141 // filled in as "undefined" anyway, we can just call the method directly. 146 // filled in as "undefined" anyway, we can just call the method directly.
142 MethodMember method = member;
143 method.genParameterValues();
144 for (int i = args.length; i < method.parameters.length; i++) { 147 for (int i = args.length; i < method.parameters.length; i++) {
145 if (method.parameters[i].value.code != 'null') { 148 if (method.parameters[i].value.code != 'null') {
146 return false; 149 return false;
147 } 150 }
148 } 151 }
149 return method.namesInOrder(args); 152 return method.namesInOrder(args);
150 } else { 153 } else {
151 return false; 154 return false;
152 } 155 }
153 } 156 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 } 249 }
247 } 250 }
248 251
249 String _getCallStubName(String name, Arguments args) { 252 String _getCallStubName(String name, Arguments args) {
250 final nameBuilder = new StringBuffer('${name}\$${args.bareCount}'); 253 final nameBuilder = new StringBuffer('${name}\$${args.bareCount}');
251 for (int i = args.bareCount; i < args.length; i++) { 254 for (int i = args.bareCount; i < args.length; i++) {
252 nameBuilder.add('\$').add(args.getName(i)); 255 nameBuilder.add('\$').add(args.getName(i));
253 } 256 }
254 return nameBuilder.toString(); 257 return nameBuilder.toString();
255 } 258 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698