johnson 2.0.0.pre0 → 2.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3954) hide show
  1. data/CHANGELOG.rdoc +6 -0
  2. data/Manifest.txt +3709 -33
  3. data/Rakefile +19 -0
  4. data/ext/tracemonkey/extconf.rb +16 -2
  5. data/ext/tracemonkey/immutable_node.cc +3 -1
  6. data/ext/tracemonkey/js.cc +474 -0
  7. data/ext/tracemonkey/runtime.cc +3 -1
  8. data/ext/tracemonkey/split_global.cc +0 -373
  9. data/ext/tracemonkey/split_global.h +3 -0
  10. data/lib/johnson.rb +1 -1
  11. data/test/generic/parser_test.rb +27 -5
  12. data/test/johnson/generic/nodes/array_literal_test.rb +1 -1
  13. data/test/johnson/generic/nodes/ternary_test.rb +1 -1
  14. data/test/johnson/tracemonkey/split_global_test.html +18 -0
  15. data/vendor/tracemonkey/Makefile.in +100 -74
  16. data/vendor/tracemonkey/Makefile.ref +0 -13
  17. data/vendor/tracemonkey/README.html +2 -3
  18. data/vendor/tracemonkey/aclocal.m4 +3 -0
  19. data/vendor/tracemonkey/analysis-tests/Makefile.in +110 -0
  20. data/vendor/tracemonkey/analysis-tests/green-accessred.cpp +11 -0
  21. data/vendor/tracemonkey/analysis-tests/green-callred.cpp +12 -0
  22. data/vendor/tracemonkey/analysis-tests/green-callredptr.cpp +8 -0
  23. data/vendor/tracemonkey/analysis-tests/green-tored-badpath.cpp +14 -0
  24. data/vendor/tracemonkey/analysis-tests/green-tored.cpp +12 -0
  25. data/vendor/tracemonkey/analysis-tests/green-toredptr.cpp +12 -0
  26. data/vendor/tracemonkey/analysis-tests/misdeclared-red-funcptr.cpp +5 -0
  27. data/vendor/tracemonkey/analysis-tests/misdeclared-red-funcptr2.cpp +5 -0
  28. data/vendor/tracemonkey/analysis-tests/red-accessred.cpp +11 -0
  29. data/vendor/tracemonkey/analysis-tests/red-callgreen.cpp +8 -0
  30. data/vendor/tracemonkey/analysis-tests/red-callred.cpp +8 -0
  31. data/vendor/tracemonkey/analysis-tests/red-togreenptr-arg.cpp +11 -0
  32. data/vendor/tracemonkey/analysis-tests/red-togreenptr-field.cpp +15 -0
  33. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-array.cpp +8 -0
  34. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-cast.cpp +7 -0
  35. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-nested.cpp +18 -0
  36. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-struct.cpp +12 -0
  37. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer.cpp +7 -0
  38. data/vendor/tracemonkey/analysis-tests/red-togreenptr-return.cpp +9 -0
  39. data/vendor/tracemonkey/analysis-tests/red-togreenptr.cpp +10 -0
  40. data/vendor/tracemonkey/bench.sh +1 -1
  41. data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +0 -0
  42. data/vendor/tracemonkey/build/autoconf/config.sub +154 -63
  43. data/vendor/tracemonkey/build/autoconf/make-makefile +10 -3
  44. data/vendor/tracemonkey/build/autoconf/mozprog.m4 +76 -0
  45. data/vendor/tracemonkey/build/autoconf/nspr.m4 +25 -6
  46. data/vendor/tracemonkey/build/unix/mddepend.pl +2 -0
  47. data/vendor/tracemonkey/build/win32/pgomerge.py +0 -0
  48. data/vendor/tracemonkey/builtins.tbl +1 -1
  49. data/vendor/tracemonkey/config.mk +3 -5
  50. data/vendor/tracemonkey/config/Makefile.in +8 -5
  51. data/vendor/tracemonkey/config/autoconf.mk.in +5 -14
  52. data/vendor/tracemonkey/config/config.mk +28 -35
  53. data/vendor/tracemonkey/config/milestone.txt +1 -1
  54. data/vendor/tracemonkey/config/mkdepend/Makefile.in +2 -3
  55. data/vendor/tracemonkey/config/nsinstall.exe.manifest +17 -0
  56. data/vendor/tracemonkey/config/nsinstall_win.c +708 -0
  57. data/vendor/tracemonkey/config/rules.mk +153 -191
  58. data/vendor/tracemonkey/config/static-checking.js +21 -30
  59. data/vendor/tracemonkey/config/system-headers +17 -31
  60. data/vendor/tracemonkey/config/version.mk +2 -2
  61. data/vendor/tracemonkey/config/version_win.pl +5 -12
  62. data/vendor/tracemonkey/configure +1175 -1071
  63. data/vendor/tracemonkey/configure.in +237 -309
  64. data/vendor/tracemonkey/dtoa.c +0 -4
  65. data/vendor/tracemonkey/imacro_asm.js.in +8 -0
  66. data/vendor/tracemonkey/imacros.c.out +217 -267
  67. data/vendor/tracemonkey/imacros.jsasm +56 -98
  68. data/vendor/tracemonkey/jitstats.tbl +58 -16
  69. data/vendor/tracemonkey/js-config.h.in +8 -6
  70. data/vendor/tracemonkey/js.msg +1 -1
  71. data/vendor/tracemonkey/jsapi-tests/Makefile.in +76 -0
  72. data/vendor/tracemonkey/jsapi-tests/README +160 -0
  73. data/vendor/tracemonkey/jsapi-tests/selfTest.cpp +20 -0
  74. data/vendor/tracemonkey/jsapi-tests/testDebugger.cpp +25 -0
  75. data/vendor/tracemonkey/jsapi-tests/testDefineGetterSetterNonEnumerable.cpp +51 -0
  76. data/vendor/tracemonkey/jsapi-tests/testExtendedEq.cpp +45 -0
  77. data/vendor/tracemonkey/jsapi-tests/testIntString.cpp +13 -0
  78. data/vendor/tracemonkey/jsapi-tests/testIsAboutToBeFinalized.cpp +89 -0
  79. data/vendor/tracemonkey/jsapi-tests/testPropCache.cpp +31 -0
  80. data/vendor/tracemonkey/jsapi-tests/testSameValue.cpp +21 -0
  81. data/vendor/tracemonkey/jsapi-tests/testXDR.cpp +55 -0
  82. data/vendor/tracemonkey/jsapi-tests/tests.cpp +79 -0
  83. data/vendor/tracemonkey/jsapi-tests/tests.h +239 -0
  84. data/vendor/tracemonkey/jsapi.cpp +264 -336
  85. data/vendor/tracemonkey/jsapi.h +163 -57
  86. data/vendor/tracemonkey/jsarena.cpp +8 -8
  87. data/vendor/tracemonkey/jsarray.cpp +551 -602
  88. data/vendor/tracemonkey/jsarray.h +58 -57
  89. data/vendor/tracemonkey/jsatom.cpp +59 -56
  90. data/vendor/tracemonkey/jsatom.h +0 -6
  91. data/vendor/tracemonkey/jsatominlines.h +95 -0
  92. data/vendor/tracemonkey/jsbit.h +26 -1
  93. data/vendor/tracemonkey/jsbool.cpp +18 -11
  94. data/vendor/tracemonkey/jsbool.h +7 -11
  95. data/vendor/tracemonkey/jsbuiltins.cpp +91 -66
  96. data/vendor/tracemonkey/jsbuiltins.h +146 -76
  97. data/vendor/tracemonkey/jscntxt.cpp +141 -73
  98. data/vendor/tracemonkey/jscntxt.h +415 -106
  99. data/vendor/tracemonkey/jscompat.h +3 -4
  100. data/vendor/tracemonkey/jsconfig.mk +0 -12
  101. data/vendor/tracemonkey/jscpucfg.cpp +1 -1
  102. data/vendor/tracemonkey/jsdate.cpp +373 -181
  103. data/vendor/tracemonkey/jsdate.h +5 -1
  104. data/vendor/tracemonkey/jsdbgapi.cpp +595 -84
  105. data/vendor/tracemonkey/jsdbgapi.h +13 -4
  106. data/vendor/tracemonkey/jsdhash.cpp +42 -15
  107. data/vendor/tracemonkey/jsdhash.h +19 -0
  108. data/vendor/tracemonkey/jsdtoa.cpp +7 -7
  109. data/vendor/tracemonkey/{jsdtracef.c → jsdtracef.cpp} +56 -93
  110. data/vendor/tracemonkey/jsdtracef.h +2 -2
  111. data/vendor/tracemonkey/jsemit.cpp +92 -82
  112. data/vendor/tracemonkey/jsemit.h +3 -6
  113. data/vendor/tracemonkey/jsexn.cpp +46 -62
  114. data/vendor/tracemonkey/jsfile.cpp +91 -71
  115. data/vendor/tracemonkey/jsfun.cpp +535 -549
  116. data/vendor/tracemonkey/jsfun.h +104 -20
  117. data/vendor/tracemonkey/jsgc.cpp +275 -255
  118. data/vendor/tracemonkey/jsgc.h +46 -54
  119. data/vendor/tracemonkey/jshash.cpp +5 -5
  120. data/vendor/tracemonkey/jshash.h +3 -1
  121. data/vendor/tracemonkey/jsinterp.cpp +350 -4490
  122. data/vendor/tracemonkey/jsinterp.h +50 -39
  123. data/vendor/tracemonkey/jsinttypes.h +139 -0
  124. data/vendor/tracemonkey/jsinvoke.cpp +1 -1
  125. data/vendor/tracemonkey/jsiter.cpp +65 -58
  126. data/vendor/tracemonkey/jsiter.h +2 -2
  127. data/vendor/tracemonkey/jskwgen.cpp +2 -2
  128. data/vendor/tracemonkey/jslibmath.h +17 -0
  129. data/vendor/tracemonkey/jslock.cpp +73 -71
  130. data/vendor/tracemonkey/jslock.h +21 -18
  131. data/vendor/tracemonkey/jslog2.cpp +1 -1
  132. data/vendor/tracemonkey/jsmath.cpp +69 -109
  133. data/vendor/tracemonkey/jsmath.h +18 -8
  134. data/vendor/tracemonkey/jsnum.cpp +129 -106
  135. data/vendor/tracemonkey/jsnum.h +202 -55
  136. data/vendor/tracemonkey/jsobj.cpp +1108 -1076
  137. data/vendor/tracemonkey/jsobj.h +441 -204
  138. data/vendor/tracemonkey/jsobjinlines.h +59 -0
  139. data/vendor/tracemonkey/json.cpp +170 -263
  140. data/vendor/tracemonkey/json.h +2 -13
  141. data/vendor/tracemonkey/jsopcode.cpp +141 -89
  142. data/vendor/tracemonkey/jsopcode.h +23 -4
  143. data/vendor/tracemonkey/jsopcode.tbl +7 -1
  144. data/vendor/tracemonkey/jsoplengen.cpp +1 -1
  145. data/vendor/tracemonkey/jsops.cpp +4213 -0
  146. data/vendor/tracemonkey/jsotypes.h +0 -4
  147. data/vendor/tracemonkey/jsparse.cpp +147 -262
  148. data/vendor/tracemonkey/jsparse.h +12 -10
  149. data/vendor/tracemonkey/jsprf.cpp +11 -11
  150. data/vendor/tracemonkey/jsprvtd.h +40 -33
  151. data/vendor/tracemonkey/jspubtd.h +3 -6
  152. data/vendor/tracemonkey/jsregexp.cpp +1260 -455
  153. data/vendor/tracemonkey/jsregexp.h +17 -8
  154. data/vendor/tracemonkey/jsscan.cpp +151 -324
  155. data/vendor/tracemonkey/jsscan.h +25 -82
  156. data/vendor/tracemonkey/jsscope.cpp +385 -300
  157. data/vendor/tracemonkey/jsscope.h +290 -117
  158. data/vendor/tracemonkey/jsscript.cpp +135 -153
  159. data/vendor/tracemonkey/jsscript.h +52 -68
  160. data/vendor/tracemonkey/jsscriptinlines.h +69 -0
  161. data/vendor/tracemonkey/jsshell.msg +2 -0
  162. data/vendor/tracemonkey/jsstack.js +213 -7
  163. data/vendor/tracemonkey/jsstdint.h +58 -40
  164. data/vendor/tracemonkey/jsstr.cpp +1247 -954
  165. data/vendor/tracemonkey/jsstr.h +410 -95
  166. data/vendor/tracemonkey/{jsstddef.h → jsstrinlines.h} +30 -42
  167. data/vendor/tracemonkey/jstask.cpp +126 -0
  168. data/vendor/tracemonkey/jstask.h +88 -0
  169. data/vendor/tracemonkey/jstl.h +262 -0
  170. data/vendor/tracemonkey/jstracer.cpp +6806 -3438
  171. data/vendor/tracemonkey/jstracer.h +675 -169
  172. data/vendor/tracemonkey/jstypes.h +29 -49
  173. data/vendor/tracemonkey/jsutil.cpp +3 -3
  174. data/vendor/tracemonkey/jsutil.h +127 -5
  175. data/vendor/tracemonkey/jsvector.h +775 -0
  176. data/vendor/tracemonkey/jswince.asm +40 -2
  177. data/vendor/tracemonkey/jsxdrapi.cpp +24 -30
  178. data/vendor/tracemonkey/jsxdrapi.h +1 -1
  179. data/vendor/tracemonkey/jsxml.cpp +542 -712
  180. data/vendor/tracemonkey/jsxml.h +3 -11
  181. data/vendor/tracemonkey/lirasm/Makefile.in +78 -0
  182. data/vendor/tracemonkey/lirasm/lirasm.cpp +1159 -0
  183. data/vendor/tracemonkey/lirasm/testlirc.sh +27 -0
  184. data/vendor/tracemonkey/lirasm/tests/add.in +4 -0
  185. data/vendor/tracemonkey/lirasm/tests/add.out +1 -0
  186. data/vendor/tracemonkey/lirasm/tests/addsub.in +5 -0
  187. data/vendor/tracemonkey/lirasm/tests/addsub.out +1 -0
  188. data/vendor/tracemonkey/lirasm/tests/call1.in +11 -0
  189. data/vendor/tracemonkey/lirasm/tests/call1.out +2 -0
  190. data/vendor/tracemonkey/lirasm/tests/call2.in +5 -0
  191. data/vendor/tracemonkey/lirasm/tests/call2.out +1 -0
  192. data/vendor/tracemonkey/lirasm/tests/floatingpoint.in +4 -0
  193. data/vendor/tracemonkey/lirasm/tests/floatingpoint.out +1 -0
  194. data/vendor/tracemonkey/lirasm/tests/loadstore.in +9 -0
  195. data/vendor/tracemonkey/lirasm/tests/loadstore.out +1 -0
  196. data/vendor/tracemonkey/lirasm/tests/multfrag1.in +26 -0
  197. data/vendor/tracemonkey/lirasm/tests/multfrag1.out +2 -0
  198. data/vendor/tracemonkey/lirasm/tests/multfrag2.in +14 -0
  199. data/vendor/tracemonkey/lirasm/tests/multfrag2.out +1 -0
  200. data/vendor/tracemonkey/lirasm/tests/multfrag3.in +15 -0
  201. data/vendor/tracemonkey/lirasm/tests/multfrag3.out +1 -0
  202. data/vendor/tracemonkey/liveconnect/jsj.c +5 -5
  203. data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +2 -4
  204. data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +2 -4
  205. data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +3 -5
  206. data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +4 -24
  207. data/vendor/tracemonkey/liveconnect/jsj_private.h +4 -4
  208. data/vendor/tracemonkey/liveconnect/jsj_utils.c +18 -2
  209. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +30 -4
  210. data/vendor/tracemonkey/nanojit/{TraceTreeDrawer.h → Allocator.cpp} +56 -48
  211. data/vendor/tracemonkey/nanojit/Allocator.h +117 -0
  212. data/vendor/tracemonkey/nanojit/Assembler.cpp +1378 -1442
  213. data/vendor/tracemonkey/nanojit/Assembler.h +250 -280
  214. data/vendor/tracemonkey/nanojit/CodeAlloc.cpp +506 -0
  215. data/vendor/tracemonkey/nanojit/CodeAlloc.h +201 -0
  216. data/vendor/tracemonkey/nanojit/Containers.cpp +95 -0
  217. data/vendor/tracemonkey/nanojit/Containers.h +463 -0
  218. data/vendor/tracemonkey/nanojit/Fragmento.cpp +35 -604
  219. data/vendor/tracemonkey/nanojit/Fragmento.h +84 -183
  220. data/vendor/tracemonkey/nanojit/LIR.cpp +1969 -2050
  221. data/vendor/tracemonkey/nanojit/LIR.h +1351 -720
  222. data/vendor/tracemonkey/nanojit/LIRopcode.tbl +173 -159
  223. data/vendor/tracemonkey/nanojit/Native.h +61 -48
  224. data/vendor/tracemonkey/nanojit/NativeARM.cpp +1509 -849
  225. data/vendor/tracemonkey/nanojit/NativeARM.h +362 -286
  226. data/vendor/tracemonkey/nanojit/NativePPC.cpp +1296 -0
  227. data/vendor/tracemonkey/nanojit/NativePPC.h +587 -0
  228. data/vendor/tracemonkey/nanojit/NativeSparc.cpp +146 -224
  229. data/vendor/tracemonkey/nanojit/NativeSparc.h +235 -229
  230. data/vendor/tracemonkey/nanojit/NativeX64.cpp +1434 -0
  231. data/vendor/tracemonkey/nanojit/NativeX64.h +392 -0
  232. data/vendor/tracemonkey/nanojit/Nativei386.cpp +1395 -1367
  233. data/vendor/tracemonkey/nanojit/Nativei386.h +519 -514
  234. data/vendor/tracemonkey/nanojit/RegAlloc.cpp +37 -130
  235. data/vendor/tracemonkey/nanojit/RegAlloc.h +90 -49
  236. data/vendor/tracemonkey/nanojit/avmplus.cpp +249 -32
  237. data/vendor/tracemonkey/nanojit/avmplus.h +121 -667
  238. data/vendor/tracemonkey/nanojit/manifest.mk +79 -0
  239. data/vendor/tracemonkey/nanojit/nanojit.h +179 -157
  240. data/vendor/tracemonkey/plify_jsdhash.sed +10 -6
  241. data/vendor/tracemonkey/prmjtime.cpp +97 -55
  242. data/vendor/tracemonkey/prmjtime.h +1 -1
  243. data/vendor/tracemonkey/{config/revdepth.pl → ref-config/HP-UXB.11.31.mk} +28 -14
  244. data/vendor/tracemonkey/resource.h +1 -1
  245. data/vendor/tracemonkey/shell/js.cpp +358 -201
  246. data/vendor/tracemonkey/tests/Makefile.in +78 -0
  247. data/vendor/tracemonkey/tests/Patterns.pm +257 -0
  248. data/vendor/tracemonkey/tests/README-jsDriver.html +325 -0
  249. data/vendor/tracemonkey/tests/SisyphusMakefile +58 -0
  250. data/vendor/tracemonkey/tests/bisect.sh +488 -0
  251. data/vendor/tracemonkey/tests/browser.js +964 -0
  252. data/vendor/tracemonkey/tests/changes.sh +122 -0
  253. data/vendor/tracemonkey/tests/config.mk +113 -0
  254. data/vendor/tracemonkey/tests/config.sh +138 -0
  255. data/vendor/tracemonkey/tests/detect-universe.sh +126 -0
  256. data/vendor/tracemonkey/tests/dikdik-n.tests +3 -0
  257. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.1.js +85 -0
  258. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.2.js +86 -0
  259. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.3.js +56 -0
  260. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-01.js +61 -0
  261. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-02.js +58 -0
  262. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-03.js +60 -0
  263. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-04.js +56 -0
  264. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-05.js +57 -0
  265. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-06.js +61 -0
  266. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-07.js +78 -0
  267. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-08.js +158 -0
  268. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4.js +140 -0
  269. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.5.js +62 -0
  270. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.1.js +173 -0
  271. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.2.js +106 -0
  272. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.3.js +61 -0
  273. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.4.js +117 -0
  274. data/vendor/tracemonkey/tests/e4x/Expressions/11.3.1.js +272 -0
  275. data/vendor/tracemonkey/tests/e4x/Expressions/11.3.2.js +52 -0
  276. data/vendor/tracemonkey/tests/e4x/Expressions/11.4.1.js +139 -0
  277. data/vendor/tracemonkey/tests/e4x/Expressions/11.5.1.js +101 -0
  278. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.1.js +429 -0
  279. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.2.js +326 -0
  280. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.3.js +119 -0
  281. data/vendor/tracemonkey/tests/e4x/Expressions/jstests.list +30 -0
  282. data/vendor/tracemonkey/tests/e4x/Expressions/regress-301545.js +55 -0
  283. data/vendor/tracemonkey/tests/e4x/Expressions/regress-302531.js +63 -0
  284. data/vendor/tracemonkey/tests/e4x/Expressions/regress-340024.js +61 -0
  285. data/vendor/tracemonkey/tests/e4x/Expressions/regress-366123.js +67 -0
  286. data/vendor/tracemonkey/tests/e4x/Expressions/regress-496113.js +65 -0
  287. data/vendor/tracemonkey/tests/e4x/Expressions/shell.js +1 -0
  288. data/vendor/tracemonkey/tests/e4x/GC/jstests.list +11 -0
  289. data/vendor/tracemonkey/tests/e4x/GC/regress-280844-1.js +59 -0
  290. data/vendor/tracemonkey/tests/e4x/GC/regress-280844-2.js +71 -0
  291. data/vendor/tracemonkey/tests/e4x/GC/regress-292455.js +79 -0
  292. data/vendor/tracemonkey/tests/e4x/GC/regress-313952-01.js +68 -0
  293. data/vendor/tracemonkey/tests/e4x/GC/regress-313952-02.js +77 -0
  294. data/vendor/tracemonkey/tests/e4x/GC/regress-324117.js +98 -0
  295. data/vendor/tracemonkey/tests/e4x/GC/regress-324278.js +86 -0
  296. data/vendor/tracemonkey/tests/e4x/GC/regress-339785.js +92 -0
  297. data/vendor/tracemonkey/tests/e4x/GC/regress-357063-01.js +73 -0
  298. data/vendor/tracemonkey/tests/e4x/GC/regress-357063-02.js +69 -0
  299. data/vendor/tracemonkey/tests/e4x/GC/shell.js +1 -0
  300. data/vendor/tracemonkey/tests/e4x/Global/13.1.2.1.js +559 -0
  301. data/vendor/tracemonkey/tests/e4x/Global/jstests.list +2 -0
  302. data/vendor/tracemonkey/tests/e4x/Global/shell.js +1 -0
  303. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.1.js +68 -0
  304. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.2.js +86 -0
  305. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.5.js +67 -0
  306. data/vendor/tracemonkey/tests/e4x/Namespace/jstests.list +9 -0
  307. data/vendor/tracemonkey/tests/e4x/Namespace/regress-283972.js +65 -0
  308. data/vendor/tracemonkey/tests/e4x/Namespace/regress-292863.js +62 -0
  309. data/vendor/tracemonkey/tests/e4x/Namespace/regress-350442.js +74 -0
  310. data/vendor/tracemonkey/tests/e4x/Namespace/regress-444608-02.js +55 -0
  311. data/vendor/tracemonkey/tests/e4x/Namespace/regress-444608.js +55 -0
  312. data/vendor/tracemonkey/tests/e4x/Namespace/shell.js +1 -0
  313. data/vendor/tracemonkey/tests/e4x/QName/13.3.1.js +75 -0
  314. data/vendor/tracemonkey/tests/e4x/QName/13.3.2.js +87 -0
  315. data/vendor/tracemonkey/tests/e4x/QName/13.3.5.js +67 -0
  316. data/vendor/tracemonkey/tests/e4x/QName/jstests.list +8 -0
  317. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-01.js +53 -0
  318. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-02.js +55 -0
  319. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-03.js +55 -0
  320. data/vendor/tracemonkey/tests/e4x/QName/regress-444608.js +56 -0
  321. data/vendor/tracemonkey/tests/e4x/QName/shell.js +1 -0
  322. data/vendor/tracemonkey/tests/e4x/Regress/jstests.list +93 -0
  323. data/vendor/tracemonkey/tests/e4x/Regress/regress-257679.js +52 -0
  324. data/vendor/tracemonkey/tests/e4x/Regress/regress-263934.js +66 -0
  325. data/vendor/tracemonkey/tests/e4x/Regress/regress-263935.js +67 -0
  326. data/vendor/tracemonkey/tests/e4x/Regress/regress-263936.js +65 -0
  327. data/vendor/tracemonkey/tests/e4x/Regress/regress-264369.js +53 -0
  328. data/vendor/tracemonkey/tests/e4x/Regress/regress-271545.js +74 -0
  329. data/vendor/tracemonkey/tests/e4x/Regress/regress-277650.js +64 -0
  330. data/vendor/tracemonkey/tests/e4x/Regress/regress-277664.js +64 -0
  331. data/vendor/tracemonkey/tests/e4x/Regress/regress-277683.js +65 -0
  332. data/vendor/tracemonkey/tests/e4x/Regress/regress-277779.js +60 -0
  333. data/vendor/tracemonkey/tests/e4x/Regress/regress-277935.js +68 -0
  334. data/vendor/tracemonkey/tests/e4x/Regress/regress-278112.js +55 -0
  335. data/vendor/tracemonkey/tests/e4x/Regress/regress-283349.js +57 -0
  336. data/vendor/tracemonkey/tests/e4x/Regress/regress-290056.js +61 -0
  337. data/vendor/tracemonkey/tests/e4x/Regress/regress-290499.js +52 -0
  338. data/vendor/tracemonkey/tests/e4x/Regress/regress-301553.js +60 -0
  339. data/vendor/tracemonkey/tests/e4x/Regress/regress-301573.js +57 -0
  340. data/vendor/tracemonkey/tests/e4x/Regress/regress-301596.js +60 -0
  341. data/vendor/tracemonkey/tests/e4x/Regress/regress-301692.js +83 -0
  342. data/vendor/tracemonkey/tests/e4x/Regress/regress-308111.js +959 -0
  343. data/vendor/tracemonkey/tests/e4x/Regress/regress-309897.js +68 -0
  344. data/vendor/tracemonkey/tests/e4x/Regress/regress-311580.js +61 -0
  345. data/vendor/tracemonkey/tests/e4x/Regress/regress-313799.js +53 -0
  346. data/vendor/tracemonkey/tests/e4x/Regress/regress-318922.js +108 -0
  347. data/vendor/tracemonkey/tests/e4x/Regress/regress-319872.js +78 -0
  348. data/vendor/tracemonkey/tests/e4x/Regress/regress-321547.js +91 -0
  349. data/vendor/tracemonkey/tests/e4x/Regress/regress-322499.js +72 -0
  350. data/vendor/tracemonkey/tests/e4x/Regress/regress-323338-1.js +75 -0
  351. data/vendor/tracemonkey/tests/e4x/Regress/regress-323338-2.js +52 -0
  352. data/vendor/tracemonkey/tests/e4x/Regress/regress-325425.js +60 -0
  353. data/vendor/tracemonkey/tests/e4x/Regress/regress-327564.js +78 -0
  354. data/vendor/tracemonkey/tests/e4x/Regress/regress-327691-01.js +59 -0
  355. data/vendor/tracemonkey/tests/e4x/Regress/regress-327691-02.js +59 -0
  356. data/vendor/tracemonkey/tests/e4x/Regress/regress-327697.js +80 -0
  357. data/vendor/tracemonkey/tests/e4x/Regress/regress-328249.js +65 -0
  358. data/vendor/tracemonkey/tests/e4x/Regress/regress-329257.js +71 -0
  359. data/vendor/tracemonkey/tests/e4x/Regress/regress-331558.js +54 -0
  360. data/vendor/tracemonkey/tests/e4x/Regress/regress-331664.js +53 -0
  361. data/vendor/tracemonkey/tests/e4x/Regress/regress-344455.js +60 -0
  362. data/vendor/tracemonkey/tests/e4x/Regress/regress-347155.js +69 -0
  363. data/vendor/tracemonkey/tests/e4x/Regress/regress-350206-1.js +71 -0
  364. data/vendor/tracemonkey/tests/e4x/Regress/regress-350206.js +57 -0
  365. data/vendor/tracemonkey/tests/e4x/Regress/regress-350238.js +65 -0
  366. data/vendor/tracemonkey/tests/e4x/Regress/regress-350629.js +129 -0
  367. data/vendor/tracemonkey/tests/e4x/Regress/regress-352097.js +92 -0
  368. data/vendor/tracemonkey/tests/e4x/Regress/regress-352103.js +76 -0
  369. data/vendor/tracemonkey/tests/e4x/Regress/regress-352223.js +71 -0
  370. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-01.js +67 -0
  371. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-02.js +67 -0
  372. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-03.js +68 -0
  373. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-04.js +66 -0
  374. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-05.js +66 -0
  375. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-07.js +59 -0
  376. data/vendor/tracemonkey/tests/e4x/Regress/regress-354998.js +94 -0
  377. data/vendor/tracemonkey/tests/e4x/Regress/regress-355474-02.js +58 -0
  378. data/vendor/tracemonkey/tests/e4x/Regress/regress-355478.js +62 -0
  379. data/vendor/tracemonkey/tests/e4x/Regress/regress-355569.js +163 -0
  380. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-01.js +57 -0
  381. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-02.js +63 -0
  382. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-03.js +64 -0
  383. data/vendor/tracemonkey/tests/e4x/Regress/regress-361451.js +57 -0
  384. data/vendor/tracemonkey/tests/e4x/Regress/regress-364017.js +58 -0
  385. data/vendor/tracemonkey/tests/e4x/Regress/regress-369032.js +63 -0
  386. data/vendor/tracemonkey/tests/e4x/Regress/regress-369536.js +48 -0
  387. data/vendor/tracemonkey/tests/e4x/Regress/regress-369740.js +82 -0
  388. data/vendor/tracemonkey/tests/e4x/Regress/regress-370016.js +52 -0
  389. data/vendor/tracemonkey/tests/e4x/Regress/regress-370048-01.js +59 -0
  390. data/vendor/tracemonkey/tests/e4x/Regress/regress-370048-02.js +57 -0
  391. data/vendor/tracemonkey/tests/e4x/Regress/regress-370372.js +73 -0
  392. data/vendor/tracemonkey/tests/e4x/Regress/regress-371369.js +63 -0
  393. data/vendor/tracemonkey/tests/e4x/Regress/regress-372563.js +52 -0
  394. data/vendor/tracemonkey/tests/e4x/Regress/regress-372564.js +52 -0
  395. data/vendor/tracemonkey/tests/e4x/Regress/regress-373082.js +110 -0
  396. data/vendor/tracemonkey/tests/e4x/Regress/regress-374106.js +52 -0
  397. data/vendor/tracemonkey/tests/e4x/Regress/regress-374112.js +52 -0
  398. data/vendor/tracemonkey/tests/e4x/Regress/regress-374116.js +52 -0
  399. data/vendor/tracemonkey/tests/e4x/Regress/regress-374160.js +52 -0
  400. data/vendor/tracemonkey/tests/e4x/Regress/regress-375406.js +53 -0
  401. data/vendor/tracemonkey/tests/e4x/Regress/regress-378492.js +60 -0
  402. data/vendor/tracemonkey/tests/e4x/Regress/regress-380833.js +55 -0
  403. data/vendor/tracemonkey/tests/e4x/Regress/regress-383255.js +60 -0
  404. data/vendor/tracemonkey/tests/e4x/Regress/regress-394941.js +68 -0
  405. data/vendor/tracemonkey/tests/e4x/Regress/regress-407323.js +67 -0
  406. data/vendor/tracemonkey/tests/e4x/Regress/regress-426520.js +64 -0
  407. data/vendor/tracemonkey/tests/e4x/Regress/regress-453915.js +54 -0
  408. data/vendor/tracemonkey/tests/e4x/Regress/regress-458679-01.js +64 -0
  409. data/vendor/tracemonkey/tests/e4x/Regress/regress-458679-02.js +76 -0
  410. data/vendor/tracemonkey/tests/e4x/Regress/regress-460180.js +53 -0
  411. data/vendor/tracemonkey/tests/e4x/Regress/regress-465063.js +59 -0
  412. data/vendor/tracemonkey/tests/e4x/Regress/regress-473709.js +71 -0
  413. data/vendor/tracemonkey/tests/e4x/Regress/regress-474319.js +60 -0
  414. data/vendor/tracemonkey/tests/e4x/Regress/regress-477053.js +60 -0
  415. data/vendor/tracemonkey/tests/e4x/Regress/shell.js +1 -0
  416. data/vendor/tracemonkey/tests/e4x/Statements/12.1.js +134 -0
  417. data/vendor/tracemonkey/tests/e4x/Statements/12.2.js +104 -0
  418. data/vendor/tracemonkey/tests/e4x/Statements/12.3-01.js +76 -0
  419. data/vendor/tracemonkey/tests/e4x/Statements/jstests.list +4 -0
  420. data/vendor/tracemonkey/tests/e4x/Statements/shell.js +1 -0
  421. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.1.1.js +141 -0
  422. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.1.2.js +148 -0
  423. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.2.1.js +159 -0
  424. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.3.1.js +60 -0
  425. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.3.js +77 -0
  426. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.4.1.js +95 -0
  427. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.4.js +85 -0
  428. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.5.1.js +52 -0
  429. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.5.js +52 -0
  430. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.6.1.js +52 -0
  431. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.6.js +52 -0
  432. data/vendor/tracemonkey/tests/e4x/TypeConversion/jstests.list +13 -0
  433. data/vendor/tracemonkey/tests/e4x/TypeConversion/regress-302097.js +59 -0
  434. data/vendor/tracemonkey/tests/e4x/TypeConversion/shell.js +1 -0
  435. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.1.js +304 -0
  436. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.10.js +52 -0
  437. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.11.js +52 -0
  438. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.12.js +52 -0
  439. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.13.js +52 -0
  440. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.2.js +82 -0
  441. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.3.js +213 -0
  442. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.4.js +50 -0
  443. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.5.js +53 -0
  444. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.6.js +59 -0
  445. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.7.js +53 -0
  446. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.8.js +54 -0
  447. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.9.js +139 -0
  448. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.1.js +164 -0
  449. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.10.js +53 -0
  450. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.2.js +64 -0
  451. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.3.js +52 -0
  452. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.4.js +53 -0
  453. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.5.js +54 -0
  454. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.6.js +53 -0
  455. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.7.js +53 -0
  456. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.8.js +56 -0
  457. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.9.js +81 -0
  458. data/vendor/tracemonkey/tests/e4x/Types/jstests.list +24 -0
  459. data/vendor/tracemonkey/tests/e4x/Types/shell.js +1 -0
  460. data/vendor/tracemonkey/tests/e4x/XML/13.4.1.js +113 -0
  461. data/vendor/tracemonkey/tests/e4x/XML/13.4.2.js +116 -0
  462. data/vendor/tracemonkey/tests/e4x/XML/13.4.3.10.js +52 -0
  463. data/vendor/tracemonkey/tests/e4x/XML/13.4.3.js +239 -0
  464. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.1.js +52 -0
  465. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.10.js +100 -0
  466. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.11.js +91 -0
  467. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.12-1.js +89 -0
  468. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.12.js +69 -0
  469. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.13.js +49 -0
  470. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.14.js +69 -0
  471. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.15.js +79 -0
  472. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.16.js +78 -0
  473. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.17.js +64 -0
  474. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.18.js +84 -0
  475. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.19.js +84 -0
  476. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.2.js +69 -0
  477. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.20.js +65 -0
  478. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.21.js +81 -0
  479. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.22.js +81 -0
  480. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.23.js +93 -0
  481. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.24.js +64 -0
  482. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.25.js +62 -0
  483. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.26.js +138 -0
  484. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.27.js +63 -0
  485. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.28.js +73 -0
  486. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.29.js +93 -0
  487. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3-01.js +72 -0
  488. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3-02.js +62 -0
  489. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3.js +84 -0
  490. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.30.js +62 -0
  491. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.31.js +78 -0
  492. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.32-01.js +56 -0
  493. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.32.js +100 -0
  494. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.33.js +80 -0
  495. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.34.js +77 -0
  496. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.35.js +91 -0
  497. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.36.js +72 -0
  498. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.37.js +67 -0
  499. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.38.js +107 -0
  500. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.39.js +129 -0
  501. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.4.js +76 -0
  502. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.40.js +69 -0
  503. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.5.js +71 -0
  504. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.6.js +68 -0
  505. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.7.js +62 -0
  506. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.8.js +69 -0
  507. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.9.js +63 -0
  508. data/vendor/tracemonkey/tests/e4x/XML/jstests.list +55 -0
  509. data/vendor/tracemonkey/tests/e4x/XML/regress-291930.js +54 -0
  510. data/vendor/tracemonkey/tests/e4x/XML/regress-324422-1.js +78 -0
  511. data/vendor/tracemonkey/tests/e4x/XML/regress-324422-2.js +72 -0
  512. data/vendor/tracemonkey/tests/e4x/XML/regress-324688.js +105 -0
  513. data/vendor/tracemonkey/tests/e4x/XML/regress-336921.js +63 -0
  514. data/vendor/tracemonkey/tests/e4x/XML/regress-376773.js +584 -0
  515. data/vendor/tracemonkey/tests/e4x/XML/shell.js +1 -0
  516. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.1.js +97 -0
  517. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.2.js +91 -0
  518. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.10.js +48 -0
  519. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.11.js +76 -0
  520. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.12.js +105 -0
  521. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.13.js +105 -0
  522. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.14.js +80 -0
  523. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.15.js +49 -0
  524. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.16.js +78 -0
  525. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.17.js +49 -0
  526. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.18.js +49 -0
  527. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.19.js +49 -0
  528. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.2.js +87 -0
  529. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.20.js +57 -0
  530. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.21.js +57 -0
  531. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.22.js +50 -0
  532. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.3.js +74 -0
  533. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.4.js +86 -0
  534. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.5.js +96 -0
  535. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.6.js +49 -0
  536. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.7.js +59 -0
  537. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.8.js +75 -0
  538. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.9.js +84 -0
  539. data/vendor/tracemonkey/tests/e4x/XMLList/jstests.list +25 -0
  540. data/vendor/tracemonkey/tests/e4x/XMLList/regress-373072.js +61 -0
  541. data/vendor/tracemonkey/tests/e4x/XMLList/shell.js +1 -0
  542. data/vendor/tracemonkey/tests/e4x/browser.js +82 -0
  543. data/vendor/tracemonkey/tests/e4x/decompilation/decompile-xml-escapes.js +78 -0
  544. data/vendor/tracemonkey/tests/e4x/decompilation/jstests.list +19 -0
  545. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349814.js +62 -0
  546. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349815.js +56 -0
  547. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349822.js +63 -0
  548. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349956.js +60 -0
  549. data/vendor/tracemonkey/tests/e4x/decompilation/regress-350226.js +55 -0
  550. data/vendor/tracemonkey/tests/e4x/decompilation/regress-350531.js +61 -0
  551. data/vendor/tracemonkey/tests/e4x/decompilation/regress-351706.js +61 -0
  552. data/vendor/tracemonkey/tests/e4x/decompilation/regress-351988.js +56 -0
  553. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352013.js +137 -0
  554. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352459.js +54 -0
  555. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352649.js +54 -0
  556. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352789.js +66 -0
  557. data/vendor/tracemonkey/tests/e4x/decompilation/regress-355101.js +54 -0
  558. data/vendor/tracemonkey/tests/e4x/decompilation/regress-355474-01.js +61 -0
  559. data/vendor/tracemonkey/tests/e4x/decompilation/regress-373678.js +55 -0
  560. data/vendor/tracemonkey/tests/e4x/decompilation/regress-429249.js +64 -0
  561. data/vendor/tracemonkey/tests/e4x/decompilation/regress-461233.js +56 -0
  562. data/vendor/tracemonkey/tests/e4x/decompilation/shell.js +1 -0
  563. data/vendor/tracemonkey/tests/e4x/extensions/jstests.list +21 -0
  564. data/vendor/tracemonkey/tests/e4x/extensions/regress-305335.js +62 -0
  565. data/vendor/tracemonkey/tests/e4x/extensions/regress-312196.js +115 -0
  566. data/vendor/tracemonkey/tests/e4x/extensions/regress-313080.js +60 -0
  567. data/vendor/tracemonkey/tests/e4x/extensions/regress-321547.js +61 -0
  568. data/vendor/tracemonkey/tests/e4x/extensions/regress-327534.js +61 -0
  569. data/vendor/tracemonkey/tests/e4x/extensions/regress-327897.js +66 -0
  570. data/vendor/tracemonkey/tests/e4x/extensions/regress-337226.js +52 -0
  571. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-01.js +81 -0
  572. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-02.js +86 -0
  573. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-03.js +86 -0
  574. data/vendor/tracemonkey/tests/e4x/extensions/regress-353165.js +115 -0
  575. data/vendor/tracemonkey/tests/e4x/extensions/regress-354145-06.js +67 -0
  576. data/vendor/tracemonkey/tests/e4x/extensions/regress-354151-01.js +63 -0
  577. data/vendor/tracemonkey/tests/e4x/extensions/regress-354151-02.js +69 -0
  578. data/vendor/tracemonkey/tests/e4x/extensions/regress-374025.js +54 -0
  579. data/vendor/tracemonkey/tests/e4x/extensions/regress-374163.js +62 -0
  580. data/vendor/tracemonkey/tests/e4x/extensions/regress-410192.js +55 -0
  581. data/vendor/tracemonkey/tests/e4x/extensions/regress-450871-01.js +67 -0
  582. data/vendor/tracemonkey/tests/e4x/extensions/regress-450871-02.js +68 -0
  583. data/vendor/tracemonkey/tests/e4x/extensions/regress-462734-01.js +67 -0
  584. data/vendor/tracemonkey/tests/e4x/extensions/shell.js +1 -0
  585. data/vendor/tracemonkey/tests/e4x/jstests.list +13 -0
  586. data/vendor/tracemonkey/tests/e4x/shell.js +121 -0
  587. data/vendor/tracemonkey/tests/e4x/template.js +51 -0
  588. data/vendor/tracemonkey/tests/ecma/Array/15.4-1.js +133 -0
  589. data/vendor/tracemonkey/tests/ecma/Array/15.4-2.js +114 -0
  590. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.1.js +111 -0
  591. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.2.js +162 -0
  592. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.3.js +84 -0
  593. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.js +132 -0
  594. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-1.js +112 -0
  595. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-2.js +101 -0
  596. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-3.js +137 -0
  597. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.2-1.js +183 -0
  598. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.2-2.js +118 -0
  599. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.3.js +101 -0
  600. data/vendor/tracemonkey/tests/ecma/Array/15.4.3.1-2.js +81 -0
  601. data/vendor/tracemonkey/tests/ecma/Array/15.4.3.2.js +62 -0
  602. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.1.js +63 -0
  603. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.2.js +110 -0
  604. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.3-1.js +163 -0
  605. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.4-1.js +294 -0
  606. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.4-2.js +169 -0
  607. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-1.js +225 -0
  608. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-2.js +227 -0
  609. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-3.js +182 -0
  610. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.js +74 -0
  611. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.1-1.js +170 -0
  612. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.1-2.js +152 -0
  613. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.2-1.js +86 -0
  614. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.2-2.js +127 -0
  615. data/vendor/tracemonkey/tests/ecma/Array/jstests.list +28 -0
  616. data/vendor/tracemonkey/tests/ecma/Array/shell.js +1 -0
  617. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.1.js +96 -0
  618. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.2.js +161 -0
  619. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-1.js +72 -0
  620. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-2.js +71 -0
  621. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-3.js +71 -0
  622. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-4.js +75 -0
  623. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1.js +69 -0
  624. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4-1.js +72 -0
  625. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.1.js +62 -0
  626. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-1.js +97 -0
  627. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-2.js +73 -0
  628. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-3.js +65 -0
  629. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-4-n.js +69 -0
  630. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-1.js +88 -0
  631. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-2.js +67 -0
  632. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-3.js +66 -0
  633. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-4-n.js +69 -0
  634. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3.js +83 -0
  635. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.js +80 -0
  636. data/vendor/tracemonkey/tests/ecma/Boolean/jstests.list +20 -0
  637. data/vendor/tracemonkey/tests/ecma/Boolean/shell.js +1 -0
  638. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.1-1.js +95 -0
  639. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.1-2.js +90 -0
  640. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.13-1.js +78 -0
  641. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.1.js +174 -0
  642. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-1.js +86 -0
  643. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-2.js +89 -0
  644. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-3.js +86 -0
  645. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-4.js +82 -0
  646. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-5.js +86 -0
  647. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-6.js +85 -0
  648. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-1.js +239 -0
  649. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-2.js +152 -0
  650. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-3.js +141 -0
  651. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-4.js +151 -0
  652. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-5.js +140 -0
  653. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-1.js +150 -0
  654. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-2.js +141 -0
  655. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-3.js +145 -0
  656. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-4.js +142 -0
  657. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-5.js +139 -0
  658. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-1.js +155 -0
  659. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-2.js +153 -0
  660. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-3.js +160 -0
  661. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-4.js +161 -0
  662. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-5.js +161 -0
  663. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.2-1.js +81 -0
  664. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.2.js +191 -0
  665. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.3.js +185 -0
  666. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.1.js +63 -0
  667. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-1.js +85 -0
  668. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-10.js +89 -0
  669. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-11.js +89 -0
  670. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-12.js +89 -0
  671. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-13.js +89 -0
  672. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-2.js +85 -0
  673. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-3.js +85 -0
  674. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-4.js +85 -0
  675. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-5.js +85 -0
  676. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-6.js +85 -0
  677. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-7.js +85 -0
  678. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-8.js +89 -0
  679. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-9.js +89 -0
  680. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-1.js +76 -0
  681. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-2.js +76 -0
  682. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-3.js +76 -0
  683. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-4.js +76 -0
  684. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-5.js +76 -0
  685. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-6.js +76 -0
  686. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-7.js +76 -0
  687. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-1.js +77 -0
  688. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-2.js +77 -0
  689. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-3.js +77 -0
  690. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-4.js +77 -0
  691. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-5.js +77 -0
  692. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-6.js +77 -0
  693. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-7.js +77 -0
  694. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-8.js +71 -0
  695. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-1.js +79 -0
  696. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-2.js +76 -0
  697. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-3.js +77 -0
  698. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-4.js +77 -0
  699. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-5.js +77 -0
  700. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-6.js +77 -0
  701. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-7.js +76 -0
  702. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-8.js +71 -0
  703. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.14.js +87 -0
  704. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.15.js +88 -0
  705. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.16.js +87 -0
  706. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.17.js +88 -0
  707. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.18.js +88 -0
  708. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.19.js +88 -0
  709. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2-1.js +151 -0
  710. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2-2-n.js +84 -0
  711. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2.js +151 -0
  712. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.20.js +88 -0
  713. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-1.js +70 -0
  714. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-2.js +70 -0
  715. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-3.js +70 -0
  716. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-4.js +70 -0
  717. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-5.js +70 -0
  718. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-6.js +70 -0
  719. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-7.js +70 -0
  720. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-8.js +71 -0
  721. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-1.js +89 -0
  722. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-2.js +74 -0
  723. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-3.js +74 -0
  724. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-4.js +74 -0
  725. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-5.js +74 -0
  726. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-6.js +74 -0
  727. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-7.js +74 -0
  728. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-8.js +72 -0
  729. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-1.js +139 -0
  730. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-10.js +139 -0
  731. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-11.js +140 -0
  732. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-12.js +137 -0
  733. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-13.js +137 -0
  734. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-14.js +137 -0
  735. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-15.js +137 -0
  736. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-16.js +137 -0
  737. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-17.js +137 -0
  738. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-18.js +137 -0
  739. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-2.js +109 -0
  740. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-3-n.js +79 -0
  741. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-4.js +112 -0
  742. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-5.js +113 -0
  743. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-6.js +112 -0
  744. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-7.js +113 -0
  745. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-8.js +103 -0
  746. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-9.js +103 -0
  747. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-1.js +134 -0
  748. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-2.js +134 -0
  749. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-3.js +134 -0
  750. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-4.js +134 -0
  751. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-5.js +134 -0
  752. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-6.js +134 -0
  753. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-7.js +134 -0
  754. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-8.js +133 -0
  755. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.25-1.js +174 -0
  756. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.26-1.js +183 -0
  757. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.27-1.js +183 -0
  758. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.28-1.js +196 -0
  759. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.29-1.js +191 -0
  760. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.3-1-n.js +80 -0
  761. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.3-2.js +104 -0
  762. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.30-1.js +192 -0
  763. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.31-1.js +222 -0
  764. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.32-1.js +141 -0
  765. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.33-1.js +145 -0
  766. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.34-1.js +182 -0
  767. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.35-1.js +139 -0
  768. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-1.js +165 -0
  769. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-2.js +164 -0
  770. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-3.js +163 -0
  771. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-4.js +163 -0
  772. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-5.js +163 -0
  773. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-6.js +163 -0
  774. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-7.js +163 -0
  775. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-1.js +173 -0
  776. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-2.js +161 -0
  777. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-3.js +164 -0
  778. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-4.js +163 -0
  779. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-5.js +159 -0
  780. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.4-1.js +93 -0
  781. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.4-2-n.js +76 -0
  782. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.5.js +112 -0
  783. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.6.js +104 -0
  784. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.7.js +105 -0
  785. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.8.js +113 -0
  786. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.9.js +113 -0
  787. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.js +83 -0
  788. data/vendor/tracemonkey/tests/ecma/Date/jstests.list +151 -0
  789. data/vendor/tracemonkey/tests/ecma/Date/shell.js +1 -0
  790. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3-1.js +107 -0
  791. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3-2.js +73 -0
  792. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3.js +170 -0
  793. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-1.js +111 -0
  794. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-10.js +105 -0
  795. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-2.js +113 -0
  796. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-3.js +111 -0
  797. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-4.js +113 -0
  798. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-5.js +112 -0
  799. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-6.js +100 -0
  800. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-7.js +112 -0
  801. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-8.js +113 -0
  802. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-1.js +118 -0
  803. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-2.js +100 -0
  804. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-3.js +130 -0
  805. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-4.js +91 -0
  806. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.8-2.js +120 -0
  807. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.8-3.js +66 -0
  808. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.1.js +85 -0
  809. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.2-1.js +122 -0
  810. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.2-2.js +133 -0
  811. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.3-1.js +86 -0
  812. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.3-2.js +92 -0
  813. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/jstests.list +24 -0
  814. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/shell.js +1 -0
  815. data/vendor/tracemonkey/tests/ecma/Expressions/11.1.1.js +137 -0
  816. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-1.js +270 -0
  817. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-2.js +269 -0
  818. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-3.js +268 -0
  819. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-1.js +110 -0
  820. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-2-n.js +74 -0
  821. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-3.js +71 -0
  822. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-4.js +71 -0
  823. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.1.js +72 -0
  824. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-1.js +231 -0
  825. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-2.js +253 -0
  826. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-3.js +300 -0
  827. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-4.js +137 -0
  828. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-5.js +137 -0
  829. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.js +86 -0
  830. data/vendor/tracemonkey/tests/ecma/Expressions/11.14-1.js +73 -0
  831. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-1.js +272 -0
  832. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-2.js +128 -0
  833. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-3-n.js +128 -0
  834. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-4-n.js +128 -0
  835. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-5.js +128 -0
  836. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-1-n.js +104 -0
  837. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-1.js +100 -0
  838. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-10-n.js +102 -0
  839. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-11.js +104 -0
  840. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-2-n.js +104 -0
  841. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-3-n.js +100 -0
  842. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-4-n.js +104 -0
  843. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-5-n.js +104 -0
  844. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-6-n.js +103 -0
  845. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-7-n.js +104 -0
  846. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-8-n.js +104 -0
  847. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-9-n.js +104 -0
  848. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-1.js +125 -0
  849. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-2-n.js +94 -0
  850. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-3-n.js +91 -0
  851. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-4-n.js +91 -0
  852. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-5.js +85 -0
  853. data/vendor/tracemonkey/tests/ecma/Expressions/11.3.1.js +153 -0
  854. data/vendor/tracemonkey/tests/ecma/Expressions/11.3.2.js +153 -0
  855. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.1.js +92 -0
  856. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.2.js +83 -0
  857. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.3.js +111 -0
  858. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.4.js +156 -0
  859. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.5.js +154 -0
  860. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.6.js +299 -0
  861. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.7-01.js +299 -0
  862. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.7-02.js +87 -0
  863. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.8.js +215 -0
  864. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.9.js +94 -0
  865. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.1.js +115 -0
  866. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.2.js +154 -0
  867. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.3.js +161 -0
  868. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-1.js +160 -0
  869. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-2.js +164 -0
  870. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-3.js +150 -0
  871. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.2-1.js +165 -0
  872. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.3.js +115 -0
  873. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.1.js +228 -0
  874. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.2.js +246 -0
  875. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.3.js +230 -0
  876. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.1.js +121 -0
  877. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.2.js +121 -0
  878. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.3.js +120 -0
  879. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.4.js +121 -0
  880. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.1.js +159 -0
  881. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.2.js +159 -0
  882. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.3.js +159 -0
  883. data/vendor/tracemonkey/tests/ecma/Expressions/jstests.list +69 -0
  884. data/vendor/tracemonkey/tests/ecma/Expressions/shell.js +1 -0
  885. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-1.js +136 -0
  886. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-2.js +183 -0
  887. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-3.js +99 -0
  888. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-1.js +132 -0
  889. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-2.js +107 -0
  890. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-3.js +95 -0
  891. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-2.js +70 -0
  892. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-3.js +79 -0
  893. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-4.js +70 -0
  894. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.2.js +62 -0
  895. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4-1.js +94 -0
  896. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4.1.js +61 -0
  897. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4.js +81 -0
  898. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5-1.js +117 -0
  899. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5-2.js +90 -0
  900. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5.1.js +83 -0
  901. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5.3.js +72 -0
  902. data/vendor/tracemonkey/tests/ecma/FunctionObjects/jstests.list +18 -0
  903. data/vendor/tracemonkey/tests/ecma/FunctionObjects/shell.js +1 -0
  904. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1-1-n.js +70 -0
  905. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1-2-n.js +67 -0
  906. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.1.1.js +63 -0
  907. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.1.2.js +62 -0
  908. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.1-2.js +66 -0
  909. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.2-1.js +410 -0
  910. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.2-2.js +238 -0
  911. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.3-1.js +441 -0
  912. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.3-2.js +291 -0
  913. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.4.js +205 -0
  914. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-1.js +206 -0
  915. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-2.js +183 -0
  916. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-3.js +207 -0
  917. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.6.js +125 -0
  918. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.7.js +130 -0
  919. data/vendor/tracemonkey/tests/ecma/GlobalObject/jstests.list +16 -0
  920. data/vendor/tracemonkey/tests/ecma/GlobalObject/shell.js +1 -0
  921. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-1.js +82 -0
  922. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-2.js +73 -0
  923. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-3.js +89 -0
  924. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-1.js +73 -0
  925. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-2-n.js +74 -0
  926. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-3-n.js +74 -0
  927. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-4-n.js +73 -0
  928. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-5-n.js +72 -0
  929. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-6.js +68 -0
  930. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-1.js +92 -0
  931. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-10.js +65 -0
  932. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-11.js +66 -0
  933. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-12.js +64 -0
  934. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-13-n.js +66 -0
  935. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-2.js +65 -0
  936. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-3.js +65 -0
  937. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-4.js +65 -0
  938. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-5.js +65 -0
  939. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-6.js +65 -0
  940. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-7.js +66 -0
  941. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-8.js +65 -0
  942. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-9.js +65 -0
  943. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-1-n.js +71 -0
  944. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-2-n.js +71 -0
  945. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-3-n.js +69 -0
  946. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-1-n.js +77 -0
  947. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-10-n.js +77 -0
  948. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-11-n.js +77 -0
  949. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-12-n.js +77 -0
  950. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-13-n.js +77 -0
  951. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-14-n.js +77 -0
  952. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-15-n.js +77 -0
  953. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-16-n.js +77 -0
  954. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-2-n.js +77 -0
  955. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-3-n.js +77 -0
  956. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-4-n.js +77 -0
  957. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-5-n.js +77 -0
  958. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-6-n.js +77 -0
  959. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-7-n.js +75 -0
  960. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-8-n.js +76 -0
  961. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-9-n.js +77 -0
  962. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-1-n.js +71 -0
  963. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-10-n.js +71 -0
  964. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-11-n.js +71 -0
  965. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-12-n.js +71 -0
  966. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-13-n.js +71 -0
  967. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-14-n.js +103 -0
  968. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-15-n.js +97 -0
  969. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-16-n.js +88 -0
  970. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-2-n.js +71 -0
  971. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-3-n.js +71 -0
  972. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-4-n.js +102 -0
  973. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-5-n.js +71 -0
  974. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-6-n.js +71 -0
  975. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-7-n.js +103 -0
  976. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-8-n.js +71 -0
  977. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-9-n.js +104 -0
  978. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-1.js +62 -0
  979. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-10-n.js +64 -0
  980. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-2-n.js +64 -0
  981. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-3-n.js +64 -0
  982. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-4-n.js +64 -0
  983. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-5-n.js +64 -0
  984. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-6.js +61 -0
  985. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-7.js +61 -0
  986. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-8-n.js +64 -0
  987. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-9-n.js +64 -0
  988. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.6.js +313 -0
  989. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.1.js +64 -0
  990. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.2.js +71 -0
  991. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3-1.js +198 -0
  992. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3-2.js +93 -0
  993. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3.js +331 -0
  994. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.4.js +269 -0
  995. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.8.2-n.js +63 -0
  996. data/vendor/tracemonkey/tests/ecma/LexicalConventions/jstests.list +76 -0
  997. data/vendor/tracemonkey/tests/ecma/LexicalConventions/shell.js +1 -0
  998. data/vendor/tracemonkey/tests/ecma/Math/15.8-2-n.js +82 -0
  999. data/vendor/tracemonkey/tests/ecma/Math/15.8-3-n.js +81 -0
  1000. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.1-1.js +64 -0
  1001. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.1-2.js +69 -0
  1002. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.2-1.js +64 -0
  1003. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.2-2.js +70 -0
  1004. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.3-1.js +65 -0
  1005. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.3-2.js +72 -0
  1006. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.4-1.js +65 -0
  1007. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.4-2.js +69 -0
  1008. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.5-1.js +66 -0
  1009. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.5-2.js +70 -0
  1010. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.6-1.js +65 -0
  1011. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.6-2.js +70 -0
  1012. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.7-1.js +65 -0
  1013. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.7-2.js +70 -0
  1014. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-1.js +65 -0
  1015. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-2.js +69 -0
  1016. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-3.js +63 -0
  1017. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.js +149 -0
  1018. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.1.js +226 -0
  1019. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.10.js +153 -0
  1020. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.11.js +200 -0
  1021. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.12.js +177 -0
  1022. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.13.js +385 -0
  1023. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.14.js +79 -0
  1024. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.15.js +202 -0
  1025. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.16.js +132 -0
  1026. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.17.js +217 -0
  1027. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.18.js +165 -0
  1028. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.2.js +156 -0
  1029. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.3.js +158 -0
  1030. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.4.js +156 -0
  1031. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.5.js +244 -0
  1032. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.6.js +232 -0
  1033. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.7.js +283 -0
  1034. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.8.js +134 -0
  1035. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.9.js +191 -0
  1036. data/vendor/tracemonkey/tests/ecma/Math/jstests.list +39 -0
  1037. data/vendor/tracemonkey/tests/ecma/Math/shell.js +1 -0
  1038. data/vendor/tracemonkey/tests/ecma/NativeObjects/shell.js +1 -0
  1039. data/vendor/tracemonkey/tests/ecma/Number/15.7.1.js +88 -0
  1040. data/vendor/tracemonkey/tests/ecma/Number/15.7.2.js +168 -0
  1041. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-1.js +71 -0
  1042. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-2.js +71 -0
  1043. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-3.js +67 -0
  1044. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-1.js +65 -0
  1045. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-2.js +70 -0
  1046. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-3.js +67 -0
  1047. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-4.js +64 -0
  1048. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-1.js +68 -0
  1049. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-2.js +73 -0
  1050. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-3.js +64 -0
  1051. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-4.js +66 -0
  1052. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-1.js +66 -0
  1053. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-2.js +71 -0
  1054. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-3.js +65 -0
  1055. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-4.js +66 -0
  1056. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-1.js +64 -0
  1057. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-2.js +70 -0
  1058. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-3.js +65 -0
  1059. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-4.js +66 -0
  1060. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-1.js +65 -0
  1061. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-2.js +69 -0
  1062. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-3.js +65 -0
  1063. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-4.js +66 -0
  1064. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.js +69 -0
  1065. data/vendor/tracemonkey/tests/ecma/Number/15.7.4-1.js +60 -0
  1066. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.1.js +62 -0
  1067. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-1.js +111 -0
  1068. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-2-n.js +76 -0
  1069. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-3-n.js +73 -0
  1070. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-4.js +70 -0
  1071. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-1.js +97 -0
  1072. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-2.js +65 -0
  1073. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-3-n.js +72 -0
  1074. data/vendor/tracemonkey/tests/ecma/Number/jstests.list +36 -0
  1075. data/vendor/tracemonkey/tests/ecma/Number/shell.js +1 -0
  1076. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.1.1.js +146 -0
  1077. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.1.2.js +81 -0
  1078. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.2.1.js +138 -0
  1079. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.2.2.js +74 -0
  1080. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3-1.js +64 -0
  1081. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-1.js +69 -0
  1082. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-2.js +70 -0
  1083. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-3.js +70 -0
  1084. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-4.js +70 -0
  1085. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.js +67 -0
  1086. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.1.js +64 -0
  1087. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.2.js +130 -0
  1088. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.3.js +117 -0
  1089. data/vendor/tracemonkey/tests/ecma/ObjectObjects/jstests.list +14 -0
  1090. data/vendor/tracemonkey/tests/ecma/ObjectObjects/shell.js +1 -0
  1091. data/vendor/tracemonkey/tests/ecma/README +1 -0
  1092. data/vendor/tracemonkey/tests/ecma/SourceText/6-1.js +128 -0
  1093. data/vendor/tracemonkey/tests/ecma/SourceText/6-2.js +131 -0
  1094. data/vendor/tracemonkey/tests/ecma/SourceText/jstests.list +3 -0
  1095. data/vendor/tracemonkey/tests/ecma/SourceText/shell.js +1 -0
  1096. data/vendor/tracemonkey/tests/ecma/Statements/12.10-1.js +151 -0
  1097. data/vendor/tracemonkey/tests/ecma/Statements/12.10.js +61 -0
  1098. data/vendor/tracemonkey/tests/ecma/Statements/12.2-1.js +74 -0
  1099. data/vendor/tracemonkey/tests/ecma/Statements/12.5-1.js +102 -0
  1100. data/vendor/tracemonkey/tests/ecma/Statements/12.5-2.js +99 -0
  1101. data/vendor/tracemonkey/tests/ecma/Statements/12.6.1-1.js +74 -0
  1102. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-1.js +75 -0
  1103. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-2.js +76 -0
  1104. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-3.js +72 -0
  1105. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-4.js +72 -0
  1106. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-5.js +73 -0
  1107. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-6.js +75 -0
  1108. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-7.js +73 -0
  1109. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-8.js +71 -0
  1110. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-9-n.js +76 -0
  1111. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-1.js +63 -0
  1112. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-10.js +115 -0
  1113. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-11.js +98 -0
  1114. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-12.js +103 -0
  1115. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-19.js +117 -0
  1116. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-2.js +63 -0
  1117. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-3.js +73 -0
  1118. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-4.js +202 -0
  1119. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-5-n.js +110 -0
  1120. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-6-n.js +109 -0
  1121. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-7-n.js +110 -0
  1122. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-8-n.js +110 -0
  1123. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-9-n.js +109 -0
  1124. data/vendor/tracemonkey/tests/ecma/Statements/12.7-1-n.js +64 -0
  1125. data/vendor/tracemonkey/tests/ecma/Statements/12.8-1-n.js +67 -0
  1126. data/vendor/tracemonkey/tests/ecma/Statements/12.9-1-n.js +63 -0
  1127. data/vendor/tracemonkey/tests/ecma/Statements/jstests.list +32 -0
  1128. data/vendor/tracemonkey/tests/ecma/Statements/shell.js +1 -0
  1129. data/vendor/tracemonkey/tests/ecma/String/15.5.1.js +134 -0
  1130. data/vendor/tracemonkey/tests/ecma/String/15.5.2.js +110 -0
  1131. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-1.js +71 -0
  1132. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-2.js +69 -0
  1133. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-3.js +66 -0
  1134. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-4.js +66 -0
  1135. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-1.js +190 -0
  1136. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-2.js +77 -0
  1137. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-3.js +121 -0
  1138. data/vendor/tracemonkey/tests/ecma/String/15.5.3.js +66 -0
  1139. data/vendor/tracemonkey/tests/ecma/String/15.5.4.1.js +63 -0
  1140. data/vendor/tracemonkey/tests/ecma/String/15.5.4.10-1.js +217 -0
  1141. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-1.js +518 -0
  1142. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-2.js +515 -0
  1143. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-3.js +514 -0
  1144. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-4.js +507 -0
  1145. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-5.js +520 -0
  1146. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-6.js +516 -0
  1147. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-1.js +520 -0
  1148. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-2.js +518 -0
  1149. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-3.js +559 -0
  1150. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-4.js +515 -0
  1151. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-5.js +515 -0
  1152. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-1.js +72 -0
  1153. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-2-n.js +73 -0
  1154. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-3.js +83 -0
  1155. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2.js +87 -0
  1156. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-1.js +72 -0
  1157. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-2.js +90 -0
  1158. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-3-n.js +72 -0
  1159. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-1.js +92 -0
  1160. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-2.js +136 -0
  1161. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-3.js +112 -0
  1162. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-4.js +124 -0
  1163. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-1.js +87 -0
  1164. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-2.js +121 -0
  1165. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-3.js +131 -0
  1166. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-4.js +75 -0
  1167. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-5.js +106 -0
  1168. data/vendor/tracemonkey/tests/ecma/String/15.5.4.6-1.js +155 -0
  1169. data/vendor/tracemonkey/tests/ecma/String/15.5.4.6-2.js +259 -0
  1170. data/vendor/tracemonkey/tests/ecma/String/15.5.4.7-1.js +219 -0
  1171. data/vendor/tracemonkey/tests/ecma/String/15.5.4.7-2.js +217 -0
  1172. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-1.js +232 -0
  1173. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-2.js +247 -0
  1174. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-3.js +204 -0
  1175. data/vendor/tracemonkey/tests/ecma/String/15.5.4.9-1.js +202 -0
  1176. data/vendor/tracemonkey/tests/ecma/String/15.5.4.js +108 -0
  1177. data/vendor/tracemonkey/tests/ecma/String/15.5.5.1.js +88 -0
  1178. data/vendor/tracemonkey/tests/ecma/String/jstests.list +50 -0
  1179. data/vendor/tracemonkey/tests/ecma/String/shell.js +1 -0
  1180. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.2.js +138 -0
  1181. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3-1.js +100 -0
  1182. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-1.js +323 -0
  1183. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-2.js +87 -0
  1184. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-3.js +747 -0
  1185. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.js +87 -0
  1186. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.4-1.js +112 -0
  1187. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.4-2.js +112 -0
  1188. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.5-2.js +173 -0
  1189. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.6.js +140 -0
  1190. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.7.js +160 -0
  1191. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.8.1.js +167 -0
  1192. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.9-1.js +119 -0
  1193. data/vendor/tracemonkey/tests/ecma/TypeConversion/jstests.list +14 -0
  1194. data/vendor/tracemonkey/tests/ecma/TypeConversion/shell.js +1 -0
  1195. data/vendor/tracemonkey/tests/ecma/Types/8.1.js +75 -0
  1196. data/vendor/tracemonkey/tests/ecma/Types/8.4.js +130 -0
  1197. data/vendor/tracemonkey/tests/ecma/Types/8.6.2.1-1.js +78 -0
  1198. data/vendor/tracemonkey/tests/ecma/Types/jstests.list +4 -0
  1199. data/vendor/tracemonkey/tests/ecma/Types/shell.js +1 -0
  1200. data/vendor/tracemonkey/tests/ecma/browser.js +62 -0
  1201. data/vendor/tracemonkey/tests/ecma/extensions/10.1.4-9.js +110 -0
  1202. data/vendor/tracemonkey/tests/ecma/extensions/10.1.6.js +127 -0
  1203. data/vendor/tracemonkey/tests/ecma/extensions/10.1.8-1.js +135 -0
  1204. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-1.js +145 -0
  1205. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-2.js +136 -0
  1206. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-3.js +137 -0
  1207. data/vendor/tracemonkey/tests/ecma/extensions/11.6.2-1.js +124 -0
  1208. data/vendor/tracemonkey/tests/ecma/extensions/15-1.js +94 -0
  1209. data/vendor/tracemonkey/tests/ecma/extensions/15-2.js +77 -0
  1210. data/vendor/tracemonkey/tests/ecma/extensions/15.1.2.1-1.js +88 -0
  1211. data/vendor/tracemonkey/tests/ecma/extensions/15.2.1.1.js +82 -0
  1212. data/vendor/tracemonkey/tests/ecma/extensions/15.2.3-1.js +64 -0
  1213. data/vendor/tracemonkey/tests/ecma/extensions/15.2.4.js +66 -0
  1214. data/vendor/tracemonkey/tests/ecma/extensions/15.3.1.1-1.js +82 -0
  1215. data/vendor/tracemonkey/tests/ecma/extensions/15.3.1.1-2.js +82 -0
  1216. data/vendor/tracemonkey/tests/ecma/extensions/15.3.2.1-1.js +72 -0
  1217. data/vendor/tracemonkey/tests/ecma/extensions/15.3.2.1-2.js +72 -0
  1218. data/vendor/tracemonkey/tests/ecma/extensions/15.3.3.1-1.js +67 -0
  1219. data/vendor/tracemonkey/tests/ecma/extensions/15.4.3.js +63 -0
  1220. data/vendor/tracemonkey/tests/ecma/extensions/15.5.3.js +66 -0
  1221. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.2.js +59 -0
  1222. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.4-4.js +107 -0
  1223. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.5-6.js +94 -0
  1224. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.7-3.js +161 -0
  1225. data/vendor/tracemonkey/tests/ecma/extensions/15.6.3.1-5.js +58 -0
  1226. data/vendor/tracemonkey/tests/ecma/extensions/15.6.3.js +65 -0
  1227. data/vendor/tracemonkey/tests/ecma/extensions/15.6.4-2.js +66 -0
  1228. data/vendor/tracemonkey/tests/ecma/extensions/15.7.3.js +69 -0
  1229. data/vendor/tracemonkey/tests/ecma/extensions/15.7.4.js +90 -0
  1230. data/vendor/tracemonkey/tests/ecma/extensions/15.8-1.js +84 -0
  1231. data/vendor/tracemonkey/tests/ecma/extensions/15.9.5.js +76 -0
  1232. data/vendor/tracemonkey/tests/ecma/extensions/8.6.2.1-1.js +98 -0
  1233. data/vendor/tracemonkey/tests/ecma/extensions/9.9-1.js +102 -0
  1234. data/vendor/tracemonkey/tests/ecma/extensions/jstests.list +34 -0
  1235. data/vendor/tracemonkey/tests/ecma/extensions/shell.js +1 -0
  1236. data/vendor/tracemonkey/tests/ecma/jsref.js +632 -0
  1237. data/vendor/tracemonkey/tests/ecma/jstests.list +18 -0
  1238. data/vendor/tracemonkey/tests/ecma/shell.js +581 -0
  1239. data/vendor/tracemonkey/tests/ecma/template.js +70 -0
  1240. data/vendor/tracemonkey/tests/ecma_2/Exceptions/boolean-001.js +80 -0
  1241. data/vendor/tracemonkey/tests/ecma_2/Exceptions/boolean-002.js +84 -0
  1242. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-001.js +93 -0
  1243. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-002.js +87 -0
  1244. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-003.js +89 -0
  1245. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-004.js +83 -0
  1246. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-001.js +78 -0
  1247. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-002.js +78 -0
  1248. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-003.js +82 -0
  1249. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-004.js +78 -0
  1250. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-005.js +78 -0
  1251. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-006.js +89 -0
  1252. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-007.js +90 -0
  1253. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-008.js +77 -0
  1254. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-009.js +86 -0
  1255. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-010-n.js +61 -0
  1256. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-011-n.js +62 -0
  1257. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-001.js +83 -0
  1258. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-002.js +93 -0
  1259. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-003.js +88 -0
  1260. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-004.js +82 -0
  1261. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-005.js +74 -0
  1262. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-006.js +79 -0
  1263. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-007.js +77 -0
  1264. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-008.js +74 -0
  1265. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-009.js +75 -0
  1266. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-010.js +76 -0
  1267. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-011.js +76 -0
  1268. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-012.js +77 -0
  1269. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-013.js +77 -0
  1270. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-014.js +79 -0
  1271. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-015.js +73 -0
  1272. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-016.js +73 -0
  1273. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-017.js +73 -0
  1274. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-019.js +77 -0
  1275. data/vendor/tracemonkey/tests/ecma_2/Exceptions/function-001.js +86 -0
  1276. data/vendor/tracemonkey/tests/ecma_2/Exceptions/global-001.js +78 -0
  1277. data/vendor/tracemonkey/tests/ecma_2/Exceptions/global-002.js +78 -0
  1278. data/vendor/tracemonkey/tests/ecma_2/Exceptions/jstests.list +103 -0
  1279. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-001.js +85 -0
  1280. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-002.js +85 -0
  1281. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-003.js +76 -0
  1282. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-004.js +85 -0
  1283. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-005.js +85 -0
  1284. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-006.js +91 -0
  1285. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-007.js +84 -0
  1286. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-008.js +86 -0
  1287. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-009.js +86 -0
  1288. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-010.js +84 -0
  1289. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-011.js +95 -0
  1290. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-012.js +86 -0
  1291. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-013.js +86 -0
  1292. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-014.js +95 -0
  1293. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-015.js +86 -0
  1294. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-016.js +95 -0
  1295. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-017.js +87 -0
  1296. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-018.js +86 -0
  1297. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-019.js +86 -0
  1298. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-020.js +86 -0
  1299. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-021.js +95 -0
  1300. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-022.js +86 -0
  1301. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-023.js +85 -0
  1302. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-024.js +92 -0
  1303. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-025.js +92 -0
  1304. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-026.js +92 -0
  1305. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-027.js +94 -0
  1306. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-028.js +92 -0
  1307. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-029.js +92 -0
  1308. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-030.js +92 -0
  1309. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-031.js +92 -0
  1310. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-032.js +92 -0
  1311. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-033.js +92 -0
  1312. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-034.js +91 -0
  1313. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-035.js +92 -0
  1314. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-036.js +92 -0
  1315. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-037.js +92 -0
  1316. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-038.js +92 -0
  1317. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-039.js +79 -0
  1318. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-040.js +79 -0
  1319. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-041.js +81 -0
  1320. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-042.js +82 -0
  1321. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-047.js +83 -0
  1322. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-048.js +77 -0
  1323. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-049.js +82 -0
  1324. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-050.js +78 -0
  1325. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-051.js +78 -0
  1326. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-052.js +80 -0
  1327. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-053.js +78 -0
  1328. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-054.js +79 -0
  1329. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-001.js +86 -0
  1330. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-002.js +81 -0
  1331. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-003.js +83 -0
  1332. data/vendor/tracemonkey/tests/ecma_2/Exceptions/shell.js +1 -0
  1333. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-001.js +80 -0
  1334. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-002.js +102 -0
  1335. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-003.js +113 -0
  1336. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-004.js +85 -0
  1337. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-005.js +84 -0
  1338. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-006.js +84 -0
  1339. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-007.js +75 -0
  1340. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-008.js +75 -0
  1341. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-009.js +74 -0
  1342. data/vendor/tracemonkey/tests/ecma_2/Exceptions/string-001.js +86 -0
  1343. data/vendor/tracemonkey/tests/ecma_2/Exceptions/string-002.js +85 -0
  1344. data/vendor/tracemonkey/tests/ecma_2/Expressions/StrictEquality-001.js +106 -0
  1345. data/vendor/tracemonkey/tests/ecma_2/Expressions/jstests.list +2 -0
  1346. data/vendor/tracemonkey/tests/ecma_2/Expressions/shell.js +1 -0
  1347. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/apply-001-n.js +65 -0
  1348. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/call-1.js +75 -0
  1349. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/jstests.list +3 -0
  1350. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/shell.js +1 -0
  1351. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/jstests.list +4 -0
  1352. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/keywords-001.js +81 -0
  1353. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/regexp-literals-001.js +77 -0
  1354. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/regexp-literals-002.js +61 -0
  1355. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/shell.js +1 -0
  1356. data/vendor/tracemonkey/tests/ecma_2/README +1 -0
  1357. data/vendor/tracemonkey/tests/ecma_2/RegExp/constructor-001.js +99 -0
  1358. data/vendor/tracemonkey/tests/ecma_2/RegExp/exec-001.js +73 -0
  1359. data/vendor/tracemonkey/tests/ecma_2/RegExp/exec-002.js +221 -0
  1360. data/vendor/tracemonkey/tests/ecma_2/RegExp/function-001.js +99 -0
  1361. data/vendor/tracemonkey/tests/ecma_2/RegExp/hex-001.js +102 -0
  1362. data/vendor/tracemonkey/tests/ecma_2/RegExp/jstests.list +15 -0
  1363. data/vendor/tracemonkey/tests/ecma_2/RegExp/multiline-001.js +101 -0
  1364. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-001.js +111 -0
  1365. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-002.js +126 -0
  1366. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-003.js +120 -0
  1367. data/vendor/tracemonkey/tests/ecma_2/RegExp/properties-001.js +124 -0
  1368. data/vendor/tracemonkey/tests/ecma_2/RegExp/properties-002.js +162 -0
  1369. data/vendor/tracemonkey/tests/ecma_2/RegExp/regexp-enumerate-001.js +121 -0
  1370. data/vendor/tracemonkey/tests/ecma_2/RegExp/regress-001.js +78 -0
  1371. data/vendor/tracemonkey/tests/ecma_2/RegExp/shell.js +1 -0
  1372. data/vendor/tracemonkey/tests/ecma_2/RegExp/unicode-001.js +92 -0
  1373. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-001.js +77 -0
  1374. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-002.js +104 -0
  1375. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-003.js +96 -0
  1376. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-004.js +100 -0
  1377. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-005.js +106 -0
  1378. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-006.js +122 -0
  1379. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-007.js +130 -0
  1380. data/vendor/tracemonkey/tests/ecma_2/Statements/forin-001.js +330 -0
  1381. data/vendor/tracemonkey/tests/ecma_2/Statements/forin-002.js +109 -0
  1382. data/vendor/tracemonkey/tests/ecma_2/Statements/if-001.js +75 -0
  1383. data/vendor/tracemonkey/tests/ecma_2/Statements/jstests.list +31 -0
  1384. data/vendor/tracemonkey/tests/ecma_2/Statements/label-001.js +75 -0
  1385. data/vendor/tracemonkey/tests/ecma_2/Statements/label-002.js +89 -0
  1386. data/vendor/tracemonkey/tests/ecma_2/Statements/shell.js +1 -0
  1387. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-001.js +98 -0
  1388. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-002.js +96 -0
  1389. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-003.js +90 -0
  1390. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-004.js +127 -0
  1391. data/vendor/tracemonkey/tests/ecma_2/Statements/try-001.js +116 -0
  1392. data/vendor/tracemonkey/tests/ecma_2/Statements/try-003.js +115 -0
  1393. data/vendor/tracemonkey/tests/ecma_2/Statements/try-004.js +87 -0
  1394. data/vendor/tracemonkey/tests/ecma_2/Statements/try-005.js +90 -0
  1395. data/vendor/tracemonkey/tests/ecma_2/Statements/try-006.js +120 -0
  1396. data/vendor/tracemonkey/tests/ecma_2/Statements/try-007.js +125 -0
  1397. data/vendor/tracemonkey/tests/ecma_2/Statements/try-008.js +92 -0
  1398. data/vendor/tracemonkey/tests/ecma_2/Statements/try-009.js +99 -0
  1399. data/vendor/tracemonkey/tests/ecma_2/Statements/try-010.js +106 -0
  1400. data/vendor/tracemonkey/tests/ecma_2/Statements/try-012.js +128 -0
  1401. data/vendor/tracemonkey/tests/ecma_2/Statements/while-001.js +75 -0
  1402. data/vendor/tracemonkey/tests/ecma_2/Statements/while-002.js +119 -0
  1403. data/vendor/tracemonkey/tests/ecma_2/Statements/while-003.js +120 -0
  1404. data/vendor/tracemonkey/tests/ecma_2/Statements/while-004.js +250 -0
  1405. data/vendor/tracemonkey/tests/ecma_2/String/jstests.list +9 -0
  1406. data/vendor/tracemonkey/tests/ecma_2/String/match-001.js +139 -0
  1407. data/vendor/tracemonkey/tests/ecma_2/String/match-002.js +207 -0
  1408. data/vendor/tracemonkey/tests/ecma_2/String/match-003.js +165 -0
  1409. data/vendor/tracemonkey/tests/ecma_2/String/match-004.js +206 -0
  1410. data/vendor/tracemonkey/tests/ecma_2/String/replace-001.js +99 -0
  1411. data/vendor/tracemonkey/tests/ecma_2/String/shell.js +1 -0
  1412. data/vendor/tracemonkey/tests/ecma_2/String/split-001.js +145 -0
  1413. data/vendor/tracemonkey/tests/ecma_2/String/split-002.js +303 -0
  1414. data/vendor/tracemonkey/tests/ecma_2/String/split-003.js +156 -0
  1415. data/vendor/tracemonkey/tests/ecma_2/browser.js +37 -0
  1416. data/vendor/tracemonkey/tests/ecma_2/extensions/constructor-001.js +74 -0
  1417. data/vendor/tracemonkey/tests/ecma_2/extensions/function-001.js +74 -0
  1418. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-001.js +144 -0
  1419. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-002.js +160 -0
  1420. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-003-n.js +121 -0
  1421. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-004-n.js +121 -0
  1422. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-005-n.js +122 -0
  1423. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-006.js +119 -0
  1424. data/vendor/tracemonkey/tests/ecma_2/extensions/jstests.list +9 -0
  1425. data/vendor/tracemonkey/tests/ecma_2/extensions/shell.js +1 -0
  1426. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-001.js +67 -0
  1427. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-002.js +84 -0
  1428. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-003.js +98 -0
  1429. data/vendor/tracemonkey/tests/ecma_2/instanceof/jstests.list +5 -0
  1430. data/vendor/tracemonkey/tests/ecma_2/instanceof/regress-7635.js +88 -0
  1431. data/vendor/tracemonkey/tests/ecma_2/instanceof/shell.js +1 -0
  1432. data/vendor/tracemonkey/tests/ecma_2/jsref.js +591 -0
  1433. data/vendor/tracemonkey/tests/ecma_2/jstests.list +9 -0
  1434. data/vendor/tracemonkey/tests/ecma_2/shell.js +51 -0
  1435. data/vendor/tracemonkey/tests/ecma_2/template.js +57 -0
  1436. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.11-01.js +61 -0
  1437. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.3-1.js +88 -0
  1438. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.4-001.js +153 -0
  1439. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.5.1-01.js +93 -0
  1440. data/vendor/tracemonkey/tests/ecma_3/Array/15.5.4.8-01.js +76 -0
  1441. data/vendor/tracemonkey/tests/ecma_3/Array/jstests.list +16 -0
  1442. data/vendor/tracemonkey/tests/ecma_3/Array/regress-101488.js +172 -0
  1443. data/vendor/tracemonkey/tests/ecma_3/Array/regress-130451.js +219 -0
  1444. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-01.js +73 -0
  1445. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-02.js +65 -0
  1446. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-03.js +73 -0
  1447. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-04.js +71 -0
  1448. data/vendor/tracemonkey/tests/ecma_3/Array/regress-387501.js +94 -0
  1449. data/vendor/tracemonkey/tests/ecma_3/Array/regress-421325.js +67 -0
  1450. data/vendor/tracemonkey/tests/ecma_3/Array/regress-430717.js +65 -0
  1451. data/vendor/tracemonkey/tests/ecma_3/Array/regress-488989.js +68 -0
  1452. data/vendor/tracemonkey/tests/ecma_3/Array/shell.js +1 -0
  1453. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.1.2-01.js +62 -0
  1454. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.3.2-1.js +91 -0
  1455. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.4.3.js +233 -0
  1456. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.3.js +152 -0
  1457. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.4.js +185 -0
  1458. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.5-02.js +88 -0
  1459. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.5.js +144 -0
  1460. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.6.js +153 -0
  1461. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.7.js +142 -0
  1462. data/vendor/tracemonkey/tests/ecma_3/Date/browser.js +37 -0
  1463. data/vendor/tracemonkey/tests/ecma_3/Date/jstests.list +11 -0
  1464. data/vendor/tracemonkey/tests/ecma_3/Date/regress-452786.js +66 -0
  1465. data/vendor/tracemonkey/tests/ecma_3/Date/shell.js +564 -0
  1466. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.1.1.js +137 -0
  1467. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.4.4-1.js +174 -0
  1468. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-001.js +130 -0
  1469. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-002.js +132 -0
  1470. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-003.js +132 -0
  1471. data/vendor/tracemonkey/tests/ecma_3/Exceptions/binding-001.js +128 -0
  1472. data/vendor/tracemonkey/tests/ecma_3/Exceptions/jstests.list +11 -0
  1473. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-181654.js +155 -0
  1474. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-181914.js +194 -0
  1475. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-58946.js +71 -0
  1476. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-95101.js +118 -0
  1477. data/vendor/tracemonkey/tests/ecma_3/Exceptions/shell.js +1 -0
  1478. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3-1.js +201 -0
  1479. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3-2.js +70 -0
  1480. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3.js +73 -0
  1481. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.4-1.js +85 -0
  1482. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.6.1-01.js +136 -0
  1483. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/jstests.list +8 -0
  1484. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/regress-23346.js +71 -0
  1485. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/regress-448595-01.js +91 -0
  1486. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/shell.js +1 -0
  1487. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-01.js +76 -0
  1488. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-02.js +76 -0
  1489. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-03.js +76 -0
  1490. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.6.1-1.js +176 -0
  1491. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.1-01.js +76 -0
  1492. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.2-01.js +76 -0
  1493. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.3-01.js +76 -0
  1494. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.9.6-1.js +213 -0
  1495. data/vendor/tracemonkey/tests/ecma_3/Expressions/jstests.list +9 -0
  1496. data/vendor/tracemonkey/tests/ecma_3/Expressions/shell.js +1 -0
  1497. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-001-n.js +58 -0
  1498. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-001.js +57 -0
  1499. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-002.js +61 -0
  1500. data/vendor/tracemonkey/tests/ecma_3/FunExpr/jstests.list +5 -0
  1501. data/vendor/tracemonkey/tests/ecma_3/FunExpr/regress-528082.js +21 -0
  1502. data/vendor/tracemonkey/tests/ecma_3/FunExpr/shell.js +1 -0
  1503. data/vendor/tracemonkey/tests/ecma_3/Function/15.3.4.3-1.js +210 -0
  1504. data/vendor/tracemonkey/tests/ecma_3/Function/15.3.4.4-1.js +185 -0
  1505. data/vendor/tracemonkey/tests/ecma_3/Function/arguments-001.js +169 -0
  1506. data/vendor/tracemonkey/tests/ecma_3/Function/arguments-002.js +73 -0
  1507. data/vendor/tracemonkey/tests/ecma_3/Function/call-001.js +153 -0
  1508. data/vendor/tracemonkey/tests/ecma_3/Function/jstests.list +17 -0
  1509. data/vendor/tracemonkey/tests/ecma_3/Function/regress-131964.js +196 -0
  1510. data/vendor/tracemonkey/tests/ecma_3/Function/regress-137181.js +113 -0
  1511. data/vendor/tracemonkey/tests/ecma_3/Function/regress-193555.js +136 -0
  1512. data/vendor/tracemonkey/tests/ecma_3/Function/regress-313570.js +63 -0
  1513. data/vendor/tracemonkey/tests/ecma_3/Function/regress-49286.js +137 -0
  1514. data/vendor/tracemonkey/tests/ecma_3/Function/regress-58274.js +226 -0
  1515. data/vendor/tracemonkey/tests/ecma_3/Function/regress-85880.js +173 -0
  1516. data/vendor/tracemonkey/tests/ecma_3/Function/regress-94506.js +163 -0
  1517. data/vendor/tracemonkey/tests/ecma_3/Function/regress-97921.js +152 -0
  1518. data/vendor/tracemonkey/tests/ecma_3/Function/scope-001.js +265 -0
  1519. data/vendor/tracemonkey/tests/ecma_3/Function/scope-002.js +245 -0
  1520. data/vendor/tracemonkey/tests/ecma_3/Function/shell.js +1 -0
  1521. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/7.4-01.js +73 -0
  1522. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/7.9.1.js +157 -0
  1523. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/jstests.list +3 -0
  1524. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/shell.js +1 -0
  1525. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.2-01.js +77 -0
  1526. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.3-01.js +69 -0
  1527. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.3-02.js +53 -0
  1528. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.5-1.js +145 -0
  1529. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.5-2.js +62 -0
  1530. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.6-1.js +149 -0
  1531. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.7-1.js +154 -0
  1532. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.7-2.js +72 -0
  1533. data/vendor/tracemonkey/tests/ecma_3/Number/jstests.list +10 -0
  1534. data/vendor/tracemonkey/tests/ecma_3/Number/regress-442242-01.js +62 -0
  1535. data/vendor/tracemonkey/tests/ecma_3/Number/shell.js +1 -0
  1536. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/jstests.list +2 -0
  1537. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/shell.js +1 -0
  1538. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/tostring-001.js +60 -0
  1539. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.1-01.js +113 -0
  1540. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.2.6-001.js +113 -0
  1541. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.2.6-002.js +79 -0
  1542. data/vendor/tracemonkey/tests/ecma_3/Object/browser.js +7 -0
  1543. data/vendor/tracemonkey/tests/ecma_3/Object/class-001.js +156 -0
  1544. data/vendor/tracemonkey/tests/ecma_3/Object/class-002.js +146 -0
  1545. data/vendor/tracemonkey/tests/ecma_3/Object/class-003.js +139 -0
  1546. data/vendor/tracemonkey/tests/ecma_3/Object/class-004.js +139 -0
  1547. data/vendor/tracemonkey/tests/ecma_3/Object/class-005.js +124 -0
  1548. data/vendor/tracemonkey/tests/ecma_3/Object/jstests.list +14 -0
  1549. data/vendor/tracemonkey/tests/ecma_3/Object/regress-361274.js +66 -0
  1550. data/vendor/tracemonkey/tests/ecma_3/Object/regress-385393-07.js +67 -0
  1551. data/vendor/tracemonkey/tests/ecma_3/Object/regress-459405.js +71 -0
  1552. data/vendor/tracemonkey/tests/ecma_3/Object/regress-72773.js +97 -0
  1553. data/vendor/tracemonkey/tests/ecma_3/Object/regress-79129-001.js +80 -0
  1554. data/vendor/tracemonkey/tests/ecma_3/Object/shell.js +105 -0
  1555. data/vendor/tracemonkey/tests/ecma_3/Operators/11.13.1-001.js +152 -0
  1556. data/vendor/tracemonkey/tests/ecma_3/Operators/11.13.1-002.js +57 -0
  1557. data/vendor/tracemonkey/tests/ecma_3/Operators/11.4.1-001.js +120 -0
  1558. data/vendor/tracemonkey/tests/ecma_3/Operators/11.4.1-002.js +72 -0
  1559. data/vendor/tracemonkey/tests/ecma_3/Operators/jstests.list +6 -0
  1560. data/vendor/tracemonkey/tests/ecma_3/Operators/order-01.js +108 -0
  1561. data/vendor/tracemonkey/tests/ecma_3/Operators/shell.js +1 -0
  1562. data/vendor/tracemonkey/tests/ecma_3/README +1 -0
  1563. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.2-1.js +181 -0
  1564. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.2.12.js +63 -0
  1565. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.3.1-1.js +136 -0
  1566. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.3.1-2.js +144 -0
  1567. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-1.js +127 -0
  1568. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-2.js +133 -0
  1569. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-3.js +139 -0
  1570. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-4.js +146 -0
  1571. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-5-n.js +139 -0
  1572. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-6.js +95 -0
  1573. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.6.2-1.js +140 -0
  1574. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.6.2-2.js +367 -0
  1575. data/vendor/tracemonkey/tests/ecma_3/RegExp/jstests.list +68 -0
  1576. data/vendor/tracemonkey/tests/ecma_3/RegExp/octal-001.js +136 -0
  1577. data/vendor/tracemonkey/tests/ecma_3/RegExp/octal-002.js +218 -0
  1578. data/vendor/tracemonkey/tests/ecma_3/RegExp/perlstress-001.js +3230 -0
  1579. data/vendor/tracemonkey/tests/ecma_3/RegExp/perlstress-002.js +1842 -0
  1580. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-100199.js +307 -0
  1581. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-105972.js +157 -0
  1582. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-119909.js +92 -0
  1583. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-122076.js +110 -0
  1584. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-123437.js +112 -0
  1585. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-165353.js +122 -0
  1586. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-169497.js +105 -0
  1587. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-169534.js +95 -0
  1588. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-187133.js +142 -0
  1589. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-188206.js +219 -0
  1590. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-191479.js +198 -0
  1591. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-202564.js +101 -0
  1592. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-209067.js +1106 -0
  1593. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-209919.js +174 -0
  1594. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-216591.js +117 -0
  1595. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-220367-001.js +104 -0
  1596. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-223273.js +279 -0
  1597. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-223535.js +133 -0
  1598. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-224676.js +226 -0
  1599. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-225289.js +176 -0
  1600. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-225343.js +125 -0
  1601. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-24712.js +59 -0
  1602. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-285219.js +51 -0
  1603. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-28686.js +57 -0
  1604. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-289669.js +88 -0
  1605. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-307456.js +54 -0
  1606. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-309840.js +58 -0
  1607. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-311414.js +101 -0
  1608. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-312351.js +50 -0
  1609. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-31316.js +96 -0
  1610. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-330684.js +53 -0
  1611. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-334158.js +58 -0
  1612. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-346090.js +63 -0
  1613. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-367888.js +62 -0
  1614. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375642.js +61 -0
  1615. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375711.js +118 -0
  1616. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-01-n.js +63 -0
  1617. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-02.js +60 -0
  1618. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-03.js +60 -0
  1619. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-04.js +68 -0
  1620. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-436700.js +67 -0
  1621. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-465862.js +117 -0
  1622. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-57572.js +150 -0
  1623. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-57631.js +152 -0
  1624. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-67773.js +211 -0
  1625. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-72964.js +121 -0
  1626. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-76683.js +114 -0
  1627. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-78156.js +123 -0
  1628. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-85721.js +276 -0
  1629. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-87231.js +145 -0
  1630. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-98306.js +99 -0
  1631. data/vendor/tracemonkey/tests/ecma_3/RegExp/shell.js +266 -0
  1632. data/vendor/tracemonkey/tests/ecma_3/Regress/jstests.list +7 -0
  1633. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-385393-04.js +66 -0
  1634. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-419152.js +90 -0
  1635. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-420087.js +64 -0
  1636. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-420610.js +50 -0
  1637. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-441477-01.js +73 -0
  1638. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-469937.js +60 -0
  1639. data/vendor/tracemonkey/tests/ecma_3/Regress/shell.js +1 -0
  1640. data/vendor/tracemonkey/tests/ecma_3/Statements/12.10-01.js +68 -0
  1641. data/vendor/tracemonkey/tests/ecma_3/Statements/12.6.3.js +80 -0
  1642. data/vendor/tracemonkey/tests/ecma_3/Statements/jstests.list +17 -0
  1643. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-121744.js +217 -0
  1644. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-131348.js +184 -0
  1645. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-157509.js +111 -0
  1646. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-194364.js +152 -0
  1647. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-226517.js +112 -0
  1648. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-302439.js +1368 -0
  1649. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-324650.js +5461 -0
  1650. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-444979.js +77 -0
  1651. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-001.js +139 -0
  1652. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-002.js +9097 -0
  1653. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-003.js +9099 -0
  1654. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-83532-001.js +71 -0
  1655. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-83532-002.js +74 -0
  1656. data/vendor/tracemonkey/tests/ecma_3/Statements/shell.js +1 -0
  1657. data/vendor/tracemonkey/tests/ecma_3/Statements/switch-001.js +143 -0
  1658. data/vendor/tracemonkey/tests/ecma_3/String/15.5.4.11.js +532 -0
  1659. data/vendor/tracemonkey/tests/ecma_3/String/15.5.4.14.js +50 -0
  1660. data/vendor/tracemonkey/tests/ecma_3/String/jstests.list +9 -0
  1661. data/vendor/tracemonkey/tests/ecma_3/String/regress-104375.js +116 -0
  1662. data/vendor/tracemonkey/tests/ecma_3/String/regress-189898.js +157 -0
  1663. data/vendor/tracemonkey/tests/ecma_3/String/regress-304376.js +68 -0
  1664. data/vendor/tracemonkey/tests/ecma_3/String/regress-313567.js +56 -0
  1665. data/vendor/tracemonkey/tests/ecma_3/String/regress-392378.js +77 -0
  1666. data/vendor/tracemonkey/tests/ecma_3/String/regress-83293.js +216 -0
  1667. data/vendor/tracemonkey/tests/ecma_3/String/shell.js +1 -0
  1668. data/vendor/tracemonkey/tests/ecma_3/Unicode/jstests.list +10 -0
  1669. data/vendor/tracemonkey/tests/ecma_3/Unicode/regress-352044-01.js +72 -0
  1670. data/vendor/tracemonkey/tests/ecma_3/Unicode/regress-352044-02-n.js +72 -0
  1671. data/vendor/tracemonkey/tests/ecma_3/Unicode/shell.js +1 -0
  1672. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-001-n.js +62 -0
  1673. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-001.js +56 -0
  1674. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-002-n.js +55 -0
  1675. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-002.js +60 -0
  1676. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-003.js +71 -0
  1677. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-004.js +65 -0
  1678. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-005.js +276 -0
  1679. data/vendor/tracemonkey/tests/ecma_3/browser.js +36 -0
  1680. data/vendor/tracemonkey/tests/ecma_3/extensions/10.1.3-2.js +162 -0
  1681. data/vendor/tracemonkey/tests/ecma_3/extensions/7.9.1.js +83 -0
  1682. data/vendor/tracemonkey/tests/ecma_3/extensions/jstests.list +15 -0
  1683. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-103087.js +178 -0
  1684. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-188206-01.js +108 -0
  1685. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-188206-02.js +158 -0
  1686. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-220367-002.js +112 -0
  1687. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-228087.js +352 -0
  1688. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-274152.js +83 -0
  1689. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-320854.js +53 -0
  1690. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-327170.js +58 -0
  1691. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-368516.js +78 -0
  1692. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-385393-03.js +63 -0
  1693. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-429248.js +67 -0
  1694. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-430740.js +72 -0
  1695. data/vendor/tracemonkey/tests/ecma_3/extensions/shell.js +266 -0
  1696. data/vendor/tracemonkey/tests/ecma_3/jstests.list +18 -0
  1697. data/vendor/tracemonkey/tests/ecma_3/shell.js +40 -0
  1698. data/vendor/tracemonkey/tests/ecma_3/template.js +59 -0
  1699. data/vendor/tracemonkey/tests/ecma_3_1/Object/jstests.list +2 -0
  1700. data/vendor/tracemonkey/tests/ecma_3_1/Object/regress-444787.js +155 -0
  1701. data/vendor/tracemonkey/tests/ecma_3_1/Object/shell.js +1 -0
  1702. data/vendor/tracemonkey/tests/ecma_3_1/README +1 -0
  1703. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/jstests.list +2 -0
  1704. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/regress-305064.js +92 -0
  1705. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/shell.js +1 -0
  1706. data/vendor/tracemonkey/tests/ecma_3_1/browser.js +36 -0
  1707. data/vendor/tracemonkey/tests/ecma_3_1/extensions/jstests.list +1 -0
  1708. data/vendor/tracemonkey/tests/ecma_3_1/extensions/shell.js +1 -0
  1709. data/vendor/tracemonkey/tests/ecma_3_1/jstests.list +3 -0
  1710. data/vendor/tracemonkey/tests/ecma_3_1/shell.js +47 -0
  1711. data/vendor/tracemonkey/tests/ecma_3_1/template.js +59 -0
  1712. data/vendor/tracemonkey/tests/ecma_5/Date/15.9.4.2.js +158 -0
  1713. data/vendor/tracemonkey/tests/ecma_5/Date/jstests.list +2 -0
  1714. data/vendor/tracemonkey/tests/ecma_5/Date/shell.js +1 -0
  1715. data/vendor/tracemonkey/tests/ecma_5/Object/15.2.3.14-01.js +91 -0
  1716. data/vendor/tracemonkey/tests/ecma_5/Object/15.2.3.3-01.js +341 -0
  1717. data/vendor/tracemonkey/tests/ecma_5/Object/jstests.list +3 -0
  1718. data/vendor/tracemonkey/tests/ecma_5/Object/shell.js +1 -0
  1719. data/vendor/tracemonkey/tests/ecma_5/README +1 -0
  1720. data/vendor/tracemonkey/tests/ecma_5/browser.js +36 -0
  1721. data/vendor/tracemonkey/tests/ecma_5/jstests.list +2 -0
  1722. data/vendor/tracemonkey/tests/ecma_5/shell.js +40 -0
  1723. data/vendor/tracemonkey/tests/ecma_5/template.js +59 -0
  1724. data/vendor/tracemonkey/tests/get-universe.sh +52 -0
  1725. data/vendor/tracemonkey/tests/importList.html +22 -0
  1726. data/vendor/tracemonkey/tests/importList.js +94 -0
  1727. data/vendor/tracemonkey/tests/js-test-driver-begin.js +1 -0
  1728. data/vendor/tracemonkey/tests/js-test-driver-end.js +3 -0
  1729. data/vendor/tracemonkey/tests/js-test-driver-quirks.html +23 -0
  1730. data/vendor/tracemonkey/tests/js-test-driver-standards.html +23 -0
  1731. data/vendor/tracemonkey/tests/js1_1/README +1 -0
  1732. data/vendor/tracemonkey/tests/js1_1/browser.js +37 -0
  1733. data/vendor/tracemonkey/tests/js1_1/jsref.js +167 -0
  1734. data/vendor/tracemonkey/tests/js1_1/jstests.list +1 -0
  1735. data/vendor/tracemonkey/tests/js1_1/regress/function-001.js +79 -0
  1736. data/vendor/tracemonkey/tests/js1_1/regress/jstests.list +2 -0
  1737. data/vendor/tracemonkey/tests/js1_1/regress/shell.js +1 -0
  1738. data/vendor/tracemonkey/tests/js1_1/shell.js +39 -0
  1739. data/vendor/tracemonkey/tests/js1_2/Array/array_split_1.js +86 -0
  1740. data/vendor/tracemonkey/tests/js1_2/Array/general1.js +78 -0
  1741. data/vendor/tracemonkey/tests/js1_2/Array/general2.js +93 -0
  1742. data/vendor/tracemonkey/tests/js1_2/Array/jstests.list +9 -0
  1743. data/vendor/tracemonkey/tests/js1_2/Array/shell.js +1 -0
  1744. data/vendor/tracemonkey/tests/js1_2/Array/slice.js +123 -0
  1745. data/vendor/tracemonkey/tests/js1_2/Array/splice1.js +153 -0
  1746. data/vendor/tracemonkey/tests/js1_2/Array/splice2.js +150 -0
  1747. data/vendor/tracemonkey/tests/js1_2/Array/tostring_1.js +126 -0
  1748. data/vendor/tracemonkey/tests/js1_2/Array/tostring_2.js +82 -0
  1749. data/vendor/tracemonkey/tests/js1_2/Objects/jstests.list +2 -0
  1750. data/vendor/tracemonkey/tests/js1_2/Objects/shell.js +1 -0
  1751. data/vendor/tracemonkey/tests/js1_2/Objects/toString-001.js +120 -0
  1752. data/vendor/tracemonkey/tests/js1_2/README +1 -0
  1753. data/vendor/tracemonkey/tests/js1_2/String/charCodeAt.js +72 -0
  1754. data/vendor/tracemonkey/tests/js1_2/String/concat.js +83 -0
  1755. data/vendor/tracemonkey/tests/js1_2/String/jstests.list +5 -0
  1756. data/vendor/tracemonkey/tests/js1_2/String/match.js +63 -0
  1757. data/vendor/tracemonkey/tests/js1_2/String/shell.js +1 -0
  1758. data/vendor/tracemonkey/tests/js1_2/String/slice.js +124 -0
  1759. data/vendor/tracemonkey/tests/js1_2/browser.js +37 -0
  1760. data/vendor/tracemonkey/tests/js1_2/function/Function_object.js +87 -0
  1761. data/vendor/tracemonkey/tests/js1_2/function/Number.js +85 -0
  1762. data/vendor/tracemonkey/tests/js1_2/function/String.js +73 -0
  1763. data/vendor/tracemonkey/tests/js1_2/function/definition-1.js +77 -0
  1764. data/vendor/tracemonkey/tests/js1_2/function/function-001-n.js +77 -0
  1765. data/vendor/tracemonkey/tests/js1_2/function/jstests.list +13 -0
  1766. data/vendor/tracemonkey/tests/js1_2/function/length.js +96 -0
  1767. data/vendor/tracemonkey/tests/js1_2/function/nesting-1.js +65 -0
  1768. data/vendor/tracemonkey/tests/js1_2/function/nesting.js +84 -0
  1769. data/vendor/tracemonkey/tests/js1_2/function/regexparg-1.js +105 -0
  1770. data/vendor/tracemonkey/tests/js1_2/function/regexparg-2-n.js +73 -0
  1771. data/vendor/tracemonkey/tests/js1_2/function/shell.js +1 -0
  1772. data/vendor/tracemonkey/tests/js1_2/function/tostring-1.js +145 -0
  1773. data/vendor/tracemonkey/tests/js1_2/function/tostring-2.js +188 -0
  1774. data/vendor/tracemonkey/tests/js1_2/jsref.js +228 -0
  1775. data/vendor/tracemonkey/tests/js1_2/jstests.list +9 -0
  1776. data/vendor/tracemonkey/tests/js1_2/operator/equality.js +72 -0
  1777. data/vendor/tracemonkey/tests/js1_2/operator/jstests.list +3 -0
  1778. data/vendor/tracemonkey/tests/js1_2/operator/shell.js +1 -0
  1779. data/vendor/tracemonkey/tests/js1_2/operator/strictEquality.js +93 -0
  1780. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_dollar_number.js +111 -0
  1781. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_input.js +104 -0
  1782. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_input_as_array.js +104 -0
  1783. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastIndex.js +85 -0
  1784. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastMatch.js +88 -0
  1785. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastMatch_as_array.js +88 -0
  1786. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastParen.js +102 -0
  1787. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastParen_as_array.js +102 -0
  1788. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_leftContext.js +92 -0
  1789. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_leftContext_as_array.js +92 -0
  1790. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_multiline.js +131 -0
  1791. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_multiline_as_array.js +132 -0
  1792. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_object.js +90 -0
  1793. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_rightContext.js +92 -0
  1794. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_rightContext_as_array.js +92 -0
  1795. data/vendor/tracemonkey/tests/js1_2/regexp/alphanumeric.js +131 -0
  1796. data/vendor/tracemonkey/tests/js1_2/regexp/asterisk.js +107 -0
  1797. data/vendor/tracemonkey/tests/js1_2/regexp/backslash.js +81 -0
  1798. data/vendor/tracemonkey/tests/js1_2/regexp/backspace.js +81 -0
  1799. data/vendor/tracemonkey/tests/js1_2/regexp/beginLine.js +83 -0
  1800. data/vendor/tracemonkey/tests/js1_2/regexp/character_class.js +110 -0
  1801. data/vendor/tracemonkey/tests/js1_2/regexp/compile.js +96 -0
  1802. data/vendor/tracemonkey/tests/js1_2/regexp/control_characters.js +74 -0
  1803. data/vendor/tracemonkey/tests/js1_2/regexp/digit.js +120 -0
  1804. data/vendor/tracemonkey/tests/js1_2/regexp/dot.js +98 -0
  1805. data/vendor/tracemonkey/tests/js1_2/regexp/endLine.js +83 -0
  1806. data/vendor/tracemonkey/tests/js1_2/regexp/everything.js +83 -0
  1807. data/vendor/tracemonkey/tests/js1_2/regexp/exec.js +79 -0
  1808. data/vendor/tracemonkey/tests/js1_2/regexp/flags.js +87 -0
  1809. data/vendor/tracemonkey/tests/js1_2/regexp/global.js +97 -0
  1810. data/vendor/tracemonkey/tests/js1_2/regexp/hexadecimal.js +109 -0
  1811. data/vendor/tracemonkey/tests/js1_2/regexp/ignoreCase.js +114 -0
  1812. data/vendor/tracemonkey/tests/js1_2/regexp/interval.js +117 -0
  1813. data/vendor/tracemonkey/tests/js1_2/regexp/jstests.list +51 -0
  1814. data/vendor/tracemonkey/tests/js1_2/regexp/octal.js +109 -0
  1815. data/vendor/tracemonkey/tests/js1_2/regexp/parentheses.js +109 -0
  1816. data/vendor/tracemonkey/tests/js1_2/regexp/plus.js +89 -0
  1817. data/vendor/tracemonkey/tests/js1_2/regexp/question_mark.js +101 -0
  1818. data/vendor/tracemonkey/tests/js1_2/regexp/regress-6359.js +86 -0
  1819. data/vendor/tracemonkey/tests/js1_2/regexp/regress-9141.js +105 -0
  1820. data/vendor/tracemonkey/tests/js1_2/regexp/shell.js +1 -0
  1821. data/vendor/tracemonkey/tests/js1_2/regexp/simple_form.js +92 -0
  1822. data/vendor/tracemonkey/tests/js1_2/regexp/source.js +90 -0
  1823. data/vendor/tracemonkey/tests/js1_2/regexp/special_characters.js +160 -0
  1824. data/vendor/tracemonkey/tests/js1_2/regexp/string_replace.js +83 -0
  1825. data/vendor/tracemonkey/tests/js1_2/regexp/string_search.js +89 -0
  1826. data/vendor/tracemonkey/tests/js1_2/regexp/string_split.js +94 -0
  1827. data/vendor/tracemonkey/tests/js1_2/regexp/test.js +89 -0
  1828. data/vendor/tracemonkey/tests/js1_2/regexp/toString.js +81 -0
  1829. data/vendor/tracemonkey/tests/js1_2/regexp/vertical_bar.js +98 -0
  1830. data/vendor/tracemonkey/tests/js1_2/regexp/whitespace.js +125 -0
  1831. data/vendor/tracemonkey/tests/js1_2/regexp/word_boundary.js +121 -0
  1832. data/vendor/tracemonkey/tests/js1_2/regress/jstests.list +3 -0
  1833. data/vendor/tracemonkey/tests/js1_2/regress/regress-144834.js +84 -0
  1834. data/vendor/tracemonkey/tests/js1_2/regress/regress-7703.js +102 -0
  1835. data/vendor/tracemonkey/tests/js1_2/regress/shell.js +1 -0
  1836. data/vendor/tracemonkey/tests/js1_2/shell.js +40 -0
  1837. data/vendor/tracemonkey/tests/js1_2/statements/break.js +164 -0
  1838. data/vendor/tracemonkey/tests/js1_2/statements/continue.js +177 -0
  1839. data/vendor/tracemonkey/tests/js1_2/statements/do_while.js +69 -0
  1840. data/vendor/tracemonkey/tests/js1_2/statements/jstests.list +6 -0
  1841. data/vendor/tracemonkey/tests/js1_2/statements/shell.js +1 -0
  1842. data/vendor/tracemonkey/tests/js1_2/statements/switch.js +130 -0
  1843. data/vendor/tracemonkey/tests/js1_2/statements/switch2.js +192 -0
  1844. data/vendor/tracemonkey/tests/js1_2/version120/boolean-001.js +77 -0
  1845. data/vendor/tracemonkey/tests/js1_2/version120/browser.js +37 -0
  1846. data/vendor/tracemonkey/tests/js1_2/version120/jstests.list +3 -0
  1847. data/vendor/tracemonkey/tests/js1_2/version120/regress-99663.js +165 -0
  1848. data/vendor/tracemonkey/tests/js1_2/version120/shell.js +42 -0
  1849. data/vendor/tracemonkey/tests/js1_3/Boolean/boolean-001.js +77 -0
  1850. data/vendor/tracemonkey/tests/js1_3/Boolean/jstests.list +2 -0
  1851. data/vendor/tracemonkey/tests/js1_3/Boolean/shell.js +1 -0
  1852. data/vendor/tracemonkey/tests/js1_3/README +1 -0
  1853. data/vendor/tracemonkey/tests/js1_3/Script/delete-001.js +83 -0
  1854. data/vendor/tracemonkey/tests/js1_3/Script/function-001-n.js +78 -0
  1855. data/vendor/tracemonkey/tests/js1_3/Script/function-002.js +79 -0
  1856. data/vendor/tracemonkey/tests/js1_3/Script/in-001.js +69 -0
  1857. data/vendor/tracemonkey/tests/js1_3/Script/jstests.list +7 -0
  1858. data/vendor/tracemonkey/tests/js1_3/Script/new-001.js +123 -0
  1859. data/vendor/tracemonkey/tests/js1_3/Script/shell.js +1 -0
  1860. data/vendor/tracemonkey/tests/js1_3/Script/switch-001.js +84 -0
  1861. data/vendor/tracemonkey/tests/js1_3/browser.js +36 -0
  1862. data/vendor/tracemonkey/tests/js1_3/extensions/jstests.list +5 -0
  1863. data/vendor/tracemonkey/tests/js1_3/extensions/proto_10.js +156 -0
  1864. data/vendor/tracemonkey/tests/js1_3/extensions/proto_2.js +125 -0
  1865. data/vendor/tracemonkey/tests/js1_3/extensions/proto_5.js +149 -0
  1866. data/vendor/tracemonkey/tests/js1_3/extensions/script-001.js +174 -0
  1867. data/vendor/tracemonkey/tests/js1_3/extensions/shell.js +1 -0
  1868. data/vendor/tracemonkey/tests/js1_3/inherit/jstests.list +11 -0
  1869. data/vendor/tracemonkey/tests/js1_3/inherit/proto_1.js +170 -0
  1870. data/vendor/tracemonkey/tests/js1_3/inherit/proto_10.js +124 -0
  1871. data/vendor/tracemonkey/tests/js1_3/inherit/proto_11.js +120 -0
  1872. data/vendor/tracemonkey/tests/js1_3/inherit/proto_12.js +146 -0
  1873. data/vendor/tracemonkey/tests/js1_3/inherit/proto_3.js +107 -0
  1874. data/vendor/tracemonkey/tests/js1_3/inherit/proto_4.js +159 -0
  1875. data/vendor/tracemonkey/tests/js1_3/inherit/proto_6.js +174 -0
  1876. data/vendor/tracemonkey/tests/js1_3/inherit/proto_7.js +129 -0
  1877. data/vendor/tracemonkey/tests/js1_3/inherit/proto_8.js +127 -0
  1878. data/vendor/tracemonkey/tests/js1_3/inherit/proto_9.js +105 -0
  1879. data/vendor/tracemonkey/tests/js1_3/inherit/shell.js +1 -0
  1880. data/vendor/tracemonkey/tests/js1_3/jsref.js +195 -0
  1881. data/vendor/tracemonkey/tests/js1_3/jstests.list +6 -0
  1882. data/vendor/tracemonkey/tests/js1_3/misc/shell.js +1 -0
  1883. data/vendor/tracemonkey/tests/js1_3/regress/delete-001.js +83 -0
  1884. data/vendor/tracemonkey/tests/js1_3/regress/function-001-n.js +78 -0
  1885. data/vendor/tracemonkey/tests/js1_3/regress/function-002.js +79 -0
  1886. data/vendor/tracemonkey/tests/js1_3/regress/in-001.js +70 -0
  1887. data/vendor/tracemonkey/tests/js1_3/regress/jstests.list +7 -0
  1888. data/vendor/tracemonkey/tests/js1_3/regress/new-001.js +123 -0
  1889. data/vendor/tracemonkey/tests/js1_3/regress/shell.js +1 -0
  1890. data/vendor/tracemonkey/tests/js1_3/regress/switch-001.js +84 -0
  1891. data/vendor/tracemonkey/tests/js1_3/shell.js +40 -0
  1892. data/vendor/tracemonkey/tests/js1_4/Eval/eval-001.js +91 -0
  1893. data/vendor/tracemonkey/tests/js1_4/Eval/eval-002.js +97 -0
  1894. data/vendor/tracemonkey/tests/js1_4/Eval/eval-003.js +101 -0
  1895. data/vendor/tracemonkey/tests/js1_4/Eval/jstests.list +5 -0
  1896. data/vendor/tracemonkey/tests/js1_4/Eval/regress-531037.js +39 -0
  1897. data/vendor/tracemonkey/tests/js1_4/Eval/shell.js +1 -0
  1898. data/vendor/tracemonkey/tests/js1_4/Functions/function-001.js +123 -0
  1899. data/vendor/tracemonkey/tests/js1_4/Functions/jstests.list +2 -0
  1900. data/vendor/tracemonkey/tests/js1_4/Functions/shell.js +1 -0
  1901. data/vendor/tracemonkey/tests/js1_4/README +1 -0
  1902. data/vendor/tracemonkey/tests/js1_4/Regress/date-001-n.js +76 -0
  1903. data/vendor/tracemonkey/tests/js1_4/Regress/function-001.js +96 -0
  1904. data/vendor/tracemonkey/tests/js1_4/Regress/function-002.js +141 -0
  1905. data/vendor/tracemonkey/tests/js1_4/Regress/function-003.js +94 -0
  1906. data/vendor/tracemonkey/tests/js1_4/Regress/function-004-n.js +71 -0
  1907. data/vendor/tracemonkey/tests/js1_4/Regress/jstests.list +8 -0
  1908. data/vendor/tracemonkey/tests/js1_4/Regress/regress-7224.js +90 -0
  1909. data/vendor/tracemonkey/tests/js1_4/Regress/shell.js +1 -0
  1910. data/vendor/tracemonkey/tests/js1_4/Regress/toString-001-n.js +71 -0
  1911. data/vendor/tracemonkey/tests/js1_4/browser.js +37 -0
  1912. data/vendor/tracemonkey/tests/js1_4/jsref.js +166 -0
  1913. data/vendor/tracemonkey/tests/js1_4/jstests.list +3 -0
  1914. data/vendor/tracemonkey/tests/js1_4/shell.js +39 -0
  1915. data/vendor/tracemonkey/tests/js1_5/Array/11.1.4.js +102 -0
  1916. data/vendor/tracemonkey/tests/js1_5/Array/array-001.js +122 -0
  1917. data/vendor/tracemonkey/tests/js1_5/Array/jstests.list +35 -0
  1918. data/vendor/tracemonkey/tests/js1_5/Array/regress-101964.js +119 -0
  1919. data/vendor/tracemonkey/tests/js1_5/Array/regress-107138.js +211 -0
  1920. data/vendor/tracemonkey/tests/js1_5/Array/regress-108440.js +110 -0
  1921. data/vendor/tracemonkey/tests/js1_5/Array/regress-154338.js +124 -0
  1922. data/vendor/tracemonkey/tests/js1_5/Array/regress-157652.js +155 -0
  1923. data/vendor/tracemonkey/tests/js1_5/Array/regress-178722.js +164 -0
  1924. data/vendor/tracemonkey/tests/js1_5/Array/regress-255555.js +66 -0
  1925. data/vendor/tracemonkey/tests/js1_5/Array/regress-299644.js +61 -0
  1926. data/vendor/tracemonkey/tests/js1_5/Array/regress-300858.js +54 -0
  1927. data/vendor/tracemonkey/tests/js1_5/Array/regress-310351.js +87 -0
  1928. data/vendor/tracemonkey/tests/js1_5/Array/regress-311515.js +53 -0
  1929. data/vendor/tracemonkey/tests/js1_5/Array/regress-313153.js +51 -0
  1930. data/vendor/tracemonkey/tests/js1_5/Array/regress-315509-01.js +61 -0
  1931. data/vendor/tracemonkey/tests/js1_5/Array/regress-330812.js +65 -0
  1932. data/vendor/tracemonkey/tests/js1_5/Array/regress-345961.js +69 -0
  1933. data/vendor/tracemonkey/tests/js1_5/Array/regress-348810.js +61 -0
  1934. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-01.js +78 -0
  1935. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-02.js +78 -0
  1936. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-03.js +88 -0
  1937. data/vendor/tracemonkey/tests/js1_5/Array/regress-360681-01.js +66 -0
  1938. data/vendor/tracemonkey/tests/js1_5/Array/regress-360681-02.js +91 -0
  1939. data/vendor/tracemonkey/tests/js1_5/Array/regress-364104.js +107 -0
  1940. data/vendor/tracemonkey/tests/js1_5/Array/regress-422286.js +67 -0
  1941. data/vendor/tracemonkey/tests/js1_5/Array/regress-424954.js +61 -0
  1942. data/vendor/tracemonkey/tests/js1_5/Array/regress-451483.js +64 -0
  1943. data/vendor/tracemonkey/tests/js1_5/Array/regress-451906.js +64 -0
  1944. data/vendor/tracemonkey/tests/js1_5/Array/regress-456845.js +87 -0
  1945. data/vendor/tracemonkey/tests/js1_5/Array/regress-465980-01.js +68 -0
  1946. data/vendor/tracemonkey/tests/js1_5/Array/regress-465980-02.js +202 -0
  1947. data/vendor/tracemonkey/tests/js1_5/Array/regress-94257.js +120 -0
  1948. data/vendor/tracemonkey/tests/js1_5/Array/regress-99120-01.js +84 -0
  1949. data/vendor/tracemonkey/tests/js1_5/Array/regress-99120-02.js +79 -0
  1950. data/vendor/tracemonkey/tests/js1_5/Array/shell.js +1 -0
  1951. data/vendor/tracemonkey/tests/js1_5/Date/jstests.list +8 -0
  1952. data/vendor/tracemonkey/tests/js1_5/Date/regress-188211.js +60 -0
  1953. data/vendor/tracemonkey/tests/js1_5/Date/regress-301738-01.js +130 -0
  1954. data/vendor/tracemonkey/tests/js1_5/Date/regress-301738-02.js +163 -0
  1955. data/vendor/tracemonkey/tests/js1_5/Date/regress-309925-01.js +48 -0
  1956. data/vendor/tracemonkey/tests/js1_5/Date/regress-309925-02.js +48 -0
  1957. data/vendor/tracemonkey/tests/js1_5/Date/regress-346027.js +63 -0
  1958. data/vendor/tracemonkey/tests/js1_5/Date/regress-346363.js +64 -0
  1959. data/vendor/tracemonkey/tests/js1_5/Date/shell.js +1 -0
  1960. data/vendor/tracemonkey/tests/js1_5/Error/jstests.list +4 -0
  1961. data/vendor/tracemonkey/tests/js1_5/Error/regress-354246.js +70 -0
  1962. data/vendor/tracemonkey/tests/js1_5/Error/regress-412324.js +50 -0
  1963. data/vendor/tracemonkey/tests/js1_5/Error/regress-465377.js +114 -0
  1964. data/vendor/tracemonkey/tests/js1_5/Error/shell.js +1 -0
  1965. data/vendor/tracemonkey/tests/js1_5/Exceptions/catchguard-002-n.js +72 -0
  1966. data/vendor/tracemonkey/tests/js1_5/Exceptions/catchguard-003-n.js +76 -0
  1967. data/vendor/tracemonkey/tests/js1_5/Exceptions/errstack-001.js +279 -0
  1968. data/vendor/tracemonkey/tests/js1_5/Exceptions/jstests.list +16 -0
  1969. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-121658.js +158 -0
  1970. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-123002.js +132 -0
  1971. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-232182.js +155 -0
  1972. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-257751.js +127 -0
  1973. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-273931.js +108 -0
  1974. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-315147.js +69 -0
  1975. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-332472.js +58 -0
  1976. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-333728.js +116 -0
  1977. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-342359.js +77 -0
  1978. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-347674.js +96 -0
  1979. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-350650-n.js +63 -0
  1980. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-350837.js +79 -0
  1981. data/vendor/tracemonkey/tests/js1_5/Exceptions/shell.js +1 -0
  1982. data/vendor/tracemonkey/tests/js1_5/Expressions/jstests.list +6 -0
  1983. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-192288.js +119 -0
  1984. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-394673.js +82 -0
  1985. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-argsub.js +125 -0
  1986. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-delelem.js +125 -0
  1987. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-noargsub.js +125 -0
  1988. data/vendor/tracemonkey/tests/js1_5/Expressions/shell.js +137 -0
  1989. data/vendor/tracemonkey/tests/js1_5/Function/10.1.6-01.js +62 -0
  1990. data/vendor/tracemonkey/tests/js1_5/Function/10.1.6.js +56 -0
  1991. data/vendor/tracemonkey/tests/js1_5/Function/15.3.4.4.js +74 -0
  1992. data/vendor/tracemonkey/tests/js1_5/Function/jstests.list +15 -0
  1993. data/vendor/tracemonkey/tests/js1_5/Function/regress-123371.js +53 -0
  1994. data/vendor/tracemonkey/tests/js1_5/Function/regress-178389.js +62 -0
  1995. data/vendor/tracemonkey/tests/js1_5/Function/regress-222029-001.js +160 -0
  1996. data/vendor/tracemonkey/tests/js1_5/Function/regress-222029-002.js +169 -0
  1997. data/vendor/tracemonkey/tests/js1_5/Function/regress-292215.js +71 -0
  1998. data/vendor/tracemonkey/tests/js1_5/Function/regress-338001.js +74 -0
  1999. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-01.js +70 -0
  2000. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-02.js +74 -0
  2001. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-03.js +75 -0
  2002. data/vendor/tracemonkey/tests/js1_5/Function/regress-344052.js +63 -0
  2003. data/vendor/tracemonkey/tests/js1_5/Function/regress-364023.js +73 -0
  2004. data/vendor/tracemonkey/tests/js1_5/Function/shell.js +1 -0
  2005. data/vendor/tracemonkey/tests/js1_5/GC/jstests.list +26 -0
  2006. data/vendor/tracemonkey/tests/js1_5/GC/regress-104584.js +80 -0
  2007. data/vendor/tracemonkey/tests/js1_5/GC/regress-203278-2.js +113 -0
  2008. data/vendor/tracemonkey/tests/js1_5/GC/regress-203278-3.js +76 -0
  2009. data/vendor/tracemonkey/tests/js1_5/GC/regress-278725.js +65 -0
  2010. data/vendor/tracemonkey/tests/js1_5/GC/regress-306788.js +57 -0
  2011. data/vendor/tracemonkey/tests/js1_5/GC/regress-311497.js +94 -0
  2012. data/vendor/tracemonkey/tests/js1_5/GC/regress-313276.js +73 -0
  2013. data/vendor/tracemonkey/tests/js1_5/GC/regress-313479.js +70 -0
  2014. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-01.js +66 -0
  2015. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-02.js +75 -0
  2016. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-03.js +75 -0
  2017. data/vendor/tracemonkey/tests/js1_5/GC/regress-319980-01.js +160 -0
  2018. data/vendor/tracemonkey/tests/js1_5/GC/regress-324278.js +95 -0
  2019. data/vendor/tracemonkey/tests/js1_5/GC/regress-331719.js +52 -0
  2020. data/vendor/tracemonkey/tests/js1_5/GC/regress-338653.js +74 -0
  2021. data/vendor/tracemonkey/tests/js1_5/GC/regress-341877-01.js +73 -0
  2022. data/vendor/tracemonkey/tests/js1_5/GC/regress-341877-02.js +78 -0
  2023. data/vendor/tracemonkey/tests/js1_5/GC/regress-346794.js +77 -0
  2024. data/vendor/tracemonkey/tests/js1_5/GC/regress-348532.js +83 -0
  2025. data/vendor/tracemonkey/tests/js1_5/GC/regress-352606.js +61 -0
  2026. data/vendor/tracemonkey/tests/js1_5/GC/regress-383269-01.js +94 -0
  2027. data/vendor/tracemonkey/tests/js1_5/GC/regress-383269-02.js +98 -0
  2028. data/vendor/tracemonkey/tests/js1_5/GC/regress-390078.js +69 -0
  2029. data/vendor/tracemonkey/tests/js1_5/GC/regress-418128.js +73 -0
  2030. data/vendor/tracemonkey/tests/js1_5/GC/regress-440558.js +69 -0
  2031. data/vendor/tracemonkey/tests/js1_5/GC/shell.js +1 -0
  2032. data/vendor/tracemonkey/tests/js1_5/GetSet/getset-002.js +86 -0
  2033. data/vendor/tracemonkey/tests/js1_5/GetSet/jstests.list +4 -0
  2034. data/vendor/tracemonkey/tests/js1_5/GetSet/regress-353264.js +50 -0
  2035. data/vendor/tracemonkey/tests/js1_5/GetSet/regress-375976.js +64 -0
  2036. data/vendor/tracemonkey/tests/js1_5/GetSet/shell.js +1 -0
  2037. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/jstests.list +5 -0
  2038. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/lexical-001.js +183 -0
  2039. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-177314.js +110 -0
  2040. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-343675.js +82 -0
  2041. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-469940.js +71 -0
  2042. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/shell.js +1 -0
  2043. data/vendor/tracemonkey/tests/js1_5/Object/jstests.list +11 -0
  2044. data/vendor/tracemonkey/tests/js1_5/Object/regress-137000.js +240 -0
  2045. data/vendor/tracemonkey/tests/js1_5/Object/regress-192105.js +183 -0
  2046. data/vendor/tracemonkey/tests/js1_5/Object/regress-308806-01.js +53 -0
  2047. data/vendor/tracemonkey/tests/js1_5/Object/regress-338709.js +107 -0
  2048. data/vendor/tracemonkey/tests/js1_5/Object/regress-362872-01.js +74 -0
  2049. data/vendor/tracemonkey/tests/js1_5/Object/regress-362872-02.js +55 -0
  2050. data/vendor/tracemonkey/tests/js1_5/Object/regress-382503.js +62 -0
  2051. data/vendor/tracemonkey/tests/js1_5/Object/regress-382532.js +70 -0
  2052. data/vendor/tracemonkey/tests/js1_5/Object/regress-465476.js +96 -0
  2053. data/vendor/tracemonkey/tests/js1_5/Object/regress-90596-003.js +312 -0
  2054. data/vendor/tracemonkey/tests/js1_5/Object/shell.js +1 -0
  2055. data/vendor/tracemonkey/tests/js1_5/README +1 -0
  2056. data/vendor/tracemonkey/tests/js1_5/Regress/jstests.list +363 -0
  2057. data/vendor/tracemonkey/tests/js1_5/Regress/regress-102725.js +99 -0
  2058. data/vendor/tracemonkey/tests/js1_5/Regress/regress-10278.js +79 -0
  2059. data/vendor/tracemonkey/tests/js1_5/Regress/regress-103602.js +168 -0
  2060. data/vendor/tracemonkey/tests/js1_5/Regress/regress-104077.js +509 -0
  2061. data/vendor/tracemonkey/tests/js1_5/Regress/regress-106244.js +71 -0
  2062. data/vendor/tracemonkey/tests/js1_5/Regress/regress-110286.js +156 -0
  2063. data/vendor/tracemonkey/tests/js1_5/Regress/regress-111557.js +10965 -0
  2064. data/vendor/tracemonkey/tests/js1_5/Regress/regress-114491.js +106 -0
  2065. data/vendor/tracemonkey/tests/js1_5/Regress/regress-114493.js +114 -0
  2066. data/vendor/tracemonkey/tests/js1_5/Regress/regress-115436.js +58 -0
  2067. data/vendor/tracemonkey/tests/js1_5/Regress/regress-116228.js +59 -0
  2068. data/vendor/tracemonkey/tests/js1_5/Regress/regress-118849.js +186 -0
  2069. data/vendor/tracemonkey/tests/js1_5/Regress/regress-119719.js +58 -0
  2070. data/vendor/tracemonkey/tests/js1_5/Regress/regress-127243.js +108 -0
  2071. data/vendor/tracemonkey/tests/js1_5/Regress/regress-127557.js +124 -0
  2072. data/vendor/tracemonkey/tests/js1_5/Regress/regress-131510-001.js +74 -0
  2073. data/vendor/tracemonkey/tests/js1_5/Regress/regress-139316.js +80 -0
  2074. data/vendor/tracemonkey/tests/js1_5/Regress/regress-140852.js +66 -0
  2075. data/vendor/tracemonkey/tests/js1_5/Regress/regress-140974.js +140 -0
  2076. data/vendor/tracemonkey/tests/js1_5/Regress/regress-146596.js +159 -0
  2077. data/vendor/tracemonkey/tests/js1_5/Regress/regress-152646.js +127 -0
  2078. data/vendor/tracemonkey/tests/js1_5/Regress/regress-155081-2.js +17554 -0
  2079. data/vendor/tracemonkey/tests/js1_5/Regress/regress-155081.js +17561 -0
  2080. data/vendor/tracemonkey/tests/js1_5/Regress/regress-156354.js +131 -0
  2081. data/vendor/tracemonkey/tests/js1_5/Regress/regress-159334.js +129 -0
  2082. data/vendor/tracemonkey/tests/js1_5/Regress/regress-162392.js +68 -0
  2083. data/vendor/tracemonkey/tests/js1_5/Regress/regress-165201.js +89 -0
  2084. data/vendor/tracemonkey/tests/js1_5/Regress/regress-167328.js +60 -0
  2085. data/vendor/tracemonkey/tests/js1_5/Regress/regress-167658.js +62 -0
  2086. data/vendor/tracemonkey/tests/js1_5/Regress/regress-168347.js +220 -0
  2087. data/vendor/tracemonkey/tests/js1_5/Regress/regress-169559.js +91 -0
  2088. data/vendor/tracemonkey/tests/js1_5/Regress/regress-170193.js +111 -0
  2089. data/vendor/tracemonkey/tests/js1_5/Regress/regress-172699.js +99 -0
  2090. data/vendor/tracemonkey/tests/js1_5/Regress/regress-173067.js +58 -0
  2091. data/vendor/tracemonkey/tests/js1_5/Regress/regress-174709.js +104 -0
  2092. data/vendor/tracemonkey/tests/js1_5/Regress/regress-176125.js +82 -0
  2093. data/vendor/tracemonkey/tests/js1_5/Regress/regress-179524.js +368 -0
  2094. data/vendor/tracemonkey/tests/js1_5/Regress/regress-185165.js +101 -0
  2095. data/vendor/tracemonkey/tests/js1_5/Regress/regress-191633.js +107 -0
  2096. data/vendor/tracemonkey/tests/js1_5/Regress/regress-191668.js +104 -0
  2097. data/vendor/tracemonkey/tests/js1_5/Regress/regress-192414.js +122 -0
  2098. data/vendor/tracemonkey/tests/js1_5/Regress/regress-193418.js +104 -0
  2099. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203278-1.js +64 -0
  2100. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203402.js +95 -0
  2101. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203841.js +164 -0
  2102. data/vendor/tracemonkey/tests/js1_5/Regress/regress-204210.js +150 -0
  2103. data/vendor/tracemonkey/tests/js1_5/Regress/regress-210682.js +101 -0
  2104. data/vendor/tracemonkey/tests/js1_5/Regress/regress-211590.js +88 -0
  2105. data/vendor/tracemonkey/tests/js1_5/Regress/regress-213482.js +62 -0
  2106. data/vendor/tracemonkey/tests/js1_5/Regress/regress-214761.js +78 -0
  2107. data/vendor/tracemonkey/tests/js1_5/Regress/regress-216320.js +1040 -0
  2108. data/vendor/tracemonkey/tests/js1_5/Regress/regress-224956.js +287 -0
  2109. data/vendor/tracemonkey/tests/js1_5/Regress/regress-229006.js +65597 -0
  2110. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-1.js +81 -0
  2111. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-2.js +70 -0
  2112. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-3.js +80 -0
  2113. data/vendor/tracemonkey/tests/js1_5/Regress/regress-233483-2.js +100 -0
  2114. data/vendor/tracemonkey/tests/js1_5/Regress/regress-233483.js +86 -0
  2115. data/vendor/tracemonkey/tests/js1_5/Regress/regress-234389.js +72 -0
  2116. data/vendor/tracemonkey/tests/js1_5/Regress/regress-238881.js +64 -0
  2117. data/vendor/tracemonkey/tests/js1_5/Regress/regress-238945.js +52 -0
  2118. data/vendor/tracemonkey/tests/js1_5/Regress/regress-240317.js +99 -0
  2119. data/vendor/tracemonkey/tests/js1_5/Regress/regress-240577.js +68 -0
  2120. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243174.js +55 -0
  2121. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243389-n.js +58 -0
  2122. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243869.js +72 -0
  2123. data/vendor/tracemonkey/tests/js1_5/Regress/regress-244470.js +1113 -0
  2124. data/vendor/tracemonkey/tests/js1_5/Regress/regress-244619.js +66 -0
  2125. data/vendor/tracemonkey/tests/js1_5/Regress/regress-245113.js +81 -0
  2126. data/vendor/tracemonkey/tests/js1_5/Regress/regress-245308.js +61 -0
  2127. data/vendor/tracemonkey/tests/js1_5/Regress/regress-246911.js +64 -0
  2128. data/vendor/tracemonkey/tests/js1_5/Regress/regress-246964.js +196 -0
  2129. data/vendor/tracemonkey/tests/js1_5/Regress/regress-247179.js +53 -0
  2130. data/vendor/tracemonkey/tests/js1_5/Regress/regress-248444.js +77 -0
  2131. data/vendor/tracemonkey/tests/js1_5/Regress/regress-249211.js +63 -0
  2132. data/vendor/tracemonkey/tests/js1_5/Regress/regress-252892.js +163 -0
  2133. data/vendor/tracemonkey/tests/js1_5/Regress/regress-253150.js +123 -0
  2134. data/vendor/tracemonkey/tests/js1_5/Regress/regress-254296.js +60 -0
  2135. data/vendor/tracemonkey/tests/js1_5/Regress/regress-254974.js +72 -0
  2136. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256501.js +72 -0
  2137. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256617.js +69 -0
  2138. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256798.js +70 -0
  2139. data/vendor/tracemonkey/tests/js1_5/Regress/regress-259935.js +75 -0
  2140. data/vendor/tracemonkey/tests/js1_5/Regress/regress-260541.js +55 -0
  2141. data/vendor/tracemonkey/tests/js1_5/Regress/regress-261886.js +63 -0
  2142. data/vendor/tracemonkey/tests/js1_5/Regress/regress-261887.js +70 -0
  2143. data/vendor/tracemonkey/tests/js1_5/Regress/regress-271716-n.js +60 -0
  2144. data/vendor/tracemonkey/tests/js1_5/Regress/regress-274035.js +63 -0
  2145. data/vendor/tracemonkey/tests/js1_5/Regress/regress-274888.js +73 -0
  2146. data/vendor/tracemonkey/tests/js1_5/Regress/regress-275378.js +81 -0
  2147. data/vendor/tracemonkey/tests/js1_5/Regress/regress-276103.js +60 -0
  2148. data/vendor/tracemonkey/tests/js1_5/Regress/regress-278873.js +61 -0
  2149. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-1.js +58 -0
  2150. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-2.js +74 -0
  2151. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-3.js +79 -0
  2152. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-4.js +81 -0
  2153. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-5.js +64 -0
  2154. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769.js +73 -0
  2155. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281487.js +69 -0
  2156. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281606.js +80 -0
  2157. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281930.js +54 -0
  2158. data/vendor/tracemonkey/tests/js1_5/Regress/regress-283477.js +61 -0
  2159. data/vendor/tracemonkey/tests/js1_5/Regress/regress-286216.js +63 -0
  2160. data/vendor/tracemonkey/tests/js1_5/Regress/regress-288688.js +81 -0
  2161. data/vendor/tracemonkey/tests/js1_5/Regress/regress-289094.js +61 -0
  2162. data/vendor/tracemonkey/tests/js1_5/Regress/regress-290575.js +90 -0
  2163. data/vendor/tracemonkey/tests/js1_5/Regress/regress-290656.js +65 -0
  2164. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294191.js +63 -0
  2165. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294195-01.js +58 -0
  2166. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294195-02.js +50 -0
  2167. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294302.js +57 -0
  2168. data/vendor/tracemonkey/tests/js1_5/Regress/regress-295052.js +50 -0
  2169. data/vendor/tracemonkey/tests/js1_5/Regress/regress-295666.js +56 -0
  2170. data/vendor/tracemonkey/tests/js1_5/Regress/regress-299209.js +56 -0
  2171. data/vendor/tracemonkey/tests/js1_5/Regress/regress-299641.js +58 -0
  2172. data/vendor/tracemonkey/tests/js1_5/Regress/regress-303213.js +88 -0
  2173. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306633.js +68 -0
  2174. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306727.js +73 -0
  2175. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306794.js +56 -0
  2176. data/vendor/tracemonkey/tests/js1_5/Regress/regress-308085.js +602 -0
  2177. data/vendor/tracemonkey/tests/js1_5/Regress/regress-308566.js +60 -0
  2178. data/vendor/tracemonkey/tests/js1_5/Regress/regress-309242.js +77 -0
  2179. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310295.js +54 -0
  2180. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310607.js +62 -0
  2181. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310993.js +55 -0
  2182. data/vendor/tracemonkey/tests/js1_5/Regress/regress-311071.js +51 -0
  2183. data/vendor/tracemonkey/tests/js1_5/Regress/regress-311629.js +55 -0
  2184. data/vendor/tracemonkey/tests/js1_5/Regress/regress-312260.js +60 -0
  2185. data/vendor/tracemonkey/tests/js1_5/Regress/regress-31255.js +113 -0
  2186. data/vendor/tracemonkey/tests/js1_5/Regress/regress-312588.js +63 -0
  2187. data/vendor/tracemonkey/tests/js1_5/Regress/regress-313967-01.js +112 -0
  2188. data/vendor/tracemonkey/tests/js1_5/Regress/regress-313967-02.js +87 -0
  2189. data/vendor/tracemonkey/tests/js1_5/Regress/regress-314401.js +104 -0
  2190. data/vendor/tracemonkey/tests/js1_5/Regress/regress-315974.js +83 -0
  2191. data/vendor/tracemonkey/tests/js1_5/Regress/regress-315990.js +73 -0
  2192. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317476.js +64 -0
  2193. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317533.js +87 -0
  2194. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317714-01.js +52 -0
  2195. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317714-02.js +53 -0
  2196. data/vendor/tracemonkey/tests/js1_5/Regress/regress-319384.js +61 -0
  2197. data/vendor/tracemonkey/tests/js1_5/Regress/regress-319391.js +73 -0
  2198. data/vendor/tracemonkey/tests/js1_5/Regress/regress-320032.js +60 -0
  2199. data/vendor/tracemonkey/tests/js1_5/Regress/regress-320119.js +148 -0
  2200. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321757.js +143 -0
  2201. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321874.js +241 -0
  2202. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321971.js +56 -0
  2203. data/vendor/tracemonkey/tests/js1_5/Regress/regress-322430.js +70 -0
  2204. data/vendor/tracemonkey/tests/js1_5/Regress/regress-323314-1.js +73 -0
  2205. data/vendor/tracemonkey/tests/js1_5/Regress/regress-325925.js +50 -0
  2206. data/vendor/tracemonkey/tests/js1_5/Regress/regress-326453.js +52 -0
  2207. data/vendor/tracemonkey/tests/js1_5/Regress/regress-326467.js +51 -0
  2208. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328012.js +62 -0
  2209. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328664.js +64 -0
  2210. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328897.js +79 -0
  2211. data/vendor/tracemonkey/tests/js1_5/Regress/regress-329383.js +116 -0
  2212. data/vendor/tracemonkey/tests/js1_5/Regress/regress-329530.js +73 -0
  2213. data/vendor/tracemonkey/tests/js1_5/Regress/regress-330352.js +67 -0
  2214. data/vendor/tracemonkey/tests/js1_5/Regress/regress-330951.js +50 -0
  2215. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-01.js +57 -0
  2216. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-02.js +61 -0
  2217. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-03.js +57 -0
  2218. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-04.js +61 -0
  2219. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-05.js +66 -0
  2220. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-06.js +70 -0
  2221. data/vendor/tracemonkey/tests/js1_5/Regress/regress-336100.js +55 -0
  2222. data/vendor/tracemonkey/tests/js1_5/Regress/regress-338307.js +62 -0
  2223. data/vendor/tracemonkey/tests/js1_5/Regress/regress-340369.js +58 -0
  2224. data/vendor/tracemonkey/tests/js1_5/Regress/regress-341360.js +88 -0
  2225. data/vendor/tracemonkey/tests/js1_5/Regress/regress-343713.js +54 -0
  2226. data/vendor/tracemonkey/tests/js1_5/Regress/regress-343966.js +65 -0
  2227. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344711-n.js +67 -0
  2228. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344804.js +65 -0
  2229. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344959.js +69 -0
  2230. data/vendor/tracemonkey/tests/js1_5/Regress/regress-346237.js +61 -0
  2231. data/vendor/tracemonkey/tests/js1_5/Regress/regress-346801.js +109 -0
  2232. data/vendor/tracemonkey/tests/js1_5/Regress/regress-347306-01.js +85 -0
  2233. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349482-01.js +62 -0
  2234. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349482-02.js +62 -0
  2235. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349592.js +61 -0
  2236. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349648.js +98 -0
  2237. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350253.js +67 -0
  2238. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350268.js +107 -0
  2239. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350312.js +114 -0
  2240. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350415.js +67 -0
  2241. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350529.js +66 -0
  2242. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350692.js +70 -0
  2243. data/vendor/tracemonkey/tests/js1_5/Regress/regress-351116.js +65 -0
  2244. data/vendor/tracemonkey/tests/js1_5/Regress/regress-351515.js +69 -0
  2245. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352009.js +60 -0
  2246. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352197.js +102 -0
  2247. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352208.js +77 -0
  2248. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352604.js +61 -0
  2249. data/vendor/tracemonkey/tests/js1_5/Regress/regress-354924.js +64 -0
  2250. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355341.js +61 -0
  2251. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355344.js +82 -0
  2252. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355556.js +68 -0
  2253. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-01.js +61 -0
  2254. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-02.js +74 -0
  2255. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-03.js +62 -0
  2256. data/vendor/tracemonkey/tests/js1_5/Regress/regress-356250.js +77 -0
  2257. data/vendor/tracemonkey/tests/js1_5/Regress/regress-356693.js +69 -0
  2258. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-01.js +74 -0
  2259. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-02.js +64 -0
  2260. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-03.js +74 -0
  2261. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-04.js +64 -0
  2262. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-05.js +76 -0
  2263. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-06.js +65 -0
  2264. data/vendor/tracemonkey/tests/js1_5/Regress/regress-361467.js +65 -0
  2265. data/vendor/tracemonkey/tests/js1_5/Regress/regress-361617.js +66 -0
  2266. data/vendor/tracemonkey/tests/js1_5/Regress/regress-362583.js +77 -0
  2267. data/vendor/tracemonkey/tests/js1_5/Regress/regress-3649-n.js +65 -0
  2268. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366122.js +79 -0
  2269. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366468.js +68 -0
  2270. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366601.js +71 -0
  2271. data/vendor/tracemonkey/tests/js1_5/Regress/regress-367561-01.js +70 -0
  2272. data/vendor/tracemonkey/tests/js1_5/Regress/regress-367561-03.js +69 -0
  2273. data/vendor/tracemonkey/tests/js1_5/Regress/regress-372364.js +80 -0
  2274. data/vendor/tracemonkey/tests/js1_5/Regress/regress-379245.js +72 -0
  2275. data/vendor/tracemonkey/tests/js1_5/Regress/regress-383674.js +91 -0
  2276. data/vendor/tracemonkey/tests/js1_5/Regress/regress-383682.js +67 -0
  2277. data/vendor/tracemonkey/tests/js1_5/Regress/regress-385393-06.js +61 -0
  2278. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-01.js +61 -0
  2279. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-02.js +61 -0
  2280. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-03.js +61 -0
  2281. data/vendor/tracemonkey/tests/js1_5/Regress/regress-39309.js +110 -0
  2282. data/vendor/tracemonkey/tests/js1_5/Regress/regress-396684.js +81 -0
  2283. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398085-01.js +778 -0
  2284. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398085-02.js +761 -0
  2285. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398609.js +72 -0
  2286. data/vendor/tracemonkey/tests/js1_5/Regress/regress-404755.js +83 -0
  2287. data/vendor/tracemonkey/tests/js1_5/Regress/regress-406769.js +188 -0
  2288. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407024.js +53 -0
  2289. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407323.js +75 -0
  2290. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407957.js +63 -0
  2291. data/vendor/tracemonkey/tests/js1_5/Regress/regress-410852.js +71 -0
  2292. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416628.js +142 -0
  2293. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416737-01.js +61 -0
  2294. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416737-02.js +66 -0
  2295. data/vendor/tracemonkey/tests/js1_5/Regress/regress-417893.js +61 -0
  2296. data/vendor/tracemonkey/tests/js1_5/Regress/regress-418504.js +86 -0
  2297. data/vendor/tracemonkey/tests/js1_5/Regress/regress-418540.js +94 -0
  2298. data/vendor/tracemonkey/tests/js1_5/Regress/regress-419018.js +80 -0
  2299. data/vendor/tracemonkey/tests/js1_5/Regress/regress-419803.js +61 -0
  2300. data/vendor/tracemonkey/tests/js1_5/Regress/regress-420919.js +70 -0
  2301. data/vendor/tracemonkey/tests/js1_5/Regress/regress-422348.js +70 -0
  2302. data/vendor/tracemonkey/tests/js1_5/Regress/regress-424311.js +61 -0
  2303. data/vendor/tracemonkey/tests/js1_5/Regress/regress-425360.js +74 -0
  2304. data/vendor/tracemonkey/tests/js1_5/Regress/regress-426827.js +67 -0
  2305. data/vendor/tracemonkey/tests/js1_5/Regress/regress-428366.js +52 -0
  2306. data/vendor/tracemonkey/tests/js1_5/Regress/regress-438415-01.js +60 -0
  2307. data/vendor/tracemonkey/tests/js1_5/Regress/regress-438415-02.js +64 -0
  2308. data/vendor/tracemonkey/tests/js1_5/Regress/regress-449627.js +147 -0
  2309. data/vendor/tracemonkey/tests/js1_5/Regress/regress-449666.js +98 -0
  2310. data/vendor/tracemonkey/tests/js1_5/Regress/regress-450369.js +345 -0
  2311. data/vendor/tracemonkey/tests/js1_5/Regress/regress-450833.js +82 -0
  2312. data/vendor/tracemonkey/tests/js1_5/Regress/regress-451884.js +68 -0
  2313. data/vendor/tracemonkey/tests/js1_5/Regress/regress-451946.js +67 -0
  2314. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452008.js +186 -0
  2315. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452170.js +64 -0
  2316. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452333.js +64 -0
  2317. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452336.js +64 -0
  2318. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452346.js +61 -0
  2319. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452495.js +54 -0
  2320. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452573-01.js +64 -0
  2321. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452573-02.js +64 -0
  2322. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452713.js +64 -0
  2323. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452724-01.js +64 -0
  2324. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452724-02.js +64 -0
  2325. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452742-01.js +84 -0
  2326. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452742-02.js +89 -0
  2327. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452853.js +64 -0
  2328. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452884-01.js +64 -0
  2329. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452884-02.js +64 -0
  2330. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453024.js +78 -0
  2331. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453173.js +66 -0
  2332. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453397.js +81 -0
  2333. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453701.js +64 -0
  2334. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453747.js +72 -0
  2335. data/vendor/tracemonkey/tests/js1_5/Regress/regress-454682.js +68 -0
  2336. data/vendor/tracemonkey/tests/js1_5/Regress/regress-454981.js +69 -0
  2337. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455605.js +65 -0
  2338. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455748.js +65 -0
  2339. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455758-01.js +65 -0
  2340. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455758-02.js +65 -0
  2341. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455775.js +67 -0
  2342. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456470.js +73 -0
  2343. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456477-01.js +65 -0
  2344. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456477-02.js +65 -0
  2345. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456494.js +83 -0
  2346. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456540-01.js +65 -0
  2347. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456540-02.js +65 -0
  2348. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457065-03.js +67 -0
  2349. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457456.js +65 -0
  2350. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457778.js +65 -0
  2351. data/vendor/tracemonkey/tests/js1_5/Regress/regress-458851.js +65 -0
  2352. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459085.js +67 -0
  2353. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459628.js +69 -0
  2354. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459990.js +66 -0
  2355. data/vendor/tracemonkey/tests/js1_5/Regress/regress-460024.js +74 -0
  2356. data/vendor/tracemonkey/tests/js1_5/Regress/regress-460117.js +80 -0
  2357. data/vendor/tracemonkey/tests/js1_5/Regress/regress-461307.js +66 -0
  2358. data/vendor/tracemonkey/tests/js1_5/Regress/regress-461723.js +65 -0
  2359. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462292.js +67 -0
  2360. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462879.js +67 -0
  2361. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462989.js +66 -0
  2362. data/vendor/tracemonkey/tests/js1_5/Regress/regress-463259.js +62 -0
  2363. data/vendor/tracemonkey/tests/js1_5/Regress/regress-463782.js +101 -0
  2364. data/vendor/tracemonkey/tests/js1_5/Regress/regress-464334.js +69 -0
  2365. data/vendor/tracemonkey/tests/js1_5/Regress/regress-464862.js +156 -0
  2366. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465013.js +74 -0
  2367. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465132.js +78 -0
  2368. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465133.js +68 -0
  2369. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465135.js +68 -0
  2370. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465136.js +68 -0
  2371. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465137.js +68 -0
  2372. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465262.js +67 -0
  2373. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465272.js +67 -0
  2374. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465347.js +85 -0
  2375. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465366.js +74 -0
  2376. data/vendor/tracemonkey/tests/js1_5/Regress/regress-466262.js +69 -0
  2377. data/vendor/tracemonkey/tests/js1_5/Regress/regress-466747.js +94 -0
  2378. data/vendor/tracemonkey/tests/js1_5/Regress/regress-469044.js +104 -0
  2379. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470061.js +78 -0
  2380. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470187-01.js +61 -0
  2381. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470187-02.js +61 -0
  2382. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470758-01.js +61 -0
  2383. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470758-02.js +63 -0
  2384. data/vendor/tracemonkey/tests/js1_5/Regress/regress-475645-01.js +82 -0
  2385. data/vendor/tracemonkey/tests/js1_5/Regress/regress-475645-02.js +89 -0
  2386. data/vendor/tracemonkey/tests/js1_5/Regress/regress-476049.js +76 -0
  2387. data/vendor/tracemonkey/tests/js1_5/Regress/regress-476192.js +74 -0
  2388. data/vendor/tracemonkey/tests/js1_5/Regress/regress-477733.js +77 -0
  2389. data/vendor/tracemonkey/tests/js1_5/Regress/regress-477758.js +85 -0
  2390. data/vendor/tracemonkey/tests/js1_5/Regress/regress-478314.js +65 -0
  2391. data/vendor/tracemonkey/tests/js1_5/Regress/regress-479353.js +61 -0
  2392. data/vendor/tracemonkey/tests/js1_5/Regress/regress-480147.js +68 -0
  2393. data/vendor/tracemonkey/tests/js1_5/Regress/regress-480244.js +86 -0
  2394. data/vendor/tracemonkey/tests/js1_5/Regress/regress-481436.js +74 -0
  2395. data/vendor/tracemonkey/tests/js1_5/Regress/regress-482421.js +61 -0
  2396. data/vendor/tracemonkey/tests/js1_5/Regress/regress-483103.js +68 -0
  2397. data/vendor/tracemonkey/tests/js1_5/Regress/regress-501124.js +78 -0
  2398. data/vendor/tracemonkey/tests/js1_5/Regress/regress-504078.js +84 -0
  2399. data/vendor/tracemonkey/tests/js1_5/Regress/regress-506567.js +78 -0
  2400. data/vendor/tracemonkey/tests/js1_5/Regress/regress-57043.js +109 -0
  2401. data/vendor/tracemonkey/tests/js1_5/Regress/regress-58116.js +61 -0
  2402. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-001.js +78 -0
  2403. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-002.js +101 -0
  2404. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-003.js +105 -0
  2405. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-004.js +133 -0
  2406. data/vendor/tracemonkey/tests/js1_5/Regress/regress-69607.js +76 -0
  2407. data/vendor/tracemonkey/tests/js1_5/Regress/regress-71107.js +80 -0
  2408. data/vendor/tracemonkey/tests/js1_5/Regress/regress-76054.js +160 -0
  2409. data/vendor/tracemonkey/tests/js1_5/Regress/regress-80981.js +3144 -0
  2410. data/vendor/tracemonkey/tests/js1_5/Regress/regress-82306.js +82 -0
  2411. data/vendor/tracemonkey/tests/js1_5/Regress/regress-89443.js +2153 -0
  2412. data/vendor/tracemonkey/tests/js1_5/Regress/regress-89474.js +85 -0
  2413. data/vendor/tracemonkey/tests/js1_5/Regress/regress-90445.js +329 -0
  2414. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96128-n.js +85 -0
  2415. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-001.js +537 -0
  2416. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-002.js +63 -0
  2417. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-003.js +4438 -0
  2418. data/vendor/tracemonkey/tests/js1_5/Regress/regress-98901.js +3925 -0
  2419. data/vendor/tracemonkey/tests/js1_5/Regress/shell.js +1 -0
  2420. data/vendor/tracemonkey/tests/js1_5/Scope/jstests.list +18 -0
  2421. data/vendor/tracemonkey/tests/js1_5/Scope/regress-154693.js +101 -0
  2422. data/vendor/tracemonkey/tests/js1_5/Scope/regress-181834.js +183 -0
  2423. data/vendor/tracemonkey/tests/js1_5/Scope/regress-184107.js +127 -0
  2424. data/vendor/tracemonkey/tests/js1_5/Scope/regress-185485.js +163 -0
  2425. data/vendor/tracemonkey/tests/js1_5/Scope/regress-191276.js +128 -0
  2426. data/vendor/tracemonkey/tests/js1_5/Scope/regress-192226.js +125 -0
  2427. data/vendor/tracemonkey/tests/js1_5/Scope/regress-202678-001.js +136 -0
  2428. data/vendor/tracemonkey/tests/js1_5/Scope/regress-202678-002.js +137 -0
  2429. data/vendor/tracemonkey/tests/js1_5/Scope/regress-208496-001.js +174 -0
  2430. data/vendor/tracemonkey/tests/js1_5/Scope/regress-208496-002.js +166 -0
  2431. data/vendor/tracemonkey/tests/js1_5/Scope/regress-220362.js +116 -0
  2432. data/vendor/tracemonkey/tests/js1_5/Scope/regress-446026-01.js +84 -0
  2433. data/vendor/tracemonkey/tests/js1_5/Scope/regress-446026-02.js +60 -0
  2434. data/vendor/tracemonkey/tests/js1_5/Scope/regress-77578-001.js +184 -0
  2435. data/vendor/tracemonkey/tests/js1_5/Scope/scope-002.js +142 -0
  2436. data/vendor/tracemonkey/tests/js1_5/Scope/scope-003.js +143 -0
  2437. data/vendor/tracemonkey/tests/js1_5/Scope/scope-004.js +225 -0
  2438. data/vendor/tracemonkey/tests/js1_5/Scope/shell.js +1 -0
  2439. data/vendor/tracemonkey/tests/js1_5/String/jstests.list +9 -0
  2440. data/vendor/tracemonkey/tests/js1_5/String/regress-107771.js +125 -0
  2441. data/vendor/tracemonkey/tests/js1_5/String/regress-112626.js +52 -0
  2442. data/vendor/tracemonkey/tests/js1_5/String/regress-157334-01.js +90 -0
  2443. data/vendor/tracemonkey/tests/js1_5/String/regress-179068.js +159 -0
  2444. data/vendor/tracemonkey/tests/js1_5/String/regress-314890.js +84 -0
  2445. data/vendor/tracemonkey/tests/js1_5/String/regress-322772.js +84 -0
  2446. data/vendor/tracemonkey/tests/js1_5/String/regress-56940-01.js +81 -0
  2447. data/vendor/tracemonkey/tests/js1_5/String/regress-56940-02.js +81 -0
  2448. data/vendor/tracemonkey/tests/js1_5/String/shell.js +1 -0
  2449. data/vendor/tracemonkey/tests/js1_5/browser.js +37 -0
  2450. data/vendor/tracemonkey/tests/js1_5/decompilation/jstests.list +65 -0
  2451. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-344120.js +62 -0
  2452. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346892.js +62 -0
  2453. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346902.js +91 -0
  2454. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346904.js +156 -0
  2455. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346915.js +64 -0
  2456. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349484.js +69 -0
  2457. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349489.js +69 -0
  2458. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349491.js +79 -0
  2459. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349596.js +63 -0
  2460. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349650.js +65 -0
  2461. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349663.js +68 -0
  2462. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350242.js +69 -0
  2463. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350263.js +64 -0
  2464. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350271.js +64 -0
  2465. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350666.js +93 -0
  2466. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350670.js +69 -0
  2467. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351104.js +65 -0
  2468. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351219.js +67 -0
  2469. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351336.js +63 -0
  2470. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351597.js +64 -0
  2471. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351625.js +64 -0
  2472. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351626.js +64 -0
  2473. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351693.js +65 -0
  2474. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351705.js +65 -0
  2475. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351793.js +65 -0
  2476. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352013.js +93 -0
  2477. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352022.js +63 -0
  2478. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352073.js +69 -0
  2479. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352202.js +64 -0
  2480. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352312.js +69 -0
  2481. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352360.js +70 -0
  2482. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352375.js +62 -0
  2483. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352453.js +63 -0
  2484. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352649.js +63 -0
  2485. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352873-01.js +68 -0
  2486. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352873-02.js +68 -0
  2487. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353000.js +63 -0
  2488. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353120.js +63 -0
  2489. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353146.js +69 -0
  2490. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-354878.js +62 -0
  2491. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-354910.js +63 -0
  2492. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-355992.js +62 -0
  2493. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-356083.js +66 -0
  2494. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-356248.js +63 -0
  2495. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-371692.js +62 -0
  2496. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-373678.js +62 -0
  2497. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-375639.js +68 -0
  2498. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-375882.js +76 -0
  2499. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-376564.js +67 -0
  2500. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-383721.js +66 -0
  2501. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-406555.js +69 -0
  2502. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-437288-02.js +64 -0
  2503. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-443071-01.js +61 -0
  2504. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-456964-01.js +74 -0
  2505. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-457093-01.js +77 -0
  2506. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-457824.js +66 -0
  2507. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-01.js +65 -0
  2508. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-02.js +65 -0
  2509. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-03.js +65 -0
  2510. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460501.js +71 -0
  2511. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460870.js +63 -0
  2512. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461108.js +64 -0
  2513. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461110.js +64 -0
  2514. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461111.js +64 -0
  2515. data/vendor/tracemonkey/tests/js1_5/decompilation/shell.js +2 -0
  2516. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-001-n.js +79 -0
  2517. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-001.js +83 -0
  2518. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-002.js +79 -0
  2519. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-003.js +94 -0
  2520. data/vendor/tracemonkey/tests/js1_5/extensions/getset-001.js +90 -0
  2521. data/vendor/tracemonkey/tests/js1_5/extensions/getset-003.js +211 -0
  2522. data/vendor/tracemonkey/tests/js1_5/extensions/getset-004.js +211 -0
  2523. data/vendor/tracemonkey/tests/js1_5/extensions/getset-005.js +220 -0
  2524. data/vendor/tracemonkey/tests/js1_5/extensions/getset-006.js +194 -0
  2525. data/vendor/tracemonkey/tests/js1_5/extensions/jstests.list +241 -0
  2526. data/vendor/tracemonkey/tests/js1_5/extensions/no-such-method.js +69 -0
  2527. data/vendor/tracemonkey/tests/js1_5/extensions/regress-104077.js +233 -0
  2528. data/vendor/tracemonkey/tests/js1_5/extensions/regress-164697.js +112 -0
  2529. data/vendor/tracemonkey/tests/js1_5/extensions/regress-178722.js +127 -0
  2530. data/vendor/tracemonkey/tests/js1_5/extensions/regress-192465.js +157 -0
  2531. data/vendor/tracemonkey/tests/js1_5/extensions/regress-220584.js +147 -0
  2532. data/vendor/tracemonkey/tests/js1_5/extensions/regress-225831.js +196 -0
  2533. data/vendor/tracemonkey/tests/js1_5/extensions/regress-226078.js +61 -0
  2534. data/vendor/tracemonkey/tests/js1_5/extensions/regress-226507.js +187 -0
  2535. data/vendor/tracemonkey/tests/js1_5/extensions/regress-231518.js +136 -0
  2536. data/vendor/tracemonkey/tests/js1_5/extensions/regress-237461.js +80 -0
  2537. data/vendor/tracemonkey/tests/js1_5/extensions/regress-245148.js +55 -0
  2538. data/vendor/tracemonkey/tests/js1_5/extensions/regress-245795.js +67 -0
  2539. data/vendor/tracemonkey/tests/js1_5/extensions/regress-254375.js +63 -0
  2540. data/vendor/tracemonkey/tests/js1_5/extensions/regress-255245.js +65 -0
  2541. data/vendor/tracemonkey/tests/js1_5/extensions/regress-291213.js +81 -0
  2542. data/vendor/tracemonkey/tests/js1_5/extensions/regress-300079.js +80 -0
  2543. data/vendor/tracemonkey/tests/js1_5/extensions/regress-303277.js +52 -0
  2544. data/vendor/tracemonkey/tests/js1_5/extensions/regress-304897.js +53 -0
  2545. data/vendor/tracemonkey/tests/js1_5/extensions/regress-306738.js +58 -0
  2546. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311161.js +1471 -0
  2547. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311583.js +54 -0
  2548. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311792-01.js +59 -0
  2549. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311792-02.js +73 -0
  2550. data/vendor/tracemonkey/tests/js1_5/extensions/regress-312278.js +75 -0
  2551. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313500.js +62 -0
  2552. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313630.js +71 -0
  2553. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313763.js +79 -0
  2554. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313803.js +57 -0
  2555. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313938.js +87 -0
  2556. data/vendor/tracemonkey/tests/js1_5/extensions/regress-314874.js +73 -0
  2557. data/vendor/tracemonkey/tests/js1_5/extensions/regress-315509-02.js +75 -0
  2558. data/vendor/tracemonkey/tests/js1_5/extensions/regress-319683.js +64 -0
  2559. data/vendor/tracemonkey/tests/js1_5/extensions/regress-322957.js +60 -0
  2560. data/vendor/tracemonkey/tests/js1_5/extensions/regress-325269.js +93 -0
  2561. data/vendor/tracemonkey/tests/js1_5/extensions/regress-327608.js +81 -0
  2562. data/vendor/tracemonkey/tests/js1_5/extensions/regress-328443.js +65 -0
  2563. data/vendor/tracemonkey/tests/js1_5/extensions/regress-328556.js +52 -0
  2564. data/vendor/tracemonkey/tests/js1_5/extensions/regress-330569.js +129 -0
  2565. data/vendor/tracemonkey/tests/js1_5/extensions/regress-333541.js +123 -0
  2566. data/vendor/tracemonkey/tests/js1_5/extensions/regress-335700.js +127 -0
  2567. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336409-1.js +82 -0
  2568. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336409-2.js +82 -0
  2569. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336410-1.js +82 -0
  2570. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336410-2.js +82 -0
  2571. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-01.js +102 -0
  2572. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-02.js +103 -0
  2573. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-03.js +62 -0
  2574. data/vendor/tracemonkey/tests/js1_5/extensions/regress-339685.js +60 -0
  2575. data/vendor/tracemonkey/tests/js1_5/extensions/regress-340199.js +82 -0
  2576. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-01.js +101 -0
  2577. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-02.js +88 -0
  2578. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-03.js +105 -0
  2579. data/vendor/tracemonkey/tests/js1_5/extensions/regress-342960.js +87 -0
  2580. data/vendor/tracemonkey/tests/js1_5/extensions/regress-345967.js +100 -0
  2581. data/vendor/tracemonkey/tests/js1_5/extensions/regress-346494-01.js +123 -0
  2582. data/vendor/tracemonkey/tests/js1_5/extensions/regress-346494.js +141 -0
  2583. data/vendor/tracemonkey/tests/js1_5/extensions/regress-347306-02.js +84 -0
  2584. data/vendor/tracemonkey/tests/js1_5/extensions/regress-348986.js +161 -0
  2585. data/vendor/tracemonkey/tests/js1_5/extensions/regress-349616.js +69 -0
  2586. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-01.js +83 -0
  2587. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-02.js +145 -0
  2588. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-03.js +149 -0
  2589. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350531.js +188 -0
  2590. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-01.js +72 -0
  2591. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-02.js +78 -0
  2592. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-06.js +67 -0
  2593. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351448.js +96 -0
  2594. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351463-01.js +287 -0
  2595. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351973.js +84 -0
  2596. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352060.js +80 -0
  2597. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352094.js +79 -0
  2598. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352261.js +81 -0
  2599. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352281.js +67 -0
  2600. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352291.js +74 -0
  2601. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352372.js +98 -0
  2602. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352455.js +67 -0
  2603. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352604.js +66 -0
  2604. data/vendor/tracemonkey/tests/js1_5/extensions/regress-353214.js +62 -0
  2605. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354297.js +63 -0
  2606. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-01.js +68 -0
  2607. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-02.js +77 -0
  2608. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-03.js +89 -0
  2609. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-04.js +94 -0
  2610. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355339.js +65 -0
  2611. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355497.js +94 -0
  2612. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355622.js +67 -0
  2613. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355655.js +78 -0
  2614. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355736.js +72 -0
  2615. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355820.js +64 -0
  2616. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355982.js +76 -0
  2617. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356085.js +62 -0
  2618. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356106.js +61 -0
  2619. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356378.js +69 -0
  2620. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356402.js +56 -0
  2621. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-01.js +65 -0
  2622. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-02.js +54 -0
  2623. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-03.js +64 -0
  2624. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-04.js +54 -0
  2625. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-05.js +65 -0
  2626. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-06.js +54 -0
  2627. data/vendor/tracemonkey/tests/js1_5/extensions/regress-359024.js +69 -0
  2628. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361346.js +55 -0
  2629. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361360.js +65 -0
  2630. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361552.js +60 -0
  2631. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361558.js +52 -0
  2632. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361571.js +71 -0
  2633. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361856.js +68 -0
  2634. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361964.js +81 -0
  2635. data/vendor/tracemonkey/tests/js1_5/extensions/regress-363258.js +80 -0
  2636. data/vendor/tracemonkey/tests/js1_5/extensions/regress-363988.js +82 -0
  2637. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365527.js +99 -0
  2638. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365692.js +73 -0
  2639. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365869.js +115 -0
  2640. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366288.js +51 -0
  2641. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366292.js +52 -0
  2642. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366396.js +50 -0
  2643. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367118-01.js +74 -0
  2644. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367118-02.js +74 -0
  2645. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367119-01.js +74 -0
  2646. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367119-02.js +74 -0
  2647. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367120-01.js +74 -0
  2648. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367120-02.js +74 -0
  2649. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367121.js +97 -0
  2650. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-01.js +68 -0
  2651. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-02.js +70 -0
  2652. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-03.js +71 -0
  2653. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-04.js +71 -0
  2654. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367589.js +81 -0
  2655. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367630.js +77 -0
  2656. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367923.js +83 -0
  2657. data/vendor/tracemonkey/tests/js1_5/extensions/regress-368859.js +70 -0
  2658. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369404.js +81 -0
  2659. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-01.js +64 -0
  2660. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-02.js +72 -0
  2661. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-03.js +80 -0
  2662. data/vendor/tracemonkey/tests/js1_5/extensions/regress-371636.js +88 -0
  2663. data/vendor/tracemonkey/tests/js1_5/extensions/regress-372309.js +80 -0
  2664. data/vendor/tracemonkey/tests/js1_5/extensions/regress-374589.js +67 -0
  2665. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375183.js +95 -0
  2666. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375344.js +67 -0
  2667. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375801.js +69 -0
  2668. data/vendor/tracemonkey/tests/js1_5/extensions/regress-376052.js +104 -0
  2669. data/vendor/tracemonkey/tests/js1_5/extensions/regress-379523.js +71 -0
  2670. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380581.js +70 -0
  2671. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380831.js +81 -0
  2672. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380889.js +73 -0
  2673. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381205.js +52 -0
  2674. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381211.js +62 -0
  2675. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381304.js +113 -0
  2676. data/vendor/tracemonkey/tests/js1_5/extensions/regress-382509.js +118 -0
  2677. data/vendor/tracemonkey/tests/js1_5/extensions/regress-383965.js +57 -0
  2678. data/vendor/tracemonkey/tests/js1_5/extensions/regress-384680.js +67 -0
  2679. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385134.js +67 -0
  2680. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385393-02.js +67 -0
  2681. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385393-09.js +51 -0
  2682. data/vendor/tracemonkey/tests/js1_5/extensions/regress-390597.js +75 -0
  2683. data/vendor/tracemonkey/tests/js1_5/extensions/regress-394967.js +75 -0
  2684. data/vendor/tracemonkey/tests/js1_5/extensions/regress-396326.js +81 -0
  2685. data/vendor/tracemonkey/tests/js1_5/extensions/regress-406572.js +77 -0
  2686. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407019.js +70 -0
  2687. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407501.js +74 -0
  2688. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407720.js +84 -0
  2689. data/vendor/tracemonkey/tests/js1_5/extensions/regress-412926.js +90 -0
  2690. data/vendor/tracemonkey/tests/js1_5/extensions/regress-414755.js +86 -0
  2691. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416354.js +80 -0
  2692. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416460.js +63 -0
  2693. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416834.js +53 -0
  2694. data/vendor/tracemonkey/tests/js1_5/extensions/regress-418730.js +65 -0
  2695. data/vendor/tracemonkey/tests/js1_5/extensions/regress-420612.js +61 -0
  2696. data/vendor/tracemonkey/tests/js1_5/extensions/regress-420869-01.js +73 -0
  2697. data/vendor/tracemonkey/tests/js1_5/extensions/regress-421621.js +54 -0
  2698. data/vendor/tracemonkey/tests/js1_5/extensions/regress-422137.js +67 -0
  2699. data/vendor/tracemonkey/tests/js1_5/extensions/regress-422592.js +103 -0
  2700. data/vendor/tracemonkey/tests/js1_5/extensions/regress-424257.js +69 -0
  2701. data/vendor/tracemonkey/tests/js1_5/extensions/regress-424683-01.js +69 -0
  2702. data/vendor/tracemonkey/tests/js1_5/extensions/regress-426711.js +67 -0
  2703. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-01.js +73 -0
  2704. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-02.js +70 -0
  2705. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-03.js +64 -0
  2706. data/vendor/tracemonkey/tests/js1_5/extensions/regress-429264.js +65 -0
  2707. data/vendor/tracemonkey/tests/js1_5/extensions/regress-431428.js +70 -0
  2708. data/vendor/tracemonkey/tests/js1_5/extensions/regress-432075.js +57 -0
  2709. data/vendor/tracemonkey/tests/js1_5/extensions/regress-434837-01.js +123 -0
  2710. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435345-01.js +132 -0
  2711. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-01.js +68 -0
  2712. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-02.js +68 -0
  2713. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-03.js +68 -0
  2714. data/vendor/tracemonkey/tests/js1_5/extensions/regress-436741.js +68 -0
  2715. data/vendor/tracemonkey/tests/js1_5/extensions/regress-437288-01.js +61 -0
  2716. data/vendor/tracemonkey/tests/js1_5/extensions/regress-44009.js +86 -0
  2717. data/vendor/tracemonkey/tests/js1_5/extensions/regress-443569.js +74 -0
  2718. data/vendor/tracemonkey/tests/js1_5/extensions/regress-446386.js +80 -0
  2719. data/vendor/tracemonkey/tests/js1_5/extensions/regress-449657.js +92 -0
  2720. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452168.js +72 -0
  2721. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452178.js +64 -0
  2722. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452329.js +60 -0
  2723. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452338.js +64 -0
  2724. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452372.js +64 -0
  2725. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452565.js +54 -0
  2726. data/vendor/tracemonkey/tests/js1_5/extensions/regress-453249.js +56 -0
  2727. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454040.js +59 -0
  2728. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454142.js +62 -0
  2729. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454704.js +88 -0
  2730. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455380.js +93 -0
  2731. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455408.js +64 -0
  2732. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455413.js +59 -0
  2733. data/vendor/tracemonkey/tests/js1_5/extensions/regress-459606.js +62 -0
  2734. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-02.js +64 -0
  2735. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-03.js +63 -0
  2736. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-04.js +66 -0
  2737. data/vendor/tracemonkey/tests/js1_5/extensions/regress-465276.js +69 -0
  2738. data/vendor/tracemonkey/tests/js1_5/extensions/regress-469625.js +67 -0
  2739. data/vendor/tracemonkey/tests/js1_5/extensions/regress-469761.js +66 -0
  2740. data/vendor/tracemonkey/tests/js1_5/extensions/regress-472599.js +67 -0
  2741. data/vendor/tracemonkey/tests/js1_5/extensions/regress-472787.js +63 -0
  2742. data/vendor/tracemonkey/tests/js1_5/extensions/regress-476447.js +66 -0
  2743. data/vendor/tracemonkey/tests/js1_5/extensions/regress-479487.js +79 -0
  2744. data/vendor/tracemonkey/tests/js1_5/extensions/regress-479551.js +77 -0
  2745. data/vendor/tracemonkey/tests/js1_5/extensions/regress-480579.js +69 -0
  2746. data/vendor/tracemonkey/tests/js1_5/extensions/regress-481516.js +72 -0
  2747. data/vendor/tracemonkey/tests/js1_5/extensions/regress-488995.js +79 -0
  2748. data/vendor/tracemonkey/tests/js1_5/extensions/regress-50447-1.js +210 -0
  2749. data/vendor/tracemonkey/tests/js1_5/extensions/regress-50447.js +169 -0
  2750. data/vendor/tracemonkey/tests/js1_5/extensions/regress-90596-001.js +299 -0
  2751. data/vendor/tracemonkey/tests/js1_5/extensions/regress-90596-002.js +299 -0
  2752. data/vendor/tracemonkey/tests/js1_5/extensions/regress-96284-001.js +182 -0
  2753. data/vendor/tracemonkey/tests/js1_5/extensions/regress-96284-002.js +182 -0
  2754. data/vendor/tracemonkey/tests/js1_5/extensions/scope-001.js +117 -0
  2755. data/vendor/tracemonkey/tests/js1_5/extensions/shell.js +1 -0
  2756. data/vendor/tracemonkey/tests/js1_5/extensions/toLocaleFormat-01.js +271 -0
  2757. data/vendor/tracemonkey/tests/js1_5/extensions/toLocaleFormat-02.js +138 -0
  2758. data/vendor/tracemonkey/tests/js1_5/jstests.list +15 -0
  2759. data/vendor/tracemonkey/tests/js1_5/shell.js +41 -0
  2760. data/vendor/tracemonkey/tests/js1_5/template.js +59 -0
  2761. data/vendor/tracemonkey/tests/js1_6/Array/filter.js +86 -0
  2762. data/vendor/tracemonkey/tests/js1_6/Array/jstests.list +13 -0
  2763. data/vendor/tracemonkey/tests/js1_6/Array/regress-290592.js +695 -0
  2764. data/vendor/tracemonkey/tests/js1_6/Array/regress-304828.js +272 -0
  2765. data/vendor/tracemonkey/tests/js1_6/Array/regress-305002.js +58 -0
  2766. data/vendor/tracemonkey/tests/js1_6/Array/regress-310425-01.js +60 -0
  2767. data/vendor/tracemonkey/tests/js1_6/Array/regress-310425-02.js +50 -0
  2768. data/vendor/tracemonkey/tests/js1_6/Array/regress-320887.js +57 -0
  2769. data/vendor/tracemonkey/tests/js1_6/Array/regress-352742-01.js +73 -0
  2770. data/vendor/tracemonkey/tests/js1_6/Array/regress-352742-02.js +65 -0
  2771. data/vendor/tracemonkey/tests/js1_6/Array/regress-386030.js +98 -0
  2772. data/vendor/tracemonkey/tests/js1_6/Array/regress-415451.js +57 -0
  2773. data/vendor/tracemonkey/tests/js1_6/Array/regress-415540.js +54 -0
  2774. data/vendor/tracemonkey/tests/js1_6/Array/shell.js +1 -0
  2775. data/vendor/tracemonkey/tests/js1_6/README +1 -0
  2776. data/vendor/tracemonkey/tests/js1_6/Regress/jstests.list +16 -0
  2777. data/vendor/tracemonkey/tests/js1_6/Regress/regress-301574.js +69 -0
  2778. data/vendor/tracemonkey/tests/js1_6/Regress/regress-311157-01.js +57 -0
  2779. data/vendor/tracemonkey/tests/js1_6/Regress/regress-311157-02.js +57 -0
  2780. data/vendor/tracemonkey/tests/js1_6/Regress/regress-314887.js +53 -0
  2781. data/vendor/tracemonkey/tests/js1_6/Regress/regress-320172.js +58 -0
  2782. data/vendor/tracemonkey/tests/js1_6/Regress/regress-350417.js +69 -0
  2783. data/vendor/tracemonkey/tests/js1_6/Regress/regress-351795.js +69 -0
  2784. data/vendor/tracemonkey/tests/js1_6/Regress/regress-352271.js +67 -0
  2785. data/vendor/tracemonkey/tests/js1_6/Regress/regress-353078.js +65 -0
  2786. data/vendor/tracemonkey/tests/js1_6/Regress/regress-355002.js +70 -0
  2787. data/vendor/tracemonkey/tests/js1_6/Regress/regress-372565.js +61 -0
  2788. data/vendor/tracemonkey/tests/js1_6/Regress/regress-378492.js +65 -0
  2789. data/vendor/tracemonkey/tests/js1_6/Regress/regress-382509.js +78 -0
  2790. data/vendor/tracemonkey/tests/js1_6/Regress/regress-475469.js +68 -0
  2791. data/vendor/tracemonkey/tests/js1_6/Regress/regress-476655.js +75 -0
  2792. data/vendor/tracemonkey/tests/js1_6/Regress/shell.js +1 -0
  2793. data/vendor/tracemonkey/tests/js1_6/String/jstests.list +2 -0
  2794. data/vendor/tracemonkey/tests/js1_6/String/regress-306591.js +99 -0
  2795. data/vendor/tracemonkey/tests/js1_6/String/shell.js +1 -0
  2796. data/vendor/tracemonkey/tests/js1_6/browser.js +36 -0
  2797. data/vendor/tracemonkey/tests/js1_6/decompilation/jstests.list +4 -0
  2798. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352084.js +79 -0
  2799. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352613-01.js +73 -0
  2800. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352613-02.js +73 -0
  2801. data/vendor/tracemonkey/tests/js1_6/decompilation/shell.js +1 -0
  2802. data/vendor/tracemonkey/tests/js1_6/extensions/jstests.list +15 -0
  2803. data/vendor/tracemonkey/tests/js1_6/extensions/regress-312385-01.js +155 -0
  2804. data/vendor/tracemonkey/tests/js1_6/extensions/regress-352392.js +71 -0
  2805. data/vendor/tracemonkey/tests/js1_6/extensions/regress-385393-08.js +58 -0
  2806. data/vendor/tracemonkey/tests/js1_6/extensions/regress-414098.js +72 -0
  2807. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-01.js +54 -0
  2808. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-02.js +64 -0
  2809. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-03.js +66 -0
  2810. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-04.js +63 -0
  2811. data/vendor/tracemonkey/tests/js1_6/extensions/regress-456826.js +159 -0
  2812. data/vendor/tracemonkey/tests/js1_6/extensions/regress-457521.js +57 -0
  2813. data/vendor/tracemonkey/tests/js1_6/extensions/regress-465443.js +74 -0
  2814. data/vendor/tracemonkey/tests/js1_6/extensions/regress-470310.js +66 -0
  2815. data/vendor/tracemonkey/tests/js1_6/extensions/regress-472508.js +59 -0
  2816. data/vendor/tracemonkey/tests/js1_6/extensions/regress-475144.js +58 -0
  2817. data/vendor/tracemonkey/tests/js1_6/extensions/shell.js +1 -0
  2818. data/vendor/tracemonkey/tests/js1_6/jstests.list +5 -0
  2819. data/vendor/tracemonkey/tests/js1_6/shell.js +47 -0
  2820. data/vendor/tracemonkey/tests/js1_6/template.js +59 -0
  2821. data/vendor/tracemonkey/tests/js1_7/GC/jstests.list +3 -0
  2822. data/vendor/tracemonkey/tests/js1_7/GC/regress-341675.js +68 -0
  2823. data/vendor/tracemonkey/tests/js1_7/GC/regress-381374.js +92 -0
  2824. data/vendor/tracemonkey/tests/js1_7/GC/shell.js +1 -0
  2825. data/vendor/tracemonkey/tests/js1_7/README +1 -0
  2826. data/vendor/tracemonkey/tests/js1_7/block/jstests.list +37 -0
  2827. data/vendor/tracemonkey/tests/js1_7/block/order-of-operation.js +185 -0
  2828. data/vendor/tracemonkey/tests/js1_7/block/regress-341939.js +58 -0
  2829. data/vendor/tracemonkey/tests/js1_7/block/regress-343765.js +129 -0
  2830. data/vendor/tracemonkey/tests/js1_7/block/regress-344139.js +125 -0
  2831. data/vendor/tracemonkey/tests/js1_7/block/regress-344262.js +73 -0
  2832. data/vendor/tracemonkey/tests/js1_7/block/regress-344370.js +61 -0
  2833. data/vendor/tracemonkey/tests/js1_7/block/regress-344601.js +70 -0
  2834. data/vendor/tracemonkey/tests/js1_7/block/regress-345542.js +63 -0
  2835. data/vendor/tracemonkey/tests/js1_7/block/regress-347559.js +110 -0
  2836. data/vendor/tracemonkey/tests/js1_7/block/regress-348685.js +80 -0
  2837. data/vendor/tracemonkey/tests/js1_7/block/regress-349283.js +63 -0
  2838. data/vendor/tracemonkey/tests/js1_7/block/regress-349298.js +71 -0
  2839. data/vendor/tracemonkey/tests/js1_7/block/regress-349507.js +69 -0
  2840. data/vendor/tracemonkey/tests/js1_7/block/regress-349653.js +63 -0
  2841. data/vendor/tracemonkey/tests/js1_7/block/regress-349962.js +60 -0
  2842. data/vendor/tracemonkey/tests/js1_7/block/regress-350279.js +69 -0
  2843. data/vendor/tracemonkey/tests/js1_7/block/regress-350730.js +71 -0
  2844. data/vendor/tracemonkey/tests/js1_7/block/regress-350793-01.js +72 -0
  2845. data/vendor/tracemonkey/tests/js1_7/block/regress-351497.js +69 -0
  2846. data/vendor/tracemonkey/tests/js1_7/block/regress-351606.js +53 -0
  2847. data/vendor/tracemonkey/tests/js1_7/block/regress-351794.js +67 -0
  2848. data/vendor/tracemonkey/tests/js1_7/block/regress-352092.js +71 -0
  2849. data/vendor/tracemonkey/tests/js1_7/block/regress-352185.js +71 -0
  2850. data/vendor/tracemonkey/tests/js1_7/block/regress-352212.js +70 -0
  2851. data/vendor/tracemonkey/tests/js1_7/block/regress-352267.js +61 -0
  2852. data/vendor/tracemonkey/tests/js1_7/block/regress-352422.js +70 -0
  2853. data/vendor/tracemonkey/tests/js1_7/block/regress-352609.js +90 -0
  2854. data/vendor/tracemonkey/tests/js1_7/block/regress-352616.js +95 -0
  2855. data/vendor/tracemonkey/tests/js1_7/block/regress-352624.js +71 -0
  2856. data/vendor/tracemonkey/tests/js1_7/block/regress-352786.js +70 -0
  2857. data/vendor/tracemonkey/tests/js1_7/block/regress-352907.js +70 -0
  2858. data/vendor/tracemonkey/tests/js1_7/block/regress-357754.js +96 -0
  2859. data/vendor/tracemonkey/tests/js1_7/block/regress-358508.js +70 -0
  2860. data/vendor/tracemonkey/tests/js1_7/block/regress-376410.js +70 -0
  2861. data/vendor/tracemonkey/tests/js1_7/block/regress-396900.js +64 -0
  2862. data/vendor/tracemonkey/tests/js1_7/block/regress-411279.js +98 -0
  2863. data/vendor/tracemonkey/tests/js1_7/block/shell.js +1 -0
  2864. data/vendor/tracemonkey/tests/js1_7/browser.js +36 -0
  2865. data/vendor/tracemonkey/tests/js1_7/decompilation/jstests.list +52 -0
  2866. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-346642-01.js +200 -0
  2867. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-348904.js +67 -0
  2868. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349493.js +64 -0
  2869. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349499.js +64 -0
  2870. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349602.js +69 -0
  2871. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349605.js +69 -0
  2872. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349633.js +69 -0
  2873. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349634.js +64 -0
  2874. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350704.js +65 -0
  2875. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350793-02.js +68 -0
  2876. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350810.js +62 -0
  2877. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350991.js +87 -0
  2878. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351070-01.js +102 -0
  2879. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351070-03.js +173 -0
  2880. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351496.js +68 -0
  2881. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352008.js +66 -0
  2882. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352011.js +75 -0
  2883. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352015.js +69 -0
  2884. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352022.js +69 -0
  2885. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352025.js +63 -0
  2886. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352026.js +79 -0
  2887. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352068.js +64 -0
  2888. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352079.js +79 -0
  2889. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352198.js +64 -0
  2890. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352217.js +77 -0
  2891. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352266.js +80 -0
  2892. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352268.js +77 -0
  2893. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352269.js +63 -0
  2894. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352272.js +63 -0
  2895. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352283.js +63 -0
  2896. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352402.js +62 -0
  2897. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352415.js +62 -0
  2898. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352441.js +64 -0
  2899. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352732.js +93 -0
  2900. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355004.js +62 -0
  2901. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355049-01.js +62 -0
  2902. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355049-02.js +62 -0
  2903. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355105.js +62 -0
  2904. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355635.js +62 -0
  2905. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355786.js +63 -0
  2906. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-356247.js +103 -0
  2907. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-371802.js +63 -0
  2908. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-374713.js +63 -0
  2909. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-375794.js +63 -0
  2910. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-379925.js +63 -0
  2911. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-380506.js +68 -0
  2912. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-381101.js +63 -0
  2913. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-381108.js +64 -0
  2914. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-410571.js +159 -0
  2915. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-410649.js +62 -0
  2916. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-429252.js +70 -0
  2917. data/vendor/tracemonkey/tests/js1_7/decompilation/shell.js +1 -0
  2918. data/vendor/tracemonkey/tests/js1_7/expressions/destructuring-scope.js +96 -0
  2919. data/vendor/tracemonkey/tests/js1_7/expressions/jstests.list +11 -0
  2920. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346203.js +61 -0
  2921. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-01.js +68 -0
  2922. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-02.js +68 -0
  2923. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-03.js +68 -0
  2924. data/vendor/tracemonkey/tests/js1_7/expressions/regress-349624.js +61 -0
  2925. data/vendor/tracemonkey/tests/js1_7/expressions/regress-349818.js +61 -0
  2926. data/vendor/tracemonkey/tests/js1_7/expressions/regress-418051.js +67 -0
  2927. data/vendor/tracemonkey/tests/js1_7/expressions/regress-421806.js +74 -0
  2928. data/vendor/tracemonkey/tests/js1_7/expressions/regress-451340.js +60 -0
  2929. data/vendor/tracemonkey/tests/js1_7/expressions/shell.js +1 -0
  2930. data/vendor/tracemonkey/tests/js1_7/extensions/basic-Iterator.js +198 -0
  2931. data/vendor/tracemonkey/tests/js1_7/extensions/basic-for-each.js +123 -0
  2932. data/vendor/tracemonkey/tests/js1_7/extensions/basic-for-in.js +111 -0
  2933. data/vendor/tracemonkey/tests/js1_7/extensions/destructuring-order.js +185 -0
  2934. data/vendor/tracemonkey/tests/js1_7/extensions/iterator-ctor.js +136 -0
  2935. data/vendor/tracemonkey/tests/js1_7/extensions/jstests.list +65 -0
  2936. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346021.js +78 -0
  2937. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346642-02.js +68 -0
  2938. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346642-06.js +109 -0
  2939. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346773.js +85 -0
  2940. data/vendor/tracemonkey/tests/js1_7/extensions/regress-349619.js +61 -0
  2941. data/vendor/tracemonkey/tests/js1_7/extensions/regress-350312.js +113 -0
  2942. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351070-02.js +102 -0
  2943. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-03.js +77 -0
  2944. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-04.js +67 -0
  2945. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-05.js +67 -0
  2946. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-07.js +76 -0
  2947. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352797-01.js +68 -0
  2948. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352885-01.js +62 -0
  2949. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352885-02.js +99 -0
  2950. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353214-01.js +79 -0
  2951. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353214-02.js +63 -0
  2952. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353249.js +67 -0
  2953. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353454.js +70 -0
  2954. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354499-01.js +79 -0
  2955. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354499-02.js +82 -0
  2956. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354945-01.js +63 -0
  2957. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354945-02.js +71 -0
  2958. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-01.js +70 -0
  2959. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-02.js +70 -0
  2960. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-03.js +76 -0
  2961. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355145.js +66 -0
  2962. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355410.js +73 -0
  2963. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355512.js +71 -0
  2964. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355578.js +78 -0
  2965. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355583.js +72 -0
  2966. data/vendor/tracemonkey/tests/js1_7/extensions/regress-363040-01.js +98 -0
  2967. data/vendor/tracemonkey/tests/js1_7/extensions/regress-363040-02.js +97 -0
  2968. data/vendor/tracemonkey/tests/js1_7/extensions/regress-366668-01.js +64 -0
  2969. data/vendor/tracemonkey/tests/js1_7/extensions/regress-366668-02.js +64 -0
  2970. data/vendor/tracemonkey/tests/js1_7/extensions/regress-367629.js +66 -0
  2971. data/vendor/tracemonkey/tests/js1_7/extensions/regress-368213.js +50 -0
  2972. data/vendor/tracemonkey/tests/js1_7/extensions/regress-368224.js +61 -0
  2973. data/vendor/tracemonkey/tests/js1_7/extensions/regress-372364.js +69 -0
  2974. data/vendor/tracemonkey/tests/js1_7/extensions/regress-379482.js +64 -0
  2975. data/vendor/tracemonkey/tests/js1_7/extensions/regress-379566.js +78 -0
  2976. data/vendor/tracemonkey/tests/js1_7/extensions/regress-380933.js +75 -0
  2977. data/vendor/tracemonkey/tests/js1_7/extensions/regress-381301.js +63 -0
  2978. data/vendor/tracemonkey/tests/js1_7/extensions/regress-381303.js +68 -0
  2979. data/vendor/tracemonkey/tests/js1_7/extensions/regress-387955-01.js +73 -0
  2980. data/vendor/tracemonkey/tests/js1_7/extensions/regress-387955-02.js +75 -0
  2981. data/vendor/tracemonkey/tests/js1_7/extensions/regress-392308.js +80 -0
  2982. data/vendor/tracemonkey/tests/js1_7/extensions/regress-396326.js +70 -0
  2983. data/vendor/tracemonkey/tests/js1_7/extensions/regress-429266.js +73 -0
  2984. data/vendor/tracemonkey/tests/js1_7/extensions/regress-453955.js +64 -0
  2985. data/vendor/tracemonkey/tests/js1_7/extensions/regress-455982-01.js +59 -0
  2986. data/vendor/tracemonkey/tests/js1_7/extensions/regress-455982-02.js +59 -0
  2987. data/vendor/tracemonkey/tests/js1_7/extensions/regress-458679.js +85 -0
  2988. data/vendor/tracemonkey/tests/js1_7/extensions/regress-469234.js +65 -0
  2989. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470176.js +71 -0
  2990. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470300-01.js +65 -0
  2991. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470300-02.js +65 -0
  2992. data/vendor/tracemonkey/tests/js1_7/extensions/regress-474771-01.js +67 -0
  2993. data/vendor/tracemonkey/tests/js1_7/extensions/regress-474771-02.js +55 -0
  2994. data/vendor/tracemonkey/tests/js1_7/extensions/regress-477048.js +67 -0
  2995. data/vendor/tracemonkey/tests/js1_7/extensions/shell.js +1 -0
  2996. data/vendor/tracemonkey/tests/js1_7/geniter/326466-01.js +78 -0
  2997. data/vendor/tracemonkey/tests/js1_7/geniter/builtin-Iterator-function.js +122 -0
  2998. data/vendor/tracemonkey/tests/js1_7/geniter/evens.js +58 -0
  2999. data/vendor/tracemonkey/tests/js1_7/geniter/fibonacci-matrix-generator.js +97 -0
  3000. data/vendor/tracemonkey/tests/js1_7/geniter/iterator-toString.js +76 -0
  3001. data/vendor/tracemonkey/tests/js1_7/geniter/jstests.list +49 -0
  3002. data/vendor/tracemonkey/tests/js1_7/geniter/message-value-passing.js +121 -0
  3003. data/vendor/tracemonkey/tests/js1_7/geniter/multiple-close.js +98 -0
  3004. data/vendor/tracemonkey/tests/js1_7/geniter/nested-yield.js +91 -0
  3005. data/vendor/tracemonkey/tests/js1_7/geniter/pi-generator.js +92 -0
  3006. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345736.js +80 -0
  3007. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345855.js +126 -0
  3008. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345879-01.js +66 -0
  3009. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345879-02.js +67 -0
  3010. data/vendor/tracemonkey/tests/js1_7/geniter/regress-347593.js +88 -0
  3011. data/vendor/tracemonkey/tests/js1_7/geniter/regress-347739.js +81 -0
  3012. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-01.js +84 -0
  3013. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-02.js +94 -0
  3014. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-03.js +75 -0
  3015. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-04.js +75 -0
  3016. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-05.js +77 -0
  3017. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-01.js +75 -0
  3018. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-02.js +62 -0
  3019. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-03.js +62 -0
  3020. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349331.js +127 -0
  3021. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349362.js +62 -0
  3022. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349851.js +69 -0
  3023. data/vendor/tracemonkey/tests/js1_7/geniter/regress-350621.js +96 -0
  3024. data/vendor/tracemonkey/tests/js1_7/geniter/regress-350809.js +69 -0
  3025. data/vendor/tracemonkey/tests/js1_7/geniter/regress-351120.js +69 -0
  3026. data/vendor/tracemonkey/tests/js1_7/geniter/regress-351514.js +69 -0
  3027. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352197.js +69 -0
  3028. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352605.js +68 -0
  3029. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352876.js +75 -0
  3030. data/vendor/tracemonkey/tests/js1_7/geniter/regress-355834.js +63 -0
  3031. data/vendor/tracemonkey/tests/js1_7/geniter/regress-359062.js +74 -0
  3032. data/vendor/tracemonkey/tests/js1_7/geniter/regress-366941.js +114 -0
  3033. data/vendor/tracemonkey/tests/js1_7/geniter/regress-382335.js +69 -0
  3034. data/vendor/tracemonkey/tests/js1_7/geniter/regress-387871.js +75 -0
  3035. data/vendor/tracemonkey/tests/js1_7/geniter/regress-390918.js +80 -0
  3036. data/vendor/tracemonkey/tests/js1_7/geniter/regress-392310.js +82 -0
  3037. data/vendor/tracemonkey/tests/js1_7/geniter/regress-466206.js +71 -0
  3038. data/vendor/tracemonkey/tests/js1_7/geniter/send-no-rhs.js +90 -0
  3039. data/vendor/tracemonkey/tests/js1_7/geniter/sequential-yields.js +105 -0
  3040. data/vendor/tracemonkey/tests/js1_7/geniter/shell.js +1 -0
  3041. data/vendor/tracemonkey/tests/js1_7/geniter/simple-fib.js +88 -0
  3042. data/vendor/tracemonkey/tests/js1_7/geniter/throw-after-close.js +123 -0
  3043. data/vendor/tracemonkey/tests/js1_7/geniter/throw-forever.js +118 -0
  3044. data/vendor/tracemonkey/tests/js1_7/geniter/unreachable-yield.js +90 -0
  3045. data/vendor/tracemonkey/tests/js1_7/geniter/yield-undefined.js +96 -0
  3046. data/vendor/tracemonkey/tests/js1_7/iterable/jstests.list +15 -0
  3047. data/vendor/tracemonkey/tests/js1_7/iterable/regress-340526-01.js +61 -0
  3048. data/vendor/tracemonkey/tests/js1_7/iterable/regress-340526-02.js +75 -0
  3049. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341496.js +52 -0
  3050. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341499.js +66 -0
  3051. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341510.js +62 -0
  3052. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341815.js +126 -0
  3053. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341821.js +115 -0
  3054. data/vendor/tracemonkey/tests/js1_7/iterable/regress-354750-01.js +75 -0
  3055. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355025.js +61 -0
  3056. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355075-01.js +71 -0
  3057. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355075-02.js +71 -0
  3058. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355090.js +70 -0
  3059. data/vendor/tracemonkey/tests/js1_7/iterable/regress-412467.js +69 -0
  3060. data/vendor/tracemonkey/tests/js1_7/iterable/regress-415922.js +82 -0
  3061. data/vendor/tracemonkey/tests/js1_7/iterable/shell.js +1 -0
  3062. data/vendor/tracemonkey/tests/js1_7/jstests.list +10 -0
  3063. data/vendor/tracemonkey/tests/js1_7/lexical/jstests.list +5 -0
  3064. data/vendor/tracemonkey/tests/js1_7/lexical/regress-336376-01.js +441 -0
  3065. data/vendor/tracemonkey/tests/js1_7/lexical/regress-346642-03.js +169 -0
  3066. data/vendor/tracemonkey/tests/js1_7/lexical/regress-346642-04.js +70 -0
  3067. data/vendor/tracemonkey/tests/js1_7/lexical/regress-351515.js +130 -0
  3068. data/vendor/tracemonkey/tests/js1_7/lexical/shell.js +1 -0
  3069. data/vendor/tracemonkey/tests/js1_7/regexp/jstests.list +2 -0
  3070. data/vendor/tracemonkey/tests/js1_7/regexp/shell.js +1 -0
  3071. data/vendor/tracemonkey/tests/js1_7/regexp/yflag.js +111 -0
  3072. data/vendor/tracemonkey/tests/js1_7/regress/jstests.list +67 -0
  3073. data/vendor/tracemonkey/tests/js1_7/regress/regress-350387.js +70 -0
  3074. data/vendor/tracemonkey/tests/js1_7/regress/regress-351503-01.js +118 -0
  3075. data/vendor/tracemonkey/tests/js1_7/regress/regress-351503-02.js +123 -0
  3076. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-01.js +67 -0
  3077. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-02.js +67 -0
  3078. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-03.js +67 -0
  3079. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-04.js +67 -0
  3080. data/vendor/tracemonkey/tests/js1_7/regress/regress-352797-02.js +70 -0
  3081. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-01.js +70 -0
  3082. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-02.js +69 -0
  3083. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-03.js +71 -0
  3084. data/vendor/tracemonkey/tests/js1_7/regress/regress-353079.js +62 -0
  3085. data/vendor/tracemonkey/tests/js1_7/regress/regress-355023.js +64 -0
  3086. data/vendor/tracemonkey/tests/js1_7/regress/regress-355832-01.js +63 -0
  3087. data/vendor/tracemonkey/tests/js1_7/regress/regress-355832-02.js +63 -0
  3088. data/vendor/tracemonkey/tests/js1_7/regress/regress-361566.js +60 -0
  3089. data/vendor/tracemonkey/tests/js1_7/regress/regress-363040-01.js +128 -0
  3090. data/vendor/tracemonkey/tests/js1_7/regress/regress-363040-02.js +100 -0
  3091. data/vendor/tracemonkey/tests/js1_7/regress/regress-369666-01.js +92 -0
  3092. data/vendor/tracemonkey/tests/js1_7/regress/regress-369666-02.js +96 -0
  3093. data/vendor/tracemonkey/tests/js1_7/regress/regress-372331.js +88 -0
  3094. data/vendor/tracemonkey/tests/js1_7/regress/regress-373827-01.js +61 -0
  3095. data/vendor/tracemonkey/tests/js1_7/regress/regress-373827-02.js +67 -0
  3096. data/vendor/tracemonkey/tests/js1_7/regress/regress-373828.js +68 -0
  3097. data/vendor/tracemonkey/tests/js1_7/regress/regress-375695.js +60 -0
  3098. data/vendor/tracemonkey/tests/js1_7/regress/regress-379442.js +61 -0
  3099. data/vendor/tracemonkey/tests/js1_7/regress/regress-379483.js +61 -0
  3100. data/vendor/tracemonkey/tests/js1_7/regress/regress-385133-01.js +71 -0
  3101. data/vendor/tracemonkey/tests/js1_7/regress/regress-385133-02.js +69 -0
  3102. data/vendor/tracemonkey/tests/js1_7/regress/regress-385393-05.js +77 -0
  3103. data/vendor/tracemonkey/tests/js1_7/regress/regress-387951.js +61 -0
  3104. data/vendor/tracemonkey/tests/js1_7/regress/regress-406477.js +81 -0
  3105. data/vendor/tracemonkey/tests/js1_7/regress/regress-407727-01.js +50 -0
  3106. data/vendor/tracemonkey/tests/js1_7/regress/regress-407727-02.js +52 -0
  3107. data/vendor/tracemonkey/tests/js1_7/regress/regress-407957.js +63 -0
  3108. data/vendor/tracemonkey/tests/js1_7/regress/regress-410649.js +75 -0
  3109. data/vendor/tracemonkey/tests/js1_7/regress/regress-414553.js +55 -0
  3110. data/vendor/tracemonkey/tests/js1_7/regress/regress-416601.js +70 -0
  3111. data/vendor/tracemonkey/tests/js1_7/regress/regress-416705.js +73 -0
  3112. data/vendor/tracemonkey/tests/js1_7/regress/regress-418641.js +113 -0
  3113. data/vendor/tracemonkey/tests/js1_7/regress/regress-419803.js +64 -0
  3114. data/vendor/tracemonkey/tests/js1_7/regress/regress-420399.js +69 -0
  3115. data/vendor/tracemonkey/tests/js1_7/regress/regress-428706.js +61 -0
  3116. data/vendor/tracemonkey/tests/js1_7/regress/regress-428708.js +61 -0
  3117. data/vendor/tracemonkey/tests/js1_7/regress/regress-452703.js +54 -0
  3118. data/vendor/tracemonkey/tests/js1_7/regress/regress-452960.js +66 -0
  3119. data/vendor/tracemonkey/tests/js1_7/regress/regress-453049.js +64 -0
  3120. data/vendor/tracemonkey/tests/js1_7/regress/regress-453051.js +64 -0
  3121. data/vendor/tracemonkey/tests/js1_7/regress/regress-453411.js +65 -0
  3122. data/vendor/tracemonkey/tests/js1_7/regress/regress-461235.js +65 -0
  3123. data/vendor/tracemonkey/tests/js1_7/regress/regress-461945.js +65 -0
  3124. data/vendor/tracemonkey/tests/js1_7/regress/regress-462071.js +65 -0
  3125. data/vendor/tracemonkey/tests/js1_7/regress/regress-462282.js +65 -0
  3126. data/vendor/tracemonkey/tests/js1_7/regress/regress-462388.js +65 -0
  3127. data/vendor/tracemonkey/tests/js1_7/regress/regress-462407.js +54 -0
  3128. data/vendor/tracemonkey/tests/js1_7/regress/regress-464403.js +68 -0
  3129. data/vendor/tracemonkey/tests/js1_7/regress/regress-465236.js +63 -0
  3130. data/vendor/tracemonkey/tests/js1_7/regress/regress-465424.js +65 -0
  3131. data/vendor/tracemonkey/tests/js1_7/regress/regress-465484.js +63 -0
  3132. data/vendor/tracemonkey/tests/js1_7/regress/regress-469239-01.js +71 -0
  3133. data/vendor/tracemonkey/tests/js1_7/regress/regress-469239-02.js +71 -0
  3134. data/vendor/tracemonkey/tests/js1_7/regress/regress-470223.js +73 -0
  3135. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-01.js +61 -0
  3136. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-02.js +66 -0
  3137. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-03.js +65 -0
  3138. data/vendor/tracemonkey/tests/js1_7/regress/regress-474771.js +79 -0
  3139. data/vendor/tracemonkey/tests/js1_7/regress/shell.js +1 -0
  3140. data/vendor/tracemonkey/tests/js1_7/shell.js +47 -0
  3141. data/vendor/tracemonkey/tests/js1_7/template.js +59 -0
  3142. data/vendor/tracemonkey/tests/js1_8/README +1 -0
  3143. data/vendor/tracemonkey/tests/js1_8/browser.js +36 -0
  3144. data/vendor/tracemonkey/tests/js1_8/decompilation/jstests.list +12 -0
  3145. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-260106.js +64 -0
  3146. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-346749.js +62 -0
  3147. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381372.js +63 -0
  3148. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381504.js +78 -0
  3149. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381963-01.js +63 -0
  3150. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381963-02.js +65 -0
  3151. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-382981.js +67 -0
  3152. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-443074.js +63 -0
  3153. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-460504.js +63 -0
  3154. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-461233.js +64 -0
  3155. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-469625-01.js +66 -0
  3156. data/vendor/tracemonkey/tests/js1_8/decompilation/shell.js +1 -0
  3157. data/vendor/tracemonkey/tests/js1_8/extensions/dekker.js +98 -0
  3158. data/vendor/tracemonkey/tests/js1_8/extensions/for-in.js +85 -0
  3159. data/vendor/tracemonkey/tests/js1_8/extensions/jstests.list +41 -0
  3160. data/vendor/tracemonkey/tests/js1_8/extensions/lamport.js +126 -0
  3161. data/vendor/tracemonkey/tests/js1_8/extensions/peterson.js +89 -0
  3162. data/vendor/tracemonkey/tests/js1_8/extensions/regress-353116.js +112 -0
  3163. data/vendor/tracemonkey/tests/js1_8/extensions/regress-378789.js +67 -0
  3164. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-01.js +67 -0
  3165. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-10.js +67 -0
  3166. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-11.js +68 -0
  3167. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385729.js +88 -0
  3168. data/vendor/tracemonkey/tests/js1_8/extensions/regress-394709.js +84 -0
  3169. data/vendor/tracemonkey/tests/js1_8/extensions/regress-415721.js +74 -0
  3170. data/vendor/tracemonkey/tests/js1_8/extensions/regress-417131.js +108 -0
  3171. data/vendor/tracemonkey/tests/js1_8/extensions/regress-417817.js +87 -0
  3172. data/vendor/tracemonkey/tests/js1_8/extensions/regress-419091.js +79 -0
  3173. data/vendor/tracemonkey/tests/js1_8/extensions/regress-422269.js +83 -0
  3174. data/vendor/tracemonkey/tests/js1_8/extensions/regress-445818.js +73 -0
  3175. data/vendor/tracemonkey/tests/js1_8/extensions/regress-446169-01.js +82 -0
  3176. data/vendor/tracemonkey/tests/js1_8/extensions/regress-446169-02.js +80 -0
  3177. data/vendor/tracemonkey/tests/js1_8/extensions/regress-452476.js +62 -0
  3178. data/vendor/tracemonkey/tests/js1_8/extensions/regress-452913.js +51 -0
  3179. data/vendor/tracemonkey/tests/js1_8/extensions/regress-454744.js +71 -0
  3180. data/vendor/tracemonkey/tests/js1_8/extensions/regress-455973.js +62 -0
  3181. data/vendor/tracemonkey/tests/js1_8/extensions/regress-465337.js +65 -0
  3182. data/vendor/tracemonkey/tests/js1_8/extensions/regress-465453.js +77 -0
  3183. data/vendor/tracemonkey/tests/js1_8/extensions/regress-469625.js +75 -0
  3184. data/vendor/tracemonkey/tests/js1_8/extensions/regress-471197.js +79 -0
  3185. data/vendor/tracemonkey/tests/js1_8/extensions/regress-472450-03.js +67 -0
  3186. data/vendor/tracemonkey/tests/js1_8/extensions/regress-472450-04.js +69 -0
  3187. data/vendor/tracemonkey/tests/js1_8/extensions/regress-473040.js +56 -0
  3188. data/vendor/tracemonkey/tests/js1_8/extensions/regress-475971.js +90 -0
  3189. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476414-01.js +99 -0
  3190. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476414-02.js +100 -0
  3191. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476427.js +69 -0
  3192. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476869.js +79 -0
  3193. data/vendor/tracemonkey/tests/js1_8/extensions/regress-479252.js +73 -0
  3194. data/vendor/tracemonkey/tests/js1_8/extensions/regress-479381.js +81 -0
  3195. data/vendor/tracemonkey/tests/js1_8/extensions/regress-481989.js +54 -0
  3196. data/vendor/tracemonkey/tests/js1_8/extensions/regress-482263.js +57 -0
  3197. data/vendor/tracemonkey/tests/js1_8/extensions/shell.js +1 -0
  3198. data/vendor/tracemonkey/tests/js1_8/extensions/simple-tree.js +82 -0
  3199. data/vendor/tracemonkey/tests/js1_8/genexps/jstests.list +10 -0
  3200. data/vendor/tracemonkey/tests/js1_8/genexps/regress-347739.js +84 -0
  3201. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349012-01.js +87 -0
  3202. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349326.js +181 -0
  3203. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349331.js +126 -0
  3204. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-01.js +234 -0
  3205. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-02.js +63 -0
  3206. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-03.js +195 -0
  3207. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-04.js +329 -0
  3208. data/vendor/tracemonkey/tests/js1_8/genexps/regress-384991.js +92 -0
  3209. data/vendor/tracemonkey/tests/js1_8/genexps/shell.js +1 -0
  3210. data/vendor/tracemonkey/tests/js1_8/jstests.list +4 -0
  3211. data/vendor/tracemonkey/tests/js1_8/regress/jstests.list +85 -0
  3212. data/vendor/tracemonkey/tests/js1_8/regress/regress-366941.js +105 -0
  3213. data/vendor/tracemonkey/tests/js1_8/regress/regress-384412.js +231 -0
  3214. data/vendor/tracemonkey/tests/js1_8/regress/regress-384758.js +69 -0
  3215. data/vendor/tracemonkey/tests/js1_8/regress/regress-404734.js +64 -0
  3216. data/vendor/tracemonkey/tests/js1_8/regress/regress-427798.js +91 -0
  3217. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-01.js +61 -0
  3218. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-02.js +66 -0
  3219. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-03.js +66 -0
  3220. data/vendor/tracemonkey/tests/js1_8/regress/regress-442333-01.js +70 -0
  3221. data/vendor/tracemonkey/tests/js1_8/regress/regress-452491.js +64 -0
  3222. data/vendor/tracemonkey/tests/js1_8/regress/regress-453492.js +61 -0
  3223. data/vendor/tracemonkey/tests/js1_8/regress/regress-455981-01.js +69 -0
  3224. data/vendor/tracemonkey/tests/js1_8/regress/regress-455981-02.js +69 -0
  3225. data/vendor/tracemonkey/tests/js1_8/regress/regress-457065-01.js +67 -0
  3226. data/vendor/tracemonkey/tests/js1_8/regress/regress-457065-02.js +65 -0
  3227. data/vendor/tracemonkey/tests/js1_8/regress/regress-458076.js +65 -0
  3228. data/vendor/tracemonkey/tests/js1_8/regress/regress-459185.js +67 -0
  3229. data/vendor/tracemonkey/tests/js1_8/regress/regress-459186.js +67 -0
  3230. data/vendor/tracemonkey/tests/js1_8/regress/regress-459389.js +153 -0
  3231. data/vendor/tracemonkey/tests/js1_8/regress/regress-461930.js +66 -0
  3232. data/vendor/tracemonkey/tests/js1_8/regress/regress-461932.js +66 -0
  3233. data/vendor/tracemonkey/tests/js1_8/regress/regress-463334-01.js +66 -0
  3234. data/vendor/tracemonkey/tests/js1_8/regress/regress-463334-02.js +68 -0
  3235. data/vendor/tracemonkey/tests/js1_8/regress/regress-463783.js +68 -0
  3236. data/vendor/tracemonkey/tests/js1_8/regress/regress-464092-01.js +61 -0
  3237. data/vendor/tracemonkey/tests/js1_8/regress/regress-464092-02.js +68 -0
  3238. data/vendor/tracemonkey/tests/js1_8/regress/regress-464096.js +67 -0
  3239. data/vendor/tracemonkey/tests/js1_8/regress/regress-464418.js +80 -0
  3240. data/vendor/tracemonkey/tests/js1_8/regress/regress-464978.js +65 -0
  3241. data/vendor/tracemonkey/tests/js1_8/regress/regress-465220.js +78 -0
  3242. data/vendor/tracemonkey/tests/js1_8/regress/regress-465234.js +68 -0
  3243. data/vendor/tracemonkey/tests/js1_8/regress/regress-465239.js +68 -0
  3244. data/vendor/tracemonkey/tests/js1_8/regress/regress-465241.js +68 -0
  3245. data/vendor/tracemonkey/tests/js1_8/regress/regress-465249.js +65 -0
  3246. data/vendor/tracemonkey/tests/js1_8/regress/regress-465261.js +69 -0
  3247. data/vendor/tracemonkey/tests/js1_8/regress/regress-465308.js +66 -0
  3248. data/vendor/tracemonkey/tests/js1_8/regress/regress-465454.js +66 -0
  3249. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-01.js +67 -0
  3250. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-02.js +65 -0
  3251. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-03.js +65 -0
  3252. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-04.js +65 -0
  3253. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-05.js +65 -0
  3254. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-06.js +65 -0
  3255. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-07.js +74 -0
  3256. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-08.js +65 -0
  3257. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-09.js +65 -0
  3258. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-10.js +65 -0
  3259. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-11.js +65 -0
  3260. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-12.js +65 -0
  3261. data/vendor/tracemonkey/tests/js1_8/regress/regress-465483.js +65 -0
  3262. data/vendor/tracemonkey/tests/js1_8/regress/regress-465567-01.js +64 -0
  3263. data/vendor/tracemonkey/tests/js1_8/regress/regress-465567-02.js +60 -0
  3264. data/vendor/tracemonkey/tests/js1_8/regress/regress-465688.js +63 -0
  3265. data/vendor/tracemonkey/tests/js1_8/regress/regress-466128.js +66 -0
  3266. data/vendor/tracemonkey/tests/js1_8/regress/regress-466787.js +68 -0
  3267. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-01.js +61 -0
  3268. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-02.js +67 -0
  3269. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-03.js +80 -0
  3270. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-04.js +75 -0
  3271. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-05.js +64 -0
  3272. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-06.js +77 -0
  3273. data/vendor/tracemonkey/tests/js1_8/regress/regress-468711.js +65 -0
  3274. data/vendor/tracemonkey/tests/js1_8/regress/regress-469625-02.js +66 -0
  3275. data/vendor/tracemonkey/tests/js1_8/regress/regress-469625-03.js +73 -0
  3276. data/vendor/tracemonkey/tests/js1_8/regress/regress-471373.js +78 -0
  3277. data/vendor/tracemonkey/tests/js1_8/regress/regress-471660.js +72 -0
  3278. data/vendor/tracemonkey/tests/js1_8/regress/regress-472450-01.js +66 -0
  3279. data/vendor/tracemonkey/tests/js1_8/regress/regress-472450-02.js +66 -0
  3280. data/vendor/tracemonkey/tests/js1_8/regress/regress-472528-01.js +74 -0
  3281. data/vendor/tracemonkey/tests/js1_8/regress/regress-472528-02.js +74 -0
  3282. data/vendor/tracemonkey/tests/js1_8/regress/regress-472703.js +73 -0
  3283. data/vendor/tracemonkey/tests/js1_8/regress/regress-474769.js +70 -0
  3284. data/vendor/tracemonkey/tests/js1_8/regress/regress-474771.js +73 -0
  3285. data/vendor/tracemonkey/tests/js1_8/regress/regress-474935.js +75 -0
  3286. data/vendor/tracemonkey/tests/js1_8/regress/regress-476655.js +74 -0
  3287. data/vendor/tracemonkey/tests/js1_8/regress/regress-477234.js +79 -0
  3288. data/vendor/tracemonkey/tests/js1_8/regress/regress-477581.js +68 -0
  3289. data/vendor/tracemonkey/tests/js1_8/regress/regress-478205.js +65 -0
  3290. data/vendor/tracemonkey/tests/js1_8/regress/regress-479353.js +56 -0
  3291. data/vendor/tracemonkey/tests/js1_8/regress/regress-479740.js +71 -0
  3292. data/vendor/tracemonkey/tests/js1_8/regress/regress-481800.js +65 -0
  3293. data/vendor/tracemonkey/tests/js1_8/regress/regress-483749.js +60 -0
  3294. data/vendor/tracemonkey/tests/js1_8/regress/regress-499524.js +48 -0
  3295. data/vendor/tracemonkey/tests/js1_8/regress/regress-532491.js +71 -0
  3296. data/vendor/tracemonkey/tests/js1_8/regress/shell.js +1 -0
  3297. data/vendor/tracemonkey/tests/js1_8/shell.js +47 -0
  3298. data/vendor/tracemonkey/tests/js1_8/template.js +59 -0
  3299. data/vendor/tracemonkey/tests/js1_8_1/JSON/jstests.list +3 -0
  3300. data/vendor/tracemonkey/tests/js1_8_1/JSON/regress-458959.js +65 -0
  3301. data/vendor/tracemonkey/tests/js1_8_1/JSON/regress-459293.js +56 -0
  3302. data/vendor/tracemonkey/tests/js1_8_1/JSON/shell.js +1 -0
  3303. data/vendor/tracemonkey/tests/js1_8_1/README +1 -0
  3304. data/vendor/tracemonkey/tests/js1_8_1/String/jstests.list +2 -0
  3305. data/vendor/tracemonkey/tests/js1_8_1/String/regress-305064.js +177 -0
  3306. data/vendor/tracemonkey/tests/js1_8_1/String/shell.js +1 -0
  3307. data/vendor/tracemonkey/tests/js1_8_1/browser.js +36 -0
  3308. data/vendor/tracemonkey/tests/js1_8_1/decompilation/jstests.list +21 -0
  3309. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-346642-01.js +200 -0
  3310. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-349605.js +69 -0
  3311. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-349634.js +64 -0
  3312. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-350991.js +87 -0
  3313. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351070-01.js +102 -0
  3314. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351336.js +63 -0
  3315. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351626.js +64 -0
  3316. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352011.js +75 -0
  3317. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352022.js +69 -0
  3318. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352026.js +79 -0
  3319. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352609.js +90 -0
  3320. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-353249.js +67 -0
  3321. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-354878.js +62 -0
  3322. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-371802.js +63 -0
  3323. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-373678-01.js +62 -0
  3324. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-380237-03.js +195 -0
  3325. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-380237-04.js +334 -0
  3326. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-443074.js +63 -0
  3327. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-466905-03.js +87 -0
  3328. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-530537.js +41 -0
  3329. data/vendor/tracemonkey/tests/js1_8_1/decompilation/shell.js +1 -0
  3330. data/vendor/tracemonkey/tests/js1_8_1/extensions/jstests.list +13 -0
  3331. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-352281.js +67 -0
  3332. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-353214-02.js +63 -0
  3333. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-437288-01.js +69 -0
  3334. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-162.js +59 -0
  3335. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-193.js +66 -0
  3336. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-196.js +76 -0
  3337. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-224.js +63 -0
  3338. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-466905-04.js +82 -0
  3339. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-466905-05.js +77 -0
  3340. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-477158.js +66 -0
  3341. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-477187.js +73 -0
  3342. data/vendor/tracemonkey/tests/js1_8_1/extensions/shell.js +1 -0
  3343. data/vendor/tracemonkey/tests/js1_8_1/extensions/strict-warning.js +29 -0
  3344. data/vendor/tracemonkey/tests/js1_8_1/jstests.list +6 -0
  3345. data/vendor/tracemonkey/tests/js1_8_1/regress/jstests.list +82 -0
  3346. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-420399.js +69 -0
  3347. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-006.js +78 -0
  3348. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-027.js +71 -0
  3349. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-030.js +64 -0
  3350. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-038.js +63 -0
  3351. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-039.js +68 -0
  3352. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-040.js +70 -0
  3353. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-050.js +77 -0
  3354. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-051.js +79 -0
  3355. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-052-a.js +72 -0
  3356. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-052.js +82 -0
  3357. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-053.js +111 -0
  3358. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-054.js +73 -0
  3359. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-058.js +64 -0
  3360. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-062.js +77 -0
  3361. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-063.js +68 -0
  3362. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-068.js +129 -0
  3363. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-071.js +64 -0
  3364. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-072.js +64 -0
  3365. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-073.js +71 -0
  3366. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-074.js +67 -0
  3367. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-075.js +65 -0
  3368. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-076.js +64 -0
  3369. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-077.js +67 -0
  3370. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-079.js +65 -0
  3371. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-082.js +190 -0
  3372. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-091.js +65 -0
  3373. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-092.js +73 -0
  3374. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-098.js +73 -0
  3375. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-099-a.js +72 -0
  3376. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-099.js +87 -0
  3377. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-101.js +64 -0
  3378. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-102.js +120 -0
  3379. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-103.js +64 -0
  3380. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-104.js +64 -0
  3381. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-107.js +67 -0
  3382. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-108.js +66 -0
  3383. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-110.js +82 -0
  3384. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-111.js +68 -0
  3385. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-112.js +72 -0
  3386. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-114-a.js +76 -0
  3387. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-114.js +83 -0
  3388. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-116.js +66 -0
  3389. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-117.js +171 -0
  3390. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-118.js +66 -0
  3391. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-119.js +93 -0
  3392. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-121.js +66 -0
  3393. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-123.js +92 -0
  3394. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-129.js +83 -0
  3395. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-130.js +90 -0
  3396. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-131.js +82 -0
  3397. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-135-a.js +68 -0
  3398. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-135.js +120 -0
  3399. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-138.js +77 -0
  3400. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-139.js +74 -0
  3401. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-155.js +67 -0
  3402. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-160.js +72 -0
  3403. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-168-1.js +66 -0
  3404. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-168-2.js +64 -0
  3405. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-176.js +64 -0
  3406. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-178.js +64 -0
  3407. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-181.js +64 -0
  3408. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-184.js +64 -0
  3409. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-185.js +70 -0
  3410. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-187.js +70 -0
  3411. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-191.js +80 -0
  3412. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-192.js +62 -0
  3413. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-466905-01.js +63 -0
  3414. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-466905-02.js +62 -0
  3415. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-01.js +76 -0
  3416. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-02.js +78 -0
  3417. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-03.js +81 -0
  3418. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-04.js +77 -0
  3419. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-05.js +76 -0
  3420. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-495773.js +77 -0
  3421. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-495907.js +69 -0
  3422. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-496922.js +73 -0
  3423. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507053.js +81 -0
  3424. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507295.js +76 -0
  3425. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507424.js +68 -0
  3426. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-509354.js +41 -0
  3427. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-515885.js +6 -0
  3428. data/vendor/tracemonkey/tests/js1_8_1/regress/shell.js +1 -0
  3429. data/vendor/tracemonkey/tests/js1_8_1/shell.js +47 -0
  3430. data/vendor/tracemonkey/tests/js1_8_1/template.js +59 -0
  3431. data/vendor/tracemonkey/tests/js1_8_1/trace/jstests.list +23 -0
  3432. data/vendor/tracemonkey/tests/js1_8_1/trace/math-trace-tests.js +734 -0
  3433. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451673.js +116 -0
  3434. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451974-01.js +87 -0
  3435. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451974-02.js +98 -0
  3436. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-452498-01.js +106 -0
  3437. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-458838.js +96 -0
  3438. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-01.js +108 -0
  3439. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-02.js +108 -0
  3440. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-03.js +108 -0
  3441. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-04.js +108 -0
  3442. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-05.js +108 -0
  3443. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-06.js +108 -0
  3444. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-07.js +108 -0
  3445. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-08.js +108 -0
  3446. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-09.js +108 -0
  3447. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-10.js +108 -0
  3448. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-11.js +108 -0
  3449. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-12.js +108 -0
  3450. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-469927.js +79 -0
  3451. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-470739.js +81 -0
  3452. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-471635.js +89 -0
  3453. data/vendor/tracemonkey/tests/js1_8_1/trace/shell.js +1 -0
  3454. data/vendor/tracemonkey/{trace-test.js → tests/js1_8_1/trace/trace-test.js} +1261 -1454
  3455. data/vendor/tracemonkey/tests/jsDriver.pl +1537 -0
  3456. data/vendor/tracemonkey/tests/jsreftest.html +19 -0
  3457. data/vendor/tracemonkey/tests/jstests.list +15 -0
  3458. data/vendor/tracemonkey/tests/known-failures.pl +720 -0
  3459. data/vendor/tracemonkey/tests/menufoot.html +8 -0
  3460. data/vendor/tracemonkey/tests/menuhead.html +58 -0
  3461. data/vendor/tracemonkey/tests/menuhead.js +761 -0
  3462. data/vendor/tracemonkey/tests/mkhtml.pl +84 -0
  3463. data/vendor/tracemonkey/tests/mklistpage.pl +443 -0
  3464. data/vendor/tracemonkey/tests/most.tests +892 -0
  3465. data/vendor/tracemonkey/tests/pattern-expander.pl +181 -0
  3466. data/vendor/tracemonkey/tests/pattern-extracter.pl +227 -0
  3467. data/vendor/tracemonkey/tests/performance-1.8.0.tests +19 -0
  3468. data/vendor/tracemonkey/tests/performance-1.8.1.tests +19 -0
  3469. data/vendor/tracemonkey/tests/performance-1.9.0.tests +19 -0
  3470. data/vendor/tracemonkey/tests/performance-1.9.1.tests +19 -0
  3471. data/vendor/tracemonkey/tests/performance-1.9.2.tests +19 -0
  3472. data/vendor/tracemonkey/tests/performance.tests +18 -0
  3473. data/vendor/tracemonkey/tests/post-process-logs.pl +602 -0
  3474. data/vendor/tracemonkey/tests/process-logs.sh +203 -0
  3475. data/vendor/tracemonkey/tests/remove-fixed-failures.sh +82 -0
  3476. data/vendor/tracemonkey/tests/runRhinoTests.pl +447 -0
  3477. data/vendor/tracemonkey/tests/runtests.pl +495 -0
  3478. data/vendor/tracemonkey/tests/runtests.sh +262 -0
  3479. data/vendor/tracemonkey/tests/runtests2.pl +3 -0
  3480. data/vendor/tracemonkey/tests/shell.js +928 -0
  3481. data/vendor/tracemonkey/tests/slow-n-1.8.1-browser.tests +62 -0
  3482. data/vendor/tracemonkey/tests/slow-n-1.8.1.tests +35 -0
  3483. data/vendor/tracemonkey/tests/slow-n-1.9.0-browser.tests +51 -0
  3484. data/vendor/tracemonkey/tests/slow-n-1.9.0.tests +21 -0
  3485. data/vendor/tracemonkey/tests/slow-n-1.9.1-browser.tests +49 -0
  3486. data/vendor/tracemonkey/tests/slow-n-1.9.1.tests +25 -0
  3487. data/vendor/tracemonkey/tests/slow-n-1.9.2-browser.tests +50 -0
  3488. data/vendor/tracemonkey/tests/slow-n-1.9.2.tests +24 -0
  3489. data/vendor/tracemonkey/tests/slow-n.tests +30 -0
  3490. data/vendor/tracemonkey/tests/spidermonkey-gc.tests +28 -0
  3491. data/vendor/tracemonkey/tests/spidermonkey-n-1.8.0.tests +95 -0
  3492. data/vendor/tracemonkey/tests/spidermonkey-n-1.8.1.tests +95 -0
  3493. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.0.tests +99 -0
  3494. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.1.tests +152 -0
  3495. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.2.tests +152 -0
  3496. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.3.tests +152 -0
  3497. data/vendor/tracemonkey/tests/spidermonkey-n.tests +90 -0
  3498. data/vendor/tracemonkey/tests/template.js +73 -0
  3499. data/vendor/tracemonkey/tests/test.sh +531 -0
  3500. data/vendor/tracemonkey/tests/user.js +33 -0
  3501. data/vendor/tracemonkey/tests/userhookeach.js +198 -0
  3502. data/vendor/tracemonkey/trace-test/README +70 -0
  3503. data/vendor/tracemonkey/trace-test/lib/andTestHelper.js +9 -0
  3504. data/vendor/tracemonkey/{mandelbrot-results.js → trace-test/lib/mandelbrot-results.js} +0 -0
  3505. data/vendor/tracemonkey/trace-test/lib/orTestHelper.js +9 -0
  3506. data/vendor/tracemonkey/trace-test/lib/prolog.js +37 -0
  3507. data/vendor/tracemonkey/trace-test/lib/range.js +18 -0
  3508. data/vendor/tracemonkey/trace-test/progressbar.py +35 -0
  3509. data/vendor/tracemonkey/trace-test/tests/basic/FPQuadCmp.js +6 -0
  3510. data/vendor/tracemonkey/trace-test/tests/basic/argumentsPassedToBuiltin.js +14 -0
  3511. data/vendor/tracemonkey/trace-test/tests/basic/arith.js +11 -0
  3512. data/vendor/tracemonkey/trace-test/tests/basic/arityMismatchExtraArg.js +13 -0
  3513. data/vendor/tracemonkey/trace-test/tests/basic/arityMismatchMissingArg.js +8 -0
  3514. data/vendor/tracemonkey/trace-test/tests/basic/bitwiseAnd.js +10 -0
  3515. data/vendor/tracemonkey/trace-test/tests/basic/bitwiseGlobal.js +8 -0
  3516. data/vendor/tracemonkey/trace-test/tests/basic/bug464403.js +7 -0
  3517. data/vendor/tracemonkey/trace-test/tests/basic/bug465902.js +13 -0
  3518. data/vendor/tracemonkey/trace-test/tests/basic/bug504587-1.js +13 -0
  3519. data/vendor/tracemonkey/trace-test/tests/basic/bug507180.js +69 -0
  3520. data/vendor/tracemonkey/trace-test/tests/basic/bug509639.js +3 -0
  3521. data/vendor/tracemonkey/trace-test/tests/basic/bug509982.js +15 -0
  3522. data/vendor/tracemonkey/trace-test/tests/basic/bug510434.js +2 -0
  3523. data/vendor/tracemonkey/trace-test/tests/basic/bug510437-2.js +13 -0
  3524. data/vendor/tracemonkey/trace-test/tests/basic/bug510437.js +12 -0
  3525. data/vendor/tracemonkey/trace-test/tests/basic/bug510642.js +14 -0
  3526. data/vendor/tracemonkey/trace-test/tests/basic/bug510655.js +15 -0
  3527. data/vendor/tracemonkey/trace-test/tests/basic/bug511214.js +18 -0
  3528. data/vendor/tracemonkey/trace-test/tests/basic/bug511241.js +15 -0
  3529. data/vendor/tracemonkey/trace-test/tests/basic/bug513038.js +16 -0
  3530. data/vendor/tracemonkey/trace-test/tests/basic/bug516009.js +20 -0
  3531. data/vendor/tracemonkey/trace-test/tests/basic/bug517721.js +8 -0
  3532. data/vendor/tracemonkey/trace-test/tests/basic/bug525028.js +16 -0
  3533. data/vendor/tracemonkey/trace-test/tests/basic/bug531037.js +22 -0
  3534. data/vendor/tracemonkey/trace-test/tests/basic/bug531513.js +23 -0
  3535. data/vendor/tracemonkey/trace-test/tests/basic/bug532568-2.js +20 -0
  3536. data/vendor/tracemonkey/trace-test/tests/basic/bug532568.js +19 -0
  3537. data/vendor/tracemonkey/trace-test/tests/basic/bug532823.js +23 -0
  3538. data/vendor/tracemonkey/trace-test/tests/basic/bug535760.js +13 -0
  3539. data/vendor/tracemonkey/trace-test/tests/basic/bug539553-2.js +7 -0
  3540. data/vendor/tracemonkey/trace-test/tests/basic/bug539553-3.js +11 -0
  3541. data/vendor/tracemonkey/trace-test/tests/basic/bug539553.js +11 -0
  3542. data/vendor/tracemonkey/trace-test/tests/basic/call.js +28 -0
  3543. data/vendor/tracemonkey/{call.js → trace-test/tests/basic/call2.js} +1 -1
  3544. data/vendor/tracemonkey/trace-test/tests/basic/createMandelSet.js +242 -0
  3545. data/vendor/tracemonkey/trace-test/tests/basic/deep2.js +11 -0
  3546. data/vendor/tracemonkey/trace-test/tests/basic/deepForInLoop.js +12 -0
  3547. data/vendor/tracemonkey/trace-test/tests/basic/dependentStrings.js +11 -0
  3548. data/vendor/tracemonkey/trace-test/tests/basic/doMath.js +60 -0
  3549. data/vendor/tracemonkey/trace-test/tests/basic/equalInt.js +29 -0
  3550. data/vendor/tracemonkey/trace-test/tests/basic/fannkuch.js +17 -0
  3551. data/vendor/tracemonkey/trace-test/tests/basic/forVarInWith.js +12 -0
  3552. data/vendor/tracemonkey/trace-test/tests/basic/getelem.js +30 -0
  3553. data/vendor/tracemonkey/trace-test/tests/basic/getprop.js +16 -0
  3554. data/vendor/tracemonkey/trace-test/tests/basic/globalGet.js +6 -0
  3555. data/vendor/tracemonkey/trace-test/tests/basic/globalSet.js +4 -0
  3556. data/vendor/tracemonkey/trace-test/tests/basic/ifInsideLoop.js +12 -0
  3557. data/vendor/tracemonkey/trace-test/tests/basic/inArrayTest.js +9 -0
  3558. data/vendor/tracemonkey/trace-test/tests/basic/inObjectTest.js +13 -0
  3559. data/vendor/tracemonkey/trace-test/tests/basic/innerLoopIntOuterDouble.js +11 -0
  3560. data/vendor/tracemonkey/trace-test/tests/basic/inner_double_outer_int.js +10 -0
  3561. data/vendor/tracemonkey/trace-test/tests/basic/jitstatsArchFlags.js +14 -0
  3562. data/vendor/tracemonkey/trace-test/tests/basic/joinTest.js +15 -0
  3563. data/vendor/tracemonkey/trace-test/tests/basic/matchInLoop.js +8 -0
  3564. data/vendor/tracemonkey/{math-trace-tests.js → trace-test/tests/basic/math-trace-tests.js} +25 -12
  3565. data/vendor/tracemonkey/trace-test/tests/basic/merge_type_maps.js +9 -0
  3566. data/vendor/tracemonkey/trace-test/tests/basic/missingArgTest.js +12 -0
  3567. data/vendor/tracemonkey/trace-test/tests/basic/missingArgTest2.js +26 -0
  3568. data/vendor/tracemonkey/trace-test/tests/basic/mod.js +14 -0
  3569. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-del.js +28 -0
  3570. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-eval-del.js +10 -0
  3571. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-inferflags.js +18 -0
  3572. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive.js +20 -0
  3573. data/vendor/tracemonkey/trace-test/tests/basic/name.js +9 -0
  3574. data/vendor/tracemonkey/trace-test/tests/basic/nestedExit2.js +17 -0
  3575. data/vendor/tracemonkey/trace-test/tests/basic/nestedExitLoop.js +14 -0
  3576. data/vendor/tracemonkey/trace-test/tests/basic/newArrayTest.js +8 -0
  3577. data/vendor/tracemonkey/trace-test/tests/basic/newTest.js +14 -0
  3578. data/vendor/tracemonkey/trace-test/tests/basic/nonEmptyStack1.js +13 -0
  3579. data/vendor/tracemonkey/trace-test/tests/basic/nonEmptyStack2.js +10 -0
  3580. data/vendor/tracemonkey/trace-test/tests/basic/orNaNTest1.js +3 -0
  3581. data/vendor/tracemonkey/trace-test/tests/basic/orNaNTest2.js +3 -0
  3582. data/vendor/tracemonkey/trace-test/tests/basic/outerline.js +15 -0
  3583. data/vendor/tracemonkey/trace-test/tests/basic/parseIntTests.js +21 -0
  3584. data/vendor/tracemonkey/trace-test/tests/basic/parsingNumbers.js +23 -0
  3585. data/vendor/tracemonkey/trace-test/tests/basic/putargsNoReturn.js +6 -0
  3586. data/vendor/tracemonkey/trace-test/tests/basic/putargsReturn.js +7 -0
  3587. data/vendor/tracemonkey/trace-test/tests/basic/regexpLastIndex.js +13 -0
  3588. data/vendor/tracemonkey/trace-test/tests/basic/setArgumentsLength.js +14 -0
  3589. data/vendor/tracemonkey/trace-test/tests/basic/setArgumentsLength2.js +12 -0
  3590. data/vendor/tracemonkey/trace-test/tests/basic/setCall.js +26 -0
  3591. data/vendor/tracemonkey/trace-test/tests/basic/setCallEvalMiddle.js +17 -0
  3592. data/vendor/tracemonkey/trace-test/tests/basic/setCallEvalMiddle2.js +18 -0
  3593. data/vendor/tracemonkey/trace-test/tests/basic/setCallGlobal.js +14 -0
  3594. data/vendor/tracemonkey/trace-test/tests/basic/setelem.js +12 -0
  3595. data/vendor/tracemonkey/trace-test/tests/basic/setprop.js +10 -0
  3596. data/vendor/tracemonkey/trace-test/tests/basic/shapelessCalleeTest.js +67 -0
  3597. data/vendor/tracemonkey/trace-test/tests/basic/stringConvert.js +18 -0
  3598. data/vendor/tracemonkey/trace-test/tests/basic/stringSplitIntoArrayTest.js +9 -0
  3599. data/vendor/tracemonkey/trace-test/tests/basic/stringSplitTest.js +9 -0
  3600. data/vendor/tracemonkey/trace-test/tests/basic/strings.js +21 -0
  3601. data/vendor/tracemonkey/trace-test/tests/basic/testAbortedImacroDecompilation.js +7 -0
  3602. data/vendor/tracemonkey/trace-test/tests/basic/testAddAnyInconvertibleObject.js +33 -0
  3603. data/vendor/tracemonkey/trace-test/tests/basic/testAddInconvertibleObjectAny.js +39 -0
  3604. data/vendor/tracemonkey/trace-test/tests/basic/testAddInconvertibleObjectInconvertibleObject.js +38 -0
  3605. data/vendor/tracemonkey/trace-test/tests/basic/testAddNull.js +13 -0
  3606. data/vendor/tracemonkey/trace-test/tests/basic/testAddUndefined.js +5 -0
  3607. data/vendor/tracemonkey/trace-test/tests/basic/testApply.js +7 -0
  3608. data/vendor/tracemonkey/trace-test/tests/basic/testApplyCall.js +42 -0
  3609. data/vendor/tracemonkey/trace-test/tests/basic/testApplyUnbox.js +11 -0
  3610. data/vendor/tracemonkey/trace-test/tests/basic/testArrayComp1.js +6 -0
  3611. data/vendor/tracemonkey/trace-test/tests/basic/testArrayComp2.js +7 -0
  3612. data/vendor/tracemonkey/trace-test/tests/basic/testArrayDensityChange.js +17 -0
  3613. data/vendor/tracemonkey/trace-test/tests/basic/testArrayNaNIndex.js +7 -0
  3614. data/vendor/tracemonkey/trace-test/tests/basic/testArrayNamedProp.js +5 -0
  3615. data/vendor/tracemonkey/trace-test/tests/basic/testArrayPushPop.js +11 -0
  3616. data/vendor/tracemonkey/trace-test/tests/basic/testAtomize.js +10 -0
  3617. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrAnyInconvertibleObject.js +33 -0
  3618. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrInconvertibleObjectAny.js +33 -0
  3619. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrInconvertibleObjectInconvertibleObject.js +38 -0
  3620. data/vendor/tracemonkey/trace-test/tests/basic/testBitwise.js +12 -0
  3621. data/vendor/tracemonkey/trace-test/tests/basic/testBoxDoubleWithDoubleSizedInt.js +10 -0
  3622. data/vendor/tracemonkey/trace-test/tests/basic/testBranchCse.js +7 -0
  3623. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingLoop.js +11 -0
  3624. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableLoop.js +11 -0
  3625. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableLoopCounter.js +11 -0
  3626. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableObject.js +13 -0
  3627. data/vendor/tracemonkey/trace-test/tests/basic/testBreak.js +6 -0
  3628. data/vendor/tracemonkey/trace-test/tests/basic/testBug458838.js +18 -0
  3629. data/vendor/tracemonkey/trace-test/tests/basic/testBug462388.js +6 -0
  3630. data/vendor/tracemonkey/trace-test/tests/basic/testBug462407.js +6 -0
  3631. data/vendor/tracemonkey/trace-test/tests/basic/testBug463490.js +18 -0
  3632. data/vendor/tracemonkey/trace-test/tests/basic/testBug465261.js +7 -0
  3633. data/vendor/tracemonkey/trace-test/tests/basic/testBug465272.js +6 -0
  3634. data/vendor/tracemonkey/trace-test/tests/basic/testBug465483.js +7 -0
  3635. data/vendor/tracemonkey/trace-test/tests/basic/testBug465688.js +6 -0
  3636. data/vendor/tracemonkey/trace-test/tests/basic/testBug466128.js +9 -0
  3637. data/vendor/tracemonkey/trace-test/tests/basic/testBug466262.js +11 -0
  3638. data/vendor/tracemonkey/trace-test/tests/basic/testBug474769.js +10 -0
  3639. data/vendor/tracemonkey/trace-test/tests/basic/testBug501690.js +14 -0
  3640. data/vendor/tracemonkey/trace-test/tests/basic/testBug502914.js +19 -0
  3641. data/vendor/tracemonkey/trace-test/tests/basic/testBug504520.js +11 -0
  3642. data/vendor/tracemonkey/trace-test/tests/basic/testBug504520Harder.js +32 -0
  3643. data/vendor/tracemonkey/trace-test/tests/basic/testBug507425.js +14 -0
  3644. data/vendor/tracemonkey/trace-test/tests/basic/testBug532363.js +2 -0
  3645. data/vendor/tracemonkey/trace-test/tests/basic/testCallElem.js +17 -0
  3646. data/vendor/tracemonkey/trace-test/tests/basic/testCallPick.js +18 -0
  3647. data/vendor/tracemonkey/trace-test/tests/basic/testCallProtoMethod.js +14 -0
  3648. data/vendor/tracemonkey/trace-test/tests/basic/testCaseAbort.js +19 -0
  3649. data/vendor/tracemonkey/trace-test/tests/basic/testCaseTypeMismatchBadness.js +22 -0
  3650. data/vendor/tracemonkey/trace-test/tests/basic/testChangingObjectWithLength.js +37 -0
  3651. data/vendor/tracemonkey/trace-test/tests/basic/testClosingRecursion.js +13 -0
  3652. data/vendor/tracemonkey/trace-test/tests/basic/testClosureIncrSideExit.js +17 -0
  3653. data/vendor/tracemonkey/trace-test/tests/basic/testClosures.js +18 -0
  3654. data/vendor/tracemonkey/trace-test/tests/basic/testComparisons.js +988 -0
  3655. data/vendor/tracemonkey/trace-test/tests/basic/testConstIf.js +6 -0
  3656. data/vendor/tracemonkey/trace-test/tests/basic/testConstSwitch.js +13 -0
  3657. data/vendor/tracemonkey/trace-test/tests/basic/testConstSwitch2.js +6 -0
  3658. data/vendor/tracemonkey/trace-test/tests/basic/testConstantBooleanExpr.js +6 -0
  3659. data/vendor/tracemonkey/trace-test/tests/basic/testConstructorBail.js +4 -0
  3660. data/vendor/tracemonkey/trace-test/tests/basic/testContinue.js +11 -0
  3661. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel.js +16 -0
  3662. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel2.js +7 -0
  3663. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel3.js +6 -0
  3664. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel4.js +25 -0
  3665. data/vendor/tracemonkey/trace-test/tests/basic/testConvertibleObjectEqUndefined.js +33 -0
  3666. data/vendor/tracemonkey/trace-test/tests/basic/testCustomIterator.js +26 -0
  3667. data/vendor/tracemonkey/trace-test/tests/basic/testDateNow.js +15 -0
  3668. data/vendor/tracemonkey/trace-test/tests/basic/testDecayingInnerLoop.js +9 -0
  3669. data/vendor/tracemonkey/trace-test/tests/basic/testDeepBail1.js +6 -0
  3670. data/vendor/tracemonkey/trace-test/tests/basic/testDeepBailFromHasInstance.js +12 -0
  3671. data/vendor/tracemonkey/trace-test/tests/basic/testDeepPropertyShadowing.js +17 -0
  3672. data/vendor/tracemonkey/trace-test/tests/basic/testDenseArrayProp.js +12 -0
  3673. data/vendor/tracemonkey/trace-test/tests/basic/testDestructuring.js +9 -0
  3674. data/vendor/tracemonkey/trace-test/tests/basic/testDifferingArgc.js +18 -0
  3675. data/vendor/tracemonkey/trace-test/tests/basic/testDivOverflow.js +6 -0
  3676. data/vendor/tracemonkey/trace-test/tests/basic/testDivision.js +10 -0
  3677. data/vendor/tracemonkey/trace-test/tests/basic/testDivisionFloat.js +10 -0
  3678. data/vendor/tracemonkey/trace-test/tests/basic/testDivisionWithNegative1.js +6 -0
  3679. data/vendor/tracemonkey/trace-test/tests/basic/testDoubleComparison.js +16 -0
  3680. data/vendor/tracemonkey/trace-test/tests/basic/testDoubleToStr.js +9 -0
  3681. data/vendor/tracemonkey/trace-test/tests/basic/testEliminatedGuardWithinAnchor.js +12 -0
  3682. data/vendor/tracemonkey/trace-test/tests/basic/testEqFalseEmptyString.js +6 -0
  3683. data/vendor/tracemonkey/trace-test/tests/basic/testFewerGlobalsInInnerTree.js +14 -0
  3684. data/vendor/tracemonkey/trace-test/tests/basic/testFloatArrayIndex.js +9 -0
  3685. data/vendor/tracemonkey/trace-test/tests/basic/testForEach.js +11 -0
  3686. data/vendor/tracemonkey/trace-test/tests/basic/testForInLoopChangeIteratorType.js +11 -0
  3687. data/vendor/tracemonkey/trace-test/tests/basic/testFunctionIdentityChange.js +21 -0
  3688. data/vendor/tracemonkey/trace-test/tests/basic/testGCWhileRecording.js +12 -0
  3689. data/vendor/tracemonkey/trace-test/tests/basic/testGeneratorDeepBail.js +11 -0
  3690. data/vendor/tracemonkey/trace-test/tests/basic/testGetCallObj.js +11 -0
  3691. data/vendor/tracemonkey/trace-test/tests/basic/testGetThis.js +7 -0
  3692. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalMultitrees1.js +11 -0
  3693. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalProtoAccess.js +5 -0
  3694. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalShapeChangeAfterDeepBail.js +15 -0
  3695. data/vendor/tracemonkey/trace-test/tests/basic/testGrowDenseArray.js +7 -0
  3696. data/vendor/tracemonkey/trace-test/tests/basic/testHOTLOOPCorrectness.js +14 -0
  3697. data/vendor/tracemonkey/trace-test/tests/basic/testHOTLOOPSize.js +4 -0
  3698. data/vendor/tracemonkey/trace-test/tests/basic/testHeavy.js +14 -0
  3699. data/vendor/tracemonkey/trace-test/tests/basic/testHeavy2.js +20 -0
  3700. data/vendor/tracemonkey/trace-test/tests/basic/testHolePushing.js +13 -0
  3701. data/vendor/tracemonkey/trace-test/tests/basic/testINITELEM.js +8 -0
  3702. data/vendor/tracemonkey/trace-test/tests/basic/testIn.js +19 -0
  3703. data/vendor/tracemonkey/trace-test/tests/basic/testIncDec.js +19 -0
  3704. data/vendor/tracemonkey/trace-test/tests/basic/testInitelemWithFloatIndex.js +3 -0
  3705. data/vendor/tracemonkey/trace-test/tests/basic/testInitelemWithSetter.js +3 -0
  3706. data/vendor/tracemonkey/trace-test/tests/basic/testInnerMissingArgs.js +21 -0
  3707. data/vendor/tracemonkey/trace-test/tests/basic/testInnerSwitchBreak.js +24 -0
  3708. data/vendor/tracemonkey/trace-test/tests/basic/testInt32ToId.js +39 -0
  3709. data/vendor/tracemonkey/trace-test/tests/basic/testIntFloor.js +8 -0
  3710. data/vendor/tracemonkey/trace-test/tests/basic/testIntOverflow.js +15 -0
  3711. data/vendor/tracemonkey/trace-test/tests/basic/testIntUnderflow.js +15 -0
  3712. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentery8.js +6 -0
  3713. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry.js +6 -0
  3714. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry2.js +11 -0
  3715. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry3.js +7 -0
  3716. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry4.js +6 -0
  3717. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry5.js +9 -0
  3718. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry6.js +7 -0
  3719. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry7.js +11 -0
  3720. data/vendor/tracemonkey/trace-test/tests/basic/testInvalidCharCodeAt.js +12 -0
  3721. data/vendor/tracemonkey/trace-test/tests/basic/testInvertNullAfterNegateNull.js +7 -0
  3722. data/vendor/tracemonkey/trace-test/tests/basic/testLambdaCtor.js +14 -0
  3723. data/vendor/tracemonkey/trace-test/tests/basic/testLambdaInitedVar.js +8 -0
  3724. data/vendor/tracemonkey/trace-test/tests/basic/testLengthInString.js +12 -0
  3725. data/vendor/tracemonkey/trace-test/tests/basic/testLengthOnNonNativeProto.js +20 -0
  3726. data/vendor/tracemonkey/trace-test/tests/basic/testLetWithUnstableGlobal.js +11 -0
  3727. data/vendor/tracemonkey/trace-test/tests/basic/testLirBufOOM.js +34 -0
  3728. data/vendor/tracemonkey/trace-test/tests/basic/testLogicalNotNaN.js +8 -0
  3729. data/vendor/tracemonkey/trace-test/tests/basic/testLongNumToString.js +7 -0
  3730. data/vendor/tracemonkey/trace-test/tests/basic/testLoopWithUndefined1.js +12 -0
  3731. data/vendor/tracemonkey/trace-test/tests/basic/testLoopWithUndefined2.js +20 -0
  3732. data/vendor/tracemonkey/trace-test/tests/basic/testLoopingAccumulator.js +21 -0
  3733. data/vendor/tracemonkey/trace-test/tests/basic/testMatchAsCondition.js +8 -0
  3734. data/vendor/tracemonkey/trace-test/tests/basic/testMatchStringObject.js +8 -0
  3735. data/vendor/tracemonkey/trace-test/tests/basic/testMethodInit.js +15 -0
  3736. data/vendor/tracemonkey/trace-test/tests/basic/testMethodInitSafety.js +14 -0
  3737. data/vendor/tracemonkey/trace-test/tests/basic/testMethodSet.js +18 -0
  3738. data/vendor/tracemonkey/trace-test/tests/basic/testModuloWithNegative1.js +11 -0
  3739. data/vendor/tracemonkey/trace-test/tests/basic/testModuloWithNegative2.js +7 -0
  3740. data/vendor/tracemonkey/trace-test/tests/basic/testMoreArgcThanNargs.js +14 -0
  3741. data/vendor/tracemonkey/trace-test/tests/basic/testMoreClosures.js +14 -0
  3742. data/vendor/tracemonkey/trace-test/tests/basic/testMulOverflow.js +6 -0
  3743. data/vendor/tracemonkey/trace-test/tests/basic/testMultipleArgumentsObjects.js +12 -0
  3744. data/vendor/tracemonkey/trace-test/tests/basic/testNEWINIT.js +8 -0
  3745. data/vendor/tracemonkey/trace-test/tests/basic/testNEWINIT_DOUBLE.js +6 -0
  3746. data/vendor/tracemonkey/trace-test/tests/basic/testNativeArgsRooting.js +14 -0
  3747. data/vendor/tracemonkey/trace-test/tests/basic/testNativeLog.js +8 -0
  3748. data/vendor/tracemonkey/trace-test/tests/basic/testNativeMax.js +20 -0
  3749. data/vendor/tracemonkey/trace-test/tests/basic/testNativeSetter.js +14 -0
  3750. data/vendor/tracemonkey/trace-test/tests/basic/testNegZero1.js +9 -0
  3751. data/vendor/tracemonkey/trace-test/tests/basic/testNegativeArrayLength.js +10 -0
  3752. data/vendor/tracemonkey/trace-test/tests/basic/testNegativeGETELEMIndex.js +6 -0
  3753. data/vendor/tracemonkey/trace-test/tests/basic/testNestedClosures.js +23 -0
  3754. data/vendor/tracemonkey/trace-test/tests/basic/testNestedDeepBail.js +19 -0
  3755. data/vendor/tracemonkey/trace-test/tests/basic/testNestedEscapingLambdas.js +31 -0
  3756. data/vendor/tracemonkey/trace-test/tests/basic/testNestedExitStackOuter.js +29 -0
  3757. data/vendor/tracemonkey/trace-test/tests/basic/testNestedForIn.js +9 -0
  3758. data/vendor/tracemonkey/trace-test/tests/basic/testNewArrayCount.js +11 -0
  3759. data/vendor/tracemonkey/trace-test/tests/basic/testNewArrayCount2.js +7 -0
  3760. data/vendor/tracemonkey/trace-test/tests/basic/testNewDate.js +17 -0
  3761. data/vendor/tracemonkey/trace-test/tests/basic/testNewString.js +27 -0
  3762. data/vendor/tracemonkey/trace-test/tests/basic/testNewWithNonNativeProto.js +14 -0
  3763. data/vendor/tracemonkey/trace-test/tests/basic/testNonStubGetter.js +7 -0
  3764. data/vendor/tracemonkey/trace-test/tests/basic/testNot.js +8 -0
  3765. data/vendor/tracemonkey/trace-test/tests/basic/testNullCallee.js +16 -0
  3766. data/vendor/tracemonkey/trace-test/tests/basic/testNullRelCmp.js +6 -0
  3767. data/vendor/tracemonkey/trace-test/tests/basic/testNullToString.js +18 -0
  3768. data/vendor/tracemonkey/trace-test/tests/basic/testNumToString.js +18 -0
  3769. data/vendor/tracemonkey/trace-test/tests/basic/testNumberToString.js +6 -0
  3770. data/vendor/tracemonkey/trace-test/tests/basic/testObjectLength.js +15 -0
  3771. data/vendor/tracemonkey/trace-test/tests/basic/testObjectOrderedCmp.js +7 -0
  3772. data/vendor/tracemonkey/trace-test/tests/basic/testObjectOrderedCmp2.js +7 -0
  3773. data/vendor/tracemonkey/trace-test/tests/basic/testObjectToNumber.js +8 -0
  3774. data/vendor/tracemonkey/trace-test/tests/basic/testObjectToString.js +8 -0
  3775. data/vendor/tracemonkey/trace-test/tests/basic/testObjectVsPrototype.js +12 -0
  3776. data/vendor/tracemonkey/trace-test/tests/basic/testOwnPropertyWithInOperator.js +12 -0
  3777. data/vendor/tracemonkey/trace-test/tests/basic/testPrimitiveConstructorPrototype.js +7 -0
  3778. data/vendor/tracemonkey/trace-test/tests/basic/testPropagatedFunArgs.js +34 -0
  3779. data/vendor/tracemonkey/trace-test/tests/basic/testRUNLOOPCorrectness.js +15 -0
  3780. data/vendor/tracemonkey/trace-test/tests/basic/testReallyDeepNestedExit.js +38 -0
  3781. data/vendor/tracemonkey/trace-test/tests/basic/testRebranding.js +10 -0
  3782. data/vendor/tracemonkey/trace-test/tests/basic/testRebranding2.js +21 -0
  3783. data/vendor/tracemonkey/trace-test/tests/basic/testRegExpTest.js +10 -0
  3784. data/vendor/tracemonkey/trace-test/tests/basic/testRegexpGet.js +8 -0
  3785. data/vendor/tracemonkey/trace-test/tests/basic/testReplace2.js +7 -0
  3786. data/vendor/tracemonkey/trace-test/tests/basic/testResumeOp.js +8 -0
  3787. data/vendor/tracemonkey/trace-test/tests/basic/testReverseArgTypes.js +5 -0
  3788. data/vendor/tracemonkey/trace-test/tests/basic/testSetPropNeitherMissNorHit.js +5 -0
  3789. data/vendor/tracemonkey/trace-test/tests/basic/testSetPropertyFail.js +22 -0
  3790. data/vendor/tracemonkey/trace-test/tests/basic/testSetProtoRegeneratesObjectShape.js +24 -0
  3791. data/vendor/tracemonkey/trace-test/tests/basic/testSetelemWithFloatIndex.js +4 -0
  3792. data/vendor/tracemonkey/trace-test/tests/basic/testShiftLeft.js +38 -0
  3793. data/vendor/tracemonkey/trace-test/tests/basic/testShiftRightArithmetic.js +35 -0
  3794. data/vendor/tracemonkey/trace-test/tests/basic/testShiftRightLogical.js +38 -0
  3795. data/vendor/tracemonkey/trace-test/tests/basic/testSideExitInConstructor.js +39 -0
  3796. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayLength.js +15 -0
  3797. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPop.js +12 -0
  3798. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPopMultiFrame.js +24 -0
  3799. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPopNestedTrees.js +36 -0
  3800. data/vendor/tracemonkey/trace-test/tests/basic/testSlowNativeBail.js +10 -0
  3801. data/vendor/tracemonkey/trace-test/tests/basic/testSlowNativeCtor.js +7 -0
  3802. data/vendor/tracemonkey/trace-test/tests/basic/testStrict.js +11 -0
  3803. data/vendor/tracemonkey/trace-test/tests/basic/testString.js +18 -0
  3804. data/vendor/tracemonkey/trace-test/tests/basic/testStringConstructorWithExtraArg.js +6 -0
  3805. data/vendor/tracemonkey/trace-test/tests/basic/testStringLengthNoTinyId.js +64 -0
  3806. data/vendor/tracemonkey/trace-test/tests/basic/testStringObjectLength.js +7 -0
  3807. data/vendor/tracemonkey/trace-test/tests/basic/testStringResolve.js +9 -0
  3808. data/vendor/tracemonkey/trace-test/tests/basic/testStringToInt32.js +6 -0
  3809. data/vendor/tracemonkey/trace-test/tests/basic/testStringify.js +20 -0
  3810. data/vendor/tracemonkey/trace-test/tests/basic/testSubstring.js +7 -0
  3811. data/vendor/tracemonkey/trace-test/tests/basic/testSwitch.js +25 -0
  3812. data/vendor/tracemonkey/trace-test/tests/basic/testSwitchString.js +28 -0
  3813. data/vendor/tracemonkey/trace-test/tests/basic/testSwitchUndefined.js +15 -0
  3814. data/vendor/tracemonkey/trace-test/tests/basic/testTableSwitch1.js +22 -0
  3815. data/vendor/tracemonkey/trace-test/tests/basic/testTableSwitch2.js +27 -0
  3816. data/vendor/tracemonkey/trace-test/tests/basic/testThinForEach.js +10 -0
  3817. data/vendor/tracemonkey/trace-test/tests/basic/testThinLoopDemote.js +20 -0
  3818. data/vendor/tracemonkey/trace-test/tests/basic/testThrowingObjectEqUndefined.js +18 -0
  3819. data/vendor/tracemonkey/trace-test/tests/basic/testToStringBeforeValueOf.js +13 -0
  3820. data/vendor/tracemonkey/trace-test/tests/basic/testToUpperToLower.js +9 -0
  3821. data/vendor/tracemonkey/trace-test/tests/basic/testTrueShiftTrue.js +16 -0
  3822. data/vendor/tracemonkey/trace-test/tests/basic/testTypeUnstableForIn.js +10 -0
  3823. data/vendor/tracemonkey/trace-test/tests/basic/testTypeofHole.js +8 -0
  3824. data/vendor/tracemonkey/trace-test/tests/basic/testUnaryImacros.js +26 -0
  3825. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedBooleanCmp.js +24 -0
  3826. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedCmp.js +6 -0
  3827. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedPropertyAccess.js +15 -0
  3828. data/vendor/tracemonkey/trace-test/tests/basic/testUndemotableBinaryOp.js +6 -0
  3829. data/vendor/tracemonkey/trace-test/tests/basic/testUndemoteLateGlobalSlots.js +11 -0
  3830. data/vendor/tracemonkey/trace-test/tests/basic/testWeirdDateParse.js +46 -0
  3831. data/vendor/tracemonkey/trace-test/tests/basic/testWhileObjectOrNull.js +18 -0
  3832. data/vendor/tracemonkey/trace-test/tests/basic/test_JSOP_ARGCNT.js +27 -0
  3833. data/vendor/tracemonkey/trace-test/tests/basic/test_JSOP_ARGSUB.js +27 -0
  3834. data/vendor/tracemonkey/trace-test/tests/basic/testif.js +11 -0
  3835. data/vendor/tracemonkey/trace-test/tests/basic/testincops.js +24 -0
  3836. data/vendor/tracemonkey/trace-test/tests/basic/trees.js +10 -0
  3837. data/vendor/tracemonkey/trace-test/tests/basic/truthies.js +29 -0
  3838. data/vendor/tracemonkey/trace-test/tests/basic/typeofTest.js +8 -0
  3839. data/vendor/tracemonkey/trace-test/tests/basic/unboxint.js +8 -0
  3840. data/vendor/tracemonkey/trace-test/tests/basic/xprop.js +8 -0
  3841. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-3d-morph.js +5 -1
  3842. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-3d-raytrace.js +1 -3
  3843. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-binary-trees.js +1 -1
  3844. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-fannkuch.js +1 -1
  3845. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-nbody.js +1 -1
  3846. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-nsieve.js +1 -1
  3847. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-3bit-bits-in-byte.js +1 -1
  3848. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-bits-in-byte.js +1 -1
  3849. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-bitwise-and.js +1 -1
  3850. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-nsieve-bits.js +1 -1
  3851. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-controlflow-recursive.js +1 -1
  3852. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-date-format-tofte.js +1 -1
  3853. data/vendor/tracemonkey/trace-test/tests/sunspider/check-date-format-xparb.js +422 -0
  3854. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-mont.js +1 -1
  3855. data/vendor/tracemonkey/trace-test/trace-test.py +330 -0
  3856. data/vendor/tracemonkey/tracevis/README +50 -0
  3857. data/vendor/tracemonkey/tracevis/acts.py +64 -0
  3858. data/vendor/tracemonkey/tracevis/binlog.py +140 -0
  3859. data/vendor/tracemonkey/tracevis/config.py +5 -0
  3860. data/vendor/tracemonkey/tracevis/tree.py +282 -0
  3861. data/vendor/tracemonkey/tracevis/vis.py +233 -0
  3862. data/vendor/tracemonkey/{config/revdepth-nt.pl → vprof/manifest.mk} +8 -17
  3863. data/vendor/tracemonkey/vprof/testVprofMT.c +125 -0
  3864. data/vendor/tracemonkey/vprof/vprof.h +10 -12
  3865. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +2 -2
  3866. data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +43 -22
  3867. data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +0 -0
  3868. data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +12 -1
  3869. data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +49 -3
  3870. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +10 -20
  3871. data/vendor/tracemonkey/xpconnect/shell/Makefile.in +2 -1
  3872. data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +120 -40
  3873. data/vendor/tracemonkey/xpconnect/src/Makefile.in +10 -7
  3874. data/vendor/tracemonkey/xpconnect/src/XPCChromeObjectWrapper.cpp +769 -0
  3875. data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +25 -19
  3876. data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +4 -0
  3877. data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +4 -5
  3878. data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +2 -10
  3879. data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +7 -12
  3880. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +0 -198
  3881. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +16 -9
  3882. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +1 -1
  3883. data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +143 -269
  3884. data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +9 -1
  3885. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +3 -2
  3886. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +19 -4
  3887. data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +44 -48
  3888. data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +6 -3
  3889. data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +325 -202
  3890. data/vendor/tracemonkey/xpconnect/src/qsgen.py +67 -71
  3891. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +0 -0
  3892. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +0 -0
  3893. data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +82 -13
  3894. data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +36 -28
  3895. data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +139 -44
  3896. data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +7 -0
  3897. data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +13 -7
  3898. data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +0 -1
  3899. data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +27 -10
  3900. data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +47 -35
  3901. data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +48 -67
  3902. data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +35 -0
  3903. data/vendor/tracemonkey/xpconnect/src/xpclog.h +55 -0
  3904. data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +322 -75
  3905. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +142 -114
  3906. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +25 -49
  3907. data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +14 -7
  3908. data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +6 -6
  3909. data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +10 -3
  3910. data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +9 -8
  3911. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +15 -14
  3912. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +109 -111
  3913. data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +498 -118
  3914. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +5 -6
  3915. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +188 -25
  3916. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +6 -3
  3917. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +46 -27
  3918. data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +118 -115
  3919. data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +2 -0
  3920. data/vendor/tracemonkey/xpconnect/tests/chrome/bug503926.xul +28 -0
  3921. data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug503926.xul +43 -0
  3922. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1 -61
  3923. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +1 -2
  3924. data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +3 -0
  3925. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +1 -1
  3926. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +1 -1
  3927. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +1 -1
  3928. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +1 -1
  3929. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +1 -1
  3930. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +1 -1
  3931. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +1 -1
  3932. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +1 -1
  3933. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +1 -1
  3934. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug502959.html +38 -0
  3935. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug503926.html +30 -0
  3936. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_cows.html +179 -0
  3937. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +9 -0
  3938. data/vendor/tracemonkey/xpconnect/tests/unit/test_iterate.js +54 -0
  3939. data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +0 -0
  3940. data/vendor/tracemonkey/xpconnect/tests/unit/test_xpcomutils.js +135 -0
  3941. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +1 -1
  3942. data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +1 -1
  3943. metadata +3711 -35
  3944. data/vendor/tracemonkey/build/autoconf/update-makefile.sh +0 -118
  3945. data/vendor/tracemonkey/correct.sh +0 -23
  3946. data/vendor/tracemonkey/correct/check-date-format-xparb.js +0 -421
  3947. data/vendor/tracemonkey/if.js +0 -13
  3948. data/vendor/tracemonkey/js3240.rc +0 -79
  3949. data/vendor/tracemonkey/jsOS240.def +0 -654
  3950. data/vendor/tracemonkey/math-partial-sums.js +0 -32
  3951. data/vendor/tracemonkey/md5.js +0 -289
  3952. data/vendor/tracemonkey/nanojit/NativeThumb.cpp +0 -1322
  3953. data/vendor/tracemonkey/nanojit/NativeThumb.h +0 -525
  3954. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +0 -306
@@ -1,4 +1,5 @@
1
- /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 4 -*- */
1
+ /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4 -*- */
2
+ /* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */
2
3
  /* ***** BEGIN LICENSE BLOCK *****
3
4
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
5
  *
@@ -42,196 +43,96 @@
42
43
  #ifndef __nanojit_Fragmento__
43
44
  #define __nanojit_Fragmento__
44
45
 
45
- #ifdef AVMPLUS_VERBOSE
46
- extern void drawTraceTrees(Fragmento *frago, FragmentMap * _frags, avmplus::AvmCore *core, char *fileName);
47
- #endif
48
-
49
46
  namespace nanojit
50
47
  {
51
- struct GuardRecord;
52
- class Assembler;
53
-
54
- struct PageHeader
55
- {
56
- struct Page *next;
57
- };
58
- struct Page: public PageHeader
59
- {
60
- union {
61
- LIns lir[(NJ_PAGE_SIZE-sizeof(PageHeader))/sizeof(LIns)];
62
- NIns code[(NJ_PAGE_SIZE-sizeof(PageHeader))/sizeof(NIns)];
63
- };
64
- };
65
- struct AllocEntry : public avmplus::GCObject
66
- {
67
- Page *page;
68
- uint32_t allocSize;
69
- };
70
- typedef avmplus::List<AllocEntry*,avmplus::LIST_NonGCObjects> AllocList;
48
+ struct GuardRecord;
71
49
 
72
- typedef avmplus::GCSortedMap<const void*, uint32_t, avmplus::LIST_NonGCObjects> BlockSortedMap;
73
- class BlockHist: public BlockSortedMap
74
- {
75
- public:
76
- BlockHist(avmplus::GC*gc) : BlockSortedMap(gc)
77
- {
78
- }
79
- uint32_t count(const void *p) {
80
- uint32_t c = 1+get(p);
81
- put(p, c);
82
- return c;
83
- }
84
- };
85
-
86
- struct fragstats;
87
- /*
88
- *
89
- * This is the main control center for creating and managing fragments.
90
- */
91
- class Fragmento : public avmplus::GCFinalizedObject
92
- {
93
- public:
94
- Fragmento(AvmCore* core, uint32_t cacheSizeLog2);
95
- ~Fragmento();
96
-
97
- void addMemory(void* firstPage, uint32_t pageCount); // gives memory to the Assembler
98
- Assembler* assm();
99
- AvmCore* core();
100
- Page* pageAlloc();
101
- void pageFree(Page* page);
102
- void pagesRelease(PageList& list);
103
-
104
- Fragment* getLoop(const void* ip);
105
- Fragment* getAnchor(const void* ip);
106
- // Remove one fragment. The caller is responsible for making sure
107
- // that this does not destroy any resources shared with other
108
- // fragments (such as a LirBuffer or this fragment itself as a
109
- // jump target).
110
- void clearFrag(const void* ip);
111
- void clearFrags(); // clear all fragments from the cache
112
- Fragment* getMerge(GuardRecord *lr, const void* ip);
113
- Fragment* createBranch(SideExit *exit, const void* ip);
114
- Fragment* newFrag(const void* ip);
115
- Fragment* newBranch(Fragment *from, const void* ip);
116
-
117
- verbose_only ( uint32_t pageCount(); )
118
- verbose_only ( void dumpStats(); )
119
- verbose_only ( void dumpRatio(const char*, BlockHist*);)
120
- verbose_only ( void dumpFragStats(Fragment*, int level, fragstats&); )
121
- verbose_only ( void countBlock(BlockHist*, const void* pc); )
122
- verbose_only ( void countIL(uint32_t il, uint32_t abc); )
123
- verbose_only( void addLabel(Fragment* f, const char *prefix, int id); )
124
-
125
- // stats
126
- struct
127
- {
128
- uint32_t pages; // pages consumed
129
- uint32_t maxPageUse; // highwater mark of (pages-freePages)
130
- uint32_t flushes, ilsize, abcsize, compiles, totalCompiles;
131
- }
132
- _stats;
50
+ /**
51
+ * Fragments are linear sequences of native code that have a single entry
52
+ * point at the start of the fragment and may have one or more exit points
53
+ *
54
+ * It may turn out that that this arrangement causes too much traffic
55
+ * between d and i-caches and that we need to carve up the structure differently.
56
+ */
57
+ class Fragment
58
+ {
59
+ public:
60
+ Fragment(const void*
61
+ verbose_only(, uint32_t profFragID));
133
62
 
134
- verbose_only( DWB(BlockHist*) enterCounts; )
135
- verbose_only( DWB(BlockHist*) mergeCounts; )
136
- verbose_only( DWB(LabelMap*) labels; )
137
-
138
- #ifdef AVMPLUS_VERBOSE
139
- void drawTrees(char *fileName);
140
- #endif
141
-
142
- uint32_t cacheUsed() const { return (_stats.pages-_freePages.size())<<NJ_LOG2_PAGE_SIZE; }
143
- uint32_t cacheUsedMax() const { return (_stats.maxPageUse)<<NJ_LOG2_PAGE_SIZE; }
144
- void clearFragment(Fragment *f);
145
- private:
146
- void pagesGrow(int32_t count);
147
- void trackPages();
63
+ NIns* code() { return _code; }
64
+ void setCode(NIns* codee) { _code = codee; }
65
+ int32_t& hits() { return _hits; }
66
+ bool isRoot() { return root == this; }
148
67
 
149
- AvmCore* _core;
150
- DWB(Assembler*) _assm;
151
- FragmentMap _frags; /* map from ip -> Fragment ptr */
152
- PageList _freePages;
68
+ Fragment* root;
69
+ LirBuffer* lirbuf;
70
+ LIns* lastIns;
153
71
 
154
- /* unmanaged mem */
155
- AllocList _allocList;
156
- avmplus::GCHeap* _gcHeap;
72
+ const void* ip;
73
+ uint32_t recordAttempts;
74
+ NIns* fragEntry;
75
+ void* vmprivate;
157
76
 
158
- const uint32_t _max_pages;
159
- uint32_t _pagesGrowth;
160
- };
77
+ // for fragment entry and exit profiling. See detailed
78
+ // how-to-use comment below.
79
+ verbose_only( LIns* loopLabel; ) // where's the loop top?
80
+ verbose_only( uint32_t profFragID; )
81
+ verbose_only( uint32_t profCount; )
82
+ verbose_only( uint32_t nStaticExits; )
83
+ verbose_only( size_t nCodeBytes; )
84
+ verbose_only( size_t nExitBytes; )
85
+ verbose_only( uint32_t guardNumberer; )
86
+ verbose_only( GuardRecord* guardsForFrag; )
161
87
 
162
- enum TraceKind {
163
- LoopTrace,
164
- BranchTrace,
165
- MergeTrace
166
- };
167
-
168
- /**
169
- * Fragments are linear sequences of native code that have a single entry
170
- * point at the start of the fragment and may have one or more exit points
171
- *
172
- * It may turn out that that this arrangement causes too much traffic
173
- * between d and i-caches and that we need to carve up the structure differently.
174
- */
175
- class Fragment : public avmplus::GCFinalizedObject
176
- {
177
- public:
178
- Fragment(const void*);
179
- ~Fragment();
88
+ private:
89
+ NIns* _code; // ptr to start of code
90
+ int32_t _hits;
91
+ };
92
+ }
180
93
 
181
- NIns* code() { return _code; }
182
- void setCode(NIns* codee, Page* pages) { _code = codee; _pages = pages; }
183
- GuardRecord* links() { return _links; }
184
- int32_t& hits() { return _hits; }
185
- void resetHits();
186
- void blacklist();
187
- bool isBlacklisted() { return _hits < 0; }
188
- debug_only( bool hasOnlyTreeLinks(); )
189
- void releaseLirBuffer();
190
- void releaseCode(Fragmento* frago);
191
- void releaseTreeMem(Fragmento* frago);
192
- bool isAnchor() { return anchor == this; }
193
- bool isRoot() { return root == this; }
194
- void onDestroy();
195
-
196
- verbose_only( uint32_t _called; )
197
- verbose_only( uint32_t _native; )
198
- verbose_only( uint32_t _exitNative; )
199
- verbose_only( uint32_t _lir; )
200
- verbose_only( uint32_t _lirbytes; )
201
- verbose_only( const char* _token; )
202
- verbose_only( uint64_t traceTicks; )
203
- verbose_only( uint64_t interpTicks; )
204
- verbose_only( DWB(Fragment*) eot_target; )
205
- verbose_only( uint32_t sid;)
206
- verbose_only( uint32_t compileNbr;)
94
+ /*
95
+ * How to use fragment profiling
96
+ *
97
+ * Fragprofiling adds code to count how many times each fragment is
98
+ * entered, and how many times each guard (exit) is taken. Using this
99
+ * it's possible to easily find which fragments are hot, which ones
100
+ * typically exit early, etc. The fragprofiler also gathers some
101
+ * simple static info: for each fragment, the number of code bytes,
102
+ * number of exit-block bytes, and number of guards (exits).
103
+ *
104
+ * Fragments and guards are given unique IDs (FragID, GuardID) which
105
+ * are shown in debug printouts, so as to facilitate navigating from
106
+ * the accumulated statistics to the associated bits of code.
107
+ * GuardIDs are issued automatically, but FragIDs you must supply when
108
+ * calling Fragment::Fragment. Supply values >= 1, and supply a
109
+ * different value for each new fragment (doesn't matter what, they
110
+ * just have to be unique and >= 1); else
111
+ * js_FragProfiling_FragFinalizer will assert.
112
+ *
113
+ * How to use/embed:
114
+ *
115
+ * - use a debug build (one with NJ_VERBOSE). Without it, none of
116
+ * this code is compiled in.
117
+ *
118
+ * - set LC_FragProfile in the lcbits of the LogControl* object handed
119
+ * to Nanojit
120
+ *
121
+ * When enabled, Fragment::profCount is incremented every time the
122
+ * fragment is entered, and GuardRecord::profCount is incremented
123
+ * every time that guard exits. However, NJ has no way to know where
124
+ * the fragment entry/loopback point is. So you must set
125
+ * Fragment::loopLabel before running the assembler, so as to indicate
126
+ * where the fragment-entry counter increment should be placed. If
127
+ * the fragment does not naturally have a loop label then you will
128
+ * need to artificially add one.
129
+ *
130
+ * It is the embedder's problem to fish out, collate and present the
131
+ * accumulated stats at the end of the Fragment's lifetime. A
132
+ * Fragment contains stats indicating its entry count and static code
133
+ * sizes. It also has a ::guardsForFrag field, which is a linked list
134
+ * of GuardRecords, and by traversing them you can get hold of the
135
+ * exit counts.
136
+ */
207
137
 
208
- DWB(Fragment*) treeBranches;
209
- DWB(Fragment*) branches;
210
- DWB(Fragment*) nextbranch;
211
- DWB(Fragment*) anchor;
212
- DWB(Fragment*) root;
213
- DWB(Fragment*) parent;
214
- DWB(Fragment*) first;
215
- DWB(Fragment*) peer;
216
- DWB(LirBuffer*) lirbuf;
217
- LIns* lastIns;
218
- SideExit* spawnedFrom;
219
-
220
- TraceKind kind;
221
- const void* ip;
222
- uint32_t guardCount;
223
- uint32_t xjumpCount;
224
- uint32_t recordAttempts;
225
- int32_t blacklistLevel;
226
- NIns* fragEntry;
227
- NIns* loopEntry;
228
- void* vmprivate;
229
-
230
- private:
231
- NIns* _code; // ptr to start of code
232
- GuardRecord* _links; // code which is linked (or pending to be) to this fragment
233
- int32_t _hits;
234
- Page* _pages; // native code pages
235
- };
236
- }
237
138
  #endif // __nanojit_Fragmento__
@@ -1,4 +1,5 @@
1
- /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 4 -*- */
1
+ /* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4 -*- */
2
+ /* vi: set ts=4 sw=4 expandtab: (add to ~/.vimrc: set modeline modelines=5) */
2
3
  /* ***** BEGIN LICENSE BLOCK *****
3
4
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
5
  *
@@ -37,487 +38,403 @@
37
38
  * ***** END LICENSE BLOCK ***** */
38
39
 
39
40
  #include "nanojit.h"
40
- #include <stdio.h>
41
- #include <ctype.h>
42
-
43
- #ifdef PERFM
44
- #include "../vprof/vprof.h"
45
- #endif /* PERFM */
46
41
 
47
42
  namespace nanojit
48
43
  {
49
44
  using namespace avmplus;
50
- #ifdef FEATURE_NANOJIT
45
+ #ifdef FEATURE_NANOJIT
51
46
 
52
- const uint8_t operandCount[] = {
53
- #define OPDEF(op, number, operands) \
47
+ const int8_t operandCount[] = {
48
+ #define OPDEF(op, number, operands, repkind) \
54
49
  operands,
55
- #define OPDEF64(op, number, operands) \
50
+ #define OPDEF64(op, number, operands, repkind) \
56
51
  operands,
57
52
  #include "LIRopcode.tbl"
58
53
  #undef OPDEF
59
54
  #undef OPDEF64
60
55
  0
61
- };
56
+ };
62
57
 
63
- // LIR verbose specific
64
- #ifdef NJ_VERBOSE
58
+ const uint8_t repKinds[] = {
59
+ #define OPDEF(op, number, operands, repkind) \
60
+ LRK_##repkind,
61
+ #define OPDEF64(op, number, operands, repkind) \
62
+ OPDEF(op, number, operands, repkind)
63
+ #include "LIRopcode.tbl"
64
+ #undef OPDEF
65
+ #undef OPDEF64
66
+ 0
67
+ };
65
68
 
66
- const char* lirNames[] = {
67
- #define OPDEF(op, number, operands) \
69
+ extern const uint8_t insSizes[] = {
70
+ #define OPDEF(op, number, operands, repkind) \
71
+ sizeof(LIns##repkind),
72
+ #define OPDEF64(op, number, operands, repkind) \
73
+ OPDEF(op, number, operands, repkind)
74
+ #include "LIRopcode.tbl"
75
+ #undef OPDEF
76
+ #undef OPDEF64
77
+ 0
78
+ };
79
+
80
+ // LIR verbose specific
81
+ #ifdef NJ_VERBOSE
82
+
83
+ const char* lirNames[] = {
84
+ #define OPDEF(op, number, operands, repkind) \
68
85
  #op,
69
- #define OPDEF64(op, number, operands) \
86
+ #define OPDEF64(op, number, operands, repkind) \
70
87
  #op,
71
88
  #include "LIRopcode.tbl"
72
89
  #undef OPDEF
73
90
  #undef OPDEF64
74
91
  NULL
75
- };
92
+ };
76
93
 
77
- #endif /* NANOJIT_VEBROSE */
78
-
79
- // implementation
94
+ #endif /* NANOJIT_VEBROSE */
95
+
96
+ // implementation
80
97
 
81
98
  #ifdef NJ_PROFILE
82
- // @todo fixup move to nanojit.h
83
- #undef counter_value
84
- #define counter_value(x) x
99
+ // @todo fixup move to nanojit.h
100
+ #undef counter_value
101
+ #define counter_value(x) x
85
102
  #endif /* NJ_PROFILE */
86
103
 
87
- //static int32_t buffer_count = 0;
88
-
89
- // LCompressedBuffer
90
- LirBuffer::LirBuffer(Fragmento* frago, const CallInfo* functions)
91
- : _frago(frago),
104
+ // LCompressedBuffer
105
+ LirBuffer::LirBuffer(Allocator& alloc) :
92
106
  #ifdef NJ_VERBOSE
93
- names(NULL),
107
+ names(NULL),
94
108
  #endif
95
- _functions(functions), abi(ABI_FASTCALL),
96
- state(NULL), param1(NULL), sp(NULL), rp(NULL),
97
- _pages(frago->core()->GetGC())
98
- {
99
- rewind();
100
- }
101
-
102
- LirBuffer::~LirBuffer()
103
- {
104
- clear();
105
- verbose_only(if (names) NJ_DELETE(names);)
106
- _frago = 0;
107
- }
108
-
109
- void LirBuffer::clear()
110
- {
111
- // free all the memory and clear the stats
112
- _frago->pagesRelease(_pages);
113
- NanoAssert(!_pages.size());
114
- _unused = 0;
115
- _stats.lir = 0;
116
- _noMem = 0;
117
- _nextPage = 0;
118
- for (int i = 0; i < NumSavedRegs; ++i)
119
- savedRegs[i] = NULL;
120
- explicitSavedRegs = false;
121
- }
122
-
123
- void LirBuffer::rewind()
124
- {
125
- clear();
126
- // pre-allocate the current and the next page we will be using
127
- Page* start = pageAlloc();
128
- _unused = start ? &start->lir[0] : NULL;
129
- _nextPage = pageAlloc();
130
- NanoAssert((_unused && _nextPage) || _noMem);
131
- }
132
-
133
- int32_t LirBuffer::insCount()
134
- {
135
- // doesn't include embedded constants nor LIR_skip payload
136
- return _stats.lir;
137
- }
138
-
139
- int32_t LirBuffer::byteCount()
140
- {
141
- return ((_pages.size() ? _pages.size()-1 : 0) * sizeof(Page)) +
142
- ((int32_t)_unused - (int32_t)pageTop(_unused));
143
- }
144
-
145
- Page* LirBuffer::pageAlloc()
146
- {
147
- Page* page = _frago->pageAlloc();
148
- if (page)
149
- _pages.add(page);
150
- else
151
- _noMem = 1;
152
- return page;
153
- }
154
-
155
- LInsp LirBuffer::next()
156
- {
157
- return _unused;
158
- }
159
-
160
- void LirBufWriter::ensureRoom(uint32_t count)
161
- {
162
- NanoAssert(count * sizeof(LIns) <= MAX_SKIP_BYTES);
163
- LInsp before = _buf->next();
164
- LInsp after = before+count+LIR_FAR_SLOTS;
165
- // transition to the next page?
166
- if (!samepage(before,after))
167
- {
168
- // we don't want this to fail, so we always have a page in reserve
169
- NanoAssert(_buf->_nextPage);
170
- _buf->_unused = &_buf->_nextPage->lir[0];
171
- // link LIR stream back to prior instruction (careful insLink relies on _unused...)
172
- insLinkTo(LIR_skip, before-1);
173
- _buf->_nextPage = _buf->pageAlloc();
174
- NanoAssert(_buf->_nextPage || _buf->_noMem);
175
- }
176
- }
177
-
178
- LInsp LirBufWriter::insLinkTo(LOpcode op, LInsp to)
179
- {
180
- LInsp l = _buf->next();
181
- NanoAssert(samepage(l,l+LIR_FAR_SLOTS)); // must have called ensureRoom()
182
- if (can24bReach(l,to))
183
- {
184
- NanoStaticAssert(LIR_nearskip == LIR_skip - 1);
185
- NanoStaticAssert(LIR_neartramp == LIR_tramp - 1);
186
- l->initOpcode(LOpcode(op-1)); // nearskip or neartramp
187
- l->setimm24(to-l);
188
- _buf->commit(1);
189
- _buf->_stats.lir++;
190
- }
191
- else
192
- {
193
- l = insLinkToFar(op,to);
194
- }
195
- return l;
196
- }
197
-
198
- LInsp LirBufWriter::insLinkToFar(LOpcode op, LInsp to)
199
- {
200
- LirFarIns* ov = (LirFarIns*) _buf->next();
201
- ov->v = to;
202
- ov->i.initOpcode(op);
203
- _buf->commit(LIR_FAR_SLOTS);
204
- _buf->_stats.lir++;
205
-
206
- NanoAssert( (LInsp)(ov+1) == _buf->next() );
207
- return &(ov->i);
208
- }
209
-
210
- void LirBufWriter::makeReachable(LInsp& o, LInsp from)
211
- {
212
- if (o && !can8bReach(from,o))
213
- {
214
- if (o == _buf->sp && spref && can8bReach(from, spref)) {
215
- o = spref;
216
- return;
217
- }
218
- if (o == _buf->rp && rpref && can8bReach(from, rpref)) {
219
- o = rpref;
220
- return;
221
- }
222
-
223
- // need a trampoline to get to from
224
- LInsp tramp = insLinkTo(LIR_tramp, o); // will produce neartramp if possible
225
- NanoAssert( tramp->ref() == o && samepage(from,tramp) );
226
- if (o == _buf->sp)
227
- spref = tramp;
228
- else if (o == _buf->rp)
229
- rpref = tramp;
230
- o = tramp;
231
- }
232
- }
233
-
234
- void LirBufWriter::prepFor(LInsp& i1, LInsp& i2, LInsp& i3)
235
- {
236
- uint32_t i = 0; // count of operands
237
- i += (i1) ? 1 : 0;
238
- i += (i2) ? 1 : 0;
239
- i += (i3) ? 1 : 0;
240
-
241
- uint32_t count = (LIR_FAR_SLOTS*i)+1; // count of LIns if all operands require tramp
242
- ensureRoom(count);
243
- NanoAssert( samepage(_buf->next()+count,_buf->next()) );
244
-
245
- // guaranteed space for far tramps if necc.
246
- LInsp from = _buf->next()+count;
247
- makeReachable(i1, from);
248
- makeReachable(i2, from);
249
- makeReachable(i3, from);
250
- NanoAssert(from>i1 && from>i2 && from>i3);
251
- }
252
-
253
- LInsp LirBuffer::commit(uint32_t count)
254
- {
255
- NanoAssertMsg( samepage(_unused, _unused+count), "You need to call ensureRoom first!" );
256
- return _unused += count;
257
- }
258
-
259
- uint32_t LIns::reference(LIns *r) const
260
- {
261
- int delta = this-r-1;
262
- NanoAssert(isU8(delta));
263
- return delta;
264
- }
265
-
266
- LIns* LIns::deref(int32_t off) const
267
- {
268
- LInsp i = (LInsp) this-1 - off;
269
- while (i && i->isTramp()) {
270
- i = i->ref();
109
+ abi(ABI_FASTCALL), state(NULL), param1(NULL), sp(NULL), rp(NULL),
110
+ _allocator(alloc)
111
+ {
112
+ clear();
113
+ }
114
+
115
+ void LirBuffer::clear()
116
+ {
117
+ // clear the stats, etc
118
+ _unused = 0;
119
+ _limit = 0;
120
+ _bytesAllocated = 0;
121
+ _stats.lir = 0;
122
+ for (int i = 0; i < NumSavedRegs; ++i)
123
+ savedRegs[i] = NULL;
124
+ chunkAlloc();
125
+ }
126
+
127
+ void LirBuffer::chunkAlloc()
128
+ {
129
+ _unused = (uintptr_t) _allocator.alloc(CHUNK_SZB);
130
+ NanoAssert(_unused != 0); // Allocator.alloc() never returns null. See Allocator.h
131
+ _limit = _unused + CHUNK_SZB;
132
+ }
133
+
134
+ int32_t LirBuffer::insCount()
135
+ {
136
+ // A LIR_skip payload is considered part of the LIR_skip, and LIR_call
137
+ // arg slots are considered part of the LIR_call.
138
+ return _stats.lir;
139
+ }
140
+
141
+ size_t LirBuffer::byteCount()
142
+ {
143
+ return _bytesAllocated - (_limit - _unused);
144
+ }
145
+
146
+ // Allocate a new page, and write the first instruction to it -- a skip
147
+ // linking to last instruction of the previous page.
148
+ void LirBuffer::moveToNewChunk(uintptr_t addrOfLastLInsOnCurrentChunk)
149
+ {
150
+ chunkAlloc();
151
+ // Link LIR stream back to prior instruction.
152
+ // Unlike all the ins*() functions, we don't call makeRoom() here
153
+ // because we know we have enough space, having just started a new
154
+ // page.
155
+ LInsSk* insSk = (LInsSk*)_unused;
156
+ LIns* ins = insSk->getLIns();
157
+ ins->initLInsSk((LInsp)addrOfLastLInsOnCurrentChunk);
158
+ _unused += sizeof(LInsSk);
159
+ verbose_only(_stats.lir++);
160
+ }
161
+
162
+ // Make room for a single instruction.
163
+ uintptr_t LirBuffer::makeRoom(size_t szB)
164
+ {
165
+ // Make sure the size is ok
166
+ NanoAssert(0 == szB % sizeof(void*));
167
+ NanoAssert(sizeof(LIns) <= szB && szB <= MAX_LINS_SZB);
168
+ NanoAssert(_unused < _limit);
169
+
170
+ // If the instruction won't fit on the current chunk, get a new chunk
171
+ if (_unused + szB > _limit) {
172
+ uintptr_t addrOfLastLInsOnChunk = _unused - sizeof(LIns);
173
+ moveToNewChunk(addrOfLastLInsOnChunk);
271
174
  }
272
- return i;
273
- }
274
-
275
- LInsp LirBufWriter::insStore(LInsp val, LInsp base, LInsp off)
276
- {
277
- LOpcode op = val->isQuad() ? LIR_stq : LIR_st;
278
- NanoAssert(val && base && off);
279
- prepFor(val, base, off);
280
- LInsp l = _buf->next();
281
- l->initOpcode(op);
282
- l->setOprnd1(val);
283
- l->setOprnd2(base);
284
- l->setOprnd3(off);
285
- _buf->commit(1);
286
- _buf->_stats.lir++;
287
- return l;
288
- }
289
-
290
- LInsp LirBufWriter::insStorei(LInsp val, LInsp base, int32_t d)
291
- {
292
- if (!isS8(d)) {
293
- return insStore(val, base, insImm(d));
294
- }
295
-
296
- LOpcode op = val->isQuad() ? LIR_stqi : LIR_sti;
297
- NanoAssert(val && base && isS8(d));
298
- LInsp u3=0;
299
- prepFor(val, base, u3);
300
- LInsp l = _buf->next();
301
- l->initOpcode(op);
302
- l->setOprnd1(val);
303
- l->setOprnd2(base);
304
- l->setDisp(int8_t(d));
305
- _buf->commit(1);
306
- _buf->_stats.lir++;
307
- return l;
308
- }
309
-
310
- LInsp LirBufWriter::ins0(LOpcode op)
311
- {
312
- ensureRoom(1);
313
- LirBuffer *b = this->_buf;
314
- LInsp l = b->next();
315
- l->initOpcode(op);
316
- b->commit(1);
317
- b->_stats.lir++;
318
- return l;
319
- }
320
-
321
- LInsp LirBufWriter::ins1(LOpcode op, LInsp o1)
322
- {
323
- LInsp u2=0,u3=0;
324
- prepFor(o1,u2,u3);
325
- LInsp l = _buf->next();
326
- l->initOpcode(op);
327
- l->setOprnd1(o1);
328
- _buf->commit(1);
329
- _buf->_stats.lir++;
330
- return l;
331
- }
332
-
333
- LInsp LirBufWriter::ins2(LOpcode op, LInsp o1, LInsp o2)
334
- {
335
- LInsp u3=0;
336
- prepFor(o1,o2,u3);
337
- LInsp l = _buf->next();
338
- l->initOpcode(op);
339
- l->setOprnd1(o1);
340
- l->setOprnd2(o2);
341
- _buf->commit(1);
342
- _buf->_stats.lir++;
343
- return l;
344
- }
345
-
346
- LInsp LirBufWriter::insLoad(LOpcode op, LInsp base, LInsp d)
347
- {
348
- return ins2(op,base,d);
349
- }
350
-
351
- LInsp LirBufWriter::insGuard(LOpcode op, LInsp c, LInsp data)
352
- {
353
- return ins2(op, c, data);
354
- }
355
-
356
- LInsp LirBufWriter::insBranch(LOpcode op, LInsp condition, LInsp toLabel)
357
- {
358
- if (!toLabel)
359
- toLabel = insFar(LIR_tramp,0); //empty tramp
360
- if (!condition) {
361
- // unconditional, just point to something
362
- condition = toLabel;
175
+
176
+ // We now know that we are on a chunk that has the requested amount of
177
+ // room: record the starting address of the requested space and bump
178
+ // the pointer.
179
+ uintptr_t startOfRoom = _unused;
180
+ _unused += szB;
181
+ verbose_only(_stats.lir++); // count the instruction
182
+
183
+ // If there's no more space on this chunk, move to a new one.
184
+ // (This will only occur if the asked-for size filled up exactly to
185
+ // the end of the chunk.) This ensures that next time we enter this
186
+ // function, _unused won't be pointing one byte past the end of
187
+ // the chunk, which would break everything.
188
+ if (_unused >= _limit) {
189
+ // Check we used exactly the remaining space
190
+ NanoAssert(_unused == _limit);
191
+ uintptr_t addrOfLastLInsOnChunk = _unused - sizeof(LIns);
192
+ moveToNewChunk(addrOfLastLInsOnChunk);
363
193
  }
364
- return ins2(op,condition,toLabel);
365
- }
194
+
195
+ // Make sure it's word-aligned.
196
+ NanoAssert(0 == startOfRoom % sizeof(void*));
197
+ return startOfRoom;
198
+ }
199
+
200
+ LInsp LirBufWriter::insStorei(LInsp val, LInsp base, int32_t d)
201
+ {
202
+ LOpcode op = val->isQuad() ? LIR_stqi : LIR_sti;
203
+ LInsSti* insSti = (LInsSti*)_buf->makeRoom(sizeof(LInsSti));
204
+ LIns* ins = insSti->getLIns();
205
+ ins->initLInsSti(op, val, base, d);
206
+ return ins;
207
+ }
208
+
209
+ LInsp LirBufWriter::ins0(LOpcode op)
210
+ {
211
+ LInsOp0* insOp0 = (LInsOp0*)_buf->makeRoom(sizeof(LInsOp0));
212
+ LIns* ins = insOp0->getLIns();
213
+ ins->initLInsOp0(op);
214
+ return ins;
215
+ }
216
+
217
+ LInsp LirBufWriter::ins1(LOpcode op, LInsp o1)
218
+ {
219
+ LInsOp1* insOp1 = (LInsOp1*)_buf->makeRoom(sizeof(LInsOp1));
220
+ LIns* ins = insOp1->getLIns();
221
+ ins->initLInsOp1(op, o1);
222
+ return ins;
223
+ }
224
+
225
+ LInsp LirBufWriter::ins2(LOpcode op, LInsp o1, LInsp o2)
226
+ {
227
+ LInsOp2* insOp2 = (LInsOp2*)_buf->makeRoom(sizeof(LInsOp2));
228
+ LIns* ins = insOp2->getLIns();
229
+ ins->initLInsOp2(op, o1, o2);
230
+ return ins;
231
+ }
232
+
233
+ LInsp LirBufWriter::ins3(LOpcode op, LInsp o1, LInsp o2, LInsp o3)
234
+ {
235
+ LInsOp3* insOp3 = (LInsOp3*)_buf->makeRoom(sizeof(LInsOp3));
236
+ LIns* ins = insOp3->getLIns();
237
+ ins->initLInsOp3(op, o1, o2, o3);
238
+ return ins;
239
+ }
240
+
241
+ LInsp LirBufWriter::insLoad(LOpcode op, LInsp base, int32_t d)
242
+ {
243
+ LInsLd* insLd = (LInsLd*)_buf->makeRoom(sizeof(LInsLd));
244
+ LIns* ins = insLd->getLIns();
245
+ ins->initLInsLd(op, base, d);
246
+ return ins;
247
+ }
248
+
249
+ LInsp LirBufWriter::insGuard(LOpcode op, LInsp c, GuardRecord *gr)
250
+ {
251
+ debug_only( if (LIR_x == op || LIR_xbarrier == op) NanoAssert(!c); )
252
+ return ins2(op, c, (LIns*)gr);
253
+ }
254
+
255
+ LInsp LirBufWriter::insBranch(LOpcode op, LInsp condition, LInsp toLabel)
256
+ {
257
+ NanoAssert((op == LIR_j && !condition) ||
258
+ ((op == LIR_jf || op == LIR_jt) && condition));
259
+ return ins2(op, condition, toLabel);
260
+ }
366
261
 
367
262
  LInsp LirBufWriter::insAlloc(int32_t size)
368
263
  {
369
264
  size = (size+3)>>2; // # of required 32bit words
370
- NanoAssert(isU16(size));
371
- ensureRoom(1);
372
- LInsp l = _buf->next();
373
- l->initOpcode(LIR_alloc);
374
- l->i.imm16 = uint16_t(size);
375
- _buf->commit(1);
376
- _buf->_stats.lir++;
377
- return l;
265
+ LInsI* insI = (LInsI*)_buf->makeRoom(sizeof(LInsI));
266
+ LIns* ins = insI->getLIns();
267
+ ins->initLInsI(LIR_alloc, size);
268
+ return ins;
378
269
  }
379
270
 
380
271
  LInsp LirBufWriter::insParam(int32_t arg, int32_t kind)
381
272
  {
382
- ensureRoom(1);
383
- LirBuffer *b = this->_buf;
384
- LInsp l = b->next();
385
- l->initOpcode(LIR_param);
386
- NanoAssert(isU8(arg) && isU8(kind));
387
- l->c.imm8a = arg;
388
- l->c.imm8b = kind;
273
+ LInsP* insP = (LInsP*)_buf->makeRoom(sizeof(LInsP));
274
+ LIns* ins = insP->getLIns();
275
+ ins->initLInsP(arg, kind);
389
276
  if (kind) {
390
277
  NanoAssert(arg < NumSavedRegs);
391
- b->savedRegs[arg] = l;
392
- b->explicitSavedRegs = true;
278
+ _buf->savedRegs[arg] = ins;
393
279
  }
394
- b->commit(1);
395
- b->_stats.lir++;
396
- return l;
397
- }
398
-
399
- LInsp LirBufWriter::insFar(LOpcode op, LInsp target)
400
- {
401
- ensureRoom(LIR_FAR_SLOTS); // make room for it
402
- LInsp l = insLinkToFar(op, target);
403
- _buf->_stats.lir++;
404
- return l;
405
- }
406
-
407
- LInsp LirBufWriter::insImm(int32_t imm)
408
- {
409
- if (isS16(imm)) {
410
- ensureRoom(1);
411
- LInsp l = _buf->next();
412
- l->initOpcode(LIR_short);
413
- l->setimm16(imm);
414
- _buf->commit(1);
415
- _buf->_stats.lir++;
416
- return l;
417
- } else {
418
- ensureRoom(LIR_IMM32_SLOTS);
419
- LirImm32Ins* l = (LirImm32Ins*)_buf->next();
420
- l->v = imm;
421
- l->i.initOpcode(LIR_int);
422
- _buf->commit(LIR_IMM32_SLOTS);
423
- _buf->_stats.lir++;
424
- NanoAssert((LInsp)(l+1)==_buf->next());
425
- return &(l->i);
426
- }
427
- }
428
-
429
- LInsp LirBufWriter::insImmq(uint64_t imm)
430
- {
431
- ensureRoom(LIR_IMM64_SLOTS);
432
- LirImm64Ins* l = (LirImm64Ins*)_buf->next();
433
- l->v[0] = int32_t(imm);
434
- l->v[1] = int32_t(imm>>32);
435
- l->i.initOpcode(LIR_quad);
436
- _buf->commit(LIR_IMM64_SLOTS);
437
- _buf->_stats.lir++;
438
- NanoAssert((LInsp)(l+1)==_buf->next());
439
- return &(l->i);
440
- }
441
-
442
- LInsp LirBufWriter::skip(size_t size)
443
- {
444
- const uint32_t n = (size+sizeof(LIns)-1)/sizeof(LIns);
445
- ensureRoom(n); // make room for it
446
- LInsp last = _buf->next()-1; // safe, next()-1+n guaranteed to be on same page
447
- _buf->commit(n);
448
- NanoAssert(samepage(last,_buf->next()));
449
- ensureRoom(LIR_FAR_SLOTS);
450
- return insLinkTo(LIR_skip, last);
451
- }
452
-
453
- LInsp LirReader::read()
454
- {
455
- LInsp cur = _i;
456
- if (!cur)
457
- return 0;
458
- LIns* i = cur;
459
- LOpcode iop = i->opcode();
460
- do
461
- {
462
- switch (iop)
463
- {
464
- default:
465
- i--;
466
- break;
467
-
468
- #if defined NANOJIT_64BIT
469
- case LIR_callh:
470
- #endif
471
- case LIR_call:
472
- case LIR_fcall:
473
- case LIR_calli:
474
- case LIR_fcalli:
475
- NanoAssert( samepage(i,i+1-i->callInsWords()) );
476
- i -= i->callInsWords();
477
- break;
478
-
479
- case LIR_skip:
480
- case LIR_nearskip:
481
- NanoAssert(i->ref() != i);
482
- i = i->ref();
483
- break;
484
-
485
- case LIR_tramp:
486
- NanoAssert(samepage(i,i+1-LIR_FAR_SLOTS));
487
- i -= LIR_FAR_SLOTS;
280
+ return ins;
281
+ }
282
+
283
+ LInsp LirBufWriter::insImm(int32_t imm)
284
+ {
285
+ LInsI* insI = (LInsI*)_buf->makeRoom(sizeof(LInsI));
286
+ LIns* ins = insI->getLIns();
287
+ ins->initLInsI(LIR_int, imm);
288
+ return ins;
289
+ }
290
+
291
+ LInsp LirBufWriter::insImmq(uint64_t imm)
292
+ {
293
+ LInsI64* insI64 = (LInsI64*)_buf->makeRoom(sizeof(LInsI64));
294
+ LIns* ins = insI64->getLIns();
295
+ ins->initLInsI64(LIR_quad, imm);
296
+ return ins;
297
+ }
298
+
299
+ LInsp LirBufWriter::insImmf(double d)
300
+ {
301
+ LInsI64* insI64 = (LInsI64*)_buf->makeRoom(sizeof(LInsI64));
302
+ LIns* ins = insI64->getLIns();
303
+ union {
304
+ double d;
305
+ uint64_t q;
306
+ } u;
307
+ u.d = d;
308
+ ins->initLInsI64(LIR_float, u.q);
309
+ return ins;
310
+ }
311
+
312
+ LInsp LirBufWriter::insSkip(size_t payload_szB)
313
+ {
314
+ // First, round up payload_szB to a multiple of the word size. To
315
+ // ensure that the rounding up won't cause it to exceed
316
+ // NJ_MAX_SKIP_PAYLOAD_SZB, NJ_MAX_SKIP_PAYLOAD_SZB must also be a
317
+ // multiple of the word size, which we check.
318
+ payload_szB = alignUp(payload_szB, sizeof(void*));
319
+ NanoAssert(0 == LirBuffer::MAX_SKIP_PAYLOAD_SZB % sizeof(void*));
320
+ NanoAssert(sizeof(void*) <= payload_szB && payload_szB <= LirBuffer::MAX_SKIP_PAYLOAD_SZB);
321
+
322
+ uintptr_t payload = _buf->makeRoom(payload_szB + sizeof(LInsSk));
323
+ uintptr_t prevLInsAddr = payload - sizeof(LIns);
324
+ LInsSk* insSk = (LInsSk*)(payload + payload_szB);
325
+ LIns* ins = insSk->getLIns();
326
+ // not sure what we want to assert here since chunks aren't pages anymore
327
+ //NanoAssert(prevLInsAddr >= pageDataStart(prevLInsAddr));
328
+ //NanoAssert(samepage(prevLInsAddr, insSk));
329
+ ins->initLInsSk((LInsp)prevLInsAddr);
330
+ return ins;
331
+ }
332
+
333
+ // Reads the next non-skip instruction.
334
+ LInsp LirReader::read()
335
+ {
336
+ NanoAssert(_i);
337
+ LInsp cur = _i;
338
+ uintptr_t i = uintptr_t(cur);
339
+ LOpcode iop = ((LInsp)i)->opcode();
340
+
341
+ // We pass over skip instructions below. Also, the last instruction
342
+ // for a fragment shouldn't be a skip(*). Therefore we shouldn't see
343
+ // a skip here.
344
+ //
345
+ // (*) Actually, if the last *inserted* instruction exactly fills up a
346
+ // page, a new page will be created, and thus the last *written*
347
+ // instruction will be a skip -- the one needed for the cross-page
348
+ // link. But the last *inserted* instruction is what is recorded and
349
+ // used to initialise each LirReader, and that is what is seen here,
350
+ // and therefore this assertion holds.
351
+ NanoAssert(iop != LIR_skip);
352
+
353
+ do
354
+ {
355
+ // Nb: this switch is table-driven (because sizeof_LInsXYZ() is
356
+ // table-driven) in most cases to avoid branch mispredictions --
357
+ // if we do a vanilla switch on the iop or LInsRepKind the extra
358
+ // branch mispredictions cause a small but noticeable slowdown.
359
+ switch (iop)
360
+ {
361
+ default:
362
+ i -= insSizes[((LInsp)i)->opcode()];
363
+ break;
364
+
365
+ case LIR_icall:
366
+ case LIR_fcall:
367
+ case LIR_qcall: {
368
+ int argc = ((LInsp)i)->argc();
369
+ i -= sizeof(LInsC); // step over the instruction
370
+ i -= argc*sizeof(LInsp); // step over the arguments
371
+ break;
372
+ }
373
+
374
+ case LIR_skip:
375
+ // Ignore the skip, move onto its predecessor.
376
+ NanoAssert(((LInsp)i)->prevLIns() != (LInsp)i);
377
+ i = uintptr_t(((LInsp)i)->prevLIns());
488
378
  break;
489
379
 
490
- case LIR_int:
491
- NanoAssert(samepage(i,i+1-LIR_IMM32_SLOTS));
492
- i -= LIR_IMM32_SLOTS;
493
- break;
494
-
495
- case LIR_quad:
496
- NanoAssert(samepage(i,i+1-LIR_IMM64_SLOTS));
497
- i -= LIR_IMM64_SLOTS;
498
- break;
499
-
500
- case LIR_start:
501
- _i = 0; // start of trace
502
- return cur;
503
- }
504
- iop = i->opcode();
505
- }
506
- while (is_trace_skip_tramp(iop)||iop==LIR_2);
507
- _i = i;
508
- return cur;
509
- }
510
-
511
- bool FASTCALL isCmp(LOpcode c) {
512
- return (c >= LIR_eq && c <= LIR_uge) || (c >= LIR_feq && c <= LIR_fge);
513
- }
514
-
515
- bool FASTCALL isCond(LOpcode c) {
516
- return (c == LIR_ov) || (c == LIR_cs) || isCmp(c);
517
- }
518
-
519
- bool FASTCALL isFloat(LOpcode c) {
520
- switch (c) {
380
+ case LIR_start:
381
+ // Once we hit here, this method shouldn't be called again.
382
+ // The assertion at the top of this method checks this.
383
+ _i = 0;
384
+ return cur;
385
+ }
386
+ iop = ((LInsp)i)->opcode();
387
+ }
388
+ while (LIR_skip == iop);
389
+ _i = (LInsp)i;
390
+ return cur;
391
+ }
392
+
393
+ // This is never called, but that's ok because it contains only static
394
+ // assertions.
395
+ void LIns::staticSanityCheck()
396
+ {
397
+ // LIns must be word-sized.
398
+ NanoStaticAssert(sizeof(LIns) == 1*sizeof(void*));
399
+
400
+ // LInsXYZ have expected sizes too.
401
+ NanoStaticAssert(sizeof(LInsOp0) == 1*sizeof(void*));
402
+ NanoStaticAssert(sizeof(LInsOp1) == 2*sizeof(void*));
403
+ NanoStaticAssert(sizeof(LInsOp2) == 3*sizeof(void*));
404
+ NanoStaticAssert(sizeof(LInsOp3) == 4*sizeof(void*));
405
+ NanoStaticAssert(sizeof(LInsLd) == 3*sizeof(void*));
406
+ NanoStaticAssert(sizeof(LInsSti) == 4*sizeof(void*));
407
+ NanoStaticAssert(sizeof(LInsSk) == 2*sizeof(void*));
408
+ NanoStaticAssert(sizeof(LInsC) == 3*sizeof(void*));
409
+ NanoStaticAssert(sizeof(LInsP) == 2*sizeof(void*));
410
+ NanoStaticAssert(sizeof(LInsI) == 2*sizeof(void*));
411
+ #if defined NANOJIT_64BIT
412
+ NanoStaticAssert(sizeof(LInsI64) == 2*sizeof(void*));
413
+ #else
414
+ NanoStaticAssert(sizeof(LInsI64) == 3*sizeof(void*));
415
+ #endif
416
+
417
+ // oprnd_1 must be in the same position in LIns{Op1,Op2,Op3,Ld,Sti}
418
+ // because oprnd1() is used for all of them.
419
+ NanoStaticAssert( (offsetof(LInsOp1, ins) - offsetof(LInsOp1, oprnd_1)) ==
420
+ (offsetof(LInsOp2, ins) - offsetof(LInsOp2, oprnd_1)) );
421
+ NanoStaticAssert( (offsetof(LInsOp2, ins) - offsetof(LInsOp2, oprnd_1)) ==
422
+ (offsetof(LInsOp3, ins) - offsetof(LInsOp3, oprnd_1)) );
423
+ NanoStaticAssert( (offsetof(LInsOp3, ins) - offsetof(LInsOp3, oprnd_1)) ==
424
+ (offsetof(LInsLd, ins) - offsetof(LInsLd, oprnd_1)) );
425
+ NanoStaticAssert( (offsetof(LInsLd, ins) - offsetof(LInsLd, oprnd_1)) ==
426
+ (offsetof(LInsSti, ins) - offsetof(LInsSti, oprnd_1)) );
427
+
428
+ // oprnd_2 must be in the same position in LIns{Op2,Op3,Sti}
429
+ // because oprnd2() is used for both of them.
430
+ NanoStaticAssert( (offsetof(LInsOp2, ins) - offsetof(LInsOp2, oprnd_2)) ==
431
+ (offsetof(LInsOp3, ins) - offsetof(LInsOp3, oprnd_2)) );
432
+ NanoStaticAssert( (offsetof(LInsOp3, ins) - offsetof(LInsOp3, oprnd_2)) ==
433
+ (offsetof(LInsSti, ins) - offsetof(LInsSti, oprnd_2)) );
434
+ }
435
+
436
+ bool LIns::isFloat() const {
437
+ switch (opcode()) {
521
438
  default:
522
439
  return false;
523
440
  case LIR_fadd:
@@ -526,226 +443,11 @@ namespace nanojit
526
443
  case LIR_fdiv:
527
444
  case LIR_fneg:
528
445
  case LIR_fcall:
529
- case LIR_fcalli:
530
446
  case LIR_i2f:
531
447
  case LIR_u2f:
532
448
  return true;
533
449
  }
534
450
  }
535
-
536
- bool LIns::isCmp() const {
537
- return nanojit::isCmp(u.code);
538
- }
539
-
540
- bool LIns::isCond() const {
541
- return nanojit::isCond(u.code);
542
- }
543
-
544
- bool LIns::isQuad() const {
545
- #ifdef AVMPLUS_64BIT
546
- // callh in 64bit cpu's means a call that returns an int64 in a single register
547
- return (u.code & LIR64) != 0 || u.code == LIR_callh;
548
- #else
549
- // callh in 32bit cpu's means the 32bit MSW of an int64 result in 2 registers
550
- return (u.code & LIR64) != 0;
551
- #endif
552
- }
553
-
554
- bool LIns::isconstval(int32_t val) const
555
- {
556
- return isconst() && constval()==val;
557
- }
558
-
559
- bool LIns::isconstq() const
560
- {
561
- return isop(LIR_quad);
562
- }
563
-
564
- bool LIns::isconstp() const
565
- {
566
- #ifdef AVMPLUS_64BIT
567
- return isconstq();
568
- #else
569
- return isconst();
570
- #endif
571
- }
572
-
573
- bool FASTCALL isCse(LOpcode op) {
574
- op = LOpcode(op & ~LIR64);
575
- return op >= LIR_ldcs && op <= LIR_uge;
576
- }
577
-
578
- bool LIns::isCse(const CallInfo *functions) const
579
- {
580
- return nanojit::isCse(u.code) || (isCall() && callInfo()->_cse);
581
- }
582
-
583
- void LIns::setimm16(int32_t x)
584
- {
585
- NanoAssert(isS16(x));
586
- i.imm16 = int16_t(x);
587
- }
588
-
589
- void LIns::setimm24(int32_t x)
590
- {
591
- NanoAssert(isS24(x));
592
- t.imm24 = x;
593
- }
594
-
595
- void LIns::setresv(uint32_t resv)
596
- {
597
- NanoAssert(isU8(resv));
598
- g.resv = resv;
599
- }
600
-
601
- void LIns::initOpcode(LOpcode op)
602
- {
603
- i.code = op;
604
- i.imm16 = 0;
605
- i.resv = 0;
606
- }
607
-
608
- void LIns::setOprnd1(LInsp r)
609
- {
610
- u.oprnd_1 = reference(r);
611
- }
612
-
613
- void LIns::setOprnd2(LInsp r)
614
- {
615
- u.oprnd_2 = reference(r);
616
- }
617
-
618
- void LIns::setOprnd3(LInsp r)
619
- {
620
- u.oprnd_3 = reference(r);
621
- }
622
-
623
- void LIns::setDisp(int8_t d)
624
- {
625
- sti.disp = d;
626
- }
627
-
628
- LIns **LIns::targetAddr() {
629
- NanoAssert(isBranch());
630
- LInsp i = (LInsp) this-1 - u.oprnd_2;
631
- NanoAssert(i->isTramp());
632
- LInsp ref;
633
- while ((ref=i->ref()) != 0 && ref->isTramp())
634
- i = ref;
635
- NanoAssert(i->isop(LIR_tramp));
636
- LirFarIns* ov = (LirFarIns*)(i-LIR_FAR_SLOTS+1);
637
- return &(ov->v);
638
- }
639
-
640
- void LIns::target(LInsp label) {
641
- NanoAssert(label && label->isop(LIR_label));
642
- *(targetAddr()) = label;
643
- }
644
-
645
- LInsp LIns::getTarget()
646
- {
647
- NanoAssert(isBranch());
648
- return oprnd2();
649
- }
650
-
651
- LInsp LIns::oprnd1() const
652
- {
653
- return deref(u.oprnd_1);
654
- }
655
-
656
- LInsp LIns::oprnd2() const
657
- {
658
- return deref(u.oprnd_2);
659
- }
660
-
661
- LInsp LIns::oprnd3() const
662
- {
663
- return deref(u.oprnd_3);
664
- }
665
-
666
- void *LIns::payload() const
667
- {
668
- NanoAssert(opcode()==LIR_skip || opcode()==LIR_nearskip);
669
- return (void*) (ref()+1);
670
- }
671
-
672
- LIns* LIns::ref() const
673
- {
674
- LIns const *r = 0;
675
- if (t.code&1)
676
- r = this + t.imm24;
677
- else
678
- {
679
- LirFarIns* l = (LirFarIns*)(this-LIR_FAR_SLOTS+1);
680
- r = l->v;
681
- }
682
- return (const LInsp)r;
683
- }
684
-
685
- int32_t LIns::imm32() const
686
- {
687
- LirImm32Ins* l = (LirImm32Ins*)(this-LIR_IMM32_SLOTS+1);
688
- return l->v;
689
- }
690
-
691
- uint64_t LIns::constvalq() const
692
- {
693
- LirImm64Ins* l = (LirImm64Ins*)(this-LIR_IMM64_SLOTS+1);
694
- #ifdef AVMPLUS_UNALIGNED_ACCESS
695
- int* ptr = (int*)l->v;
696
- return *(const uint64_t*)ptr;
697
- #else
698
- union { uint64_t tmp; int32_t dst[2]; } u;
699
- #ifdef AVMPLUS_BIG_ENDIAN
700
- u.dst[0] = l->v[1];
701
- u.dst[1] = l->v[0];
702
- #else
703
- u.dst[0] = l->v[0];
704
- u.dst[1] = l->v[1];
705
- #endif
706
- return u.tmp;
707
- #endif
708
- }
709
-
710
- double LIns::constvalf() const
711
- {
712
- LirImm64Ins* l = (LirImm64Ins*)(this-LIR_IMM64_SLOTS+1);
713
- NanoAssert(isconstq());
714
- #ifdef AVMPLUS_UNALIGNED_ACCESS
715
- int* ptr = (int*)l->v;
716
- return *(const double*)ptr;
717
- #else
718
- union { uint32_t dst[2]; double tmpf; } u;
719
- #ifdef AVMPLUS_BIG_ENDIAN
720
- u.dst[0] = l->v[1];
721
- u.dst[1] = l->v[0];
722
- #else
723
- u.dst[0] = l->v[0];
724
- u.dst[1] = l->v[1];
725
- #endif
726
- return u.tmpf;
727
- #endif
728
- }
729
-
730
- size_t LIns::callInsWords() const
731
- {
732
- return LIR_CALL_SLOTS + argwords(argc());
733
- }
734
-
735
- const CallInfo* LIns::callInfo() const
736
- {
737
- LirCallIns* l = (LirCallIns*)(this-LIR_CALL_SLOTS+1);
738
- return l->ci;
739
- }
740
-
741
- // index args in r-l order. arg(0) is rightmost arg
742
- LIns* LIns::arg(uint32_t i)
743
- {
744
- NanoAssert(i < argc());
745
- LirCallIns* l = (LirCallIns*)(this-LIR_CALL_SLOTS+1);
746
- uint8_t* offs = (uint8_t*)l - (i+1);
747
- return deref(*offs);
748
- }
749
451
 
750
452
  LIns* LirWriter::ins2i(LOpcode v, LIns* oprnd1, int32_t imm)
751
453
  {
@@ -755,12 +457,11 @@ namespace nanojit
755
457
  bool insIsS16(LInsp i)
756
458
  {
757
459
  if (i->isconst()) {
758
- int c = i->constval();
460
+ int c = i->imm32();
759
461
  return isS16(c);
760
462
  }
761
463
  if (i->isop(LIR_cmov) || i->isop(LIR_qcmov)) {
762
- LInsp vals = i->oprnd2();
763
- return insIsS16(vals->oprnd1()) && insIsS16(vals->oprnd2());
464
+ return insIsS16(i->oprnd2()) && insIsS16(i->oprnd3());
764
465
  }
765
466
  if (i->isCmp())
766
467
  return true;
@@ -768,1411 +469,1559 @@ namespace nanojit
768
469
  return false;
769
470
  }
770
471
 
771
- LIns* ExprFilter::ins1(LOpcode v, LIns* i)
772
- {
773
- if (v == LIR_qlo) {
774
- if (i->isconstq())
775
- return insImm(int32_t(i->constvalq()));
776
- if (i->isop(LIR_qjoin))
777
- return i->oprnd1();
778
- }
779
- else if (v == LIR_qhi) {
780
- if (i->isconstq())
781
- return insImm(int32_t(i->constvalq()>>32));
782
- if (i->isop(LIR_qjoin))
783
- return i->oprnd2();
784
- }
785
- else if (i->isconst()) {
786
- int32_t c = i->constval();
787
- if (v == LIR_neg)
788
- return insImm(-c);
789
- if (v == LIR_not)
790
- return insImm(~c);
791
- }
792
- else if (v == i->opcode() && (v == LIR_not || v == LIR_neg || v == LIR_fneg)) {
793
- // not(not(x)) = x; neg(neg(x)) = x; fneg(fneg(x)) = x;
794
- return i->oprnd1();
795
- }
796
- /* [ed 8.27.08] this causes a big slowdown in gameoflife.as. why?
797
- else if (i->isconst()) {
798
- if (v == LIR_i2f) {
799
- return insImmf(i->constval());
800
- }
801
- else if (v == LIR_u2f) {
802
- return insImmf((uint32_t)i->constval());
472
+ LIns* ExprFilter::ins1(LOpcode v, LIns* i)
473
+ {
474
+ switch (v) {
475
+ case LIR_qlo:
476
+ if (i->isconstq())
477
+ return insImm(i->imm64_0());
478
+ if (i->isop(LIR_qjoin))
479
+ return i->oprnd1();
480
+ break;
481
+ case LIR_qhi:
482
+ if (i->isconstq())
483
+ return insImm(i->imm64_1());
484
+ if (i->isop(LIR_qjoin))
485
+ return i->oprnd2();
486
+ break;
487
+ case LIR_not:
488
+ if (i->isconst())
489
+ return insImm(~i->imm32());
490
+ involution:
491
+ if (v == i->opcode())
492
+ return i->oprnd1();
493
+ break;
494
+ case LIR_neg:
495
+ if (i->isconst())
496
+ return insImm(-i->imm32());
497
+ if (i->isop(LIR_sub)) // -(a-b) = b-a
498
+ return out->ins2(LIR_sub, i->oprnd2(), i->oprnd1());
499
+ goto involution;
500
+ case LIR_fneg:
501
+ if (i->isconstq())
502
+ return insImmf(-i->imm64f());
503
+ if (i->isop(LIR_fsub))
504
+ return out->ins2(LIR_fsub, i->oprnd2(), i->oprnd1());
505
+ goto involution;
506
+ case LIR_i2f:
507
+ if (i->isconst())
508
+ return insImmf(i->imm32());
509
+ break;
510
+ case LIR_u2f:
511
+ if (i->isconst())
512
+ return insImmf(uint32_t(i->imm32()));
513
+ break;
514
+ default:
515
+ ;
516
+ }
517
+
518
+ return out->ins1(v, i);
519
+ }
520
+
521
+ LIns* ExprFilter::ins2(LOpcode v, LIns* oprnd1, LIns* oprnd2)
522
+ {
523
+ NanoAssert(oprnd1 && oprnd2);
524
+ if (oprnd1 == oprnd2)
525
+ {
526
+ switch (v) {
527
+ case LIR_xor:
528
+ case LIR_sub:
529
+ case LIR_ult:
530
+ case LIR_ugt:
531
+ case LIR_gt:
532
+ case LIR_lt:
533
+ return insImm(0);
534
+ case LIR_or:
535
+ case LIR_and:
536
+ return oprnd1;
537
+ case LIR_le:
538
+ case LIR_ule:
539
+ case LIR_ge:
540
+ case LIR_uge:
541
+ // x <= x == 1; x >= x == 1
542
+ return insImm(1);
543
+ default:
544
+ ;
803
545
  }
804
- }*/
805
-
806
- // todo
807
- // -(a-b) = b-a
808
-
809
- return out->ins1(v, i);
810
- }
811
-
812
- LIns* ExprFilter::ins2(LOpcode v, LIns* oprnd1, LIns* oprnd2)
813
- {
814
- NanoAssert(oprnd1 && oprnd2);
815
- if (v == LIR_cmov || v == LIR_qcmov) {
816
- if (oprnd2->oprnd1() == oprnd2->oprnd2()) {
817
- // c ? a : a => a
818
- return oprnd2->oprnd1();
819
- }
820
- if (oprnd1->isconst()) {
821
- // const ? x : y => return x or y depending on const
822
- return oprnd1->constval() ? oprnd2->oprnd1() : oprnd2->oprnd2();
823
- }
824
- }
825
- if (oprnd1 == oprnd2)
826
- {
827
- if (v == LIR_xor || v == LIR_sub ||
828
- v == LIR_ult || v == LIR_ugt || v == LIR_gt || v == LIR_lt)
829
- return insImm(0);
830
- if (v == LIR_or || v == LIR_and)
831
- return oprnd1;
832
- if (v == LIR_le || v == LIR_ule || v == LIR_ge || v == LIR_uge) {
833
- // x <= x == 1; x >= x == 1
834
- return insImm(1);
835
- }
836
- }
837
- if (oprnd1->isconst() && oprnd2->isconst())
838
- {
839
- int c1 = oprnd1->constval();
840
- int c2 = oprnd2->constval();
841
- if (v == LIR_qjoin) {
842
- uint64_t q = c1 | uint64_t(c2)<<32;
843
- return insImmq(q);
844
- }
845
- if (v == LIR_eq)
846
- return insImm(c1 == c2);
847
- if (v == LIR_ov)
848
- return insImm((c2 != 0) && ((c1 + c2) <= c1));
849
- if (v == LIR_cs)
850
- return insImm((c2 != 0) && ((uint32_t(c1) + uint32_t(c2)) <= uint32_t(c1)));
851
- if (v == LIR_lt)
852
- return insImm(c1 < c2);
853
- if (v == LIR_gt)
854
- return insImm(c1 > c2);
855
- if (v == LIR_le)
856
- return insImm(c1 <= c2);
857
- if (v == LIR_ge)
858
- return insImm(c1 >= c2);
859
- if (v == LIR_ult)
860
- return insImm(uint32_t(c1) < uint32_t(c2));
861
- if (v == LIR_ugt)
862
- return insImm(uint32_t(c1) > uint32_t(c2));
863
- if (v == LIR_ule)
864
- return insImm(uint32_t(c1) <= uint32_t(c2));
865
- if (v == LIR_uge)
866
- return insImm(uint32_t(c1) >= uint32_t(c2));
867
- if (v == LIR_rsh)
868
- return insImm(int32_t(c1) >> int32_t(c2));
869
- if (v == LIR_lsh)
870
- return insImm(int32_t(c1) << int32_t(c2));
871
- if (v == LIR_ush)
872
- return insImm(uint32_t(c1) >> int32_t(c2));
873
- if (v == LIR_or)
546
+ }
547
+ if (oprnd1->isconst() && oprnd2->isconst())
548
+ {
549
+ int32_t c1 = oprnd1->imm32();
550
+ int32_t c2 = oprnd2->imm32();
551
+ double d;
552
+ int32_t r;
553
+ uint64_t q;
554
+
555
+ switch (v) {
556
+ case LIR_qjoin:
557
+ q = c1 | uint64_t(c2)<<32;
558
+ return insImmq(q);
559
+ case LIR_eq:
560
+ return insImm(c1 == c2);
561
+ case LIR_ov:
562
+ return insImm((c2 != 0) && ((c1 + c2) <= c1));
563
+ case LIR_lt:
564
+ return insImm(c1 < c2);
565
+ case LIR_gt:
566
+ return insImm(c1 > c2);
567
+ case LIR_le:
568
+ return insImm(c1 <= c2);
569
+ case LIR_ge:
570
+ return insImm(c1 >= c2);
571
+ case LIR_ult:
572
+ return insImm(uint32_t(c1) < uint32_t(c2));
573
+ case LIR_ugt:
574
+ return insImm(uint32_t(c1) > uint32_t(c2));
575
+ case LIR_ule:
576
+ return insImm(uint32_t(c1) <= uint32_t(c2));
577
+ case LIR_uge:
578
+ return insImm(uint32_t(c1) >= uint32_t(c2));
579
+ case LIR_rsh:
580
+ return insImm(int32_t(c1) >> int32_t(c2));
581
+ case LIR_lsh:
582
+ return insImm(int32_t(c1) << int32_t(c2));
583
+ case LIR_ush:
584
+ return insImm(uint32_t(c1) >> int32_t(c2));
585
+ case LIR_or:
874
586
  return insImm(uint32_t(c1) | int32_t(c2));
875
- if (v == LIR_and)
587
+ case LIR_and:
876
588
  return insImm(uint32_t(c1) & int32_t(c2));
877
- if (v == LIR_xor)
589
+ case LIR_xor:
878
590
  return insImm(uint32_t(c1) ^ int32_t(c2));
879
- }
880
- else if (oprnd1->isconstq() && oprnd2->isconstq())
881
- {
882
- double c1 = oprnd1->constvalf();
883
- double c2 = oprnd2->constvalf();
884
- if (v == LIR_feq)
885
- return insImm(c1 == c2);
886
- if (v == LIR_flt)
887
- return insImm(c1 < c2);
888
- if (v == LIR_fgt)
889
- return insImm(c1 > c2);
890
- if (v == LIR_fle)
891
- return insImm(c1 <= c2);
892
- if (v == LIR_fge)
893
- return insImm(c1 >= c2);
894
- }
895
- else if (oprnd1->isconst() && !oprnd2->isconst())
896
- {
897
- if (v == LIR_add || v == LIR_addp || v == LIR_mul ||
898
- v == LIR_fadd || v == LIR_fmul ||
899
- v == LIR_xor || v == LIR_or || v == LIR_and ||
900
- v == LIR_eq) {
901
- // move const to rhs
902
- LIns* t = oprnd2;
903
- oprnd2 = oprnd1;
904
- oprnd1 = t;
905
- }
906
- else if (v >= LIR_lt && v <= LIR_uge) {
907
- NanoStaticAssert((LIR_lt ^ 1) == LIR_gt);
908
- NanoStaticAssert((LIR_le ^ 1) == LIR_ge);
909
- NanoStaticAssert((LIR_ult ^ 1) == LIR_ugt);
910
- NanoStaticAssert((LIR_ule ^ 1) == LIR_uge);
911
-
912
- // move const to rhs, swap the operator
913
- LIns *t = oprnd2;
914
- oprnd2 = oprnd1;
915
- oprnd1 = t;
916
- v = LOpcode(v^1);
917
- }
918
- }
919
-
920
- if (oprnd2->isconst())
921
- {
922
- int c = oprnd2->constval();
923
- if (v == LIR_add && oprnd1->isop(LIR_add) && oprnd1->oprnd2()->isconst()) {
924
- // add(add(x,c1),c2) => add(x,c1+c2)
925
- c += oprnd1->oprnd2()->constval();
926
- oprnd2 = insImm(c);
927
- oprnd1 = oprnd1->oprnd1();
928
- }
929
- else if (v == LIR_sub && oprnd1->isop(LIR_add) && oprnd1->oprnd2()->isconst()) {
930
- // sub(add(x,c1),c2) => add(x,c1-c2)
931
- c = oprnd1->oprnd2()->constval() - c;
932
- oprnd2 = insImm(c);
933
- oprnd1 = oprnd1->oprnd1();
934
- v = LIR_add;
935
- }
936
- else if (v == LIR_rsh && c == 16 && oprnd1->isop(LIR_lsh) &&
937
- oprnd1->oprnd2()->isconstval(16)) {
938
- if (insIsS16(oprnd1->oprnd1())) {
939
- // rsh(lhs(x,16),16) == x, if x is S16
940
- return oprnd1->oprnd1();
941
- }
942
- }
943
- else if (v == LIR_ult) {
944
- if (oprnd1->isop(LIR_cmov) || oprnd1->isop(LIR_qcmov)) {
945
- LInsp a = oprnd1->oprnd2()->oprnd1();
946
- LInsp b = oprnd1->oprnd2()->oprnd2();
947
- if (a->isconst() && b->isconst()) {
948
- bool a_lt = uint32_t(a->constval()) < uint32_t(oprnd2->constval());
949
- bool b_lt = uint32_t(b->constval()) < uint32_t(oprnd2->constval());
950
- if (a_lt == b_lt)
951
- return insImm(a_lt);
952
- }
953
- }
954
- }
955
-
956
- if (c == 0)
957
- {
958
- if (v == LIR_add || v == LIR_addp || v == LIR_or || v == LIR_xor ||
959
- v == LIR_sub || v == LIR_lsh || v == LIR_rsh || v == LIR_ush)
960
- return oprnd1;
961
- else if (v == LIR_and || v == LIR_mul)
962
- return oprnd2;
963
- else if (v == LIR_eq && oprnd1->isop(LIR_or) &&
964
- oprnd1->oprnd2()->isconst() &&
965
- oprnd1->oprnd2()->constval() != 0) {
966
- // (x or c) != 0 if c != 0
967
- return insImm(0);
968
- }
969
- }
970
- else if (c == -1 || (c == 1 && oprnd1->isCmp())) {
971
- if (v == LIR_or) {
972
- // x | -1 = -1, cmp | 1 = 1
973
- return oprnd2;
974
- }
975
- else if (v == LIR_and) {
976
- // x & -1 = x, cmp & 1 = cmp
977
- return oprnd1;
978
- }
979
- }
980
- }
981
-
982
- LInsp i;
983
- if (v == LIR_qjoin && oprnd1->isop(LIR_qlo) && oprnd2->isop(LIR_qhi)
984
- && (i = oprnd1->oprnd1()) == oprnd2->oprnd1()) {
985
- // qjoin(qlo(x),qhi(x)) == x
986
- return i;
987
- }
988
-
989
- return out->ins2(v, oprnd1, oprnd2);
990
- }
991
-
992
- LIns* ExprFilter::insGuard(LOpcode v, LInsp c, LInsp x)
993
- {
994
- if (v == LIR_xt || v == LIR_xf) {
995
- if (c->isconst()) {
996
- if ((v == LIR_xt && !c->constval()) || (v == LIR_xf && c->constval())) {
997
- return 0; // no guard needed
998
- }
999
- else {
591
+ case LIR_add:
592
+ d = double(c1) + double(c2);
593
+ fold:
594
+ r = int32_t(d);
595
+ if (r == d)
596
+ return insImm(r);
597
+ break;
598
+ case LIR_sub:
599
+ d = double(c1) - double(c2);
600
+ goto fold;
601
+ case LIR_mul:
602
+ d = double(c1) * double(c2);
603
+ goto fold;
604
+ case LIR_div:
605
+ case LIR_mod:
606
+ // We can't easily fold div and mod, since folding div makes it
607
+ // impossible to calculate the mod that refers to it. The
608
+ // frontend shouldn't emit div and mod with constant operands.
609
+ NanoAssert(0);
610
+ default:
611
+ ;
612
+ }
613
+ }
614
+ else if (oprnd1->isconstq() && oprnd2->isconstq())
615
+ {
616
+ double c1 = oprnd1->imm64f();
617
+ double c2 = oprnd2->imm64f();
618
+ switch (v) {
619
+ case LIR_feq:
620
+ return insImm(c1 == c2);
621
+ case LIR_flt:
622
+ return insImm(c1 < c2);
623
+ case LIR_fgt:
624
+ return insImm(c1 > c2);
625
+ case LIR_fle:
626
+ return insImm(c1 <= c2);
627
+ case LIR_fge:
628
+ return insImm(c1 >= c2);
629
+ case LIR_fadd:
630
+ return insImmf(c1 + c2);
631
+ case LIR_fsub:
632
+ return insImmf(c1 - c2);
633
+ case LIR_fmul:
634
+ return insImmf(c1 * c2);
635
+ case LIR_fdiv:
636
+ return insImmf(c1 / c2);
637
+ default:
638
+ ;
639
+ }
640
+ }
641
+ else if (oprnd1->isconst() && !oprnd2->isconst())
642
+ {
643
+ LIns* t;
644
+ switch (v) {
645
+ case LIR_add:
646
+ case LIR_iaddp:
647
+ case LIR_qaddp:
648
+ case LIR_mul:
649
+ case LIR_fadd:
650
+ case LIR_fmul:
651
+ case LIR_xor:
652
+ case LIR_or:
653
+ case LIR_and:
654
+ case LIR_eq:
655
+ // move const to rhs
656
+ t = oprnd2;
657
+ oprnd2 = oprnd1;
658
+ oprnd1 = t;
659
+ break;
660
+ default:
661
+ if (v >= LIR_lt && v <= LIR_uge) {
662
+ NanoStaticAssert((LIR_lt ^ 1) == LIR_gt);
663
+ NanoStaticAssert((LIR_le ^ 1) == LIR_ge);
664
+ NanoStaticAssert((LIR_ult ^ 1) == LIR_ugt);
665
+ NanoStaticAssert((LIR_ule ^ 1) == LIR_uge);
666
+
667
+ // move const to rhs, swap the operator
668
+ LIns *t = oprnd2;
669
+ oprnd2 = oprnd1;
670
+ oprnd1 = t;
671
+ v = LOpcode(v^1);
672
+ }
673
+ break;
674
+ }
675
+ }
676
+
677
+ if (oprnd2->isconst())
678
+ {
679
+ int c = oprnd2->imm32();
680
+ switch (v) {
681
+ case LIR_add:
682
+ if (oprnd1->isop(LIR_add) && oprnd1->oprnd2()->isconst()) {
683
+ // add(add(x,c1),c2) => add(x,c1+c2)
684
+ c += oprnd1->oprnd2()->imm32();
685
+ oprnd2 = insImm(c);
686
+ oprnd1 = oprnd1->oprnd1();
687
+ }
688
+ break;
689
+ case LIR_sub:
690
+ if (oprnd1->isop(LIR_add) && oprnd1->oprnd2()->isconst()) {
691
+ // sub(add(x,c1),c2) => add(x,c1-c2)
692
+ c = oprnd1->oprnd2()->imm32() - c;
693
+ oprnd2 = insImm(c);
694
+ oprnd1 = oprnd1->oprnd1();
695
+ v = LIR_add;
696
+ }
697
+ break;
698
+ case LIR_rsh:
699
+ if (c == 16 && oprnd1->isop(LIR_lsh) &&
700
+ oprnd1->oprnd2()->isconstval(16) &&
701
+ insIsS16(oprnd1->oprnd1())) {
702
+ // rsh(lhs(x,16),16) == x, if x is S16
703
+ return oprnd1->oprnd1();
704
+ }
705
+ break;
706
+ default:
707
+ ;
708
+ }
709
+
710
+ if (c == 0) {
711
+ switch (v) {
712
+ case LIR_add:
713
+ case LIR_iaddp:
714
+ case LIR_or:
715
+ case LIR_xor:
716
+ case LIR_sub:
717
+ case LIR_lsh:
718
+ case LIR_rsh:
719
+ case LIR_ush:
720
+ return oprnd1;
721
+ case LIR_and:
722
+ case LIR_mul:
723
+ return oprnd2;
724
+ case LIR_eq:
725
+ if (oprnd1->isop(LIR_or) &&
726
+ oprnd1->oprnd2()->isconst() &&
727
+ oprnd1->oprnd2()->imm32() != 0) {
728
+ // (x or c) != 0 if c != 0
729
+ return insImm(0);
730
+ }
731
+ default:
732
+ ;
733
+ }
734
+ } else if (c == -1 || (c == 1 && oprnd1->isCmp())) {
735
+ switch (v) {
736
+ case LIR_or:
737
+ // x | -1 = -1, cmp | 1 = 1
738
+ return oprnd2;
739
+ case LIR_and:
740
+ // x & -1 = x, cmp & 1 = cmp
741
+ return oprnd1;
742
+ default:
743
+ ;
744
+ }
745
+ }
746
+ }
747
+
748
+ LInsp i;
749
+ if (v == LIR_qjoin && oprnd1->isop(LIR_qlo) && oprnd2->isop(LIR_qhi) &&
750
+ (i = oprnd1->oprnd1()) == oprnd2->oprnd1()) {
751
+ // qjoin(qlo(x),qhi(x)) == x
752
+ return i;
753
+ }
754
+
755
+ return out->ins2(v, oprnd1, oprnd2);
756
+ }
757
+
758
+ LIns* ExprFilter::ins3(LOpcode v, LIns* oprnd1, LIns* oprnd2, LIns* oprnd3)
759
+ {
760
+ NanoAssert(oprnd1 && oprnd2 && oprnd3);
761
+ NanoAssert(v == LIR_cmov || v == LIR_qcmov);
762
+ if (oprnd2 == oprnd3) {
763
+ // c ? a : a => a
764
+ return oprnd2;
765
+ }
766
+ if (oprnd1->isconst()) {
767
+ // const ? x : y => return x or y depending on const
768
+ return oprnd1->imm32() ? oprnd2 : oprnd3;
769
+ }
770
+ if (oprnd1->isop(LIR_eq) &&
771
+ ((oprnd1->oprnd2() == oprnd2 && oprnd1->oprnd1() == oprnd3) ||
772
+ (oprnd1->oprnd1() == oprnd2 && oprnd1->oprnd2() == oprnd3))) {
773
+ // (y == x) ? x : y => y
774
+ // (x == y) ? x : y => y
775
+ return oprnd3;
776
+ }
777
+
778
+ return out->ins3(v, oprnd1, oprnd2, oprnd3);
779
+ }
780
+
781
+ LIns* ExprFilter::insGuard(LOpcode v, LInsp c, GuardRecord *gr)
782
+ {
783
+ if (v == LIR_xt || v == LIR_xf) {
784
+ if (c->isconst()) {
785
+ if ((v == LIR_xt && !c->imm32()) || (v == LIR_xf && c->imm32())) {
786
+ return 0; // no guard needed
787
+ }
788
+ else {
1000
789
  #ifdef JS_TRACER
1001
- // We're emitting a guard that will always fail. Any code
1002
- // emitted after this guard is dead code. We could
1003
- // silently optimize out the rest of the emitted code, but
1004
- // this could indicate a performance problem or other bug,
1005
- // so assert in debug builds.
1006
- NanoAssertMsg(0, "Constantly false guard detected");
790
+ // We're emitting a guard that will always fail. Any code
791
+ // emitted after this guard is dead code. We could
792
+ // silently optimize out the rest of the emitted code, but
793
+ // this could indicate a performance problem or other bug,
794
+ // so assert in debug builds.
795
+ NanoAssertMsg(0, "Constantly false guard detected");
1007
796
  #endif
1008
- return out->insGuard(LIR_x, out->insImm(1), x);
1009
- }
1010
- }
1011
- else {
1012
- NanoStaticAssert((LIR_xt ^ 1) == LIR_xf);
1013
- while (c->isop(LIR_eq) && c->oprnd1()->isCmp() &&
1014
- c->oprnd2()->isconstval(0)) {
1015
- // xt(eq(cmp,0)) => xf(cmp) or xf(eq(cmp,0)) => xt(cmp)
1016
- v = LOpcode(v^1);
1017
- c = c->oprnd1();
1018
- }
1019
- }
1020
- }
1021
- return out->insGuard(v, c, x);
1022
- }
797
+ return out->insGuard(LIR_x, NULL, gr);
798
+ }
799
+ }
800
+ else {
801
+ NanoStaticAssert((LIR_xt ^ 1) == LIR_xf);
802
+ while (c->isop(LIR_eq) && c->oprnd1()->isCmp() &&
803
+ c->oprnd2()->isconstval(0)) {
804
+ // xt(eq(cmp,0)) => xf(cmp) or xf(eq(cmp,0)) => xt(cmp)
805
+ v = LOpcode(v^1);
806
+ c = c->oprnd1();
807
+ }
808
+ }
809
+ }
810
+ return out->insGuard(v, c, gr);
811
+ }
1023
812
 
1024
813
  LIns* ExprFilter::insBranch(LOpcode v, LIns *c, LIns *t)
1025
814
  {
1026
- if (v == LIR_jt || v == LIR_jf) {
815
+ switch (v) {
816
+ case LIR_jt:
817
+ case LIR_jf:
1027
818
  while (c->isop(LIR_eq) && c->oprnd1()->isCmp() && c->oprnd2()->isconstval(0)) {
1028
819
  // jt(eq(cmp,0)) => jf(cmp) or jf(eq(cmp,0)) => jt(cmp)
1029
820
  v = LOpcode(v ^ 1);
1030
821
  c = c->oprnd1();
1031
822
  }
823
+ break;
824
+ default:
825
+ ;
1032
826
  }
1033
827
  return out->insBranch(v, c, t);
1034
828
  }
1035
829
 
1036
- LIns* LirWriter::insLoadi(LIns *base, int disp)
1037
- {
1038
- return insLoad(LIR_ld,base,disp);
830
+ LIns* ExprFilter::insLoad(LOpcode op, LIns* base, int32_t off) {
831
+ if (base->isconstp() && !isS8(off)) {
832
+ // if the effective address is constant, then transform:
833
+ // ld const[bigconst] => ld (const+bigconst)[0]
834
+ // note: we don't do this optimization for <8bit field offsets,
835
+ // under the assumption that we're more likely to CSE-match the
836
+ // constant base address if we dont const-fold small offsets.
837
+ uintptr_t p = (uintptr_t)base->constvalp() + off;
838
+ return out->insLoad(op, insImmPtr((void*)p), 0);
839
+ }
840
+ return out->insLoad(op, base, off);
841
+ }
842
+
843
+ LIns* LirWriter::ins_eq0(LIns* oprnd1)
844
+ {
845
+ return ins2i(LIR_eq, oprnd1, 0);
846
+ }
847
+
848
+ LIns* LirWriter::ins_peq0(LIns* oprnd1)
849
+ {
850
+ return ins2(LIR_peq, oprnd1, insImmWord(0));
851
+ }
852
+
853
+ LIns* LirWriter::ins_i2p(LIns* intIns)
854
+ {
855
+ #ifdef NANOJIT_64BIT
856
+ return ins1(LIR_i2q, intIns);
857
+ #else
858
+ return intIns;
859
+ #endif
860
+ }
861
+
862
+ LIns* LirWriter::ins_u2p(LIns* uintIns)
863
+ {
864
+ #ifdef NANOJIT_64BIT
865
+ return ins1(LIR_u2q, uintIns);
866
+ #else
867
+ return uintIns;
868
+ #endif
869
+ }
870
+
871
+ LIns* LirWriter::qjoin(LInsp lo, LInsp hi)
872
+ {
873
+ return ins2(LIR_qjoin, lo, hi);
874
+ }
875
+
876
+ LIns* LirWriter::insImmWord(intptr_t value)
877
+ {
878
+ #ifdef NANOJIT_64BIT
879
+ return insImmq(value);
880
+ #else
881
+ return insImm(value);
882
+ #endif
883
+ }
884
+
885
+ LIns* LirWriter::insImmPtr(const void *ptr)
886
+ {
887
+ #ifdef NANOJIT_64BIT
888
+ return insImmq((uint64_t)ptr);
889
+ #else
890
+ return insImm((int32_t)ptr);
891
+ #endif
892
+ }
893
+
894
+ LIns* LirWriter::ins_choose(LIns* cond, LIns* iftrue, LIns* iffalse)
895
+ {
896
+ // if not a conditional, make it implicitly an ==0 test (then flop results)
897
+ if (!cond->isCmp())
898
+ {
899
+ cond = ins_eq0(cond);
900
+ LInsp tmp = iftrue;
901
+ iftrue = iffalse;
902
+ iffalse = tmp;
903
+ }
904
+
905
+ if (avmplus::AvmCore::use_cmov())
906
+ return ins3((iftrue->isQuad() || iffalse->isQuad()) ? LIR_qcmov : LIR_cmov, cond, iftrue, iffalse);
907
+
908
+ LInsp ncond = ins1(LIR_neg, cond); // cond ? -1 : 0
909
+ return ins2(LIR_or,
910
+ ins2(LIR_and, iftrue, ncond),
911
+ ins2(LIR_and, iffalse, ins1(LIR_not, ncond)));
912
+ }
913
+
914
+ LIns* LirBufWriter::insCall(const CallInfo *ci, LInsp args[])
915
+ {
916
+ static const LOpcode k_callmap[] = {
917
+ // ARGSIZE_NONE ARGSIZE_F ARGSIZE_LO ARGSIZE_Q (4) (5) ARGSIZE_U (7)
918
+ LIR_pcall, LIR_fcall, LIR_icall, LIR_qcall, LIR_pcall, LIR_pcall, LIR_icall, LIR_pcall
919
+ };
920
+
921
+ uint32_t argt = ci->_argtypes;
922
+ LOpcode op = k_callmap[argt & ARGSIZE_MASK_ANY];
923
+ NanoAssert(op != LIR_skip); // LIR_skip here is just an error condition
924
+
925
+ ArgSize sizes[MAXARGS];
926
+ int32_t argc = ci->get_sizes(sizes);
927
+
928
+ if (AvmCore::config.soft_float) {
929
+ if (op == LIR_fcall)
930
+ op = LIR_callh;
931
+ }
932
+
933
+ NanoAssert(argc <= (int)MAXARGS);
934
+
935
+ // Lay the call parameters out (in reverse order).
936
+ // Nb: this must be kept in sync with arg().
937
+ LInsp* newargs = (LInsp*)_buf->makeRoom(argc*sizeof(LInsp) + sizeof(LInsC)); // args + call
938
+ for (int32_t i = 0; i < argc; i++)
939
+ newargs[argc - i - 1] = args[i];
940
+
941
+ // Write the call instruction itself.
942
+ LInsC* insC = (LInsC*)(uintptr_t(newargs) + argc*sizeof(LInsp));
943
+ LIns* ins = insC->getLIns();
944
+ #ifndef NANOJIT_64BIT
945
+ ins->initLInsC(op==LIR_callh ? LIR_icall : op, argc, ci);
946
+ #else
947
+ ins->initLInsC(op, argc, ci);
948
+ #endif
949
+ return ins;
950
+ }
951
+
952
+ using namespace avmplus;
953
+
954
+ StackFilter::StackFilter(LirFilter *in, Allocator& alloc, LirBuffer *lirbuf, LInsp sp, LInsp rp)
955
+ : LirFilter(in), lirbuf(lirbuf), sp(sp), rp(rp), spStk(alloc), rpStk(alloc),
956
+ spTop(0), rpTop(0)
957
+ {}
958
+
959
+ bool StackFilter::ignoreStore(LInsp ins, int top, BitSet* stk)
960
+ {
961
+ bool ignore = false;
962
+ int d = ins->disp() >> 2;
963
+ if (d >= top) {
964
+ ignore = true;
965
+ } else {
966
+ d = top - d;
967
+ if (ins->oprnd1()->isQuad()) {
968
+ // storing 8 bytes
969
+ if (stk->get(d) && stk->get(d-1)) {
970
+ ignore = true;
971
+ } else {
972
+ stk->set(d);
973
+ stk->set(d-1);
974
+ }
975
+ }
976
+ else {
977
+ // storing 4 bytes
978
+ if (stk->get(d)) {
979
+ ignore = true;
980
+ } else {
981
+ stk->set(d);
982
+ }
983
+ }
984
+ }
985
+ return ignore;
986
+ }
987
+
988
+ LInsp StackFilter::read()
989
+ {
990
+ for (;;)
991
+ {
992
+ LInsp i = in->read();
993
+ if (i->isStore())
994
+ {
995
+ LInsp base = i->oprnd2();
996
+
997
+ if (base == sp) {
998
+ if (ignoreStore(i, spTop, &spStk))
999
+ continue;
1000
+
1001
+ } else if (base == rp) {
1002
+ if (ignoreStore(i, rpTop, &rpStk))
1003
+ continue;
1004
+ }
1005
+ }
1006
+ /*
1007
+ * NB: If there is a backward branch other than the loop-restart branch, this is
1008
+ * going to be wrong. Unfortunately there doesn't seem to be an easy way to detect
1009
+ * such branches. Just do not create any.
1010
+ */
1011
+ else if (i->isGuard())
1012
+ {
1013
+ spStk.reset();
1014
+ rpStk.reset();
1015
+ getTops(i, spTop, rpTop);
1016
+ spTop >>= 2;
1017
+ rpTop >>= 2;
1018
+ }
1019
+
1020
+ return i;
1021
+ }
1022
+ }
1023
+
1024
+ //
1025
+ // inlined/separated version of SuperFastHash
1026
+ // This content is copyrighted by Paul Hsieh, For reference see : http://www.azillionmonkeys.com/qed/hash.html
1027
+ //
1028
+ inline uint32_t _hash8(uint32_t hash, const uint8_t data)
1029
+ {
1030
+ hash += data;
1031
+ hash ^= hash << 10;
1032
+ hash += hash >> 1;
1033
+ return hash;
1034
+ }
1035
+
1036
+ inline uint32_t _hash32(uint32_t hash, const uint32_t data)
1037
+ {
1038
+ const uint32_t dlo = data & 0xffff;
1039
+ const uint32_t dhi = data >> 16;
1040
+ hash += dlo;
1041
+ const uint32_t tmp = (dhi << 11) ^ hash;
1042
+ hash = (hash << 16) ^ tmp;
1043
+ hash += hash >> 11;
1044
+ return hash;
1045
+ }
1046
+
1047
+ inline uint32_t _hashptr(uint32_t hash, const void* data)
1048
+ {
1049
+ #ifdef NANOJIT_64BIT
1050
+ hash = _hash32(hash, uint32_t(uintptr_t(data) >> 32));
1051
+ hash = _hash32(hash, uint32_t(uintptr_t(data)));
1052
+ return hash;
1053
+ #else
1054
+ return _hash32(hash, uint32_t(data));
1055
+ #endif
1056
+ }
1057
+
1058
+ inline uint32_t _hashfinish(uint32_t hash)
1059
+ {
1060
+ /* Force "avalanching" of final 127 bits */
1061
+ hash ^= hash << 3;
1062
+ hash += hash >> 5;
1063
+ hash ^= hash << 4;
1064
+ hash += hash >> 17;
1065
+ hash ^= hash << 25;
1066
+ hash += hash >> 6;
1067
+ return hash;
1068
+ }
1069
+
1070
+ LInsHashSet::LInsHashSet(Allocator& alloc) :
1071
+ m_cap(kInitialCap), alloc(alloc)
1072
+ {
1073
+ m_list = new (alloc) LInsp[m_cap];
1074
+ clear();
1075
+ }
1076
+
1077
+ void LInsHashSet::clear() {
1078
+ VMPI_memset(m_list, 0, sizeof(LInsp)*m_cap);
1079
+ m_used = 0;
1080
+ }
1081
+
1082
+
1083
+ inline uint32_t LInsHashSet::hashimm(int32_t a) {
1084
+ return _hashfinish(_hash32(0,a));
1085
+ }
1086
+
1087
+ inline uint32_t LInsHashSet::hashimmq(uint64_t a) {
1088
+ uint32_t hash = _hash32(0, uint32_t(a >> 32));
1089
+ return _hashfinish(_hash32(hash, uint32_t(a)));
1090
+ }
1091
+
1092
+ inline uint32_t LInsHashSet::hash1(LOpcode op, LInsp a) {
1093
+ uint32_t hash = _hash8(0,uint8_t(op));
1094
+ return _hashfinish(_hashptr(hash, a));
1095
+ }
1096
+
1097
+ inline uint32_t LInsHashSet::hash2(LOpcode op, LInsp a, LInsp b) {
1098
+ uint32_t hash = _hash8(0,uint8_t(op));
1099
+ hash = _hashptr(hash, a);
1100
+ return _hashfinish(_hashptr(hash, b));
1101
+ }
1102
+
1103
+ inline uint32_t LInsHashSet::hash3(LOpcode op, LInsp a, LInsp b, LInsp c) {
1104
+ uint32_t hash = _hash8(0,uint8_t(op));
1105
+ hash = _hashptr(hash, a);
1106
+ hash = _hashptr(hash, b);
1107
+ return _hashfinish(_hashptr(hash, c));
1108
+ }
1109
+
1110
+ inline uint32_t LInsHashSet::hashLoad(LOpcode op, LInsp a, int32_t d) {
1111
+ uint32_t hash = _hash8(0,uint8_t(op));
1112
+ hash = _hashptr(hash, a);
1113
+ return _hashfinish(_hash32(hash, d));
1114
+ }
1115
+
1116
+ inline uint32_t LInsHashSet::hashcall(const CallInfo *ci, uint32_t argc, LInsp args[]) {
1117
+ uint32_t hash = _hashptr(0, ci);
1118
+ for (int32_t j=argc-1; j >= 0; j--)
1119
+ hash = _hashptr(hash,args[j]);
1120
+ return _hashfinish(hash);
1121
+ }
1122
+
1123
+ uint32_t LInsHashSet::hashcode(LInsp i)
1124
+ {
1125
+ const LOpcode op = i->opcode();
1126
+ uint32_t operands = operandCount[i->opcode()];
1127
+
1128
+ switch (operands) {
1129
+ case 0:
1130
+ switch (op) {
1131
+ case LIR_int:
1132
+ return hashimm(i->imm32());
1133
+ case LIR_float:
1134
+ case LIR_quad:
1135
+ return hashimmq(i->imm64());
1136
+ default:
1137
+ NanoAssert(i->isCall());
1138
+ LInsp args[MAXARGS];
1139
+ uint32_t argc = i->argc();
1140
+ NanoAssert(argc < MAXARGS);
1141
+ for (uint32_t j=0; j < argc; j++)
1142
+ args[j] = i->arg(j);
1143
+ return hashcall(i->callInfo(), argc, args);
1144
+ }
1145
+ case 1:
1146
+ return (repKinds[op] == LRK_Ld)
1147
+ ? hashLoad(op, i->oprnd1(), i->disp())
1148
+ : hash1(op, i->oprnd1());
1149
+ case 2:
1150
+ return hash2(op, i->oprnd1(), i->oprnd2());
1151
+ default:
1152
+ NanoAssert(i->isLInsOp3());
1153
+ return hash3(op, i->oprnd1(), i->oprnd2(), i->oprnd3());
1154
+ }
1155
+ }
1156
+
1157
+ inline bool LInsHashSet::equals(LInsp a, LInsp b)
1158
+ {
1159
+ if (a == b)
1160
+ return true;
1161
+
1162
+ const LOpcode op = a->opcode();
1163
+ if (op != b->opcode())
1164
+ return false;
1165
+
1166
+ const uint32_t operands = operandCount[op];
1167
+ switch (operands) {
1168
+ case 0:
1169
+ switch (op) {
1170
+ case LIR_int:
1171
+ return a->imm32() == b->imm32();
1172
+ case LIR_float:
1173
+ case LIR_quad:
1174
+ return a->imm64() == b->imm64();
1175
+ default:
1176
+ NanoAssert(a->isCall());
1177
+ if (a->callInfo() != b->callInfo())
1178
+ return false;
1179
+ uint32_t argc = a->argc();
1180
+ NanoAssert(argc == b->argc());
1181
+ for (uint32_t i = 0; i < argc; i++)
1182
+ if (a->arg(i) != b->arg(i))
1183
+ return false;
1184
+ return true;
1185
+ }
1186
+ case 1:
1187
+ if (repKinds[op] == LRK_Ld)
1188
+ return (a->oprnd1() == b->oprnd1() && a->disp() == b->disp());
1189
+ return a->oprnd1() == b->oprnd1();
1190
+ case 2:
1191
+ return a->oprnd1() == b->oprnd1() && a->oprnd2() == b->oprnd2();
1192
+ default:
1193
+ NanoAssert(a->isLInsOp3());
1194
+ return a->oprnd1() == b->oprnd1() && a->oprnd2() == b->oprnd2() && a->oprnd3() == b->oprnd3();
1195
+ }
1196
+ }
1197
+
1198
+ void LInsHashSet::grow()
1199
+ {
1200
+ const uint32_t newcap = m_cap << 1;
1201
+ LInsp *newlist = new (alloc) LInsp[newcap];
1202
+ VMPI_memset(newlist, 0, newcap * sizeof(LInsp));
1203
+ LInsp *list = m_list;
1204
+ for (uint32_t i=0, n=m_cap; i < n; i++) {
1205
+ LInsp name = list[i];
1206
+ if (!name) continue;
1207
+ uint32_t j = find(name, hashcode(name), newlist, newcap);
1208
+ newlist[j] = name;
1209
+ }
1210
+ m_cap = newcap;
1211
+ m_list = newlist;
1212
+ }
1213
+
1214
+ uint32_t LInsHashSet::find(LInsp name, uint32_t hash, const LInsp *list, uint32_t cap)
1215
+ {
1216
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1217
+
1218
+ uint32_t n = 7 << 1;
1219
+ hash &= bitmask;
1220
+ LInsp k;
1221
+ while ((k = list[hash]) != NULL && !equals(k, name))
1222
+ {
1223
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1224
+ }
1225
+ return hash;
1226
+ }
1227
+
1228
+ LInsp LInsHashSet::add(LInsp name, uint32_t k)
1229
+ {
1230
+ // this is relatively short-lived so let's try a more aggressive load factor
1231
+ // in the interest of improving performance
1232
+ if (((m_used+1)<<1) >= m_cap) // 0.50
1233
+ {
1234
+ grow();
1235
+ k = find(name, hashcode(name), m_list, m_cap);
1236
+ }
1237
+ NanoAssert(!m_list[k]);
1238
+ m_used++;
1239
+ return m_list[k] = name;
1240
+ }
1241
+
1242
+ LInsp LInsHashSet::find32(int32_t a, uint32_t &i)
1243
+ {
1244
+ uint32_t cap = m_cap;
1245
+ const LInsp *list = m_list;
1246
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1247
+ uint32_t hash = hashimm(a) & bitmask;
1248
+ uint32_t n = 7 << 1;
1249
+ LInsp k;
1250
+ while ((k = list[hash]) != NULL &&
1251
+ (!k->isconst() || k->imm32() != a))
1252
+ {
1253
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1254
+ }
1255
+ i = hash;
1256
+ return k;
1257
+ }
1258
+
1259
+ LInsp LInsHashSet::find64(LOpcode v, uint64_t a, uint32_t &i)
1260
+ {
1261
+ uint32_t cap = m_cap;
1262
+ const LInsp *list = m_list;
1263
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1264
+ uint32_t hash = hashimmq(a) & bitmask;
1265
+ uint32_t n = 7 << 1;
1266
+ LInsp k;
1267
+ while ((k = list[hash]) != NULL &&
1268
+ (k->opcode() != v || k->imm64() != a))
1269
+ {
1270
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1271
+ }
1272
+ i = hash;
1273
+ return k;
1039
1274
  }
1040
1275
 
1041
- LIns* LirWriter::insLoad(LOpcode op, LIns *base, int disp)
1042
- {
1043
- return insLoad(op, base, insImm(disp));
1044
- }
1045
-
1046
- LIns* LirWriter::store(LInsp value, LInsp base, int32_t d)
1276
+ LInsp LInsHashSet::find1(LOpcode op, LInsp a, uint32_t &i)
1047
1277
  {
1048
- return isS8(d) ? insStorei(value, base, d)
1049
- : insStore(value, base, insImm(d));
1278
+ uint32_t cap = m_cap;
1279
+ const LInsp *list = m_list;
1280
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1281
+ uint32_t hash = hash1(op,a) & bitmask;
1282
+ uint32_t n = 7 << 1;
1283
+ LInsp k;
1284
+ while ((k = list[hash]) != NULL &&
1285
+ (k->opcode() != op || k->oprnd1() != a))
1286
+ {
1287
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1288
+ }
1289
+ i = hash;
1290
+ return k;
1050
1291
  }
1051
1292
 
1052
- LIns* LirWriter::ins_eq0(LIns* oprnd1)
1053
- {
1054
- return ins2i(LIR_eq, oprnd1, 0);
1055
- }
1056
-
1057
- LIns* LirWriter::insImmf(double f)
1293
+ LInsp LInsHashSet::find2(LOpcode op, LInsp a, LInsp b, uint32_t &i)
1058
1294
  {
1059
- union {
1060
- double f;
1061
- uint64_t q;
1062
- } u;
1063
- u.f = f;
1064
- return insImmq(u.q);
1065
- }
1066
-
1067
- LIns* LirWriter::qjoin(LInsp lo, LInsp hi)
1068
- {
1069
- return ins2(LIR_qjoin, lo, hi);
1070
- }
1071
-
1072
- LIns* LirWriter::insImmPtr(const void *ptr)
1073
- {
1074
- return sizeof(ptr) == 8 ? insImmq((uintptr_t)ptr) : insImm((intptr_t)ptr);
1075
- }
1076
-
1077
- LIns* LirWriter::ins_choose(LIns* cond, LIns* iftrue, LIns* iffalse)
1078
- {
1079
- // if not a conditional, make it implicitly an ==0 test (then flop results)
1080
- if (!cond->isCmp())
1081
- {
1082
- cond = ins_eq0(cond);
1083
- LInsp tmp = iftrue;
1084
- iftrue = iffalse;
1085
- iffalse = tmp;
1086
- }
1087
-
1088
- if (avmplus::AvmCore::use_cmov())
1089
- {
1090
- return ins2((iftrue->isQuad() || iffalse->isQuad()) ? LIR_qcmov : LIR_cmov, cond, ins2(LIR_2, iftrue, iffalse));
1091
- }
1092
-
1093
- // @todo -- it might be better to use a short conditional branch rather than
1094
- // the bit-twiddling on systems that don't provide a conditional move instruction.
1095
- LInsp ncond = ins1(LIR_neg, cond); // cond ? -1 : 0
1096
- return ins2(LIR_or,
1097
- ins2(LIR_and, iftrue, ncond),
1098
- ins2(LIR_and, iffalse, ins1(LIR_not, ncond)));
1099
- }
1100
-
1101
- LIns* LirBufWriter::insCall(const CallInfo *ci, LInsp args[])
1102
- {
1103
- static const LOpcode k_callmap[] = { LIR_call, LIR_fcall, LIR_call, LIR_callh };
1104
- static const LOpcode k_callimap[] = { LIR_calli, LIR_fcalli, LIR_calli, LIR_skip };
1105
-
1106
- uint32_t argt = ci->_argtypes;
1107
- LOpcode op = (ci->isIndirect() ? k_callimap : k_callmap)[argt & 3];
1108
- NanoAssert(op != LIR_skip); // LIR_skip here is just an error condition
1109
-
1110
- ArgSize sizes[MAXARGS];
1111
- int32_t argc = ci->get_sizes(sizes);
1112
-
1113
- if (AvmCore::config.soft_float) {
1114
- if (op == LIR_fcall)
1115
- op = LIR_callh;
1116
- }
1117
-
1118
- //
1119
- // An example of the what we're trying to serialize:
1120
- //
1121
- // byte word
1122
- // ---- ----
1123
- // N [ arg tramp #0 ------------------------ ] K
1124
- // N+4 [ arg tramp #1 ------------------------ ] K+1
1125
- // N+8 [ arg tramp #2 ------------------------ ] K+2
1126
- // N+12 [ arg tramp #3 ------------------------ ] K+3
1127
- // N+16 [ argoff3 | argoff2 | argoff1 | argoff0 ] K+4
1128
- // N+20 [ CallInfo* --------------------------- ] K+5
1129
- // N+24 [ LIR_call ---------| imm8a=0 | imm8b=4 ] K+6
1130
- //
1131
- // In this example:
1132
- // 32 bit words
1133
- // 'argc' = 4
1134
- // 'words' = argwords(argc) = 1 (word K+4 )
1135
- // 'LIR_CALL_SLOTS' = 2 (words K+5 - K+6)
1136
- // 'insSz' = 1+2 = 3 (words K+4 - K+6)
1137
- // 'from' = next + (insSz - 1) (word K+6 )
1138
- //
1139
-
1140
- NanoAssert(argc <= (int)MAXARGS);
1141
- uint32_t words = argwords(argc);
1142
- int32_t insSz = words + LIR_CALL_SLOTS; // words need for offsets + size of instruction
1143
- ensureRoom(argc * LIR_FAR_SLOTS + insSz); // argc=# possible tramps for args
1144
-
1145
- // Argument deltas are calculated relative to the final LIns,
1146
- // which is the last word in the cluster.
1147
- LInsp from = _buf->next() + argc * LIR_FAR_SLOTS + insSz - 1;
1148
- for (int32_t i=0; i < argc; i++)
1149
- makeReachable(args[i], from);
1150
-
1151
- // skip 'words' needed for call parameters
1152
- LirCallIns *l = (LirCallIns*) (_buf->next()+words);
1153
- l->ci = ci;
1154
-
1155
- // call parameters laid in reverse order
1156
- uint8_t* offs = (uint8_t*)l;
1157
- for (int32_t i=0; i < argc; i++)
1158
- *--offs = (uint8_t) l->i.reference(args[i]);
1159
- NanoAssert((LInsp)offs>=_buf->next());
1160
-
1161
- #ifndef NANOJIT_64BIT
1162
- l->i.initOpcode(op==LIR_callh ? LIR_call : op);
1163
- #else
1164
- l->i.initOpcode(op);
1165
- #endif
1166
- l->i.c.imm8a = 0;
1167
- l->i.c.imm8b = argc;
1168
- _buf->commit(insSz);
1169
- _buf->_stats.lir++;
1170
- NanoAssert((LInsp)(l+1)==_buf->next());
1171
- return &(l->i);
1172
- }
1173
-
1174
- using namespace avmplus;
1295
+ uint32_t cap = m_cap;
1296
+ const LInsp *list = m_list;
1297
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1298
+ uint32_t hash = hash2(op,a,b) & bitmask;
1299
+ uint32_t n = 7 << 1;
1300
+ LInsp k;
1301
+ while ((k = list[hash]) != NULL &&
1302
+ (k->opcode() != op || k->oprnd1() != a || k->oprnd2() != b))
1303
+ {
1304
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1305
+ }
1306
+ i = hash;
1307
+ return k;
1308
+ }
1175
1309
 
1176
- StackFilter::StackFilter(LirFilter *in, GC *gc, LirBuffer *lirbuf, LInsp sp)
1177
- : LirFilter(in), gc(gc), lirbuf(lirbuf), sp(sp), top(0)
1178
- {}
1179
-
1180
- LInsp StackFilter::read()
1181
- {
1182
- for (;;)
1183
- {
1184
- LInsp i = in->read();
1185
- if (!i)
1186
- return i;
1187
- if (i->isStore())
1188
- {
1189
- LInsp base = i->oprnd2();
1190
- if (base == sp)
1191
- {
1192
- LInsp v = i->oprnd1();
1193
- int d = i->immdisp() >> 2;
1194
- if (d >= top) {
1195
- continue;
1196
- } else {
1197
- d = top - d;
1198
- if (v->isQuad()) {
1199
- // storing 8 bytes
1200
- if (stk.get(d) && stk.get(d-1)) {
1201
- continue;
1202
- } else {
1203
- stk.set(gc, d);
1204
- stk.set(gc, d-1);
1205
- }
1206
- }
1207
- else {
1208
- // storing 4 bytes
1209
- if (stk.get(d))
1210
- continue;
1211
- else
1212
- stk.set(gc, d);
1213
- }
1214
- }
1215
- }
1216
- }
1217
- /*
1218
- * NB: If there is a backward branch other than the loop-restart branch, this is
1219
- * going to be wrong. Unfortunately there doesn't seem to be an easy way to detect
1220
- * such branches. Just do not create any.
1221
- */
1222
- else if (i->isGuard())
1223
- {
1224
- stk.reset();
1225
- top = getTop(i) >> 2;
1226
- }
1227
- return i;
1228
- }
1229
- }
1230
-
1231
- //
1232
- // inlined/separated version of SuperFastHash
1233
- // This content is copyrighted by Paul Hsieh, For reference see : http://www.azillionmonkeys.com/qed/hash.html
1234
- //
1235
- inline uint32_t _hash8(uint32_t hash, const uint8_t data)
1236
- {
1237
- hash += data;
1238
- hash ^= hash << 10;
1239
- hash += hash >> 1;
1240
- return hash;
1241
- }
1242
-
1243
- inline uint32_t _hash32(uint32_t hash, const uint32_t data)
1244
- {
1245
- const uint32_t dlo = data & 0xffff;
1246
- const uint32_t dhi = data >> 16;
1247
- hash += dlo;
1248
- const uint32_t tmp = (dhi << 11) ^ hash;
1249
- hash = (hash << 16) ^ tmp;
1250
- hash += hash >> 11;
1251
- return hash;
1252
- }
1253
-
1254
- inline uint32_t _hashptr(uint32_t hash, const void* data)
1255
- {
1256
- #ifdef NANOJIT_64BIT
1257
- hash = _hash32(hash, uint32_t(uintptr_t(data) >> 32));
1258
- hash = _hash32(hash, uint32_t(uintptr_t(data)));
1259
- return hash;
1260
- #else
1261
- return _hash32(hash, uint32_t(data));
1262
- #endif
1263
- }
1264
-
1265
- inline uint32_t _hashfinish(uint32_t hash)
1266
- {
1267
- /* Force "avalanching" of final 127 bits */
1268
- hash ^= hash << 3;
1269
- hash += hash >> 5;
1270
- hash ^= hash << 4;
1271
- hash += hash >> 17;
1272
- hash ^= hash << 25;
1273
- hash += hash >> 6;
1274
- return hash;
1275
- }
1276
-
1277
- LInsHashSet::LInsHashSet(GC* gc) :
1278
- m_used(0), m_cap(kInitialCap), m_gc(gc)
1279
- {
1280
- #ifdef MEMORY_INFO
1281
- // m_list.set_meminfo_name("LInsHashSet.list");
1282
- #endif
1283
- LInsp *list = (LInsp*) gc->Alloc(sizeof(LInsp)*m_cap, GC::kZero);
1284
- WB(gc, this, &m_list, list);
1285
- }
1310
+ LInsp LInsHashSet::find3(LOpcode op, LInsp a, LInsp b, LInsp c, uint32_t &i)
1311
+ {
1312
+ uint32_t cap = m_cap;
1313
+ const LInsp *list = m_list;
1314
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1315
+ uint32_t hash = hash3(op,a,b,c) & bitmask;
1316
+ uint32_t n = 7 << 1;
1317
+ LInsp k;
1318
+ while ((k = list[hash]) != NULL &&
1319
+ (k->opcode() != op || k->oprnd1() != a || k->oprnd2() != b || k->oprnd3() != c))
1320
+ {
1321
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1322
+ }
1323
+ i = hash;
1324
+ return k;
1325
+ }
1286
1326
 
1287
- LInsHashSet::~LInsHashSet()
1327
+ LInsp LInsHashSet::findLoad(LOpcode op, LInsp a, int32_t d, uint32_t &i)
1288
1328
  {
1289
- m_gc->Free(m_list);
1329
+ uint32_t cap = m_cap;
1330
+ const LInsp *list = m_list;
1331
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1332
+ uint32_t hash = hashLoad(op,a,d) & bitmask;
1333
+ uint32_t n = 7 << 1;
1334
+ LInsp k;
1335
+ while ((k = list[hash]) != NULL &&
1336
+ (k->opcode() != op || k->oprnd1() != a || k->disp() != d))
1337
+ {
1338
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1339
+ }
1340
+ i = hash;
1341
+ return k;
1290
1342
  }
1291
1343
 
1292
- void LInsHashSet::clear() {
1293
- memset(m_list, 0, sizeof(LInsp)*m_cap);
1294
- m_used = 0;
1344
+ bool argsmatch(LInsp i, uint32_t argc, LInsp args[])
1345
+ {
1346
+ for (uint32_t j=0; j < argc; j++)
1347
+ if (i->arg(j) != args[j])
1348
+ return false;
1349
+ return true;
1295
1350
  }
1296
-
1297
- /*static*/ uint32_t FASTCALL LInsHashSet::hashcode(LInsp i)
1298
- {
1299
- const LOpcode op = i->opcode();
1300
- switch (op)
1301
- {
1302
- case LIR_short:
1303
- return hashimm(i->imm16());
1304
- case LIR_int:
1305
- return hashimm(i->imm32());
1306
- case LIR_quad:
1307
- return hashimmq(i->constvalq());
1308
- case LIR_call:
1309
- case LIR_fcall:
1310
- #if defined NANOJIT_64BIT
1311
- case LIR_callh:
1312
- #endif
1313
- {
1314
- LInsp args[10];
1315
- int32_t argc = i->argc();
1316
- NanoAssert(argc < 10);
1317
- for (int32_t j=0; j < argc; j++)
1318
- args[j] = i->arg(j);
1319
- return hashcall(i->callInfo(), argc, args);
1320
- }
1321
- default:
1322
- if (operandCount[op] == 2)
1323
- return hash2(op, i->oprnd1(), i->oprnd2());
1324
- else
1325
- return hash1(op, i->oprnd1());
1326
- }
1327
- }
1328
-
1329
- /*static*/ bool FASTCALL LInsHashSet::equals(LInsp a, LInsp b)
1330
- {
1331
- if (a==b)
1332
- return true;
1333
- AvmAssert(a->opcode() == b->opcode());
1334
- const LOpcode op = a->opcode();
1335
- switch (op)
1336
- {
1337
- case LIR_short:
1338
- {
1339
- return a->imm16() == b->imm16();
1340
- }
1341
- case LIR_int:
1342
- {
1343
- return a->imm32() == b->imm32();
1344
- }
1345
- case LIR_quad:
1346
- {
1347
- return a->constvalq() == b->constvalq();
1348
- }
1349
- case LIR_call:
1350
- case LIR_fcall:
1351
- #if defined NANOJIT_64BIT
1352
- case LIR_callh:
1353
- #endif
1354
- {
1355
- if (a->callInfo() != b->callInfo()) return false;
1356
- uint32_t argc=a->argc();
1357
- NanoAssert(argc == b->argc());
1358
- for (uint32_t i=0; i < argc; i++)
1359
- if (a->arg(i) != b->arg(i))
1360
- return false;
1361
- return true;
1362
- }
1363
- default:
1364
- {
1365
- const uint32_t count = operandCount[op];
1366
- if ((count >= 1 && a->oprnd1() != b->oprnd1()) ||
1367
- (count >= 2 && a->oprnd2() != b->oprnd2()))
1368
- return false;
1369
- return true;
1370
- }
1371
- }
1372
- }
1373
-
1374
- void FASTCALL LInsHashSet::grow()
1375
- {
1376
- const uint32_t newcap = m_cap << 1;
1377
- LInsp *newlist = (LInsp*) m_gc->Alloc(newcap * sizeof(LInsp), GC::kZero);
1378
- LInsp *list = m_list;
1379
- #ifdef MEMORY_INFO
1380
- // newlist.set_meminfo_name("LInsHashSet.list");
1381
- #endif
1382
- for (uint32_t i=0, n=m_cap; i < n; i++) {
1383
- LInsp name = list[i];
1384
- if (!name) continue;
1385
- uint32_t j = find(name, hashcode(name), newlist, newcap);
1386
- newlist[j] = name;
1387
- }
1388
- m_cap = newcap;
1389
- m_gc->Free(list);
1390
- WB(m_gc, this, &m_list, newlist);
1391
- }
1392
-
1393
- uint32_t FASTCALL LInsHashSet::find(LInsp name, uint32_t hash, const LInsp *list, uint32_t cap)
1394
- {
1395
- const uint32_t bitmask = (cap - 1) & ~0x1;
1396
-
1397
- uint32_t n = 7 << 1;
1398
- hash &= bitmask;
1399
- LInsp k;
1400
- while ((k = list[hash]) != NULL &&
1401
- (!LIns::sameop(k,name) || !equals(k, name)))
1402
- {
1403
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1404
- }
1405
- return hash;
1406
- }
1407
-
1408
- LInsp LInsHashSet::add(LInsp name, uint32_t k)
1409
- {
1410
- // this is relatively short-lived so let's try a more aggressive load factor
1411
- // in the interest of improving performance
1412
- if (((m_used+1)<<1) >= m_cap) // 0.50
1413
- {
1414
- grow();
1415
- k = find(name, hashcode(name), m_list, m_cap);
1416
- }
1417
- NanoAssert(!m_list[k]);
1418
- m_used++;
1419
- return m_list[k] = name;
1420
- }
1421
1351
 
1422
- void LInsHashSet::replace(LInsp i)
1423
- {
1424
- LInsp *list = m_list;
1425
- uint32_t k = find(i, hashcode(i), list, m_cap);
1426
- if (list[k]) {
1427
- // already there, so replace it
1428
- list[k] = i;
1429
- } else {
1430
- add(i, k);
1431
- }
1432
- }
1433
-
1434
- uint32_t LInsHashSet::hashimm(int32_t a) {
1435
- return _hashfinish(_hash32(0,a));
1436
- }
1437
-
1438
- uint32_t LInsHashSet::hashimmq(uint64_t a) {
1439
- uint32_t hash = _hash32(0, uint32_t(a >> 32));
1440
- return _hashfinish(_hash32(hash, uint32_t(a)));
1441
- }
1442
-
1443
- uint32_t LInsHashSet::hash1(LOpcode op, LInsp a) {
1444
- uint32_t hash = _hash8(0,uint8_t(op));
1445
- return _hashfinish(_hashptr(hash, a));
1446
- }
1447
-
1448
- uint32_t LInsHashSet::hash2(LOpcode op, LInsp a, LInsp b) {
1449
- uint32_t hash = _hash8(0,uint8_t(op));
1450
- hash = _hashptr(hash, a);
1451
- return _hashfinish(_hashptr(hash, b));
1452
- }
1453
-
1454
- uint32_t LInsHashSet::hashcall(const CallInfo *ci, uint32_t argc, LInsp args[]) {
1455
- uint32_t hash = _hashptr(0, ci);
1456
- for (int32_t j=argc-1; j >= 0; j--)
1457
- hash = _hashptr(hash,args[j]);
1458
- return _hashfinish(hash);
1459
- }
1460
-
1461
- LInsp LInsHashSet::find32(int32_t a, uint32_t &i)
1462
- {
1463
- uint32_t cap = m_cap;
1464
- const LInsp *list = m_list;
1465
- const uint32_t bitmask = (cap - 1) & ~0x1;
1466
- uint32_t hash = hashimm(a) & bitmask;
1467
- uint32_t n = 7 << 1;
1468
- LInsp k;
1469
- while ((k = list[hash]) != NULL &&
1470
- (!k->isconst() || k->constval() != a))
1471
- {
1472
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1473
- }
1474
- i = hash;
1475
- return k;
1476
- }
1477
-
1478
- LInsp LInsHashSet::find64(uint64_t a, uint32_t &i)
1479
- {
1480
- uint32_t cap = m_cap;
1481
- const LInsp *list = m_list;
1482
- const uint32_t bitmask = (cap - 1) & ~0x1;
1483
- uint32_t hash = hashimmq(a) & bitmask;
1484
- uint32_t n = 7 << 1;
1485
- LInsp k;
1486
- while ((k = list[hash]) != NULL &&
1487
- (!k->isconstq() || k->constvalq() != a))
1488
- {
1489
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1490
- }
1491
- i = hash;
1492
- return k;
1493
- }
1494
-
1495
- LInsp LInsHashSet::find1(LOpcode op, LInsp a, uint32_t &i)
1496
- {
1497
- uint32_t cap = m_cap;
1498
- const LInsp *list = m_list;
1499
- const uint32_t bitmask = (cap - 1) & ~0x1;
1500
- uint32_t hash = hash1(op,a) & bitmask;
1501
- uint32_t n = 7 << 1;
1502
- LInsp k;
1503
- while ((k = list[hash]) != NULL &&
1504
- (k->opcode() != op || k->oprnd1() != a))
1505
- {
1506
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1507
- }
1508
- i = hash;
1509
- return k;
1510
- }
1511
-
1512
- LInsp LInsHashSet::find2(LOpcode op, LInsp a, LInsp b, uint32_t &i)
1513
- {
1514
- uint32_t cap = m_cap;
1515
- const LInsp *list = m_list;
1516
- const uint32_t bitmask = (cap - 1) & ~0x1;
1517
- uint32_t hash = hash2(op,a,b) & bitmask;
1518
- uint32_t n = 7 << 1;
1519
- LInsp k;
1520
- while ((k = list[hash]) != NULL &&
1521
- (k->opcode() != op || k->oprnd1() != a || k->oprnd2() != b))
1522
- {
1523
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1524
- }
1525
- i = hash;
1526
- return k;
1527
- }
1528
-
1529
- bool argsmatch(LInsp i, uint32_t argc, LInsp args[])
1530
- {
1531
- for (uint32_t j=0; j < argc; j++)
1532
- if (i->arg(j) != args[j])
1533
- return false;
1534
- return true;
1535
- }
1536
-
1537
- LInsp LInsHashSet::findcall(const CallInfo *ci, uint32_t argc, LInsp args[], uint32_t &i)
1538
- {
1539
- uint32_t cap = m_cap;
1540
- const LInsp *list = m_list;
1541
- const uint32_t bitmask = (cap - 1) & ~0x1;
1542
- uint32_t hash = hashcall(ci, argc, args) & bitmask;
1543
- uint32_t n = 7 << 1;
1544
- LInsp k;
1545
- while ((k = list[hash]) != NULL &&
1546
- (!k->isCall() || k->callInfo() != ci || !argsmatch(k, argc, args)))
1547
- {
1548
- hash = (hash + (n += 2)) & bitmask; // quadratic probe
1549
- }
1550
- i = hash;
1551
- return k;
1552
- }
1553
-
1554
- GuardRecord *LIns::record()
1555
- {
1556
- NanoAssert(isGuard());
1557
- return (GuardRecord*)oprnd2()->payload();
1352
+ LInsp LInsHashSet::findcall(const CallInfo *ci, uint32_t argc, LInsp args[], uint32_t &i)
1353
+ {
1354
+ uint32_t cap = m_cap;
1355
+ const LInsp *list = m_list;
1356
+ const uint32_t bitmask = (cap - 1) & ~0x1;
1357
+ uint32_t hash = hashcall(ci, argc, args) & bitmask;
1358
+ uint32_t n = 7 << 1;
1359
+ LInsp k;
1360
+ while ((k = list[hash]) != NULL &&
1361
+ (!k->isCall() || k->callInfo() != ci || !argsmatch(k, argc, args)))
1362
+ {
1363
+ hash = (hash + (n += 2)) & bitmask; // quadratic probe
1364
+ }
1365
+ i = hash;
1366
+ return k;
1558
1367
  }
1559
1368
 
1560
1369
  #ifdef NJ_VERBOSE
1561
- class RetiredEntry: public GCObject
1370
+ class RetiredEntry
1562
1371
  {
1563
1372
  public:
1564
- List<LInsp, LIST_NonGCObjects> live;
1565
- LInsp i;
1566
- RetiredEntry(GC *gc): live(gc) {}
1373
+ Seq<LIns*>* live;
1374
+ LIns* i;
1375
+ RetiredEntry(): live(NULL), i(NULL) {}
1567
1376
  };
1568
- class LiveTable
1569
- {
1570
- public:
1571
- SortedMap<LInsp,LInsp,LIST_NonGCObjects> live;
1572
- List<RetiredEntry*, LIST_GCObjects> retired;
1573
- int maxlive;
1574
- LiveTable(GC *gc) : live(gc), retired(gc), maxlive(0) {}
1575
- ~LiveTable()
1576
- {
1577
- for (size_t i = 0; i < retired.size(); i++) {
1578
- NJ_DELETE(retired.get(i));
1579
- }
1580
1377
 
1581
- }
1582
- void add(LInsp i, LInsp use) {
1378
+ class LiveTable
1379
+ {
1380
+ Allocator& alloc;
1381
+ public:
1382
+ HashMap<LIns*, LIns*> live;
1383
+ SeqBuilder<RetiredEntry*> retired;
1384
+ int retiredCount;
1385
+ int maxlive;
1386
+ LiveTable(Allocator& alloc)
1387
+ : alloc(alloc)
1388
+ , live(alloc)
1389
+ , retired(alloc)
1390
+ , retiredCount(0)
1391
+ , maxlive(0)
1392
+ { }
1393
+
1394
+ void add(LInsp i, LInsp use) {
1583
1395
  if (!i->isconst() && !i->isconstq() && !live.containsKey(i)) {
1584
1396
  NanoAssert(size_t(i->opcode()) < sizeof(lirNames) / sizeof(lirNames[0]));
1585
1397
  live.put(i,use);
1586
1398
  }
1587
- }
1588
- void retire(LInsp i, GC *gc) {
1589
- RetiredEntry *e = NJ_NEW(gc, RetiredEntry)(gc);
1399
+ }
1400
+
1401
+ void retire(LInsp i) {
1402
+ RetiredEntry *e = new (alloc) RetiredEntry();
1590
1403
  e->i = i;
1591
- for (int j=0, n=live.size(); j < n; j++) {
1592
- LInsp l = live.keyAt(j);
1593
- if (!l->isStore() && !l->isGuard())
1594
- e->live.add(l);
1404
+ SeqBuilder<LIns*> livelist(alloc);
1405
+ HashMap<LIns*, LIns*>::Iter iter(live);
1406
+ int live_count = 0;
1407
+ while (iter.next()) {
1408
+ LIns* ins = iter.key();
1409
+ if (!ins->isStore() && !ins->isGuard()) {
1410
+ live_count++;
1411
+ livelist.insert(ins);
1412
+ }
1595
1413
  }
1596
- int size=0;
1597
- if ((size = e->live.size()) > maxlive)
1598
- maxlive = size;
1414
+ e->live = livelist.get();
1415
+ if (live_count > maxlive)
1416
+ maxlive = live_count;
1599
1417
 
1600
1418
  live.remove(i);
1601
- retired.add(e);
1602
- }
1603
- bool contains(LInsp i) {
1604
- return live.containsKey(i);
1605
- }
1606
- };
1607
-
1608
- void live(GC *gc, LirBuffer *lirbuf)
1609
- {
1610
- // traverse backwards to find live exprs and a few other stats.
1611
-
1612
- LiveTable live(gc);
1613
- uint32_t exits = 0;
1614
- LirReader br(lirbuf);
1615
- StackFilter sf(&br, gc, lirbuf, lirbuf->sp);
1616
- StackFilter r(&sf, gc, lirbuf, lirbuf->rp);
1419
+ retired.insert(e);
1420
+ retiredCount++;
1421
+ }
1422
+
1423
+ bool contains(LInsp i) {
1424
+ return live.containsKey(i);
1425
+ }
1426
+ };
1427
+
1428
+ /*
1429
+ * traverse the LIR buffer and discover which instructions are live
1430
+ * by starting from instructions with side effects (stores, calls, branches)
1431
+ * and marking instructions used by them. Works bottom-up, in one pass.
1432
+ * if showLiveRefs == true, also print the set of live expressions next to
1433
+ * each instruction
1434
+ */
1435
+ void live(Allocator& alloc, Fragment *frag, LogControl *logc)
1436
+ {
1437
+ // traverse backwards to find live exprs and a few other stats.
1438
+
1439
+ LiveTable live(alloc);
1440
+ uint32_t exits = 0;
1441
+ LirReader br(frag->lastIns);
1442
+ StackFilter sf(&br, alloc, frag->lirbuf, frag->lirbuf->sp, frag->lirbuf->rp);
1617
1443
  int total = 0;
1618
- if (lirbuf->state)
1619
- live.add(lirbuf->state, r.pos());
1620
- for (LInsp i = r.read(); i != 0; i = r.read())
1621
- {
1444
+ if (frag->lirbuf->state)
1445
+ live.add(frag->lirbuf->state, sf.pos());
1446
+ for (LInsp i = sf.read(); !i->isop(LIR_start); i = sf.read())
1447
+ {
1622
1448
  total++;
1623
1449
 
1624
1450
  // first handle side-effect instructions
1625
- if (!i->isCse(lirbuf->_functions))
1626
- {
1627
- live.add(i,0);
1451
+ if (i->isStmt())
1452
+ {
1453
+ live.add(i,0);
1628
1454
  if (i->isGuard())
1629
1455
  exits++;
1630
- }
1456
+ }
1631
1457
 
1632
- // now propagate liveness
1633
- if (live.contains(i))
1634
- {
1635
- live.retire(i,gc);
1458
+ // now propagate liveness
1459
+ if (live.contains(i))
1460
+ {
1461
+ live.retire(i);
1636
1462
  NanoAssert(size_t(i->opcode()) < sizeof(operandCount) / sizeof(operandCount[0]));
1637
- if (i->isStore()) {
1638
- live.add(i->oprnd2(),i); // base
1639
- live.add(i->oprnd1(),i); // val
1640
- }
1463
+ if (i->isStore()) {
1464
+ live.add(i->oprnd2(),i); // base
1465
+ live.add(i->oprnd1(),i); // val
1466
+ }
1641
1467
  else if (i->isop(LIR_cmov) || i->isop(LIR_qcmov)) {
1642
1468
  live.add(i->oprnd1(),i);
1643
- live.add(i->oprnd2()->oprnd1(),i);
1644
- live.add(i->oprnd2()->oprnd2(),i);
1469
+ live.add(i->oprnd2(),i);
1470
+ live.add(i->oprnd3(),i);
1471
+ }
1472
+ else if (operandCount[i->opcode()] == 1) {
1473
+ live.add(i->oprnd1(),i);
1474
+ }
1475
+ else if (operandCount[i->opcode()] == 2) {
1476
+ live.add(i->oprnd1(),i);
1477
+ live.add(i->oprnd2(),i);
1478
+ }
1479
+ else if (i->isCall()) {
1480
+ for (int j=0, c=i->argc(); j < c; j++)
1481
+ live.add(i->arg(j),i);
1645
1482
  }
1646
- else if (operandCount[i->opcode()] == 1) {
1647
- live.add(i->oprnd1(),i);
1648
- }
1649
- else if (operandCount[i->opcode()] == 2) {
1650
- live.add(i->oprnd1(),i);
1651
- live.add(i->oprnd2(),i);
1652
- }
1653
- else if (i->isCall()) {
1654
- for (int j=0, c=i->argc(); j < c; j++)
1655
- live.add(i->arg(j),i);
1656
- }
1657
- }
1658
- }
1659
-
1660
- printf("live instruction count %d, total %u, max pressure %d\n",
1661
- live.retired.size(), total, live.maxlive);
1662
- printf("side exits %u\n", exits);
1663
-
1664
- // print live exprs, going forwards
1665
- LirNameMap *names = lirbuf->names;
1483
+ }
1484
+ }
1485
+
1486
+ logc->printf(" Live instruction count %d, total %u, max pressure %d\n",
1487
+ live.retiredCount, total, live.maxlive);
1488
+ if (exits > 0)
1489
+ logc->printf(" Side exits %u\n", exits);
1490
+ logc->printf(" Showing LIR instructions with live-after variables\n");
1491
+ logc->printf("\n");
1492
+
1493
+ // print live exprs, going forwards
1494
+ LirNameMap *names = frag->lirbuf->names;
1666
1495
  bool newblock = true;
1667
- for (int j=live.retired.size()-1; j >= 0; j--)
1668
- {
1669
- RetiredEntry *e = live.retired[j];
1496
+ for (Seq<RetiredEntry*>* p = live.retired.get(); p != NULL; p = p->tail) {
1497
+ RetiredEntry* e = p->head;
1670
1498
  char livebuf[4000], *s=livebuf;
1671
1499
  *s = 0;
1672
1500
  if (!newblock && e->i->isop(LIR_label)) {
1673
- printf("\n");
1501
+ logc->printf("\n");
1674
1502
  }
1675
1503
  newblock = false;
1676
- for (int k=0,n=e->live.size(); k < n; k++) {
1677
- strcpy(s, names->formatRef(e->live[k]));
1678
- s += strlen(s);
1679
- *s++ = ' '; *s = 0;
1680
- NanoAssert(s < livebuf+sizeof(livebuf));
1504
+ for (Seq<LIns*>* p = e->live; p != NULL; p = p->tail) {
1505
+ VMPI_strcpy(s, names->formatRef(p->head));
1506
+ s += VMPI_strlen(s);
1507
+ *s++ = ' '; *s = 0;
1508
+ NanoAssert(s < livebuf+sizeof(livebuf));
1681
1509
  }
1682
- printf("%-60s %s\n", livebuf, names->formatIns(e->i));
1683
- if (e->i->isGuard() || e->i->isBranch() || isRet(e->i->opcode())) {
1684
- printf("\n");
1685
- newblock = true;
1510
+ /* If the LIR insn is pretty short, print it and its
1511
+ live-after set on the same line. If not, put
1512
+ live-after set on a new line, suitably indented. */
1513
+ const char* insn_text = names->formatIns(e->i);
1514
+ if (VMPI_strlen(insn_text) >= 30-2) {
1515
+ logc->printf(" %-30s\n %-30s %s\n", names->formatIns(e->i), "", livebuf);
1516
+ } else {
1517
+ logc->printf(" %-30s %s\n", names->formatIns(e->i), livebuf);
1686
1518
  }
1687
- }
1688
- }
1689
1519
 
1690
- LabelMap::Entry::~Entry()
1691
- {
1520
+ if (e->i->isGuard() || e->i->isBranch() || e->i->isRet()) {
1521
+ logc->printf("\n");
1522
+ newblock = true;
1523
+ }
1524
+ }
1692
1525
  }
1693
1526
 
1694
- LirNameMap::Entry::~Entry()
1695
- {
1527
+ void LirNameMap::addName(LInsp i, const char* name) {
1528
+ if (!names.containsKey(i)) {
1529
+ char *copy = new (alloc) char[VMPI_strlen(name)+1];
1530
+ VMPI_strcpy(copy, name);
1531
+ Entry *e = new (alloc) Entry(copy);
1532
+ names.put(i, e);
1533
+ }
1696
1534
  }
1697
1535
 
1698
- LirNameMap::~LirNameMap()
1699
- {
1700
- Entry *e;
1701
-
1702
- while ((e = names.removeLast()) != NULL) {
1703
- labels->core->freeString(e->name);
1704
- NJ_DELETE(e);
1536
+ void LirNameMap::copyName(LInsp i, const char *s, int suffix) {
1537
+ char s2[200];
1538
+ if (VMPI_isdigit(s[VMPI_strlen(s)-1])) {
1539
+ // if s ends with a digit, add '_' to clarify the suffix
1540
+ VMPI_sprintf(s2,"%s_%d", s, suffix);
1541
+ } else {
1542
+ VMPI_sprintf(s2,"%s%d", s, suffix);
1705
1543
  }
1544
+ addName(i, s2);
1706
1545
  }
1707
1546
 
1708
- bool LirNameMap::addName(LInsp i, Stringp name) {
1709
- if (!names.containsKey(i)) {
1710
- Entry *e = NJ_NEW(labels->core->gc, Entry)(name);
1711
- names.put(i, e);
1712
- return true;
1713
- }
1714
- return false;
1715
- }
1716
- void LirNameMap::addName(LInsp i, const char *name) {
1717
- Stringp new_name = labels->core->newString(name);
1718
- if (!addName(i, new_name)) {
1719
- labels->core->freeString(new_name);
1720
- }
1721
- }
1722
-
1723
- void LirNameMap::copyName(LInsp i, const char *s, int suffix) {
1724
- char s2[200];
1725
- if (isdigit(s[strlen(s)-1])) {
1726
- // if s ends with a digit, add '_' to clarify the suffix
1727
- sprintf(s2,"%s_%d", s, suffix);
1728
- } else {
1729
- sprintf(s2,"%s%d", s, suffix);
1730
- }
1731
- addName(i, labels->core->newString(s2));
1732
- }
1733
-
1734
- void LirNameMap::formatImm(int32_t c, char *buf) {
1735
- if (c >= 10000 || c <= -10000)
1736
- sprintf(buf,"#%s",labels->format((void*)c));
1547
+ void LirNameMap::formatImm(int32_t c, char *buf) {
1548
+ if (c >= 10000 || c <= -10000)
1549
+ VMPI_sprintf(buf,"#%s",labels->format((void*)c));
1737
1550
  else
1738
- sprintf(buf,"%d", c);
1739
- }
1740
-
1741
- const char* LirNameMap::formatRef(LIns *ref)
1742
- {
1743
- char buffer[200], *buf=buffer;
1744
- buf[0]=0;
1745
- GC *gc = labels->core->gc;
1746
- if (names.containsKey(ref)) {
1747
- StringNullTerminatedUTF8 cname(gc, names.get(ref)->name);
1748
- strcat(buf, cname.c_str());
1749
- }
1750
- else if (ref->isconstq()) {
1751
- #if defined NANOJIT_64BIT
1752
- sprintf(buf, "#0x%lx", (nj_printf_ld)ref->constvalq());
1753
- #else
1754
- formatImm(uint32_t(ref->constvalq()>>32), buf);
1755
- buf += strlen(buf);
1756
- *buf++ = ':';
1757
- formatImm(uint32_t(ref->constvalq()), buf);
1758
- #endif
1759
- }
1760
- else if (ref->isconst()) {
1761
- formatImm(ref->constval(), buf);
1762
- }
1763
- else {
1764
- if (ref->isCall()) {
1551
+ VMPI_sprintf(buf,"%d", c);
1552
+ }
1553
+
1554
+ const char* LirNameMap::formatRef(LIns *ref)
1555
+ {
1556
+ char buffer[200], *buf=buffer;
1557
+ buf[0]=0;
1558
+ if (names.containsKey(ref)) {
1559
+ const char* name = names.get(ref)->name;
1560
+ VMPI_strcat(buf, name);
1561
+ }
1562
+ else if (ref->isconstf()) {
1563
+ VMPI_sprintf(buf, "%g", ref->imm64f());
1564
+ }
1565
+ else if (ref->isconstq()) {
1566
+ int64_t c = ref->imm64();
1567
+ if (c >= 10000 || c <= -10000)
1568
+ VMPI_sprintf(buf, "#0x%llxLL", (long long unsigned int) c);
1569
+ else
1570
+ VMPI_sprintf(buf, "%dLL", (int)c);
1571
+ }
1572
+ else if (ref->isconst()) {
1573
+ formatImm(ref->imm32(), buf);
1574
+ }
1575
+ else {
1576
+ if (ref->isCall()) {
1765
1577
  #if !defined NANOJIT_64BIT
1766
- if (ref->isop(LIR_callh)) {
1767
- // we've presumably seen the other half already
1768
- ref = ref->oprnd1();
1769
- } else {
1578
+ if (ref->isop(LIR_callh)) {
1579
+ // we've presumably seen the other half already
1580
+ ref = ref->oprnd1();
1581
+ } else {
1770
1582
  #endif
1771
- copyName(ref, ref->callInfo()->_name, funccounts.add(ref->callInfo()));
1583
+ copyName(ref, ref->callInfo()->_name, funccounts.add(ref->callInfo()));
1772
1584
  #if !defined NANOJIT_64BIT
1773
- }
1585
+ }
1774
1586
  #endif
1775
- } else {
1587
+ } else {
1776
1588
  NanoAssert(size_t(ref->opcode()) < sizeof(lirNames) / sizeof(lirNames[0]));
1777
- copyName(ref, lirNames[ref->opcode()], lircounts.add(ref->opcode()));
1778
- }
1779
- StringNullTerminatedUTF8 cname(gc, names.get(ref)->name);
1780
- strcat(buf, cname.c_str());
1781
- }
1782
- return labels->dup(buffer);
1783
- }
1784
-
1785
- const char* LirNameMap::formatIns(LIns* i)
1786
- {
1787
- char sbuf[200];
1788
- char *s = sbuf;
1789
- LOpcode op = i->opcode();
1790
- switch(op)
1791
- {
1792
- case LIR_short:
1793
- case LIR_int:
1794
- {
1795
- sprintf(s, "%s", formatRef(i));
1796
- break;
1797
- }
1589
+ copyName(ref, lirNames[ref->opcode()], lircounts.add(ref->opcode()));
1590
+ }
1591
+ const char* name = names.get(ref)->name;
1592
+ VMPI_strcat(buf, name);
1593
+ }
1594
+ return labels->dup(buffer);
1595
+ }
1596
+
1597
+ const char* LirNameMap::formatIns(LIns* i)
1598
+ {
1599
+ char sbuf[200];
1600
+ char *s = sbuf;
1601
+ LOpcode op = i->opcode();
1602
+ switch(op)
1603
+ {
1604
+ case LIR_int:
1605
+ {
1606
+ VMPI_sprintf(s, "%s = %s %d", formatRef(i), lirNames[op], i->imm32());
1607
+ break;
1608
+ }
1798
1609
 
1799
1610
  case LIR_alloc: {
1800
- sprintf(s, "%s = %s %d", formatRef(i), lirNames[op], i->size());
1611
+ VMPI_sprintf(s, "%s = %s %d", formatRef(i), lirNames[op], i->size());
1612
+ break;
1613
+ }
1614
+
1615
+ case LIR_quad:
1616
+ {
1617
+ VMPI_sprintf(s, "%s = %s #%X:%X /* %g */", formatRef(i), lirNames[op],
1618
+ i->imm64_1(), i->imm64_0(), i->imm64f());
1801
1619
  break;
1802
1620
  }
1803
1621
 
1804
- case LIR_quad:
1805
- {
1806
- int32_t *p = (int32_t*) (i-2);
1807
- sprintf(s, "#%X:%X /* %g */", p[1], p[0], i->constvalf());
1808
- break;
1809
- }
1622
+ case LIR_float:
1623
+ {
1624
+ VMPI_sprintf(s, "%s = %s #%g", formatRef(i), lirNames[op], i->imm64f());
1625
+ break;
1626
+ }
1810
1627
 
1811
- case LIR_loop:
1812
- case LIR_start:
1813
- sprintf(s, "%s", lirNames[op]);
1814
- break;
1628
+ case LIR_start:
1629
+ case LIR_regfence:
1630
+ VMPI_sprintf(s, "%s", lirNames[op]);
1631
+ break;
1815
1632
 
1816
- #if defined NANOJIT_64BIT
1817
- case LIR_callh:
1818
- #endif
1819
- case LIR_fcall:
1820
- case LIR_call: {
1821
- sprintf(s, "%s = %s ( ", formatRef(i), i->callInfo()->_name);
1822
- for (int32_t j=i->argc()-1; j >= 0; j--) {
1823
- s += strlen(s);
1824
- sprintf(s, "%s ",formatRef(i->arg(j)));
1825
- }
1826
- s += strlen(s);
1827
- sprintf(s, ")");
1828
- break;
1829
- }
1830
- case LIR_fcalli:
1831
- case LIR_calli: {
1633
+ case LIR_qcall:
1634
+ case LIR_fcall:
1635
+ case LIR_icall: {
1636
+ const CallInfo* call = i->callInfo();
1832
1637
  int32_t argc = i->argc();
1833
- sprintf(s, "%s = [%s] ( ", formatRef(i), formatRef(i->arg(argc-1)));
1834
- s += strlen(s);
1835
- argc--;
1836
- for (int32_t j=argc-1; j >= 0; j--) {
1837
- s += strlen(s);
1838
- sprintf(s, "%s ",formatRef(i->arg(j)));
1839
- }
1840
- s += strlen(s);
1841
- sprintf(s, ")");
1842
- break;
1843
- }
1844
-
1845
- case LIR_param: {
1846
- uint32_t arg = i->imm8();
1847
- if (!i->imm8b()) {
1848
- if (arg < sizeof(Assembler::argRegs)/sizeof(Assembler::argRegs[0])) {
1849
- sprintf(s, "%s = %s %d %s", formatRef(i), lirNames[op],
1850
- arg, gpn(Assembler::argRegs[arg]));
1851
- } else {
1852
- sprintf(s, "%s = %s %d", formatRef(i), lirNames[op], arg);
1853
- }
1854
- } else {
1855
- sprintf(s, "%s = %s %d %s", formatRef(i), lirNames[op],
1856
- arg, gpn(Assembler::savedRegs[arg]));
1857
- }
1858
- break;
1859
- }
1860
-
1861
- case LIR_label:
1862
- sprintf(s, "%s:", formatRef(i));
1863
- break;
1864
-
1865
- case LIR_jt:
1866
- case LIR_jf:
1867
- sprintf(s, "%s %s -> %s", lirNames[op], formatRef(i->oprnd1()),
1638
+ if (call->isIndirect())
1639
+ VMPI_sprintf(s, "%s = %s [%s] ( ", formatRef(i), lirNames[op], formatRef(i->arg(--argc)));
1640
+ else
1641
+ VMPI_sprintf(s, "%s = %s #%s ( ", formatRef(i), lirNames[op], call->_name);
1642
+ for (int32_t j = argc - 1; j >= 0; j--) {
1643
+ s += VMPI_strlen(s);
1644
+ VMPI_sprintf(s, "%s ",formatRef(i->arg(j)));
1645
+ }
1646
+ s += VMPI_strlen(s);
1647
+ VMPI_sprintf(s, ")");
1648
+ break;
1649
+ }
1650
+
1651
+ case LIR_param: {
1652
+ uint32_t arg = i->paramArg();
1653
+ if (!i->paramKind()) {
1654
+ if (arg < sizeof(Assembler::argRegs)/sizeof(Assembler::argRegs[0])) {
1655
+ VMPI_sprintf(s, "%s = %s %d %s", formatRef(i), lirNames[op],
1656
+ arg, gpn(Assembler::argRegs[arg]));
1657
+ } else {
1658
+ VMPI_sprintf(s, "%s = %s %d", formatRef(i), lirNames[op], arg);
1659
+ }
1660
+ } else {
1661
+ VMPI_sprintf(s, "%s = %s %d %s", formatRef(i), lirNames[op],
1662
+ arg, gpn(Assembler::savedRegs[arg]));
1663
+ }
1664
+ break;
1665
+ }
1666
+
1667
+ case LIR_label:
1668
+ VMPI_sprintf(s, "%s:", formatRef(i));
1669
+ break;
1670
+
1671
+ case LIR_jt:
1672
+ case LIR_jf:
1673
+ VMPI_sprintf(s, "%s %s -> %s", lirNames[op], formatRef(i->oprnd1()),
1868
1674
  i->oprnd2() ? formatRef(i->oprnd2()) : "unpatched");
1869
- break;
1675
+ break;
1870
1676
 
1871
- case LIR_j:
1872
- sprintf(s, "%s -> %s", lirNames[op],
1677
+ case LIR_j:
1678
+ VMPI_sprintf(s, "%s -> %s", lirNames[op],
1873
1679
  i->oprnd2() ? formatRef(i->oprnd2()) : "unpatched");
1874
- break;
1680
+ break;
1875
1681
 
1876
1682
  case LIR_live:
1877
- case LIR_ret:
1683
+ case LIR_ret:
1878
1684
  case LIR_fret:
1879
- sprintf(s, "%s %s", lirNames[op], formatRef(i->oprnd1()));
1880
- break;
1881
-
1685
+ VMPI_sprintf(s, "%s %s", lirNames[op], formatRef(i->oprnd1()));
1686
+ break;
1687
+
1882
1688
  case LIR_callh:
1883
- case LIR_neg:
1884
- case LIR_fneg:
1885
- case LIR_i2f:
1886
- case LIR_u2f:
1887
- case LIR_qlo:
1888
- case LIR_qhi:
1689
+ case LIR_neg:
1690
+ case LIR_fneg:
1691
+ case LIR_i2f:
1692
+ case LIR_u2f:
1693
+ case LIR_qlo:
1694
+ case LIR_qhi:
1889
1695
  case LIR_ov:
1890
- case LIR_cs:
1891
- case LIR_not:
1892
- sprintf(s, "%s = %s %s", formatRef(i), lirNames[op], formatRef(i->oprnd1()));
1893
- break;
1894
-
1895
- case LIR_x:
1896
- case LIR_xt:
1897
- case LIR_xf:
1898
- case LIR_xbarrier:
1899
- case LIR_xtbl:
1900
- formatGuard(i, s);
1901
- break;
1902
-
1903
- case LIR_add:
1904
- case LIR_addp:
1905
- case LIR_sub:
1906
- case LIR_mul:
1907
- case LIR_fadd:
1908
- case LIR_fsub:
1909
- case LIR_fmul:
1910
- case LIR_fdiv:
1911
- case LIR_and:
1912
- case LIR_or:
1913
- case LIR_xor:
1914
- case LIR_lsh:
1915
- case LIR_rsh:
1916
- case LIR_ush:
1917
- case LIR_eq:
1918
- case LIR_lt:
1919
- case LIR_le:
1920
- case LIR_gt:
1921
- case LIR_ge:
1922
- case LIR_ult:
1923
- case LIR_ule:
1924
- case LIR_ugt:
1925
- case LIR_uge:
1926
- case LIR_feq:
1927
- case LIR_flt:
1928
- case LIR_fle:
1929
- case LIR_fgt:
1930
- case LIR_fge:
1931
- case LIR_qiadd:
1932
- case LIR_qiand:
1933
- case LIR_qilsh:
1934
- case LIR_qior:
1935
- sprintf(s, "%s = %s %s, %s", formatRef(i), lirNames[op],
1936
- formatRef(i->oprnd1()),
1937
- formatRef(i->oprnd2()));
1938
- break;
1939
-
1940
- case LIR_qjoin:
1941
- sprintf(s, "%s (%s), %s", lirNames[op],
1942
- formatIns(i->oprnd1()),
1943
- formatRef(i->oprnd2()));
1944
- break;
1945
-
1946
- case LIR_qcmov:
1947
- case LIR_cmov:
1948
- sprintf(s, "%s = %s %s ? %s : %s", formatRef(i), lirNames[op],
1949
- formatRef(i->oprnd1()),
1950
- formatRef(i->oprnd2()->oprnd1()),
1951
- formatRef(i->oprnd2()->oprnd2()));
1952
- break;
1953
-
1954
- case LIR_ld:
1955
- case LIR_ldc:
1956
- case LIR_ldq:
1957
- case LIR_ldqc:
1958
- case LIR_ldcb:
1959
- case LIR_ldcs:
1960
- sprintf(s, "%s = %s %s[%s]", formatRef(i), lirNames[op],
1961
- formatRef(i->oprnd1()),
1962
- formatRef(i->oprnd2()));
1963
- break;
1964
-
1965
- case LIR_st:
1696
+ case LIR_not:
1697
+ case LIR_mod:
1698
+ case LIR_i2q:
1699
+ case LIR_u2q:
1700
+ VMPI_sprintf(s, "%s = %s %s", formatRef(i), lirNames[op], formatRef(i->oprnd1()));
1701
+ break;
1702
+
1703
+ case LIR_x:
1704
+ case LIR_xt:
1705
+ case LIR_xf:
1706
+ case LIR_xbarrier:
1707
+ case LIR_xtbl:
1708
+ formatGuard(i, s);
1709
+ break;
1710
+
1711
+ case LIR_add: case LIR_qiadd:
1712
+ case LIR_iaddp: case LIR_qaddp:
1713
+ case LIR_sub:
1714
+ case LIR_mul:
1715
+ case LIR_div:
1716
+ case LIR_fadd:
1717
+ case LIR_fsub:
1718
+ case LIR_fmul:
1719
+ case LIR_fdiv:
1720
+ case LIR_and: case LIR_qiand:
1721
+ case LIR_or: case LIR_qior:
1722
+ case LIR_xor: case LIR_qxor:
1723
+ case LIR_lsh: case LIR_qilsh:
1724
+ case LIR_rsh: case LIR_qirsh:
1725
+ case LIR_ush: case LIR_qursh:
1726
+ case LIR_eq: case LIR_qeq:
1727
+ case LIR_lt: case LIR_qlt:
1728
+ case LIR_le: case LIR_qle:
1729
+ case LIR_gt: case LIR_qgt:
1730
+ case LIR_ge: case LIR_qge:
1731
+ case LIR_ult: case LIR_qult:
1732
+ case LIR_ule: case LIR_qule:
1733
+ case LIR_ugt: case LIR_qugt:
1734
+ case LIR_uge: case LIR_quge:
1735
+ case LIR_feq:
1736
+ case LIR_flt:
1737
+ case LIR_fle:
1738
+ case LIR_fgt:
1739
+ case LIR_fge:
1740
+ VMPI_sprintf(s, "%s = %s %s, %s", formatRef(i), lirNames[op],
1741
+ formatRef(i->oprnd1()),
1742
+ formatRef(i->oprnd2()));
1743
+ break;
1744
+
1745
+ case LIR_qjoin:
1746
+ VMPI_sprintf(s, "%s (%s), %s", lirNames[op],
1747
+ formatIns(i->oprnd1()),
1748
+ formatRef(i->oprnd2()));
1749
+ break;
1750
+
1751
+ case LIR_qcmov:
1752
+ case LIR_cmov:
1753
+ VMPI_sprintf(s, "%s = %s %s ? %s : %s", formatRef(i), lirNames[op],
1754
+ formatRef(i->oprnd1()),
1755
+ formatRef(i->oprnd2()),
1756
+ formatRef(i->oprnd3()));
1757
+ break;
1758
+
1759
+ case LIR_ld:
1760
+ case LIR_ldc:
1761
+ case LIR_ldq:
1762
+ case LIR_ldqc:
1763
+ case LIR_ldcb:
1764
+ case LIR_ldcs:
1765
+ VMPI_sprintf(s, "%s = %s %s[%d]", formatRef(i), lirNames[op],
1766
+ formatRef(i->oprnd1()),
1767
+ i->disp());
1768
+ break;
1769
+
1966
1770
  case LIR_sti:
1967
- case LIR_stq:
1968
1771
  case LIR_stqi:
1969
- sprintf(s, "%s %s[%d] = %s", lirNames[op],
1970
- formatRef(i->oprnd2()),
1971
- i->immdisp(),
1972
- formatRef(i->oprnd1()));
1973
- break;
1772
+ VMPI_sprintf(s, "%s %s[%d] = %s", lirNames[op],
1773
+ formatRef(i->oprnd2()),
1774
+ i->disp(),
1775
+ formatRef(i->oprnd1()));
1776
+ break;
1974
1777
 
1975
- default:
1976
- sprintf(s, "?");
1977
- break;
1978
- }
1979
- return labels->dup(sbuf);
1980
- }
1778
+ default:
1779
+ VMPI_sprintf(s, "?");
1780
+ break;
1781
+ }
1782
+ return labels->dup(sbuf);
1783
+ }
1981
1784
 
1982
1785
 
1983
1786
  #endif
1984
- CseFilter::CseFilter(LirWriter *out, GC *gc)
1985
- : LirWriter(out), exprs(gc) {}
1986
-
1987
- LIns* CseFilter::insImm(int32_t imm)
1988
- {
1989
- uint32_t k;
1990
- LInsp found = exprs.find32(imm, k);
1991
- if (found)
1992
- return found;
1993
- return exprs.add(out->insImm(imm), k);
1994
- }
1995
-
1996
- LIns* CseFilter::insImmq(uint64_t q)
1997
- {
1998
- uint32_t k;
1999
- LInsp found = exprs.find64(q, k);
2000
- if (found)
2001
- return found;
2002
- return exprs.add(out->insImmq(q), k);
2003
- }
2004
-
2005
- LIns* CseFilter::ins0(LOpcode v)
2006
- {
2007
- if (v == LIR_label)
2008
- exprs.clear();
2009
- return out->ins0(v);
2010
- }
2011
-
2012
- LIns* CseFilter::ins1(LOpcode v, LInsp a)
2013
- {
2014
- if (isCse(v)) {
2015
- NanoAssert(operandCount[v]==1);
2016
- uint32_t k;
2017
- LInsp found = exprs.find1(v, a, k);
2018
- if (found)
2019
- return found;
2020
- return exprs.add(out->ins1(v,a), k);
2021
- }
2022
- return out->ins1(v,a);
2023
- }
2024
-
2025
- LIns* CseFilter::ins2(LOpcode v, LInsp a, LInsp b)
2026
- {
2027
- if (isCse(v)) {
2028
- NanoAssert(operandCount[v]==2);
2029
- uint32_t k;
2030
- LInsp found = exprs.find2(v, a, b, k);
2031
- if (found)
2032
- return found;
2033
- return exprs.add(out->ins2(v,a,b), k);
2034
- }
2035
- return out->ins2(v,a,b);
2036
- }
2037
-
2038
- LIns* CseFilter::insLoad(LOpcode v, LInsp base, LInsp disp)
2039
- {
2040
- if (isCse(v)) {
2041
- NanoAssert(operandCount[v]==2);
2042
- uint32_t k;
2043
- LInsp found = exprs.find2(v, base, disp, k);
2044
- if (found)
2045
- return found;
2046
- return exprs.add(out->insLoad(v,base,disp), k);
2047
- }
2048
- return out->insLoad(v,base,disp);
2049
- }
2050
-
2051
- LInsp CseFilter::insGuard(LOpcode v, LInsp c, LInsp x)
2052
- {
2053
- if (isCse(v)) {
2054
- // conditional guard
2055
- NanoAssert(operandCount[v]==1);
2056
- uint32_t k;
2057
- LInsp found = exprs.find1(v, c, k);
2058
- if (found)
2059
- return 0;
2060
- return exprs.add(out->insGuard(v,c,x), k);
2061
- }
2062
- return out->insGuard(v, c, x);
2063
- }
2064
-
2065
- LInsp CseFilter::insCall(const CallInfo *ci, LInsp args[])
2066
- {
2067
- if (ci->_cse) {
2068
- uint32_t k;
1787
+ CseFilter::CseFilter(LirWriter *out, Allocator& alloc)
1788
+ : LirWriter(out), exprs(alloc) {}
1789
+
1790
+ LIns* CseFilter::insImm(int32_t imm)
1791
+ {
1792
+ uint32_t k;
1793
+ LInsp found = exprs.find32(imm, k);
1794
+ if (found)
1795
+ return found;
1796
+ return exprs.add(out->insImm(imm), k);
1797
+ }
1798
+
1799
+ LIns* CseFilter::insImmq(uint64_t q)
1800
+ {
1801
+ uint32_t k;
1802
+ LInsp found = exprs.find64(LIR_quad, q, k);
1803
+ if (found)
1804
+ return found;
1805
+ return exprs.add(out->insImmq(q), k);
1806
+ }
1807
+
1808
+ LIns* CseFilter::insImmf(double d)
1809
+ {
1810
+ uint32_t k;
1811
+ union {
1812
+ double d;
1813
+ uint64_t u64;
1814
+ } u;
1815
+ u.d = d;
1816
+ LInsp found = exprs.find64(LIR_float, u.u64, k);
1817
+ if (found)
1818
+ return found;
1819
+ return exprs.add(out->insImmf(d), k);
1820
+ }
1821
+
1822
+ LIns* CseFilter::ins0(LOpcode v)
1823
+ {
1824
+ if (v == LIR_label)
1825
+ exprs.clear();
1826
+ return out->ins0(v);
1827
+ }
1828
+
1829
+ LIns* CseFilter::ins1(LOpcode v, LInsp a)
1830
+ {
1831
+ if (isCseOpcode(v)) {
1832
+ NanoAssert(operandCount[v]==1);
1833
+ uint32_t k;
1834
+ LInsp found = exprs.find1(v, a, k);
1835
+ if (found)
1836
+ return found;
1837
+ return exprs.add(out->ins1(v,a), k);
1838
+ }
1839
+ return out->ins1(v,a);
1840
+ }
1841
+
1842
+ LIns* CseFilter::ins2(LOpcode v, LInsp a, LInsp b)
1843
+ {
1844
+ if (isCseOpcode(v)) {
1845
+ NanoAssert(operandCount[v]==2);
1846
+ uint32_t k;
1847
+ LInsp found = exprs.find2(v, a, b, k);
1848
+ if (found)
1849
+ return found;
1850
+ return exprs.add(out->ins2(v,a,b), k);
1851
+ }
1852
+ return out->ins2(v,a,b);
1853
+ }
1854
+
1855
+ LIns* CseFilter::ins3(LOpcode v, LInsp a, LInsp b, LInsp c)
1856
+ {
1857
+ NanoAssert(isCseOpcode(v));
1858
+ NanoAssert(operandCount[v]==3);
1859
+ uint32_t k;
1860
+ LInsp found = exprs.find3(v, a, b, c, k);
1861
+ if (found)
1862
+ return found;
1863
+ return exprs.add(out->ins3(v,a,b,c), k);
1864
+ }
1865
+
1866
+ LIns* CseFilter::insLoad(LOpcode v, LInsp base, int32_t disp)
1867
+ {
1868
+ if (isCseOpcode(v)) {
1869
+ NanoAssert(operandCount[v]==1);
1870
+ uint32_t k;
1871
+ LInsp found = exprs.findLoad(v, base, disp, k);
1872
+ if (found)
1873
+ return found;
1874
+ return exprs.add(out->insLoad(v,base,disp), k);
1875
+ }
1876
+ return out->insLoad(v,base,disp);
1877
+ }
1878
+
1879
+ LInsp CseFilter::insGuard(LOpcode v, LInsp c, GuardRecord *gr)
1880
+ {
1881
+ // LIR_xt and LIR_xf guards are CSEable. Note that we compare the
1882
+ // opcode and condition when determining if two guards are equivalent
1883
+ // -- in find1(), hash1(), equals() and hashcode() -- but we do *not*
1884
+ // compare the GuardRecord. This works because:
1885
+ // - If guard 1 is taken (exits) then guard 2 is never reached, so
1886
+ // guard 2 can be removed.
1887
+ // - If guard 1 is not taken then neither is guard 2, so guard 2 can
1888
+ // be removed.
1889
+ //
1890
+ // The underlying assumptions that are required for this to be safe:
1891
+ // - There's never a path from the side exit of guard 1 back to guard
1892
+ // 2; for tree-shaped fragments this should be true.
1893
+ // - GuardRecords do not contain information other than what is needed
1894
+ // to execute a successful exit. That is currently true.
1895
+ // - The CSE algorithm will always keep guard 1 and remove guard 2
1896
+ // (not vice versa). The current algorithm does this.
1897
+ //
1898
+ if (isCseOpcode(v)) {
1899
+ // conditional guard
1900
+ NanoAssert(operandCount[v]==1);
1901
+ uint32_t k;
1902
+ LInsp found = exprs.find1(v, c, k);
1903
+ if (found)
1904
+ return 0;
1905
+ return exprs.add(out->insGuard(v,c,gr), k);
1906
+ }
1907
+ return out->insGuard(v, c, gr);
1908
+ }
1909
+
1910
+ LInsp CseFilter::insCall(const CallInfo *ci, LInsp args[])
1911
+ {
1912
+ if (ci->_cse) {
1913
+ uint32_t k;
2069
1914
  uint32_t argc = ci->count_args();
2070
- LInsp found = exprs.findcall(ci, argc, args, k);
2071
- if (found)
2072
- return found;
2073
- return exprs.add(out->insCall(ci, args), k);
2074
- }
2075
- return out->insCall(ci, args);
2076
- }
2077
-
2078
- CseReader::CseReader(LirFilter *in, LInsHashSet *exprs, const CallInfo *functions)
2079
- : LirFilter(in), exprs(exprs), functions(functions)
2080
- {}
2081
-
2082
- LInsp CseReader::read()
2083
- {
2084
- LInsp i = in->read();
2085
- if (i) {
2086
- if (i->isCse(functions))
2087
- exprs->replace(i);
2088
- }
2089
- return i;
2090
- }
2091
-
2092
- LIns* FASTCALL callArgN(LIns* i, uint32_t n)
2093
- {
2094
- return i->arg(i->argc()-n-1);
2095
- }
2096
-
2097
- void compile(Assembler* assm, Fragment* triggerFrag)
2098
- {
2099
- Fragmento *frago = triggerFrag->lirbuf->_frago;
2100
- AvmCore *core = frago->core();
2101
- GC *gc = core->gc;
2102
-
2103
- verbose_only( StringList asmOutput(gc); )
2104
- verbose_only( assm->_outputCache = &asmOutput; )
2105
-
2106
- verbose_only(if (assm->_verbose && core->config.verbose_live)
2107
- live(gc, triggerFrag->lirbuf);)
2108
-
2109
- bool treeCompile = core->config.tree_opt && (triggerFrag->kind == BranchTrace);
2110
- RegAllocMap regMap(gc);
2111
- NInsList loopJumps(gc);
2112
- #ifdef MEMORY_INFO
2113
- // loopJumps.set_meminfo_name("LIR loopjumps");
2114
- #endif
2115
- assm->beginAssembly(triggerFrag, &regMap);
2116
- if (assm->error())
2117
- return;
2118
-
2119
- //fprintf(stderr, "recompile trigger %X kind %d\n", (int)triggerFrag, triggerFrag->kind);
2120
- Fragment* root = triggerFrag;
2121
- if (treeCompile)
2122
- {
2123
- // recompile the entire tree
2124
- root = triggerFrag->root;
2125
- root->fragEntry = 0;
2126
- root->loopEntry = 0;
2127
- root->releaseCode(frago);
2128
-
2129
- // do the tree branches
2130
- Fragment* frag = root->treeBranches;
2131
- while(frag)
2132
- {
2133
- // compile til no more frags
2134
- if (frag->lastIns)
2135
- {
2136
- assm->assemble(frag, loopJumps);
2137
- verbose_only(if (assm->_verbose)
2138
- assm->outputf("compiling branch %s ip %s",
2139
- frago->labels->format(frag),
2140
- frago->labels->format(frag->ip)); )
2141
-
2142
- NanoAssert(frag->kind == BranchTrace);
2143
- RegAlloc* regs = NJ_NEW(gc, RegAlloc)();
2144
- assm->copyRegisters(regs);
2145
- assm->releaseRegisters();
2146
- SideExit* exit = frag->spawnedFrom;
2147
- regMap.put(exit, regs);
2148
- }
2149
- frag = frag->treeBranches;
2150
- }
2151
- }
2152
-
2153
- // now the the main trunk
2154
- assm->assemble(root, loopJumps);
2155
- verbose_only(if (assm->_verbose)
2156
- assm->outputf("compiling trunk %s",
2157
- frago->labels->format(root));)
2158
- NanoAssert(!frago->core()->config.tree_opt || root == root->anchor || root->kind == MergeTrace);
2159
- assm->endAssembly(root, loopJumps);
2160
-
2161
- // reverse output so that assembly is displayed low-to-high
2162
- verbose_only( assm->_outputCache = 0; )
2163
- verbose_only(for(int i=asmOutput.size()-1; i>=0; --i) { assm->outputf("%s",asmOutput.get(i)); } );
2164
-
2165
- if (assm->error()) {
2166
- root->fragEntry = 0;
2167
- root->loopEntry = 0;
2168
- }
2169
- }
2170
-
2171
- LInsp LoadFilter::insLoad(LOpcode v, LInsp base, LInsp disp)
1915
+ LInsp found = exprs.findcall(ci, argc, args, k);
1916
+ if (found)
1917
+ return found;
1918
+ return exprs.add(out->insCall(ci, args), k);
1919
+ }
1920
+ return out->insCall(ci, args);
1921
+ }
1922
+
1923
+ void compile(Assembler* assm, Fragment* frag verbose_only(, Allocator& alloc, LabelMap* labels))
1924
+ {
1925
+ verbose_only(
1926
+ LogControl *logc = assm->_logc;
1927
+ bool anyVerb = (logc->lcbits & 0xFFFF & ~LC_FragProfile) > 0;
1928
+ bool asmVerb = (logc->lcbits & 0xFFFF & LC_Assembly) > 0;
1929
+ bool liveVerb = (logc->lcbits & 0xFFFF & LC_Liveness) > 0;
1930
+ )
1931
+
1932
+ /* BEGIN decorative preamble */
1933
+ verbose_only(
1934
+ if (anyVerb) {
1935
+ logc->printf("========================================"
1936
+ "========================================\n");
1937
+ logc->printf("=== BEGIN LIR::compile(%p, %p)\n",
1938
+ (void*)assm, (void*)frag);
1939
+ logc->printf("===\n");
1940
+ })
1941
+ /* END decorative preamble */
1942
+
1943
+ verbose_only( if (liveVerb) {
1944
+ logc->printf("\n");
1945
+ logc->printf("=== Results of liveness analysis:\n");
1946
+ logc->printf("===\n");
1947
+ live(alloc, frag, logc);
1948
+ })
1949
+
1950
+ /* Set up the generic text output cache for the assembler */
1951
+ verbose_only( StringList asmOutput(alloc); )
1952
+ verbose_only( assm->_outputCache = &asmOutput; )
1953
+
1954
+ assm->beginAssembly(frag);
1955
+ if (assm->error())
1956
+ return;
1957
+
1958
+ //logc->printf("recompile trigger %X kind %d\n", (int)frag, frag->kind);
1959
+
1960
+ verbose_only( if (anyVerb) {
1961
+ logc->printf("=== Translating LIR fragments into assembly:\n");
1962
+ })
1963
+
1964
+ // now the the main trunk
1965
+ verbose_only( if (anyVerb) {
1966
+ logc->printf("=== -- Compile trunk %s: begin\n",
1967
+ labels->format(frag));
1968
+ })
1969
+ assm->assemble(frag);
1970
+ verbose_only( if (anyVerb) {
1971
+ logc->printf("=== -- Compile trunk %s: end\n",
1972
+ labels->format(frag));
1973
+ })
1974
+
1975
+ verbose_only(
1976
+ if (asmVerb)
1977
+ assm->outputf("## compiling trunk %s",
1978
+ labels->format(frag));
1979
+ )
1980
+ assm->endAssembly(frag);
1981
+
1982
+ // reverse output so that assembly is displayed low-to-high
1983
+ // Up to this point, assm->_outputCache has been non-NULL, and so
1984
+ // has been accumulating output. Now we set it to NULL, traverse
1985
+ // the entire list of stored strings, and hand them a second time
1986
+ // to assm->output. Since _outputCache is now NULL, outputf just
1987
+ // hands these strings directly onwards to logc->printf.
1988
+ verbose_only( if (anyVerb) {
1989
+ logc->printf("\n");
1990
+ logc->printf("=== Aggregated assembly output: BEGIN\n");
1991
+ logc->printf("===\n");
1992
+ assm->_outputCache = 0;
1993
+ for (Seq<char*>* p = asmOutput.get(); p != NULL; p = p->tail) {
1994
+ char *str = p->head;
1995
+ assm->outputf(" %s", str);
1996
+ }
1997
+ logc->printf("===\n");
1998
+ logc->printf("=== Aggregated assembly output: END\n");
1999
+ });
2000
+
2001
+ if (assm->error())
2002
+ frag->fragEntry = 0;
2003
+
2004
+ verbose_only( frag->nCodeBytes += assm->codeBytes; )
2005
+ verbose_only( frag->nExitBytes += assm->exitBytes; )
2006
+
2007
+ /* BEGIN decorative postamble */
2008
+ verbose_only( if (anyVerb) {
2009
+ logc->printf("\n");
2010
+ logc->printf("===\n");
2011
+ logc->printf("=== END LIR::compile(%p, %p)\n",
2012
+ (void*)assm, (void*)frag);
2013
+ logc->printf("========================================"
2014
+ "========================================\n");
2015
+ logc->printf("\n");
2016
+ });
2017
+ /* END decorative postamble */
2018
+ }
2019
+
2020
+ LInsp LoadFilter::insLoad(LOpcode v, LInsp base, int32_t disp)
2172
2021
  {
2173
2022
  if (base != sp && base != rp && (v == LIR_ld || v == LIR_ldq)) {
2174
2023
  uint32_t k;
2175
- LInsp found = exprs.find2(v, base, disp, k);
2024
+ LInsp found = exprs.findLoad(v, base, disp, k);
2176
2025
  if (found)
2177
2026
  return found;
2178
2027
  return exprs.add(out->insLoad(v,base,disp), k);
@@ -2186,12 +2035,6 @@ namespace nanojit
2186
2035
  exprs.clear();
2187
2036
  }
2188
2037
 
2189
- LInsp LoadFilter::insStore(LInsp v, LInsp b, LInsp d)
2190
- {
2191
- clear(b);
2192
- return out->insStore(v, b, d);
2193
- }
2194
-
2195
2038
  LInsp LoadFilter::insStorei(LInsp v, LInsp b, int32_t d)
2196
2039
  {
2197
2040
  clear(b);
@@ -2212,103 +2055,179 @@ namespace nanojit
2212
2055
  return out->ins0(op);
2213
2056
  }
2214
2057
 
2215
- #endif /* FEATURE_NANOJIT */
2058
+ #endif /* FEATURE_NANOJIT */
2216
2059
 
2217
2060
  #if defined(NJ_VERBOSE)
2218
- LabelMap::LabelMap(AvmCore *core, LabelMap* parent)
2219
- : parent(parent), names(core->gc), addrs(core->config.verbose_addrs), end(buf), core(core)
2220
- {}
2061
+ LabelMap::LabelMap(Allocator& a, LogControl *logc)
2062
+ : allocator(a), names(a), logc(logc), end(buf)
2063
+ {}
2221
2064
 
2222
- LabelMap::~LabelMap()
2065
+ void LabelMap::add(const void *p, size_t size, size_t align, const char *name)
2223
2066
  {
2224
- clear();
2067
+ if (!this || names.containsKey(p))
2068
+ return;
2069
+ char* copy = new (allocator) char[VMPI_strlen(name)+1];
2070
+ VMPI_strcpy(copy, name);
2071
+ Entry *e = new (allocator) Entry(copy, size << align, align);
2072
+ names.put(p, e);
2073
+ }
2074
+
2075
+ const char *LabelMap::format(const void *p)
2076
+ {
2077
+ char b[200];
2078
+
2079
+ const void *start = names.findNear(p);
2080
+ if (start != NULL) {
2081
+ Entry *e = names.get(start);
2082
+ const void *end = (const char*)start + e->size;
2083
+ const char *name = e->name;
2084
+ if (p == start) {
2085
+ if (!(logc->lcbits & LC_NoCodeAddrs))
2086
+ VMPI_sprintf(b,"%p %s",p,name);
2087
+ else
2088
+ VMPI_strcpy(b, name);
2089
+ return dup(b);
2090
+ }
2091
+ else if (p > start && p < end) {
2092
+ int32_t d = int32_t(intptr_t(p)-intptr_t(start)) >> e->align;
2093
+ if (!(logc->lcbits & LC_NoCodeAddrs))
2094
+ VMPI_sprintf(b, "%p %s+%d", p, name, d);
2095
+ else
2096
+ VMPI_sprintf(b,"%s+%d", name, d);
2097
+ return dup(b);
2098
+ }
2099
+ else {
2100
+ VMPI_sprintf(b, "%p", p);
2101
+ return dup(b);
2102
+ }
2103
+ }
2104
+ VMPI_sprintf(b, "%p", p);
2105
+ return dup(b);
2225
2106
  }
2226
2107
 
2227
- void LabelMap::clear()
2108
+ const char *LabelMap::dup(const char *b)
2228
2109
  {
2229
- Entry *e;
2230
- while ((e = names.removeLast()) != NULL) {
2231
- core->freeString(e->name);
2232
- NJ_DELETE(e);
2233
- }
2110
+ size_t need = VMPI_strlen(b)+1;
2111
+ NanoAssert(need <= sizeof(buf));
2112
+ char *s = end;
2113
+ end += need;
2114
+ if (end > buf+sizeof(buf)) {
2115
+ s = buf;
2116
+ end = s+need;
2117
+ }
2118
+ VMPI_strcpy(s, b);
2119
+ return s;
2234
2120
  }
2235
2121
 
2236
- void LabelMap::add(const void *p, size_t size, size_t align, const char *name)
2237
- {
2238
- if (!this || names.containsKey(p))
2239
- return;
2240
- add(p, size, align, core->newString(name));
2241
- }
2122
+ // ---------------------------------------------------------------
2123
+ // START debug-logging definitions
2124
+ // ---------------------------------------------------------------
2242
2125
 
2243
- void LabelMap::add(const void *p, size_t size, size_t align, Stringp name)
2126
+ void LogControl::printf( const char* format, ... )
2244
2127
  {
2245
- if (!this || names.containsKey(p))
2246
- return;
2247
- Entry *e = NJ_NEW(core->gc, Entry)(name, size<<align, align);
2248
- names.put(p, e);
2128
+ va_list vargs;
2129
+ va_start(vargs, format);
2130
+ vfprintf(stdout, format, vargs);
2131
+ va_end(vargs);
2249
2132
  }
2250
2133
 
2251
- const char *LabelMap::format(const void *p)
2252
- {
2253
- char b[200];
2254
- int i = names.findNear(p);
2255
- if (i >= 0) {
2256
- const void *start = names.keyAt(i);
2257
- Entry *e = names.at(i);
2258
- const void *end = (const char*)start + e->size;
2259
- avmplus::StringNullTerminatedUTF8 cname(core->gc, e->name);
2260
- const char *name = cname.c_str();
2261
- if (p == start) {
2262
- if (addrs)
2263
- sprintf(b,"%p %s",p,name);
2264
- else
2265
- strcpy(b, name);
2266
- return dup(b);
2267
- }
2268
- else if (p > start && p < end) {
2269
- int32_t d = int32_t(intptr_t(p)-intptr_t(start)) >> e->align;
2270
- if (addrs)
2271
- sprintf(b, "%p %s+%d", p, name, d);
2272
- else
2273
- sprintf(b,"%s+%d", name, d);
2274
- return dup(b);
2275
- }
2276
- else {
2277
- if (parent)
2278
- return parent->format(p);
2279
-
2280
- sprintf(b, "%p", p);
2281
- return dup(b);
2282
- }
2283
- }
2284
- if (parent)
2285
- return parent->format(p);
2286
-
2287
- sprintf(b, "%p", p);
2288
- return dup(b);
2289
- }
2290
-
2291
- const char *LabelMap::dup(const char *b)
2292
- {
2293
- size_t need = strlen(b)+1;
2294
- char *s = end;
2295
- end += need;
2296
- if (end > buf+sizeof(buf)) {
2297
- s = buf;
2298
- end = s+need;
2299
- }
2300
- strcpy(s, b);
2301
- return s;
2302
- }
2303
-
2304
- // copy all labels to parent, adding newbase to label addresses
2305
- void LabelMap::promoteAll(const void *newbase)
2306
- {
2307
- for (int i=0, n=names.size(); i < n; i++) {
2308
- void *base = (char*)newbase + (intptr_t)names.keyAt(i);
2309
- parent->names.put(base, names.at(i));
2310
- }
2311
- }
2312
2134
  #endif // NJ_VERBOSE
2135
+
2136
+
2137
+ #ifdef FEATURE_NANOJIT
2138
+ #ifdef DEBUG
2139
+ LIns* SanityFilter::ins1(LOpcode v, LIns* s0)
2140
+ {
2141
+ switch (v)
2142
+ {
2143
+ case LIR_fneg:
2144
+ case LIR_fret:
2145
+ case LIR_qlo:
2146
+ case LIR_qhi:
2147
+ NanoAssert(s0->isQuad());
2148
+ break;
2149
+ case LIR_not:
2150
+ case LIR_neg:
2151
+ case LIR_u2f:
2152
+ case LIR_i2f:
2153
+ case LIR_i2q: case LIR_u2q:
2154
+ NanoAssert(!s0->isQuad());
2155
+ break;
2156
+ default:
2157
+ break;
2158
+ }
2159
+ return out->ins1(v, s0);
2160
+ }
2161
+
2162
+ LIns* SanityFilter::ins2(LOpcode v, LIns* s0, LIns* s1)
2163
+ {
2164
+ switch (v) {
2165
+ case LIR_fadd:
2166
+ case LIR_fsub:
2167
+ case LIR_fmul:
2168
+ case LIR_fdiv:
2169
+ case LIR_feq:
2170
+ case LIR_flt:
2171
+ case LIR_fgt:
2172
+ case LIR_fle:
2173
+ case LIR_fge:
2174
+ case LIR_qaddp:
2175
+ case LIR_qior:
2176
+ case LIR_qxor:
2177
+ case LIR_qiand:
2178
+ case LIR_qiadd:
2179
+ case LIR_qeq:
2180
+ case LIR_qlt: case LIR_qult:
2181
+ case LIR_qgt: case LIR_qugt:
2182
+ case LIR_qle: case LIR_quge:
2183
+ NanoAssert(s0->isQuad() && s1->isQuad());
2184
+ break;
2185
+ case LIR_add:
2186
+ case LIR_iaddp:
2187
+ case LIR_sub:
2188
+ case LIR_mul:
2189
+ case LIR_and:
2190
+ case LIR_or:
2191
+ case LIR_xor:
2192
+ case LIR_lsh:
2193
+ case LIR_rsh:
2194
+ case LIR_ush:
2195
+ case LIR_eq:
2196
+ case LIR_lt: case LIR_ult:
2197
+ case LIR_gt: case LIR_ugt:
2198
+ case LIR_le: case LIR_ule:
2199
+ case LIR_ge: case LIR_uge:
2200
+ NanoAssert(!s0->isQuad() && !s1->isQuad());
2201
+ break;
2202
+ case LIR_qilsh:
2203
+ case LIR_qirsh:
2204
+ case LIR_qursh:
2205
+ NanoAssert(s0->isQuad() && !s1->isQuad());
2206
+ break;
2207
+ default:
2208
+ break;
2209
+ }
2210
+ return out->ins2(v, s0, s1);
2211
+ }
2212
+
2213
+ LIns* SanityFilter::ins3(LOpcode v, LIns* s0, LIns* s1, LIns* s2)
2214
+ {
2215
+ switch (v)
2216
+ {
2217
+ case LIR_cmov:
2218
+ NanoAssert(s0->isCond() || s0->isconst());
2219
+ NanoAssert(!s1->isQuad() && !s2->isQuad());
2220
+ break;
2221
+ case LIR_qcmov:
2222
+ NanoAssert(s0->isCond() || s0->isconst());
2223
+ NanoAssert(s1->isQuad() && s2->isQuad());
2224
+ break;
2225
+ default:
2226
+ break;
2227
+ }
2228
+ return out->ins3(v, s0, s1, s2);
2229
+ }
2230
+ #endif
2231
+ #endif
2232
+
2313
2233
  }
2314
-