| OLD | NEW |
| 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 /** | 5 /** |
| 6 * Helpers for lazy static initialization. | 6 * Helpers for lazy static initialization. |
| 7 */ | 7 */ |
| 8 var static$uninitialized = {}; | 8 var static$uninitialized = {}; |
| 9 var static$initializing = {}; | 9 var static$initializing = {}; |
| 10 | 10 |
| 11 // Optimized versions of closure bindings. | 11 function $maybeBindRtt(fun, fRtt, thisObj) { |
| 12 // Name convention: $bind<number-of-scopes>_<number-of-arguments>(fn, this, scop
es, args) | 12 if (fRtt) { |
| 13 function $bind0_0(fn, thisObj) { | 13 fun.$lookupRTT = function() { |
| 14 return function() { | 14 return fRtt.call(thisObj); |
| 15 return fn.call(thisObj); | 15 } |
| 16 } | |
| 17 } | |
| 18 function $bind0_1(fn, thisObj) { | |
| 19 return function(arg) { | |
| 20 return fn.call(thisObj, arg); | |
| 21 } | |
| 22 } | |
| 23 function $bind0_2(fn, thisObj) { | |
| 24 return function(arg1, arg2) { | |
| 25 return fn.call(thisObj, arg1, arg2); | |
| 26 } | |
| 27 } | |
| 28 function $bind0_3(fn, thisObj) { | |
| 29 return function(arg1, arg2, arg3) { | |
| 30 return fn.call(thisObj, arg1, arg2, arg3); | |
| 31 } | |
| 32 } | |
| 33 function $bind0_4(fn, thisObj) { | |
| 34 return function(arg1, arg2, arg3, arg4) { | |
| 35 return fn.call(thisObj, arg1, arg2, arg3, arg4); | |
| 36 } | |
| 37 } | |
| 38 function $bind0_5(fn, thisObj) { | |
| 39 return function(arg1, arg2, arg3, arg4, arg5) { | |
| 40 return fn.call(thisObj, arg1, arg2, arg3, arg4, arg5); | |
| 41 } | 16 } |
| 42 } | 17 } |
| 43 | 18 |
| 44 function $bind1_0(fn, thisObj, scope) { | 19 // Optimized versions of closure bindings. |
| 45 return function() { | 20 // Name convention: $bind<number-of-scopes>_<number-of-arguments>(fn, this, scop
es, args) |
| 21 function $bind0_0(fn, fRtt, thisObj) { |
| 22 var fun = function() { |
| 23 return fn.call(thisObj); |
| 24 } |
| 25 $maybeBindRtt(fun, fRtt, thisObj); |
| 26 return fun; |
| 27 } |
| 28 function $bind0_1(fn, fRtt, thisObj) { |
| 29 var fun = function(arg) { |
| 30 return fn.call(thisObj, arg); |
| 31 } |
| 32 $maybeBindRtt(fun, fRtt, thisObj); |
| 33 return fun; |
| 34 } |
| 35 function $bind0_2(fn, fRtt, thisObj) { |
| 36 var fun = function(arg1, arg2) { |
| 37 return fn.call(thisObj, arg1, arg2); |
| 38 } |
| 39 $maybeBindRtt(fun, fRtt, thisObj); |
| 40 return fun; |
| 41 } |
| 42 function $bind0_3(fn, fRtt, thisObj) { |
| 43 var fun = function(arg1, arg2, arg3) { |
| 44 return fn.call(thisObj, arg1, arg2, arg3); |
| 45 } |
| 46 $maybeBindRtt(fun, fRtt, thisObj); |
| 47 return fun; |
| 48 } |
| 49 function $bind0_4(fn, fRtt, thisObj) { |
| 50 var fun = function(arg1, arg2, arg3, arg4) { |
| 51 return fn.call(thisObj, arg1, arg2, arg3, arg4); |
| 52 } |
| 53 $maybeBindRtt(fun, fRtt, thisObj); |
| 54 return fun; |
| 55 } |
| 56 function $bind0_5(fn, fRtt, thisObj) { |
| 57 var fun = function(arg1, arg2, arg3, arg4, arg5) { |
| 58 return fn.call(thisObj, arg1, arg2, arg3, arg4, arg5); |
| 59 } |
| 60 $maybeBindRtt(fun, fRtt, thisObj); |
| 61 return fun; |
| 62 } |
| 63 |
| 64 function $bind1_0(fn, fRtt, thisObj, scope) { |
| 65 var fun = function() { |
| 46 return fn.call(thisObj, scope); | 66 return fn.call(thisObj, scope); |
| 47 } | 67 } |
| 68 $maybeBindRtt(fun, fRtt, thisObj); |
| 69 return fun; |
| 48 } | 70 } |
| 49 function $bind1_1(fn, thisObj, scope) { | 71 function $bind1_1(fn, fRtt, thisObj, scope) { |
| 50 return function(arg) { | 72 var fun = function(arg) { |
| 51 return fn.call(thisObj, scope, arg); | 73 return fn.call(thisObj, scope, arg); |
| 52 } | 74 } |
| 75 $maybeBindRtt(fun, fRtt, thisObj); |
| 76 return fun; |
| 53 } | 77 } |
| 54 function $bind1_2(fn, thisObj, scope) { | 78 function $bind1_2(fn, fRtt, thisObj, scope) { |
| 55 return function(arg1, arg2) { | 79 var fun = function(arg1, arg2) { |
| 56 return fn.call(thisObj, scope, arg1, arg2); | 80 return fn.call(thisObj, scope, arg1, arg2); |
| 57 } | 81 } |
| 82 $maybeBindRtt(fun, fRtt, thisObj); |
| 83 return fun; |
| 58 } | 84 } |
| 59 function $bind1_3(fn, thisObj, scope) { | 85 function $bind1_3(fn, fRtt, thisObj, scope) { |
| 60 return function(arg1, arg2, arg3) { | 86 var fun = function(arg1, arg2, arg3) { |
| 61 return fn.call(thisObj, scope, arg1, arg2, arg3); | 87 return fn.call(thisObj, scope, arg1, arg2, arg3); |
| 62 } | 88 } |
| 89 $maybeBindRtt(fun, fRtt, thisObj); |
| 90 return fun; |
| 63 } | 91 } |
| 64 function $bind1_4(fn, thisObj, scope) { | 92 function $bind1_4(fn, fRtt, thisObj, scope) { |
| 65 return function(arg1, arg2, arg3, arg4) { | 93 var fun = function(arg1, arg2, arg3, arg4) { |
| 66 return fn.call(thisObj, scope, arg1, arg2, arg3, arg4); | 94 return fn.call(thisObj, scope, arg1, arg2, arg3, arg4); |
| 67 } | 95 } |
| 96 $maybeBindRtt(fun, fRtt, thisObj); |
| 97 return fun; |
| 68 } | 98 } |
| 69 function $bind1_5(fn, thisObj, scope) { | 99 function $bind1_5(fn, fRtt, thisObj, scope) { |
| 70 return function(arg1, arg2, arg3, arg4, arg5) { | 100 var fun = function(arg1, arg2, arg3, arg4, arg5) { |
| 71 return fn.call(thisObj, scope, arg1, arg2, arg3, arg4, arg5); | 101 return fn.call(thisObj, scope, arg1, arg2, arg3, arg4, arg5); |
| 72 } | 102 } |
| 103 $maybeBindRtt(fun, fRtt, thisObj); |
| 104 return fun; |
| 73 } | 105 } |
| 74 | 106 |
| 75 function $bind2_0(fn, thisObj, scope1, scope2) { | 107 function $bind2_0(fn, fRtt, thisObj, scope1, scope2) { |
| 76 return function() { | 108 var fun = function() { |
| 77 return fn.call(thisObj, scope1, scope2); | 109 return fn.call(thisObj, scope1, scope2); |
| 78 } | 110 } |
| 111 $maybeBindRtt(fun, fRtt, thisObj); |
| 112 return fun; |
| 79 } | 113 } |
| 80 function $bind2_1(fn, thisObj, scope1, scope2) { | 114 function $bind2_1(fn, fRtt, thisObj, scope1, scope2) { |
| 81 return function(arg) { | 115 var fun = function(arg) { |
| 82 return fn.call(thisObj, scope1, scope2, arg); | 116 return fn.call(thisObj, scope1, scope2, arg); |
| 83 } | 117 } |
| 118 $maybeBindRtt(fun, fRtt, thisObj); |
| 119 return fun; |
| 84 } | 120 } |
| 85 function $bind2_2(fn, thisObj, scope1, scope2) { | 121 function $bind2_2(fn, fRtt, thisObj, scope1, scope2) { |
| 86 return function(arg1, arg2) { | 122 var fun = function(arg1, arg2) { |
| 87 return fn.call(thisObj, scope1, scope2, arg1, arg2); | 123 return fn.call(thisObj, scope1, scope2, arg1, arg2); |
| 88 } | 124 } |
| 125 $maybeBindRtt(fun, fRtt, thisObj); |
| 126 return fun; |
| 89 } | 127 } |
| 90 function $bind2_3(fn, thisObj, scope1, scope2) { | 128 function $bind2_3(fn, fRtt, thisObj, scope1, scope2) { |
| 91 return function(arg1, arg2, arg3) { | 129 var fun = function(arg1, arg2, arg3) { |
| 92 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3); | 130 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3); |
| 93 } | 131 } |
| 132 $maybeBindRtt(fun, fRtt, thisObj); |
| 133 return fun; |
| 94 } | 134 } |
| 95 function $bind2_4(fn, thisObj, scope1, scope2) { | 135 function $bind2_4(fn, fRtt, thisObj, scope1, scope2) { |
| 96 return function(arg1, arg2, arg3, arg4) { | 136 var fun = function(arg1, arg2, arg3, arg4) { |
| 97 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4); | 137 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4); |
| 98 } | 138 } |
| 139 $maybeBindRtt(fun, fRtt, thisObj); |
| 140 return fun; |
| 99 } | 141 } |
| 100 function $bind2_5(fn, thisObj, scope1, scope2) { | 142 function $bind2_5(fn, fRtt, thisObj, scope1, scope2) { |
| 101 return function(arg1, arg2, arg3, arg4, arg5) { | 143 var fun = function(arg1, arg2, arg3, arg4, arg5) { |
| 102 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4, arg5); | 144 return fn.call(thisObj, scope1, scope2, arg1, arg2, arg3, arg4, arg5); |
| 103 } | 145 } |
| 146 $maybeBindRtt(fun, fRtt, thisObj); |
| 147 return fun; |
| 104 } | 148 } |
| 105 | 149 |
| 106 function $bind3_0(fn, thisObj, scope1, scope2, scope3) { | 150 function $bind3_0(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 107 return function() { | 151 var fun = function() { |
| 108 return fn.call(thisObj, scope1, scope2, scope3); | 152 return fn.call(thisObj, scope1, scope2, scope3); |
| 109 } | 153 } |
| 154 $maybeBindRtt(fun, fRtt, thisObj); |
| 155 return fun; |
| 110 } | 156 } |
| 111 function $bind3_1(fn, thisObj, scope1, scope2, scope3) { | 157 function $bind3_1(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 112 return function(arg) { | 158 var fun = function(arg) { |
| 113 return fn.call(thisObj, scope1, scope2, scope3, arg); | 159 return fn.call(thisObj, scope1, scope2, scope3, arg); |
| 114 } | 160 } |
| 161 $maybeBindRtt(fun, fRtt, thisObj); |
| 162 return fun; |
| 115 } | 163 } |
| 116 function $bind3_2(fn, thisObj, scope1, scope2, scope3) { | 164 function $bind3_2(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 117 return function(arg1, arg2) { | 165 var fun = function(arg1, arg2) { |
| 118 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2); | 166 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2); |
| 119 } | 167 } |
| 168 $maybeBindRtt(fun, fRtt, thisObj); |
| 169 return fun; |
| 120 } | 170 } |
| 121 function $bind3_3(fn, thisObj, scope1, scope2, scope3) { | 171 function $bind3_3(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 122 return function(arg1, arg2, arg3) { | 172 var fun = function(arg1, arg2, arg3) { |
| 123 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3); | 173 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3); |
| 124 } | 174 } |
| 175 $maybeBindRtt(fun, fRtt, thisObj); |
| 176 return fun; |
| 125 } | 177 } |
| 126 function $bind3_4(fn, thisObj, scope1, scope2, scope3) { | 178 function $bind3_4(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 127 return function(arg1, arg2, arg3, arg4) { | 179 var fun = function(arg1, arg2, arg3, arg4) { |
| 128 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4); | 180 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4); |
| 129 } | 181 } |
| 182 $maybeBindRtt(fun, fRtt, thisObj); |
| 183 return fun; |
| 130 } | 184 } |
| 131 function $bind3_5(fn, thisObj, scope1, scope2, scope3) { | 185 function $bind3_5(fn, fRtt, thisObj, scope1, scope2, scope3) { |
| 132 return function(arg1, arg2, arg3, arg4, arg5) { | 186 var fun = function(arg1, arg2, arg3, arg4, arg5) { |
| 133 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4, arg5
); | 187 return fn.call(thisObj, scope1, scope2, scope3, arg1, arg2, arg3, arg4, arg5
); |
| 134 } | 188 } |
| 189 $maybeBindRtt(fun, fRtt, thisObj); |
| 190 return fun; |
| 135 } | 191 } |
| 136 | 192 |
| 137 /** | 193 /** |
| 138 * Implements extends for dart classes on javascript prototypes. | 194 * Implements extends for dart classes on javascript prototypes. |
| 139 * @param {Function} child | 195 * @param {Function} child |
| 140 * @param {Function} parent | 196 * @param {Function} parent |
| 141 */ | 197 */ |
| 142 function $inherits(child, parent) { | 198 function $inherits(child, parent) { |
| 143 if (child.prototype.__proto__) { | 199 if (child.prototype.__proto__) { |
| 144 child.prototype.__proto__ = parent.prototype; | 200 child.prototype.__proto__ = parent.prototype; |
| 145 } else { | 201 } else { |
| 146 function tmp() {}; | 202 function tmp() {}; |
| 147 tmp.prototype = parent.prototype; | 203 tmp.prototype = parent.prototype; |
| 148 child.prototype = new tmp(); | 204 child.prototype = new tmp(); |
| 149 child.prototype.constructor = child; | 205 child.prototype.constructor = child; |
| 150 } | 206 } |
| 151 } | 207 } |
| 152 | 208 |
| 153 /** | 209 /** |
| 154 * @param {Function} fn | 210 * @param {Function} fn |
| 211 * @param {Function=} fRtt |
| 155 * @param {Object|undefined} thisObj | 212 * @param {Object|undefined} thisObj |
| 156 * @param {...*} var_args | 213 * @param {...*} var_args |
| 157 */ | 214 */ |
| 158 function $bind(fn, thisObj, var_args) { | 215 function $bind(fn, fRtt, thisObj, var_args) { |
| 159 if (arguments.length > 2) { | 216 var func; |
| 160 var boundArgs = Array.prototype.slice.call(arguments, 2); | 217 if (arguments.length > 3) { |
| 161 return function() { | 218 var boundArgs = Array.prototype.slice.call(arguments, 3); |
| 219 func = function() { |
| 162 // Prepend the bound arguments to the current arguments. | 220 // Prepend the bound arguments to the current arguments. |
| 163 var newArgs = Array.prototype.slice.call(arguments); | 221 var newArgs = Array.prototype.slice.call(arguments); |
| 164 Array.prototype.unshift.apply(newArgs, boundArgs); | 222 Array.prototype.unshift.apply(newArgs, boundArgs); |
| 165 return fn.apply(thisObj, newArgs); | 223 return fn.apply(thisObj, newArgs); |
| 166 }; | 224 }; |
| 167 } else { | 225 } else { |
| 168 return function() { | 226 func = function() { |
| 169 return fn.apply(thisObj, arguments); | 227 return fn.apply(thisObj, arguments); |
| 170 }; | 228 }; |
| 171 } | 229 } |
| 230 if(fRtt) { |
| 231 func.$lookupRTT = function() { |
| 232 return fRtt.apply(thisObj, arguments); |
| 233 }; |
| 234 } |
| 235 return func; |
| 172 } | 236 } |
| 173 | 237 |
| 174 /** | 238 /** |
| 175 * Dart null object that should be used by JS implementation to test for | 239 * Dart null object that should be used by JS implementation to test for |
| 176 * Dart null. | 240 * Dart null. |
| 177 * | 241 * |
| 178 * TODO(ngeoffray): update dartc to generate this variable instead of | 242 * TODO(ngeoffray): update dartc to generate this variable instead of |
| 179 * undefined. | 243 * undefined. |
| 180 * @const | 244 * @const |
| 181 */ | 245 */ |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 return match; | 527 return match; |
| 464 } | 528 } |
| 465 o.$dartConstId = id; | 529 o.$dartConstId = id; |
| 466 $consts[key] = o; | 530 $consts[key] = o; |
| 467 return o; | 531 return o; |
| 468 } | 532 } |
| 469 | 533 |
| 470 function $Dart$MapLiteralFactory() { | 534 function $Dart$MapLiteralFactory() { |
| 471 return native__CoreJsUtil__newMapLiteral(); | 535 return native__CoreJsUtil__newMapLiteral(); |
| 472 } | 536 } |
| OLD | NEW |