summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/jaeger/recompile/bug651119.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/jaeger/recompile/bug651119.js')
-rw-r--r--js/src/jit-test/tests/jaeger/recompile/bug651119.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/jaeger/recompile/bug651119.js b/js/src/jit-test/tests/jaeger/recompile/bug651119.js
new file mode 100644
index 000000000..598a36574
--- /dev/null
+++ b/js/src/jit-test/tests/jaeger/recompile/bug651119.js
@@ -0,0 +1,51 @@
+Object.extend = function(destination, source) {
+ for (var property in source)
+ destination[property] = source[property];
+};
+var Enumerable = {
+ _each: function(iterator) {
+ for (var i = 0, length = this.length; i < length; i++)
+ iterator(this[i]);
+ },
+ each: function(iterator, context) {
+ var index = 0;
+ this._each(function(value) {
+ iterator.call(context, value, index++);
+ });
+ },
+ map: function(iterator, context) {
+ var results = [];
+ this.each(function(value, index) {
+ var res = iterator.call(context, value);
+ results.push(res);
+ });
+ return results;
+ },
+ invoke: function(method) {
+ var args = $A(arguments).slice(1);
+ return this.map(function(value) {
+ return value[method].apply(value, args);
+ });
+ },
+};
+Object.extend(Array.prototype, Enumerable);
+function $A(iterable) {
+ var length = iterable.length || 0, results = new Array(length);
+ while (length--) results[length] = iterable[length];
+ return results;
+}
+function g() {
+ return [1, 2, 3, 4, 5].each(function(part) {
+ return 0;
+ });
+}
+function f() {
+ g();
+ g();
+ g();
+ g();
+ var result = [[2, 1, 3], [6, 5, 4]];
+ result = result.invoke('invoke', 'toString', 2);
+ result[0].join(', ');
+};
+f();