1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/auto-regress/bug499169.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,179 @@ 1.4 +// Binary: cache/js-dbg-32-30b481fd82f5-linux 1.5 +// Flags: -j 1.6 +// 1.7 +var Native = function(k) { 1.8 + var f = k.initialize; 1.9 + var d = f; 1.10 + var j = function(n, l, o, m) { 1.11 + n.prototype[l] = o; 1.12 + }; 1.13 + d.alias = function(n, l, o) { 1.14 + n = this.prototype[n] 1.15 + return j(this, l, n, o); 1.16 + }; 1.17 + d.implement = function(m, l, o) { 1.18 + for (var n in m) { 1.19 + j(this, n, m[n], l); 1.20 + } 1.21 + } 1.22 + return d; 1.23 +}; 1.24 +(function() { 1.25 + var a = { 1.26 + Array: Array, 1.27 + Function: Function, 1.28 + }; 1.29 + for (var h in a) { 1.30 + new Native({ 1.31 + initialize: a[h], 1.32 + }); 1.33 + } 1.34 +} ()); 1.35 +Array.alias("forEach", "each"); 1.36 +function $merge() { 1.37 + var a = Array.slice(arguments); 1.38 + a.unshift({}); 1.39 + return $mixin.apply(null, a); 1.40 +} 1.41 +function $mixin(e) { 1.42 + for (var d = 1, a = arguments.length; d < a; d++) { 1.43 + var b = arguments[d]; 1.44 + for (var c in b) { 1.45 + var g = b[c], 1.46 + f = e[c]; 1.47 + e[c] = f && $type(g) == "object" && $type(f) == "object" ? $mixin(f, g) : $unlink(g); 1.48 + } 1.49 + } 1.50 +} 1.51 +function $type(a) { 1.52 + if (a == undefined) { 1.53 + return false; 1.54 + } 1.55 + if (a.$family) { 1.56 + } 1.57 + return typeof a; 1.58 +} 1.59 +function $unlink(c) { 1.60 + if ($type(c) == "object") { 1.61 + b = {}; 1.62 + } 1.63 + return b; 1.64 +} 1.65 +var Window = new Native({ 1.66 + initialize: function(a) {}, 1.67 +}); 1.68 +Array.implement({ 1.69 + extend: function(c) { 1.70 + return this; 1.71 + } 1.72 +}); 1.73 +Function.implement({ 1.74 + extend: function(a) { 1.75 + for (var b in a) { 1.76 + this[b] = a[b]; 1.77 + } 1.78 + return this; 1.79 + }, 1.80 + run: function(a, b) { 1.81 + return this.apply(b, a); 1.82 + } 1.83 +}); 1.84 +function Class(b) { 1.85 + var a = function() { 1.86 + Object.reset(this); 1.87 + var c = this.initialize ? this.initialize.apply(this, arguments) : this; 1.88 + }.extend(this); 1.89 + a.implement(b); 1.90 + return a; 1.91 +} 1.92 +Object.reset = function(a, c) { 1.93 + if (c == null) { 1.94 + for (var e in a) { 1.95 + Object.reset(a, e); 1.96 + } 1.97 + } 1.98 + switch ($type(a[c])) { 1.99 + case "object": 1.100 + var d = function() {}; 1.101 + d.prototype = a[c]; 1.102 + var b = new d; 1.103 + a[c] = Object.reset(b); 1.104 + } 1.105 + return a; 1.106 +}; 1.107 +(new Native({initialize: Class})).extend({}); 1.108 + function wrap(a, b, c) { 1.109 + return function() { 1.110 + var d = c.apply(this, arguments); 1.111 + }.extend({}); 1.112 + } 1.113 +Class.implement({ 1.114 + implement: function(a, d) { 1.115 + if ($type(a) == "object") { 1.116 + for (var e in a) { 1.117 + this.implement(e, a[e]); 1.118 + } 1.119 + } 1.120 + var f = Class.Mutators[a]; 1.121 + if (f) { 1.122 + d = f.call(this, d); 1.123 + } 1.124 + var c = this.prototype; 1.125 + switch ($type(d)) { 1.126 + case "function": 1.127 + c[a] = wrap(this, a, d); 1.128 + break; 1.129 + case "object": 1.130 + var b = c[a]; 1.131 + if ($type(b) == "object") { 1.132 + $mixin(b, d); 1.133 + } else { 1.134 + c[a] = $unlink(d); 1.135 + } 1.136 + } 1.137 + } 1.138 +}); 1.139 +Class.Mutators = { 1.140 + Extends: function(a) { 1.141 + this.prototype = new a; 1.142 + }, 1.143 + Implements: function(a) { 1.144 + a.each(function(b) { 1.145 + b = new b; 1.146 + this.implement(b); 1.147 + }, 1.148 + this); 1.149 + } 1.150 +}; 1.151 +var Events = new Class({}); 1.152 +var Options = new Class({ 1.153 + setOptions: function() { 1.154 + this.options = $merge.run([this.options].extend(arguments)); 1.155 + } 1.156 +}); 1.157 +var Autocompleter = {}; 1.158 +Autocompleter.Base = new Class({ 1.159 + Implements: [Options, Events], 1.160 + options: {}, 1.161 +}); 1.162 +Autocompleter.Ajax = {}; 1.163 +Autocompleter.Ajax.Base = new Class({ 1.164 + Extends: Autocompleter.Base, 1.165 + options: { 1.166 + postVar: "value", 1.167 + onRequest: function(){}, 1.168 + } 1.169 +}); 1.170 +Autocompleter.Ajax.Json = new Class({ 1.171 + Extends: Autocompleter.Ajax.Base, 1.172 +}); 1.173 +Autocompleter.JsonP = new Class({ 1.174 + Extends: Autocompleter.Ajax.Json, 1.175 + options: { 1.176 + minLength: 1 1.177 + }, 1.178 + initialize: function(el, url, options) { 1.179 + this.setOptions({}); 1.180 + } 1.181 +}); 1.182 +new Autocompleter.JsonP();