1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/jaeger/recompile/bug651119.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,51 @@ 1.4 +Object.extend = function(destination, source) { 1.5 + for (var property in source) 1.6 + destination[property] = source[property]; 1.7 +}; 1.8 +var Enumerable = { 1.9 + _each: function(iterator) { 1.10 + for (var i = 0, length = this.length; i < length; i++) 1.11 + iterator(this[i]); 1.12 + }, 1.13 + each: function(iterator, context) { 1.14 + var index = 0; 1.15 + this._each(function(value) { 1.16 + iterator.call(context, value, index++); 1.17 + }); 1.18 + }, 1.19 + map: function(iterator, context) { 1.20 + var results = []; 1.21 + this.each(function(value, index) { 1.22 + var res = iterator.call(context, value); 1.23 + results.push(res); 1.24 + }); 1.25 + return results; 1.26 + }, 1.27 + invoke: function(method) { 1.28 + var args = $A(arguments).slice(1); 1.29 + return this.map(function(value) { 1.30 + return value[method].apply(value, args); 1.31 + }); 1.32 + }, 1.33 +}; 1.34 +Object.extend(Array.prototype, Enumerable); 1.35 +function $A(iterable) { 1.36 + var length = iterable.length || 0, results = new Array(length); 1.37 + while (length--) results[length] = iterable[length]; 1.38 + return results; 1.39 +} 1.40 +function g() { 1.41 + return [1, 2, 3, 4, 5].each(function(part) { 1.42 + return 0; 1.43 + }); 1.44 +} 1.45 +function f() { 1.46 + g(); 1.47 + g(); 1.48 + g(); 1.49 + g(); 1.50 + var result = [[2, 1, 3], [6, 5, 4]]; 1.51 + result = result.invoke('invoke', 'toString', 2); 1.52 + result[0].join(', '); 1.53 +}; 1.54 +f();