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

Unified Diff: frog/minfrog

Issue 8912017: Fix missing trampolines for named arguments. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: remove comment Created 9 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 side-by-side diff with in-line comments
Download patch
Index: frog/minfrog
diff --git a/frog/minfrog b/frog/minfrog
index 3e0b8d3c4be059e4b1073bc5f32e4c3eb4d59e72..8549688575ed3dd3df5c71a8d91235928b8cc8bd 100755
--- a/frog/minfrog
+++ b/frog/minfrog
@@ -5408,6 +5408,15 @@ MethodMember.prototype._get = function(context, node, target, isDynamic) {
this._providePropertySyntax = true;
return new Value(this.get$functionType(), ('' + target.code + '.get\$' + this.get$jsname() + '()'), node.span, true);
}
+MethodMember.prototype.namesInHomePositions = function(args) {
+ if (!args.get$hasNames()) return true;
+ for (var i = args.get$bareCount();
+ i < args.values.length; i++) {
+ if (i >= this.parameters.length) return false;
+ if (args.getName(i) != this.parameters.$index(i).get$name()) return false;
+ }
+ return true;
+}
MethodMember.prototype.namesInOrder = function(args) {
if (!args.get$hasNames()) return true;
var lastParameter = null;
@@ -13075,7 +13084,7 @@ VarMethodStub.prototype._useDirectCall = function(args) {
return false;
}
}
- return method.namesInOrder(args);
+ return method.namesInHomePositions(args);
}
else {
return false;
@@ -13249,7 +13258,12 @@ function _getCallStubName(name, args) {
var nameBuilder = new StringBufferImpl(('' + name + '\$' + args.get$bareCount()));
for (var i = args.get$bareCount();
i < args.get$length(); i++) {
- nameBuilder.add('\$').add(args.getName(i));
+ var name0 = args.getName(i);
+ nameBuilder.add('\$');
+ if (name0.contains$1('\$')) {
+ nameBuilder.add(('' + name0.length));
+ }
+ nameBuilder.add(name0);
}
return nameBuilder.toString();
}

Powered by Google App Engine
This is Rietveld 408576698