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

Unified Diff: compiler/lib/implementation/core.js

Issue 8845002: Function type checking: Part Deux (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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: compiler/lib/implementation/core.js
diff --git a/compiler/lib/implementation/core.js b/compiler/lib/implementation/core.js
index 433d22373ef42e805562608be1b62d1906cc6cf8..fa2673655d2ff95b3672d163115fa395aebf1edc 100644
--- a/compiler/lib/implementation/core.js
+++ b/compiler/lib/implementation/core.js
@@ -10,128 +10,272 @@ var static$initializing = {};
// Optimized versions of closure bindings.
// Name convention: $bind<number-of-scopes>_<number-of-arguments>(fn, this, scopes, args)
-function $bind0_0(fn, thisObj) {
- return function() {
+function $bind0_0(fn, fRtt, thisObj) {
+ var fun = function() {
return fn.call(thisObj);
}
+ if (fRtt) {
mmendez 2011/12/07 20:03:00 Nit: this if (fRtt) block could be moved to a comm
codefu 2011/12/07 21:44:54 Done.
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind0_1(fn, thisObj) {
- return function(arg) {
+function $bind0_1(fn, fRtt, thisObj) {
+ var fun = function(arg) {
return fn.call(thisObj, arg);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind0_2(fn, thisObj) {
- return function(arg1, arg2) {
+function $bind0_2(fn, fRtt, thisObj) {
+ var fun = function(arg1, arg2) {
return fn.call(thisObj, arg1, arg2);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind0_3(fn, thisObj) {
- return function(arg1, arg2, arg3) {
+function $bind0_3(fn, fRtt, thisObj) {
+ var fun = function(arg1, arg2, arg3) {
return fn.call(thisObj, arg1, arg2, arg3);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind0_4(fn, thisObj) {
- return function(arg1, arg2, arg3, arg4) {
+function $bind0_4(fn, fRtt, thisObj) {
+ var fun = function(arg1, arg2, arg3, arg4) {
return fn.call(thisObj, arg1, arg2, arg3, arg4);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind0_5(fn, thisObj) {
- return function(arg1, arg2, arg3, arg4, arg5) {
+function $bind0_5(fn, fRtt, thisObj) {
+ var fun = function(arg1, arg2, arg3, arg4, arg5) {
return fn.call(thisObj, arg1, arg2, arg3, arg4, arg5);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_0(fn, thisObj, scope) {
- return function() {
+function $bind1_0(fn, fRtt, thisObj, scope) {
+ var fun = function() {
return fn.call(thisObj, scope);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_1(fn, thisObj, scope) {
- return function(arg) {
+function $bind1_1(fn, fRtt, thisObj, scope) {
+ var fun = function(arg) {
return fn.call(thisObj, scope, arg);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_2(fn, thisObj, scope) {
- return function(arg1, arg2) {
+function $bind1_2(fn, fRtt, thisObj, scope) {
+ var fun = function(arg1, arg2) {
return fn.call(thisObj, scope, arg1, arg2);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_3(fn, thisObj, scope) {
- return function(arg1, arg2, arg3) {
+function $bind1_3(fn, fRtt, thisObj, scope) {
+ var fun = function(arg1, arg2, arg3) {
return fn.call(thisObj, scope, arg1, arg2, arg3);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_4(fn, thisObj, scope) {
- return function(arg1, arg2, arg3, arg4) {
+function $bind1_4(fn, fRtt, thisObj, scope) {
+ var fun = function(arg1, arg2, arg3, arg4) {
return fn.call(thisObj, scope, arg1, arg2, arg3, arg4);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind1_5(fn, thisObj, scope) {
- return function(arg1, arg2, arg3, arg4, arg5) {
+function $bind1_5(fn, fRtt, thisObj, scope) {
+ var fun = function(arg1, arg2, arg3, arg4, arg5) {
return fn.call(thisObj, scope, arg1, arg2, arg3, arg4, arg5);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_0(fn, thisObj, scope1, scope2) {
- return function() {
+function $bind2_0(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function() {
return fn.call(thisObj, scope1, scope2);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_1(fn, thisObj, scope1, scope2) {
- return function(arg) {
+function $bind2_1(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function(arg) {
return fn.call(thisObj, scope1, scope2, arg);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_2(fn, thisObj, scope1, scope2) {
- return function(arg1, arg2) {
+function $bind2_2(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function(arg1, arg2) {
return fn.call(thisObj, scope1, scope2, arg1, arg2);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_3(fn, thisObj, scope1, scope2) {
- return function(arg1, arg2, arg3) {
+function $bind2_3(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function(arg1, arg2, arg3) {
return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_4(fn, thisObj, scope1, scope2) {
- return function(arg1, arg2, arg3, arg4) {
+function $bind2_4(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function(arg1, arg2, arg3, arg4) {
return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind2_5(fn, thisObj, scope1, scope2) {
- return function(arg1, arg2, arg3, arg4, arg5) {
+function $bind2_5(fn, fRtt, thisObj, scope1, scope2) {
+ var fun = function(arg1, arg2, arg3, arg4, arg5) {
return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4, arg5);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_0(fn, thisObj, scope1, scope2, scope3) {
- return function() {
+function $bind3_0(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function() {
return fn.call(thisObj, scope1, scope2, scope3);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_1(fn, thisObj, scope1, scope2, scope3) {
- return function(arg) {
+function $bind3_1(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function(arg) {
return fn.call(thisObj, scope1, scope2, scope3, arg);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_2(fn, thisObj, scope1, scope2, scope3) {
- return function(arg1, arg2) {
+function $bind3_2(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function(arg1, arg2) {
return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_3(fn, thisObj, scope1, scope2, scope3) {
- return function(arg1, arg2, arg3) {
+function $bind3_3(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function(arg1, arg2, arg3) {
return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_4(fn, thisObj, scope1, scope2, scope3) {
- return function(arg1, arg2, arg3, arg4) {
+function $bind3_4(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function(arg1, arg2, arg3, arg4) {
return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
-function $bind3_5(fn, thisObj, scope1, scope2, scope3) {
- return function(arg1, arg2, arg3, arg4, arg5) {
+function $bind3_5(fn, fRtt, thisObj, scope1, scope2, scope3) {
+ var fun = function(arg1, arg2, arg3, arg4, arg5) {
return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4, arg5);
}
+ if (fRtt) {
+ fun.$lookupRTT = function() {
+ return fRtt.call(thisObj);
+ }
+ }
+ return fun;
}
/**
@@ -152,23 +296,31 @@ function $inherits(child, parent) {
/**
* @param {Function} fn
+ * @param {Function=} fRtt
* @param {Object|undefined} thisObj
* @param {...*} var_args
*/
-function $bind(fn, thisObj, var_args) {
- if (arguments.length > 2) {
- var boundArgs = Array.prototype.slice.call(arguments, 2);
- return function() {
+function $bind(fn, fRtt, thisObj, var_args) {
+ var func;
+ if (arguments.length > 3) {
+ var boundArgs = Array.prototype.slice.call(arguments, 3);
+ func = function() {
// Prepend the bound arguments to the current arguments.
var newArgs = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(newArgs, boundArgs);
return fn.apply(thisObj, newArgs);
};
} else {
- return function() {
+ func = function() {
return fn.apply(thisObj, arguments);
};
}
+ if(fRtt) {
+ func.$lookupRTT = function() {
+ return fRtt.apply(thisObj, arguments);
+ };
+ }
+ return func;
}
/**

Powered by Google App Engine
This is Rietveld 408576698