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
@@ -311,26 +311,45 @@ js_GetIndexFromBytecode(JSContext *cx, JSScript *script, jsbytecode *pc,
311
311
  */
312
312
  #define GET_ATOM_FROM_BYTECODE(script, pc, pcoff, atom) \
313
313
  JS_BEGIN_MACRO \
314
+ JS_ASSERT(*(pc) != JSOP_DOUBLE); \
314
315
  uintN index_ = js_GetIndexFromBytecode(cx, (script), (pc), (pcoff)); \
315
- JS_GET_SCRIPT_ATOM((script), index_, atom); \
316
+ JS_GET_SCRIPT_ATOM(script, pc, index_, atom); \
317
+ JS_END_MACRO
318
+
319
+ /*
320
+ * Variant for getting a double atom when we might be in an imacro. Bytecodes
321
+ * with literals that are only ever doubles must use this macro, and never use
322
+ * GET_ATOM_FROM_BYTECODE or JS_GET_SCRIPT_ATOM.
323
+ *
324
+ * Unfortunately some bytecodes such as JSOP_LOOKUPSWITCH have immediates that
325
+ * might be string or double atoms. Those opcodes cannot be used from imacros.
326
+ * See the assertions in the JSOP_DOUBLE and JSOP_LOOKUPSWTICH* opcode cases in
327
+ * jsops.cpp.
328
+ */
329
+ #define GET_DOUBLE_FROM_BYTECODE(script, pc, pcoff, atom) \
330
+ JS_BEGIN_MACRO \
331
+ uintN index_ = js_GetIndexFromBytecode(cx, (script), (pc), (pcoff)); \
332
+ JS_ASSERT(index_ < (script)->atomMap.length); \
333
+ (atom) = (script)->atomMap.vector[index_]; \
334
+ JS_ASSERT(ATOM_IS_DOUBLE(atom)); \
316
335
  JS_END_MACRO
317
336
 
318
337
  #define GET_OBJECT_FROM_BYTECODE(script, pc, pcoff, obj) \
319
338
  JS_BEGIN_MACRO \
320
339
  uintN index_ = js_GetIndexFromBytecode(cx, (script), (pc), (pcoff)); \
321
- JS_GET_SCRIPT_OBJECT((script), index_, obj); \
340
+ obj = (script)->getObject(index_); \
322
341
  JS_END_MACRO
323
342
 
324
343
  #define GET_FUNCTION_FROM_BYTECODE(script, pc, pcoff, fun) \
325
344
  JS_BEGIN_MACRO \
326
345
  uintN index_ = js_GetIndexFromBytecode(cx, (script), (pc), (pcoff)); \
327
- JS_GET_SCRIPT_FUNCTION((script), index_, fun); \
346
+ fun = (script)->getFunction(index_); \
328
347
  JS_END_MACRO
329
348
 
330
349
  #define GET_REGEXP_FROM_BYTECODE(script, pc, pcoff, obj) \
331
350
  JS_BEGIN_MACRO \
332
351
  uintN index_ = js_GetIndexFromBytecode(cx, (script), (pc), (pcoff)); \
333
- JS_GET_SCRIPT_REGEXP((script), index_, obj); \
352
+ obj = (script)->getRegExp(index_); \
334
353
  JS_END_MACRO
335
354
 
336
355
  /*
@@ -579,7 +579,7 @@ OPDEF(JSOP_LAMBDA_FC, 226,"lambda_fc", NULL, 3, 0, 1, 19, JOF_OBJECT
579
579
  */
580
580
  OPDEF(JSOP_OBJTOP, 227,"objtop", NULL, 3, 0, 0, 0, JOF_UINT16)
581
581
 
582
- OPDEF(JSOP_LOOP, 228, "loop", NULL, 1, 0, 0, 0, JOF_BYTE)
582
+ OPDEF(JSOP_TRACE, 228, "trace", NULL, 1, 0, 0, 0, JOF_BYTE)
583
583
 
584
584
  /*
585
585
  * Debugger versions of JSOP_{GET,CALL}UPVAR.
@@ -589,3 +589,9 @@ OPDEF(JSOP_CALLUPVAR_DBG, 230,"callupvar_dbg", NULL, 3, 0, 2, 19, JOF_UINT16
589
589
  OPDEF(JSOP_DEFFUN_DBGFC, 231,"deffun_dbgfc", NULL, 3, 0, 0, 0, JOF_OBJECT|JOF_DECLARING)
590
590
  OPDEF(JSOP_DEFLOCALFUN_DBGFC,232,"deflocalfun_dbgfc",NULL, 5, 0, 0, 0, JOF_SLOTOBJECT|JOF_DECLARING)
591
591
  OPDEF(JSOP_LAMBDA_DBGFC, 233,"lambda_dbgfc", NULL, 3, 0, 1, 19, JOF_OBJECT)
592
+
593
+ /*
594
+ * Concatenate N values, coercing to string if necessary, where N is concatn's
595
+ * immediate. See record_JSOP_CONCATN for recording behavior.
596
+ */
597
+ OPDEF(JSOP_CONCATN, 234,"concatn", NULL, 3, -1, 1, 13, JOF_UINT16|JOF_TMPSLOT2)
@@ -1,4 +1,4 @@
1
- /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
1
+ /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
2
  * vim: set sw=4 ts=8 et tw=80:
3
3
  *
4
4
  * ***** BEGIN LICENSE BLOCK *****
@@ -0,0 +1,4213 @@
1
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ * vim: set ts=8 sw=4 et tw=79:
3
+ *
4
+ * ***** BEGIN LICENSE BLOCK *****
5
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6
+ *
7
+ * The contents of this file are subject to the Mozilla Public License Version
8
+ * 1.1 (the "License"); you may not use this file except in compliance with
9
+ * the License. You may obtain a copy of the License at
10
+ * http://www.mozilla.org/MPL/
11
+ *
12
+ * Software distributed under the License is distributed on an "AS IS" basis,
13
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14
+ * for the specific language governing rights and limitations under the
15
+ * License.
16
+ *
17
+ * The Original Code is Mozilla Communicator client code, released
18
+ * March 31, 1998.
19
+ *
20
+ * The Initial Developer of the Original Code is
21
+ * Netscape Communications Corporation.
22
+ * Portions created by the Initial Developer are Copyright (C) 1998
23
+ * the Initial Developer. All Rights Reserved.
24
+ *
25
+ * Contributor(s):
26
+ *
27
+ * Alternatively, the contents of this file may be used under the terms of
28
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
29
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30
+ * in which case the provisions of the GPL or the LGPL are applicable instead
31
+ * of those above. If you wish to allow use of your version of this file only
32
+ * under the terms of either the GPL or the LGPL, and not to allow others to
33
+ * use your version of this file under the terms of the MPL, indicate your
34
+ * decision by deleting the provisions above and replace them with the notice
35
+ * and other provisions required by the GPL or the LGPL. If you do not delete
36
+ * the provisions above, a recipient may use your version of this file under
37
+ * the terms of any one of the MPL, the GPL or the LGPL.
38
+ *
39
+ * ***** END LICENSE BLOCK ***** */
40
+
41
+ /* This file needs to be included in possibly multiple places. */
42
+
43
+ #if JS_THREADED_INTERP
44
+ interrupt:
45
+ #else /* !JS_THREADED_INTERP */
46
+ case -1:
47
+ JS_ASSERT(switchMask == -1);
48
+ #endif /* !JS_THREADED_INTERP */
49
+ {
50
+ bool moreInterrupts = false;
51
+ JSTrapHandler handler = cx->debugHooks->interruptHandler;
52
+ if (handler) {
53
+ #ifdef JS_TRACER
54
+ if (TRACE_RECORDER(cx))
55
+ js_AbortRecording(cx, "interrupt handler");
56
+ #endif
57
+ switch (handler(cx, script, regs.pc, &rval,
58
+ cx->debugHooks->interruptHandlerData)) {
59
+ case JSTRAP_ERROR:
60
+ goto error;
61
+ case JSTRAP_CONTINUE:
62
+ break;
63
+ case JSTRAP_RETURN:
64
+ fp->rval = rval;
65
+ ok = JS_TRUE;
66
+ goto forced_return;
67
+ case JSTRAP_THROW:
68
+ cx->throwing = JS_TRUE;
69
+ cx->exception = rval;
70
+ goto error;
71
+ default:;
72
+ }
73
+ moreInterrupts = true;
74
+ }
75
+
76
+ #ifdef JS_TRACER
77
+ TraceRecorder* tr = TRACE_RECORDER(cx);
78
+ if (tr) {
79
+ JSRecordingStatus status = TraceRecorder::monitorRecording(cx, tr, op);
80
+ switch (status) {
81
+ case JSRS_CONTINUE:
82
+ moreInterrupts = true;
83
+ break;
84
+ case JSRS_IMACRO:
85
+ atoms = COMMON_ATOMS_START(&rt->atomState);
86
+ op = JSOp(*regs.pc);
87
+ DO_OP(); /* keep interrupting for op. */
88
+ break;
89
+ case JSRS_ERROR:
90
+ // The code at 'error:' aborts the recording.
91
+ goto error;
92
+ case JSRS_STOP:
93
+ break;
94
+ default:
95
+ JS_NOT_REACHED("Bad recording status");
96
+ }
97
+ }
98
+ #endif /* !JS_TRACER */
99
+
100
+ #if JS_THREADED_INTERP
101
+ #ifdef MOZ_TRACEVIS
102
+ if (!moreInterrupts)
103
+ js_ExitTraceVisState(cx, R_ABORT);
104
+ #endif
105
+ jumpTable = moreInterrupts ? interruptJumpTable : normalJumpTable;
106
+ JS_EXTENSION_(goto *normalJumpTable[op]);
107
+ #else
108
+ switchMask = moreInterrupts ? -1 : 0;
109
+ switchOp = intN(op);
110
+ goto do_switch;
111
+ #endif
112
+ }
113
+
114
+ /* No-ops for ease of decompilation. */
115
+ ADD_EMPTY_CASE(JSOP_NOP)
116
+ ADD_EMPTY_CASE(JSOP_CONDSWITCH)
117
+ ADD_EMPTY_CASE(JSOP_TRY)
118
+ ADD_EMPTY_CASE(JSOP_TRACE)
119
+ #if JS_HAS_XML_SUPPORT
120
+ ADD_EMPTY_CASE(JSOP_STARTXML)
121
+ ADD_EMPTY_CASE(JSOP_STARTXMLEXPR)
122
+ #endif
123
+ END_EMPTY_CASES
124
+
125
+ /* ADD_EMPTY_CASE is not used here as JSOP_LINENO_LENGTH == 3. */
126
+ BEGIN_CASE(JSOP_LINENO)
127
+ END_CASE(JSOP_LINENO)
128
+
129
+ BEGIN_CASE(JSOP_PUSH)
130
+ PUSH_OPND(JSVAL_VOID);
131
+ END_CASE(JSOP_PUSH)
132
+
133
+ BEGIN_CASE(JSOP_POP)
134
+ regs.sp--;
135
+ END_CASE(JSOP_POP)
136
+
137
+ BEGIN_CASE(JSOP_POPN)
138
+ regs.sp -= GET_UINT16(regs.pc);
139
+ #ifdef DEBUG
140
+ JS_ASSERT(StackBase(fp) <= regs.sp);
141
+ obj = fp->blockChain;
142
+ JS_ASSERT_IF(obj,
143
+ OBJ_BLOCK_DEPTH(cx, obj) + OBJ_BLOCK_COUNT(cx, obj)
144
+ <= (size_t) (regs.sp - StackBase(fp)));
145
+ for (obj = fp->scopeChain; obj; obj = OBJ_GET_PARENT(cx, obj)) {
146
+ clasp = OBJ_GET_CLASS(cx, obj);
147
+ if (clasp != &js_BlockClass && clasp != &js_WithClass)
148
+ continue;
149
+ if (obj->getPrivate() != fp)
150
+ break;
151
+ JS_ASSERT(StackBase(fp) + OBJ_BLOCK_DEPTH(cx, obj)
152
+ + ((clasp == &js_BlockClass)
153
+ ? OBJ_BLOCK_COUNT(cx, obj)
154
+ : 1)
155
+ <= regs.sp);
156
+ }
157
+ #endif
158
+ END_CASE(JSOP_POPN)
159
+
160
+ BEGIN_CASE(JSOP_SETRVAL)
161
+ BEGIN_CASE(JSOP_POPV)
162
+ ASSERT_NOT_THROWING(cx);
163
+ fp->rval = POP_OPND();
164
+ END_CASE(JSOP_POPV)
165
+
166
+ BEGIN_CASE(JSOP_ENTERWITH)
167
+ if (!js_EnterWith(cx, -1))
168
+ goto error;
169
+
170
+ /*
171
+ * We must ensure that different "with" blocks have different
172
+ * stack depth associated with them. This allows the try handler
173
+ * search to properly recover the scope chain. Thus we must keep
174
+ * the stack at least at the current level.
175
+ *
176
+ * We set sp[-1] to the current "with" object to help asserting
177
+ * the enter/leave balance in [leavewith].
178
+ */
179
+ regs.sp[-1] = OBJECT_TO_JSVAL(fp->scopeChain);
180
+ END_CASE(JSOP_ENTERWITH)
181
+
182
+ BEGIN_CASE(JSOP_LEAVEWITH)
183
+ JS_ASSERT(regs.sp[-1] == OBJECT_TO_JSVAL(fp->scopeChain));
184
+ regs.sp--;
185
+ js_LeaveWith(cx);
186
+ END_CASE(JSOP_LEAVEWITH)
187
+
188
+ BEGIN_CASE(JSOP_RETURN)
189
+ fp->rval = POP_OPND();
190
+ /* FALL THROUGH */
191
+
192
+ BEGIN_CASE(JSOP_RETRVAL) /* fp->rval already set */
193
+ BEGIN_CASE(JSOP_STOP)
194
+ /*
195
+ * When the inlined frame exits with an exception or an error, ok
196
+ * will be false after the inline_return label.
197
+ */
198
+ ASSERT_NOT_THROWING(cx);
199
+ CHECK_BRANCH();
200
+
201
+ if (fp->imacpc) {
202
+ /*
203
+ * If we are at the end of an imacro, return to its caller in
204
+ * the current frame.
205
+ */
206
+ JS_ASSERT(op == JSOP_STOP);
207
+
208
+ end_imacro:
209
+ JS_ASSERT((uintN)(regs.sp - fp->slots) <= script->nslots);
210
+ regs.pc = fp->imacpc + js_CodeSpec[*fp->imacpc].length;
211
+ fp->imacpc = NULL;
212
+ atoms = script->atomMap.vector;
213
+ op = JSOp(*regs.pc);
214
+ DO_OP();
215
+ }
216
+
217
+ JS_ASSERT(regs.sp == StackBase(fp));
218
+ if ((fp->flags & JSFRAME_CONSTRUCTING) &&
219
+ JSVAL_IS_PRIMITIVE(fp->rval)) {
220
+ if (!fp->fun) {
221
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
222
+ JSMSG_BAD_NEW_RESULT,
223
+ js_ValueToPrintableString(cx, rval));
224
+ goto error;
225
+ }
226
+ fp->rval = OBJECT_TO_JSVAL(fp->thisp);
227
+ }
228
+ ok = JS_TRUE;
229
+ if (inlineCallCount)
230
+ inline_return:
231
+ {
232
+ JSInlineFrame *ifp = (JSInlineFrame *) fp;
233
+ void *hookData = ifp->hookData;
234
+
235
+ JS_ASSERT(!fp->blockChain);
236
+ JS_ASSERT(!js_IsActiveWithOrBlock(cx, fp->scopeChain, 0));
237
+
238
+ if (script->staticLevel < JS_DISPLAY_SIZE)
239
+ cx->display[script->staticLevel] = fp->displaySave;
240
+
241
+ if (hookData) {
242
+ JSInterpreterHook hook;
243
+ JSBool status;
244
+
245
+ hook = cx->debugHooks->callHook;
246
+ if (hook) {
247
+ /*
248
+ * Do not pass &ok directly as exposing the address
249
+ * inhibits optimizations and uninitialised warnings.
250
+ */
251
+ status = ok;
252
+ hook(cx, fp, JS_FALSE, &status, hookData);
253
+ ok = status;
254
+ CHECK_INTERRUPT_HANDLER();
255
+ }
256
+ }
257
+
258
+ /*
259
+ * If fp has a call object, sync values and clear the back-
260
+ * pointer. This can happen for a lightweight function if it
261
+ * calls eval unexpectedly (in a way that is hidden from the
262
+ * compiler). See bug 325540.
263
+ */
264
+ fp->putActivationObjects(cx);
265
+
266
+ #ifdef INCLUDE_MOZILLA_DTRACE
267
+ /* DTrace function return, inlines */
268
+ if (JAVASCRIPT_FUNCTION_RVAL_ENABLED())
269
+ jsdtrace_function_rval(cx, fp, fp->fun, &fp->rval);
270
+ if (JAVASCRIPT_FUNCTION_RETURN_ENABLED())
271
+ jsdtrace_function_return(cx, fp, fp->fun);
272
+ #endif
273
+
274
+ /* Restore context version only if callee hasn't set version. */
275
+ if (JS_LIKELY(cx->version == currentVersion)) {
276
+ currentVersion = ifp->callerVersion;
277
+ if (currentVersion != cx->version)
278
+ js_SetVersion(cx, currentVersion);
279
+ }
280
+
281
+ /*
282
+ * If inline-constructing, replace primitive rval with the new
283
+ * object passed in via |this|, and instrument this constructor
284
+ * invocation
285
+ */
286
+ if (fp->flags & JSFRAME_CONSTRUCTING) {
287
+ if (JSVAL_IS_PRIMITIVE(fp->rval))
288
+ fp->rval = OBJECT_TO_JSVAL(fp->thisp);
289
+ JS_RUNTIME_METER(cx->runtime, constructs);
290
+ }
291
+
292
+ /* Restore caller's registers. */
293
+ regs = ifp->callerRegs;
294
+
295
+ /* Store the return value in the caller's operand frame. */
296
+ regs.sp -= 1 + (size_t) ifp->frame.argc;
297
+ regs.sp[-1] = fp->rval;
298
+
299
+ /* Restore cx->fp and release the inline frame's space. */
300
+ cx->fp = fp = fp->down;
301
+ JS_ASSERT(fp->regs == &ifp->callerRegs);
302
+ fp->regs = &regs;
303
+ JS_ARENA_RELEASE(&cx->stackPool, ifp->mark);
304
+
305
+ /* Restore the calling script's interpreter registers. */
306
+ script = fp->script;
307
+ atoms = FrameAtomBase(cx, fp);
308
+
309
+ /* Resume execution in the calling frame. */
310
+ inlineCallCount--;
311
+ if (JS_LIKELY(ok)) {
312
+ TRACE_0(LeaveFrame);
313
+ JS_ASSERT(js_CodeSpec[js_GetOpcode(cx, script, regs.pc)].length
314
+ == JSOP_CALL_LENGTH);
315
+ len = JSOP_CALL_LENGTH;
316
+ DO_NEXT_OP(len);
317
+ }
318
+ goto error;
319
+ }
320
+ goto exit;
321
+
322
+ BEGIN_CASE(JSOP_DEFAULT)
323
+ (void) POP();
324
+ /* FALL THROUGH */
325
+ BEGIN_CASE(JSOP_GOTO)
326
+ len = GET_JUMP_OFFSET(regs.pc);
327
+ BRANCH(len);
328
+ END_CASE(JSOP_GOTO)
329
+
330
+ BEGIN_CASE(JSOP_IFEQ)
331
+ POP_BOOLEAN(cx, rval, cond);
332
+ if (cond == JS_FALSE) {
333
+ len = GET_JUMP_OFFSET(regs.pc);
334
+ BRANCH(len);
335
+ }
336
+ END_CASE(JSOP_IFEQ)
337
+
338
+ BEGIN_CASE(JSOP_IFNE)
339
+ POP_BOOLEAN(cx, rval, cond);
340
+ if (cond != JS_FALSE) {
341
+ len = GET_JUMP_OFFSET(regs.pc);
342
+ BRANCH(len);
343
+ }
344
+ END_CASE(JSOP_IFNE)
345
+
346
+ BEGIN_CASE(JSOP_OR)
347
+ POP_BOOLEAN(cx, rval, cond);
348
+ if (cond == JS_TRUE) {
349
+ len = GET_JUMP_OFFSET(regs.pc);
350
+ PUSH_OPND(rval);
351
+ DO_NEXT_OP(len);
352
+ }
353
+ END_CASE(JSOP_OR)
354
+
355
+ BEGIN_CASE(JSOP_AND)
356
+ POP_BOOLEAN(cx, rval, cond);
357
+ if (cond == JS_FALSE) {
358
+ len = GET_JUMP_OFFSET(regs.pc);
359
+ PUSH_OPND(rval);
360
+ DO_NEXT_OP(len);
361
+ }
362
+ END_CASE(JSOP_AND)
363
+
364
+ BEGIN_CASE(JSOP_DEFAULTX)
365
+ (void) POP();
366
+ /* FALL THROUGH */
367
+ BEGIN_CASE(JSOP_GOTOX)
368
+ len = GET_JUMPX_OFFSET(regs.pc);
369
+ BRANCH(len);
370
+ END_CASE(JSOP_GOTOX);
371
+
372
+ BEGIN_CASE(JSOP_IFEQX)
373
+ POP_BOOLEAN(cx, rval, cond);
374
+ if (cond == JS_FALSE) {
375
+ len = GET_JUMPX_OFFSET(regs.pc);
376
+ BRANCH(len);
377
+ }
378
+ END_CASE(JSOP_IFEQX)
379
+
380
+ BEGIN_CASE(JSOP_IFNEX)
381
+ POP_BOOLEAN(cx, rval, cond);
382
+ if (cond != JS_FALSE) {
383
+ len = GET_JUMPX_OFFSET(regs.pc);
384
+ BRANCH(len);
385
+ }
386
+ END_CASE(JSOP_IFNEX)
387
+
388
+ BEGIN_CASE(JSOP_ORX)
389
+ POP_BOOLEAN(cx, rval, cond);
390
+ if (cond == JS_TRUE) {
391
+ len = GET_JUMPX_OFFSET(regs.pc);
392
+ PUSH_OPND(rval);
393
+ DO_NEXT_OP(len);
394
+ }
395
+ END_CASE(JSOP_ORX)
396
+
397
+ BEGIN_CASE(JSOP_ANDX)
398
+ POP_BOOLEAN(cx, rval, cond);
399
+ if (cond == JS_FALSE) {
400
+ len = GET_JUMPX_OFFSET(regs.pc);
401
+ PUSH_OPND(rval);
402
+ DO_NEXT_OP(len);
403
+ }
404
+ END_CASE(JSOP_ANDX)
405
+
406
+ /*
407
+ * If the index value at sp[n] is not an int that fits in a jsval, it could
408
+ * be an object (an XML QName, AttributeName, or AnyName), but only if we are
409
+ * compiling with JS_HAS_XML_SUPPORT. Otherwise convert the index value to a
410
+ * string atom id.
411
+ */
412
+ #define FETCH_ELEMENT_ID(obj, n, id) \
413
+ JS_BEGIN_MACRO \
414
+ jsval idval_ = FETCH_OPND(n); \
415
+ if (JSVAL_IS_INT(idval_)) { \
416
+ id = INT_JSVAL_TO_JSID(idval_); \
417
+ } else { \
418
+ if (!js_InternNonIntElementId(cx, obj, idval_, &id)) \
419
+ goto error; \
420
+ regs.sp[n] = ID_TO_VALUE(id); \
421
+ } \
422
+ JS_END_MACRO
423
+
424
+ #define TRY_BRANCH_AFTER_COND(cond,spdec) \
425
+ JS_BEGIN_MACRO \
426
+ uintN diff_; \
427
+ JS_ASSERT(js_CodeSpec[op].length == 1); \
428
+ diff_ = (uintN) regs.pc[1] - (uintN) JSOP_IFEQ; \
429
+ if (diff_ <= 1) { \
430
+ regs.sp -= spdec; \
431
+ if (cond == (diff_ != 0)) { \
432
+ ++regs.pc; \
433
+ len = GET_JUMP_OFFSET(regs.pc); \
434
+ BRANCH(len); \
435
+ } \
436
+ len = 1 + JSOP_IFEQ_LENGTH; \
437
+ DO_NEXT_OP(len); \
438
+ } \
439
+ JS_END_MACRO
440
+
441
+ BEGIN_CASE(JSOP_IN)
442
+ rval = FETCH_OPND(-1);
443
+ if (JSVAL_IS_PRIMITIVE(rval)) {
444
+ js_ReportValueError(cx, JSMSG_IN_NOT_OBJECT, -1, rval, NULL);
445
+ goto error;
446
+ }
447
+ obj = JSVAL_TO_OBJECT(rval);
448
+ FETCH_ELEMENT_ID(obj, -2, id);
449
+ if (!obj->lookupProperty(cx, id, &obj2, &prop))
450
+ goto error;
451
+ cond = prop != NULL;
452
+ if (prop)
453
+ obj2->dropProperty(cx, prop);
454
+ TRY_BRANCH_AFTER_COND(cond, 2);
455
+ regs.sp--;
456
+ STORE_OPND(-1, BOOLEAN_TO_JSVAL(cond));
457
+ END_CASE(JSOP_IN)
458
+
459
+ BEGIN_CASE(JSOP_ITER)
460
+ JS_ASSERT(regs.sp > StackBase(fp));
461
+ flags = regs.pc[1];
462
+ if (!js_ValueToIterator(cx, flags, &regs.sp[-1]))
463
+ goto error;
464
+ CHECK_INTERRUPT_HANDLER();
465
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(regs.sp[-1]));
466
+ PUSH(JSVAL_VOID);
467
+ END_CASE(JSOP_ITER)
468
+
469
+ BEGIN_CASE(JSOP_NEXTITER)
470
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
471
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(regs.sp[-2]));
472
+ if (!js_CallIteratorNext(cx, JSVAL_TO_OBJECT(regs.sp[-2]), &regs.sp[-1]))
473
+ goto error;
474
+ CHECK_INTERRUPT_HANDLER();
475
+ rval = BOOLEAN_TO_JSVAL(regs.sp[-1] != JSVAL_HOLE);
476
+ PUSH(rval);
477
+ END_CASE(JSOP_NEXTITER)
478
+
479
+ BEGIN_CASE(JSOP_ENDITER)
480
+ /*
481
+ * Decrease the stack pointer even when !ok -- see comments in the
482
+ * exception capturing code for details.
483
+ */
484
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
485
+ ok = js_CloseIterator(cx, regs.sp[-2]);
486
+ regs.sp -= 2;
487
+ if (!ok)
488
+ goto error;
489
+ END_CASE(JSOP_ENDITER)
490
+
491
+ BEGIN_CASE(JSOP_FORARG)
492
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
493
+ slot = GET_ARGNO(regs.pc);
494
+ JS_ASSERT(slot < fp->fun->nargs);
495
+ fp->argv[slot] = regs.sp[-1];
496
+ END_CASE(JSOP_FORARG)
497
+
498
+ BEGIN_CASE(JSOP_FORLOCAL)
499
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
500
+ slot = GET_SLOTNO(regs.pc);
501
+ JS_ASSERT(slot < fp->script->nslots);
502
+ fp->slots[slot] = regs.sp[-1];
503
+ END_CASE(JSOP_FORLOCAL)
504
+
505
+ BEGIN_CASE(JSOP_FORNAME)
506
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
507
+ LOAD_ATOM(0);
508
+ id = ATOM_TO_JSID(atom);
509
+ if (!js_FindProperty(cx, id, &obj, &obj2, &prop))
510
+ goto error;
511
+ if (prop)
512
+ obj2->dropProperty(cx, prop);
513
+ ok = obj->setProperty(cx, id, &regs.sp[-1]);
514
+ if (!ok)
515
+ goto error;
516
+ END_CASE(JSOP_FORNAME)
517
+
518
+ BEGIN_CASE(JSOP_FORPROP)
519
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
520
+ LOAD_ATOM(0);
521
+ id = ATOM_TO_JSID(atom);
522
+ FETCH_OBJECT(cx, -1, lval, obj);
523
+ ok = obj->setProperty(cx, id, &regs.sp[-2]);
524
+ if (!ok)
525
+ goto error;
526
+ regs.sp--;
527
+ END_CASE(JSOP_FORPROP)
528
+
529
+ BEGIN_CASE(JSOP_FORELEM)
530
+ /*
531
+ * JSOP_FORELEM simply dups the property identifier at top of stack
532
+ * and lets the subsequent JSOP_ENUMELEM opcode sequence handle the
533
+ * left-hand side expression evaluation and assignment. This opcode
534
+ * exists solely to help the decompiler.
535
+ */
536
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
537
+ rval = FETCH_OPND(-1);
538
+ PUSH(rval);
539
+ END_CASE(JSOP_FORELEM)
540
+
541
+ BEGIN_CASE(JSOP_DUP)
542
+ JS_ASSERT(regs.sp > StackBase(fp));
543
+ rval = FETCH_OPND(-1);
544
+ PUSH(rval);
545
+ END_CASE(JSOP_DUP)
546
+
547
+ BEGIN_CASE(JSOP_DUP2)
548
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
549
+ lval = FETCH_OPND(-2);
550
+ rval = FETCH_OPND(-1);
551
+ PUSH(lval);
552
+ PUSH(rval);
553
+ END_CASE(JSOP_DUP2)
554
+
555
+ BEGIN_CASE(JSOP_SWAP)
556
+ JS_ASSERT(regs.sp - 2 >= StackBase(fp));
557
+ lval = FETCH_OPND(-2);
558
+ rval = FETCH_OPND(-1);
559
+ STORE_OPND(-1, lval);
560
+ STORE_OPND(-2, rval);
561
+ END_CASE(JSOP_SWAP)
562
+
563
+ BEGIN_CASE(JSOP_PICK)
564
+ i = regs.pc[1];
565
+ JS_ASSERT(regs.sp - (i+1) >= StackBase(fp));
566
+ lval = regs.sp[-(i+1)];
567
+ memmove(regs.sp - (i+1), regs.sp - i, sizeof(jsval)*i);
568
+ regs.sp[-1] = lval;
569
+ END_CASE(JSOP_PICK)
570
+
571
+ #define PROPERTY_OP(n, call) \
572
+ JS_BEGIN_MACRO \
573
+ /* Fetch the left part and resolve it to a non-null object. */ \
574
+ FETCH_OBJECT(cx, n, lval, obj); \
575
+ \
576
+ /* Get or set the property. */ \
577
+ if (!call) \
578
+ goto error; \
579
+ JS_END_MACRO
580
+
581
+ #define ELEMENT_OP(n, call) \
582
+ JS_BEGIN_MACRO \
583
+ /* Fetch the left part and resolve it to a non-null object. */ \
584
+ FETCH_OBJECT(cx, n - 1, lval, obj); \
585
+ \
586
+ /* Fetch index and convert it to id suitable for use with obj. */ \
587
+ FETCH_ELEMENT_ID(obj, n, id); \
588
+ \
589
+ /* Get or set the element. */ \
590
+ if (!call) \
591
+ goto error; \
592
+ JS_END_MACRO
593
+
594
+ #define NATIVE_GET(cx,obj,pobj,sprop,vp) \
595
+ JS_BEGIN_MACRO \
596
+ if (SPROP_HAS_STUB_GETTER(sprop)) { \
597
+ /* Fast path for Object instance properties. */ \
598
+ JS_ASSERT((sprop)->slot != SPROP_INVALID_SLOT || \
599
+ !SPROP_HAS_STUB_SETTER(sprop)); \
600
+ *vp = ((sprop)->slot != SPROP_INVALID_SLOT) \
601
+ ? LOCKED_OBJ_GET_SLOT(pobj, (sprop)->slot) \
602
+ : JSVAL_VOID; \
603
+ } else { \
604
+ if (!js_NativeGet(cx, obj, pobj, sprop, vp)) \
605
+ goto error; \
606
+ } \
607
+ JS_END_MACRO
608
+
609
+ #define NATIVE_SET(cx,obj,sprop,entry,vp) \
610
+ JS_BEGIN_MACRO \
611
+ TRACE_2(SetPropHit, entry, sprop); \
612
+ if (SPROP_HAS_STUB_SETTER(sprop) && \
613
+ (sprop)->slot != SPROP_INVALID_SLOT) { \
614
+ /* Fast path for, e.g., Object instance properties. */ \
615
+ LOCKED_OBJ_WRITE_SLOT(cx, obj, (sprop)->slot, *vp); \
616
+ } else { \
617
+ if (!js_NativeSet(cx, obj, sprop, vp)) \
618
+ goto error; \
619
+ } \
620
+ JS_END_MACRO
621
+
622
+ /*
623
+ * Skip the JSOP_POP typically found after a JSOP_SET* opcode, where oplen is
624
+ * the constant length of the SET opcode sequence, and spdec is the constant
625
+ * by which to decrease the stack pointer to pop all of the SET op's operands.
626
+ *
627
+ * NB: unlike macros that could conceivably be replaced by functions (ignoring
628
+ * goto error), where a call should not have to be braced in order to expand
629
+ * correctly (e.g., in if (cond) FOO(); else BAR()), these three macros lack
630
+ * JS_{BEGIN,END}_MACRO brackets. They are also indented so as to align with
631
+ * nearby opcode code.
632
+ */
633
+ #define SKIP_POP_AFTER_SET(oplen,spdec) \
634
+ if (regs.pc[oplen] == JSOP_POP) { \
635
+ regs.sp -= spdec; \
636
+ regs.pc += oplen + JSOP_POP_LENGTH; \
637
+ op = (JSOp) *regs.pc; \
638
+ DO_OP(); \
639
+ }
640
+
641
+ #define END_SET_CASE(OP) \
642
+ SKIP_POP_AFTER_SET(OP##_LENGTH, 1); \
643
+ END_CASE(OP)
644
+
645
+ #define END_SET_CASE_STORE_RVAL(OP,spdec) \
646
+ SKIP_POP_AFTER_SET(OP##_LENGTH, spdec); \
647
+ rval = FETCH_OPND(-1); \
648
+ regs.sp -= (spdec) - 1; \
649
+ STORE_OPND(-1, rval); \
650
+ END_CASE(OP)
651
+
652
+ BEGIN_CASE(JSOP_SETCONST)
653
+ LOAD_ATOM(0);
654
+ obj = fp->varobj;
655
+ rval = FETCH_OPND(-1);
656
+ if (!obj->defineProperty(cx, ATOM_TO_JSID(atom), rval,
657
+ JS_PropertyStub, JS_PropertyStub,
658
+ JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY)) {
659
+ goto error;
660
+ }
661
+ END_SET_CASE(JSOP_SETCONST);
662
+
663
+ #if JS_HAS_DESTRUCTURING
664
+ BEGIN_CASE(JSOP_ENUMCONSTELEM)
665
+ rval = FETCH_OPND(-3);
666
+ FETCH_OBJECT(cx, -2, lval, obj);
667
+ FETCH_ELEMENT_ID(obj, -1, id);
668
+ if (!obj->defineProperty(cx, id, rval,
669
+ JS_PropertyStub, JS_PropertyStub,
670
+ JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY)) {
671
+ goto error;
672
+ }
673
+ regs.sp -= 3;
674
+ END_CASE(JSOP_ENUMCONSTELEM)
675
+ #endif
676
+
677
+ BEGIN_CASE(JSOP_BINDNAME)
678
+ do {
679
+ JSPropCacheEntry *entry;
680
+
681
+ /*
682
+ * We can skip the property lookup for the global object. If
683
+ * the property does not exist anywhere on the scope chain,
684
+ * JSOP_SETNAME adds the property to the global.
685
+ *
686
+ * As a consequence of this optimization for the global object
687
+ * we run its JSRESOLVE_ASSIGNING-tolerant resolve hooks only
688
+ * in JSOP_SETNAME, after the interpreter evaluates the right-
689
+ * hand-side of the assignment, and not here.
690
+ *
691
+ * This should be transparent to the hooks because the script,
692
+ * instead of name = rhs, could have used global.name = rhs
693
+ * given a global object reference, which also calls the hooks
694
+ * only after evaluating the rhs. We desire such resolve hook
695
+ * equivalence between the two forms.
696
+ */
697
+ obj = fp->scopeChain;
698
+ if (!OBJ_GET_PARENT(cx, obj))
699
+ break;
700
+ if (JS_LIKELY(OBJ_IS_NATIVE(obj))) {
701
+ PROPERTY_CACHE_TEST(cx, regs.pc, obj, obj2, entry, atom);
702
+ if (!atom) {
703
+ ASSERT_VALID_PROPERTY_CACHE_HIT(0, obj, obj2, entry);
704
+ JS_UNLOCK_OBJ(cx, obj2);
705
+ break;
706
+ }
707
+ } else {
708
+ entry = NULL;
709
+ LOAD_ATOM(0);
710
+ }
711
+ id = ATOM_TO_JSID(atom);
712
+ obj = js_FindIdentifierBase(cx, fp->scopeChain, id);
713
+ if (!obj)
714
+ goto error;
715
+ } while (0);
716
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
717
+ END_CASE(JSOP_BINDNAME)
718
+
719
+ BEGIN_CASE(JSOP_IMACOP)
720
+ JS_ASSERT(JS_UPTRDIFF(fp->imacpc, script->code) < script->length);
721
+ op = JSOp(*fp->imacpc);
722
+ DO_OP();
723
+
724
+ #define BITWISE_OP(OP) \
725
+ JS_BEGIN_MACRO \
726
+ FETCH_INT(cx, -2, i); \
727
+ FETCH_INT(cx, -1, j); \
728
+ i = i OP j; \
729
+ regs.sp--; \
730
+ STORE_INT(cx, -1, i); \
731
+ JS_END_MACRO
732
+
733
+ BEGIN_CASE(JSOP_BITOR)
734
+ BITWISE_OP(|);
735
+ END_CASE(JSOP_BITOR)
736
+
737
+ BEGIN_CASE(JSOP_BITXOR)
738
+ BITWISE_OP(^);
739
+ END_CASE(JSOP_BITXOR)
740
+
741
+ BEGIN_CASE(JSOP_BITAND)
742
+ BITWISE_OP(&);
743
+ END_CASE(JSOP_BITAND)
744
+
745
+ #define RELATIONAL_OP(OP) \
746
+ JS_BEGIN_MACRO \
747
+ rval = FETCH_OPND(-1); \
748
+ lval = FETCH_OPND(-2); \
749
+ /* Optimize for two int-tagged operands (typical loop control). */ \
750
+ if ((lval & rval) & JSVAL_INT) { \
751
+ cond = JSVAL_TO_INT(lval) OP JSVAL_TO_INT(rval); \
752
+ } else { \
753
+ if (!JSVAL_IS_PRIMITIVE(lval)) \
754
+ DEFAULT_VALUE(cx, -2, JSTYPE_NUMBER, lval); \
755
+ if (!JSVAL_IS_PRIMITIVE(rval)) \
756
+ DEFAULT_VALUE(cx, -1, JSTYPE_NUMBER, rval); \
757
+ if (JSVAL_IS_STRING(lval) && JSVAL_IS_STRING(rval)) { \
758
+ str = JSVAL_TO_STRING(lval); \
759
+ str2 = JSVAL_TO_STRING(rval); \
760
+ cond = js_CompareStrings(str, str2) OP 0; \
761
+ } else { \
762
+ VALUE_TO_NUMBER(cx, -2, lval, d); \
763
+ VALUE_TO_NUMBER(cx, -1, rval, d2); \
764
+ cond = JSDOUBLE_COMPARE(d, OP, d2, JS_FALSE); \
765
+ } \
766
+ } \
767
+ TRY_BRANCH_AFTER_COND(cond, 2); \
768
+ regs.sp--; \
769
+ STORE_OPND(-1, BOOLEAN_TO_JSVAL(cond)); \
770
+ JS_END_MACRO
771
+
772
+ /*
773
+ * NB: These macros can't use JS_BEGIN_MACRO/JS_END_MACRO around their bodies
774
+ * because they begin if/else chains, so callers must not put semicolons after
775
+ * the call expressions!
776
+ */
777
+ #if JS_HAS_XML_SUPPORT
778
+ #define XML_EQUALITY_OP(OP) \
779
+ if ((ltmp == JSVAL_OBJECT && \
780
+ (obj2 = JSVAL_TO_OBJECT(lval)) && \
781
+ OBJECT_IS_XML(cx, obj2)) || \
782
+ (rtmp == JSVAL_OBJECT && \
783
+ (obj2 = JSVAL_TO_OBJECT(rval)) && \
784
+ OBJECT_IS_XML(cx, obj2))) { \
785
+ if (JSVAL_IS_OBJECT(rval) && obj2 == JSVAL_TO_OBJECT(rval)) \
786
+ rval = lval; \
787
+ if (!js_TestXMLEquality(cx, obj2, rval, &cond)) \
788
+ goto error; \
789
+ cond = cond OP JS_TRUE; \
790
+ } else
791
+
792
+ #define EXTENDED_EQUALITY_OP(OP) \
793
+ if (ltmp == JSVAL_OBJECT && \
794
+ (obj2 = JSVAL_TO_OBJECT(lval)) && \
795
+ ((clasp = OBJ_GET_CLASS(cx, obj2))->flags & JSCLASS_IS_EXTENDED)) { \
796
+ JSExtendedClass *xclasp; \
797
+ \
798
+ xclasp = (JSExtendedClass *) clasp; \
799
+ if (!xclasp->equality(cx, obj2, rval, &cond)) \
800
+ goto error; \
801
+ cond = cond OP JS_TRUE; \
802
+ } else
803
+ #else
804
+ #define XML_EQUALITY_OP(OP) /* nothing */
805
+ #define EXTENDED_EQUALITY_OP(OP) /* nothing */
806
+ #endif
807
+
808
+ #define EQUALITY_OP(OP, IFNAN) \
809
+ JS_BEGIN_MACRO \
810
+ rval = FETCH_OPND(-1); \
811
+ lval = FETCH_OPND(-2); \
812
+ ltmp = JSVAL_TAG(lval); \
813
+ rtmp = JSVAL_TAG(rval); \
814
+ XML_EQUALITY_OP(OP) \
815
+ if (ltmp == rtmp) { \
816
+ if (ltmp == JSVAL_STRING) { \
817
+ str = JSVAL_TO_STRING(lval); \
818
+ str2 = JSVAL_TO_STRING(rval); \
819
+ cond = js_EqualStrings(str, str2) OP JS_TRUE; \
820
+ } else if (ltmp == JSVAL_DOUBLE) { \
821
+ d = *JSVAL_TO_DOUBLE(lval); \
822
+ d2 = *JSVAL_TO_DOUBLE(rval); \
823
+ cond = JSDOUBLE_COMPARE(d, OP, d2, IFNAN); \
824
+ } else { \
825
+ EXTENDED_EQUALITY_OP(OP) \
826
+ /* Handle all undefined (=>NaN) and int combinations. */ \
827
+ cond = lval OP rval; \
828
+ } \
829
+ } else { \
830
+ if (JSVAL_IS_NULL(lval) || JSVAL_IS_VOID(lval)) { \
831
+ cond = (JSVAL_IS_NULL(rval) || JSVAL_IS_VOID(rval)) OP 1; \
832
+ } else if (JSVAL_IS_NULL(rval) || JSVAL_IS_VOID(rval)) { \
833
+ cond = 1 OP 0; \
834
+ } else { \
835
+ if (ltmp == JSVAL_OBJECT) { \
836
+ DEFAULT_VALUE(cx, -2, JSTYPE_VOID, lval); \
837
+ ltmp = JSVAL_TAG(lval); \
838
+ } else if (rtmp == JSVAL_OBJECT) { \
839
+ DEFAULT_VALUE(cx, -1, JSTYPE_VOID, rval); \
840
+ rtmp = JSVAL_TAG(rval); \
841
+ } \
842
+ if (ltmp == JSVAL_STRING && rtmp == JSVAL_STRING) { \
843
+ str = JSVAL_TO_STRING(lval); \
844
+ str2 = JSVAL_TO_STRING(rval); \
845
+ cond = js_EqualStrings(str, str2) OP JS_TRUE; \
846
+ } else { \
847
+ VALUE_TO_NUMBER(cx, -2, lval, d); \
848
+ VALUE_TO_NUMBER(cx, -1, rval, d2); \
849
+ cond = JSDOUBLE_COMPARE(d, OP, d2, IFNAN); \
850
+ } \
851
+ } \
852
+ } \
853
+ TRY_BRANCH_AFTER_COND(cond, 2); \
854
+ regs.sp--; \
855
+ STORE_OPND(-1, BOOLEAN_TO_JSVAL(cond)); \
856
+ JS_END_MACRO
857
+
858
+ BEGIN_CASE(JSOP_EQ)
859
+ EQUALITY_OP(==, JS_FALSE);
860
+ END_CASE(JSOP_EQ)
861
+
862
+ BEGIN_CASE(JSOP_NE)
863
+ EQUALITY_OP(!=, JS_TRUE);
864
+ END_CASE(JSOP_NE)
865
+
866
+ #define STRICT_EQUALITY_OP(OP) \
867
+ JS_BEGIN_MACRO \
868
+ rval = FETCH_OPND(-1); \
869
+ lval = FETCH_OPND(-2); \
870
+ cond = js_StrictlyEqual(cx, lval, rval) OP JS_TRUE; \
871
+ regs.sp--; \
872
+ STORE_OPND(-1, BOOLEAN_TO_JSVAL(cond)); \
873
+ JS_END_MACRO
874
+
875
+ BEGIN_CASE(JSOP_STRICTEQ)
876
+ STRICT_EQUALITY_OP(==);
877
+ END_CASE(JSOP_STRICTEQ)
878
+
879
+ BEGIN_CASE(JSOP_STRICTNE)
880
+ STRICT_EQUALITY_OP(!=);
881
+ END_CASE(JSOP_STRICTNE)
882
+
883
+ BEGIN_CASE(JSOP_CASE)
884
+ STRICT_EQUALITY_OP(==);
885
+ (void) POP();
886
+ if (cond) {
887
+ len = GET_JUMP_OFFSET(regs.pc);
888
+ BRANCH(len);
889
+ }
890
+ PUSH(lval);
891
+ END_CASE(JSOP_CASE)
892
+
893
+ BEGIN_CASE(JSOP_CASEX)
894
+ STRICT_EQUALITY_OP(==);
895
+ (void) POP();
896
+ if (cond) {
897
+ len = GET_JUMPX_OFFSET(regs.pc);
898
+ BRANCH(len);
899
+ }
900
+ PUSH(lval);
901
+ END_CASE(JSOP_CASEX)
902
+
903
+ BEGIN_CASE(JSOP_LT)
904
+ RELATIONAL_OP(<);
905
+ END_CASE(JSOP_LT)
906
+
907
+ BEGIN_CASE(JSOP_LE)
908
+ RELATIONAL_OP(<=);
909
+ END_CASE(JSOP_LE)
910
+
911
+ BEGIN_CASE(JSOP_GT)
912
+ RELATIONAL_OP(>);
913
+ END_CASE(JSOP_GT)
914
+
915
+ BEGIN_CASE(JSOP_GE)
916
+ RELATIONAL_OP(>=);
917
+ END_CASE(JSOP_GE)
918
+
919
+ #undef EQUALITY_OP
920
+ #undef RELATIONAL_OP
921
+
922
+ #define SIGNED_SHIFT_OP(OP) \
923
+ JS_BEGIN_MACRO \
924
+ FETCH_INT(cx, -2, i); \
925
+ FETCH_INT(cx, -1, j); \
926
+ i = i OP (j & 31); \
927
+ regs.sp--; \
928
+ STORE_INT(cx, -1, i); \
929
+ JS_END_MACRO
930
+
931
+ BEGIN_CASE(JSOP_LSH)
932
+ SIGNED_SHIFT_OP(<<);
933
+ END_CASE(JSOP_LSH)
934
+
935
+ BEGIN_CASE(JSOP_RSH)
936
+ SIGNED_SHIFT_OP(>>);
937
+ END_CASE(JSOP_RSH)
938
+
939
+ BEGIN_CASE(JSOP_URSH)
940
+ {
941
+ uint32 u;
942
+
943
+ FETCH_UINT(cx, -2, u);
944
+ FETCH_INT(cx, -1, j);
945
+ u >>= (j & 31);
946
+ regs.sp--;
947
+ STORE_UINT(cx, -1, u);
948
+ }
949
+ END_CASE(JSOP_URSH)
950
+
951
+ #undef BITWISE_OP
952
+ #undef SIGNED_SHIFT_OP
953
+
954
+ BEGIN_CASE(JSOP_ADD)
955
+ rval = FETCH_OPND(-1);
956
+ lval = FETCH_OPND(-2);
957
+ #if JS_HAS_XML_SUPPORT
958
+ if (!JSVAL_IS_PRIMITIVE(lval) &&
959
+ (obj2 = JSVAL_TO_OBJECT(lval), OBJECT_IS_XML(cx, obj2)) &&
960
+ VALUE_IS_XML(cx, rval)) {
961
+ if (!js_ConcatenateXML(cx, obj2, rval, &rval))
962
+ goto error;
963
+ regs.sp--;
964
+ STORE_OPND(-1, rval);
965
+ } else
966
+ #endif
967
+ {
968
+ if (!JSVAL_IS_PRIMITIVE(lval))
969
+ DEFAULT_VALUE(cx, -2, JSTYPE_VOID, lval);
970
+ if (!JSVAL_IS_PRIMITIVE(rval))
971
+ DEFAULT_VALUE(cx, -1, JSTYPE_VOID, rval);
972
+ if ((cond = JSVAL_IS_STRING(lval)) || JSVAL_IS_STRING(rval)) {
973
+ if (cond) {
974
+ str = JSVAL_TO_STRING(lval);
975
+ str2 = js_ValueToString(cx, rval);
976
+ if (!str2)
977
+ goto error;
978
+ regs.sp[-1] = STRING_TO_JSVAL(str2);
979
+ } else {
980
+ str2 = JSVAL_TO_STRING(rval);
981
+ str = js_ValueToString(cx, lval);
982
+ if (!str)
983
+ goto error;
984
+ regs.sp[-2] = STRING_TO_JSVAL(str);
985
+ }
986
+ str = js_ConcatStrings(cx, str, str2);
987
+ if (!str)
988
+ goto error;
989
+ regs.sp--;
990
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
991
+ } else {
992
+ VALUE_TO_NUMBER(cx, -2, lval, d);
993
+ VALUE_TO_NUMBER(cx, -1, rval, d2);
994
+ d += d2;
995
+ regs.sp--;
996
+ STORE_NUMBER(cx, -1, d);
997
+ }
998
+ }
999
+ END_CASE(JSOP_ADD)
1000
+
1001
+ BEGIN_CASE(JSOP_CONCATN)
1002
+ {
1003
+ #ifdef JS_TRACER
1004
+ JS_ASSERT_IF(fp->imacpc,
1005
+ *fp->imacpc == JSOP_CONCATN && *regs.pc == JSOP_IMACOP);
1006
+
1007
+ /*
1008
+ * This instruction can be executed in three contexts. (1) is normal
1009
+ * execution. (2) is while recording, during an imacro 'imacop'.
1010
+ * (3) is during a failed recording or when trace execution aborts
1011
+ * during a recorded imacro.
1012
+ * 1. !imacro : N args on stack, pc is regs.pc
1013
+ * 2. imacro && recording : N args on stack, pc is fp->imacpc
1014
+ * 3. imacro && !recording : N+2 args on stack, pc is fp->imacpc
1015
+ */
1016
+ bool imacro = fp->imacpc != NULL;
1017
+ bool recording = TRACE_RECORDER(cx) != NULL;
1018
+ if (imacro) {
1019
+ argc = GET_ARGC(fp->imacpc);
1020
+ if (!recording)
1021
+ js_ConcatPostImacroStackCleanup(argc, regs, NULL);
1022
+ } else {
1023
+ #endif /* JS_TRACER */
1024
+ argc = GET_ARGC(regs.pc);
1025
+ #ifdef JS_TRACER
1026
+ }
1027
+ #endif /* JS_TRACER */
1028
+
1029
+ JSCharBuffer buf(cx);
1030
+ for (vp = regs.sp - argc; vp < regs.sp; vp++) {
1031
+ if ((!JSVAL_IS_PRIMITIVE(*vp) &&
1032
+ !JSVAL_TO_OBJECT(*vp)->defaultValue(cx, JSTYPE_VOID, vp)) ||
1033
+ !js_ValueToCharBuffer(cx, *vp, buf)) {
1034
+ goto error;
1035
+ }
1036
+ }
1037
+
1038
+ str = js_NewStringFromCharBuffer(cx, buf);
1039
+ if (!str)
1040
+ goto error;
1041
+
1042
+ regs.sp -= argc - 1;
1043
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
1044
+
1045
+ #ifdef JS_TRACER
1046
+ if (imacro) {
1047
+ /* END_CASE does pc += CONCATN_LENGTH. (IMACOP YOU IDIOT!) */
1048
+ regs.pc -= JSOP_CONCATN_LENGTH - JSOP_IMACOP_LENGTH;
1049
+ }
1050
+ #endif /* JS_TRACER */
1051
+ }
1052
+ END_CASE(JSOP_CONCATN)
1053
+
1054
+ #define BINARY_OP(OP) \
1055
+ JS_BEGIN_MACRO \
1056
+ FETCH_NUMBER(cx, -2, d); \
1057
+ FETCH_NUMBER(cx, -1, d2); \
1058
+ d = d OP d2; \
1059
+ regs.sp--; \
1060
+ STORE_NUMBER(cx, -1, d); \
1061
+ JS_END_MACRO
1062
+
1063
+ BEGIN_CASE(JSOP_SUB)
1064
+ BINARY_OP(-);
1065
+ END_CASE(JSOP_SUB)
1066
+
1067
+ BEGIN_CASE(JSOP_MUL)
1068
+ BINARY_OP(*);
1069
+ END_CASE(JSOP_MUL)
1070
+
1071
+ BEGIN_CASE(JSOP_DIV)
1072
+ FETCH_NUMBER(cx, -1, d2);
1073
+ FETCH_NUMBER(cx, -2, d);
1074
+ regs.sp--;
1075
+ if (d2 == 0) {
1076
+ #ifdef XP_WIN
1077
+ /* XXX MSVC miscompiles such that (NaN == 0) */
1078
+ if (JSDOUBLE_IS_NaN(d2))
1079
+ rval = DOUBLE_TO_JSVAL(rt->jsNaN);
1080
+ else
1081
+ #endif
1082
+ if (d == 0 || JSDOUBLE_IS_NaN(d))
1083
+ rval = DOUBLE_TO_JSVAL(rt->jsNaN);
1084
+ else if (JSDOUBLE_IS_NEG(d) != JSDOUBLE_IS_NEG(d2))
1085
+ rval = DOUBLE_TO_JSVAL(rt->jsNegativeInfinity);
1086
+ else
1087
+ rval = DOUBLE_TO_JSVAL(rt->jsPositiveInfinity);
1088
+ STORE_OPND(-1, rval);
1089
+ } else {
1090
+ d /= d2;
1091
+ STORE_NUMBER(cx, -1, d);
1092
+ }
1093
+ END_CASE(JSOP_DIV)
1094
+
1095
+ BEGIN_CASE(JSOP_MOD)
1096
+ FETCH_NUMBER(cx, -1, d2);
1097
+ FETCH_NUMBER(cx, -2, d);
1098
+ regs.sp--;
1099
+ if (d2 == 0) {
1100
+ STORE_OPND(-1, DOUBLE_TO_JSVAL(rt->jsNaN));
1101
+ } else {
1102
+ d = js_fmod(d, d2);
1103
+ STORE_NUMBER(cx, -1, d);
1104
+ }
1105
+ END_CASE(JSOP_MOD)
1106
+
1107
+ BEGIN_CASE(JSOP_NOT)
1108
+ POP_BOOLEAN(cx, rval, cond);
1109
+ PUSH_OPND(BOOLEAN_TO_JSVAL(!cond));
1110
+ END_CASE(JSOP_NOT)
1111
+
1112
+ BEGIN_CASE(JSOP_BITNOT)
1113
+ FETCH_INT(cx, -1, i);
1114
+ i = ~i;
1115
+ STORE_INT(cx, -1, i);
1116
+ END_CASE(JSOP_BITNOT)
1117
+
1118
+ BEGIN_CASE(JSOP_NEG)
1119
+ /*
1120
+ * When the operand is int jsval, INT_FITS_IN_JSVAL(i) implies
1121
+ * INT_FITS_IN_JSVAL(-i) unless i is 0 or JSVAL_INT_MIN when the
1122
+ * results, -0.0 or JSVAL_INT_MAX + 1, are jsdouble values.
1123
+ */
1124
+ rval = FETCH_OPND(-1);
1125
+ if (JSVAL_IS_INT(rval) &&
1126
+ rval != INT_TO_JSVAL(JSVAL_INT_MIN) &&
1127
+ (i = JSVAL_TO_INT(rval)) != 0) {
1128
+ JS_STATIC_ASSERT(!INT_FITS_IN_JSVAL(-JSVAL_INT_MIN));
1129
+ i = -i;
1130
+ JS_ASSERT(INT_FITS_IN_JSVAL(i));
1131
+ regs.sp[-1] = INT_TO_JSVAL(i);
1132
+ } else {
1133
+ if (JSVAL_IS_DOUBLE(rval)) {
1134
+ d = *JSVAL_TO_DOUBLE(rval);
1135
+ } else {
1136
+ d = js_ValueToNumber(cx, &regs.sp[-1]);
1137
+ if (JSVAL_IS_NULL(regs.sp[-1]))
1138
+ goto error;
1139
+ JS_ASSERT(JSVAL_IS_NUMBER(regs.sp[-1]) ||
1140
+ regs.sp[-1] == JSVAL_TRUE);
1141
+ }
1142
+ d = -d;
1143
+ if (!js_NewNumberInRootedValue(cx, d, &regs.sp[-1]))
1144
+ goto error;
1145
+ }
1146
+ END_CASE(JSOP_NEG)
1147
+
1148
+ BEGIN_CASE(JSOP_POS)
1149
+ rval = FETCH_OPND(-1);
1150
+ if (!JSVAL_IS_NUMBER(rval)) {
1151
+ d = js_ValueToNumber(cx, &regs.sp[-1]);
1152
+ rval = regs.sp[-1];
1153
+ if (JSVAL_IS_NULL(rval))
1154
+ goto error;
1155
+ if (rval == JSVAL_TRUE) {
1156
+ if (!js_NewNumberInRootedValue(cx, d, &regs.sp[-1]))
1157
+ goto error;
1158
+ } else {
1159
+ JS_ASSERT(JSVAL_IS_NUMBER(rval));
1160
+ }
1161
+ }
1162
+ END_CASE(JSOP_POS)
1163
+
1164
+ BEGIN_CASE(JSOP_DELNAME)
1165
+ LOAD_ATOM(0);
1166
+ id = ATOM_TO_JSID(atom);
1167
+ if (!js_FindProperty(cx, id, &obj, &obj2, &prop))
1168
+ goto error;
1169
+
1170
+ /* ECMA says to return true if name is undefined or inherited. */
1171
+ PUSH_OPND(JSVAL_TRUE);
1172
+ if (prop) {
1173
+ obj2->dropProperty(cx, prop);
1174
+ if (!obj->deleteProperty(cx, id, &regs.sp[-1]))
1175
+ goto error;
1176
+ }
1177
+ END_CASE(JSOP_DELNAME)
1178
+
1179
+ BEGIN_CASE(JSOP_DELPROP)
1180
+ LOAD_ATOM(0);
1181
+ id = ATOM_TO_JSID(atom);
1182
+ PROPERTY_OP(-1, obj->deleteProperty(cx, id, &rval));
1183
+ STORE_OPND(-1, rval);
1184
+ END_CASE(JSOP_DELPROP)
1185
+
1186
+ BEGIN_CASE(JSOP_DELELEM)
1187
+ ELEMENT_OP(-1, obj->deleteProperty(cx, id, &rval));
1188
+ regs.sp--;
1189
+ STORE_OPND(-1, rval);
1190
+ END_CASE(JSOP_DELELEM)
1191
+
1192
+ BEGIN_CASE(JSOP_TYPEOFEXPR)
1193
+ BEGIN_CASE(JSOP_TYPEOF)
1194
+ rval = FETCH_OPND(-1);
1195
+ type = JS_TypeOfValue(cx, rval);
1196
+ atom = rt->atomState.typeAtoms[type];
1197
+ STORE_OPND(-1, ATOM_KEY(atom));
1198
+ END_CASE(JSOP_TYPEOF)
1199
+
1200
+ BEGIN_CASE(JSOP_VOID)
1201
+ STORE_OPND(-1, JSVAL_VOID);
1202
+ END_CASE(JSOP_VOID)
1203
+
1204
+ BEGIN_CASE(JSOP_INCELEM)
1205
+ BEGIN_CASE(JSOP_DECELEM)
1206
+ BEGIN_CASE(JSOP_ELEMINC)
1207
+ BEGIN_CASE(JSOP_ELEMDEC)
1208
+ /*
1209
+ * Delay fetching of id until we have the object to ensure
1210
+ * the proper evaluation order. See bug 372331.
1211
+ */
1212
+ id = 0;
1213
+ i = -2;
1214
+ goto fetch_incop_obj;
1215
+
1216
+ BEGIN_CASE(JSOP_INCPROP)
1217
+ BEGIN_CASE(JSOP_DECPROP)
1218
+ BEGIN_CASE(JSOP_PROPINC)
1219
+ BEGIN_CASE(JSOP_PROPDEC)
1220
+ LOAD_ATOM(0);
1221
+ id = ATOM_TO_JSID(atom);
1222
+ i = -1;
1223
+
1224
+ fetch_incop_obj:
1225
+ FETCH_OBJECT(cx, i, lval, obj);
1226
+ if (id == 0)
1227
+ FETCH_ELEMENT_ID(obj, -1, id);
1228
+ goto do_incop;
1229
+
1230
+ BEGIN_CASE(JSOP_INCNAME)
1231
+ BEGIN_CASE(JSOP_DECNAME)
1232
+ BEGIN_CASE(JSOP_NAMEINC)
1233
+ BEGIN_CASE(JSOP_NAMEDEC)
1234
+ {
1235
+ JSPropCacheEntry *entry;
1236
+
1237
+ obj = fp->scopeChain;
1238
+ if (JS_LIKELY(OBJ_IS_NATIVE(obj))) {
1239
+ PROPERTY_CACHE_TEST(cx, regs.pc, obj, obj2, entry, atom);
1240
+ if (!atom) {
1241
+ ASSERT_VALID_PROPERTY_CACHE_HIT(0, obj, obj2, entry);
1242
+ if (obj == obj2 && PCVAL_IS_SLOT(entry->vword)) {
1243
+ slot = PCVAL_TO_SLOT(entry->vword);
1244
+ JS_ASSERT(slot < OBJ_SCOPE(obj)->freeslot);
1245
+ rval = LOCKED_OBJ_GET_SLOT(obj, slot);
1246
+ if (JS_LIKELY(CAN_DO_FAST_INC_DEC(rval))) {
1247
+ rtmp = rval;
1248
+ rval += (js_CodeSpec[op].format & JOF_INC) ? 2 : -2;
1249
+ if (!(js_CodeSpec[op].format & JOF_POST))
1250
+ rtmp = rval;
1251
+ LOCKED_OBJ_SET_SLOT(obj, slot, rval);
1252
+ JS_UNLOCK_OBJ(cx, obj);
1253
+ PUSH_OPND(rtmp);
1254
+ len = JSOP_INCNAME_LENGTH;
1255
+ DO_NEXT_OP(len);
1256
+ }
1257
+ }
1258
+ JS_UNLOCK_OBJ(cx, obj2);
1259
+ LOAD_ATOM(0);
1260
+ }
1261
+ } else {
1262
+ LOAD_ATOM(0);
1263
+ }
1264
+ id = ATOM_TO_JSID(atom);
1265
+ if (!js_FindPropertyHelper(cx, id, true, &obj, &obj2, &prop))
1266
+ goto error;
1267
+ if (!prop)
1268
+ goto atom_not_defined;
1269
+ obj2->dropProperty(cx, prop);
1270
+ }
1271
+
1272
+ do_incop:
1273
+ {
1274
+ const JSCodeSpec *cs;
1275
+ jsval v;
1276
+
1277
+ /*
1278
+ * We need a root to store the value to leave on the stack until
1279
+ * we have done with obj->setProperty.
1280
+ */
1281
+ PUSH_OPND(JSVAL_NULL);
1282
+ if (!obj->getProperty(cx, id, &regs.sp[-1]))
1283
+ goto error;
1284
+
1285
+ cs = &js_CodeSpec[op];
1286
+ JS_ASSERT(cs->ndefs == 1);
1287
+ JS_ASSERT((cs->format & JOF_TMPSLOT_MASK) == JOF_TMPSLOT2);
1288
+ v = regs.sp[-1];
1289
+ if (JS_LIKELY(CAN_DO_FAST_INC_DEC(v))) {
1290
+ jsval incr;
1291
+
1292
+ incr = (cs->format & JOF_INC) ? 2 : -2;
1293
+ if (cs->format & JOF_POST) {
1294
+ regs.sp[-1] = v + incr;
1295
+ } else {
1296
+ v += incr;
1297
+ regs.sp[-1] = v;
1298
+ }
1299
+ fp->flags |= JSFRAME_ASSIGNING;
1300
+ ok = obj->setProperty(cx, id, &regs.sp[-1]);
1301
+ fp->flags &= ~JSFRAME_ASSIGNING;
1302
+ if (!ok)
1303
+ goto error;
1304
+
1305
+ /*
1306
+ * We must set regs.sp[-1] to v for both post and pre increments
1307
+ * as the setter overwrites regs.sp[-1].
1308
+ */
1309
+ regs.sp[-1] = v;
1310
+ } else {
1311
+ /* We need an extra root for the result. */
1312
+ PUSH_OPND(JSVAL_NULL);
1313
+ if (!js_DoIncDec(cx, cs, &regs.sp[-2], &regs.sp[-1]))
1314
+ goto error;
1315
+ fp->flags |= JSFRAME_ASSIGNING;
1316
+ ok = obj->setProperty(cx, id, &regs.sp[-1]);
1317
+ fp->flags &= ~JSFRAME_ASSIGNING;
1318
+ if (!ok)
1319
+ goto error;
1320
+ regs.sp--;
1321
+ }
1322
+
1323
+ if (cs->nuses == 0) {
1324
+ /* regs.sp[-1] already contains the result of name increment. */
1325
+ } else {
1326
+ rtmp = regs.sp[-1];
1327
+ regs.sp -= cs->nuses;
1328
+ regs.sp[-1] = rtmp;
1329
+ }
1330
+ len = cs->length;
1331
+ DO_NEXT_OP(len);
1332
+ }
1333
+
1334
+ {
1335
+ jsval incr, incr2;
1336
+
1337
+ /* Position cases so the most frequent i++ does not need a jump. */
1338
+ BEGIN_CASE(JSOP_DECARG)
1339
+ incr = -2; incr2 = -2; goto do_arg_incop;
1340
+ BEGIN_CASE(JSOP_ARGDEC)
1341
+ incr = -2; incr2 = 0; goto do_arg_incop;
1342
+ BEGIN_CASE(JSOP_INCARG)
1343
+ incr = 2; incr2 = 2; goto do_arg_incop;
1344
+ BEGIN_CASE(JSOP_ARGINC)
1345
+ incr = 2; incr2 = 0;
1346
+
1347
+ do_arg_incop:
1348
+ slot = GET_ARGNO(regs.pc);
1349
+ JS_ASSERT(slot < fp->fun->nargs);
1350
+ METER_SLOT_OP(op, slot);
1351
+ vp = fp->argv + slot;
1352
+ goto do_int_fast_incop;
1353
+
1354
+ BEGIN_CASE(JSOP_DECLOCAL)
1355
+ incr = -2; incr2 = -2; goto do_local_incop;
1356
+ BEGIN_CASE(JSOP_LOCALDEC)
1357
+ incr = -2; incr2 = 0; goto do_local_incop;
1358
+ BEGIN_CASE(JSOP_INCLOCAL)
1359
+ incr = 2; incr2 = 2; goto do_local_incop;
1360
+ BEGIN_CASE(JSOP_LOCALINC)
1361
+ incr = 2; incr2 = 0;
1362
+
1363
+ /*
1364
+ * do_local_incop comes right before do_int_fast_incop as we want to
1365
+ * avoid an extra jump for variable cases as local++ is more frequent
1366
+ * than arg++.
1367
+ */
1368
+ do_local_incop:
1369
+ slot = GET_SLOTNO(regs.pc);
1370
+ JS_ASSERT(slot < fp->script->nslots);
1371
+ vp = fp->slots + slot;
1372
+ METER_SLOT_OP(op, slot);
1373
+ vp = fp->slots + slot;
1374
+
1375
+ do_int_fast_incop:
1376
+ rval = *vp;
1377
+ if (JS_LIKELY(CAN_DO_FAST_INC_DEC(rval))) {
1378
+ *vp = rval + incr;
1379
+ JS_ASSERT(JSOP_INCARG_LENGTH == js_CodeSpec[op].length);
1380
+ SKIP_POP_AFTER_SET(JSOP_INCARG_LENGTH, 0);
1381
+ PUSH_OPND(rval + incr2);
1382
+ } else {
1383
+ PUSH_OPND(rval);
1384
+ if (!js_DoIncDec(cx, &js_CodeSpec[op], &regs.sp[-1], vp))
1385
+ goto error;
1386
+ }
1387
+ len = JSOP_INCARG_LENGTH;
1388
+ JS_ASSERT(len == js_CodeSpec[op].length);
1389
+ DO_NEXT_OP(len);
1390
+ }
1391
+
1392
+ /* NB: This macro doesn't use JS_BEGIN_MACRO/JS_END_MACRO around its body. */
1393
+ #define FAST_GLOBAL_INCREMENT_OP(SLOWOP,INCR,INCR2) \
1394
+ op2 = SLOWOP; \
1395
+ incr = INCR; \
1396
+ incr2 = INCR2; \
1397
+ goto do_global_incop
1398
+
1399
+ {
1400
+ jsval incr, incr2;
1401
+
1402
+ BEGIN_CASE(JSOP_DECGVAR)
1403
+ FAST_GLOBAL_INCREMENT_OP(JSOP_DECNAME, -2, -2);
1404
+ BEGIN_CASE(JSOP_GVARDEC)
1405
+ FAST_GLOBAL_INCREMENT_OP(JSOP_NAMEDEC, -2, 0);
1406
+ BEGIN_CASE(JSOP_INCGVAR)
1407
+ FAST_GLOBAL_INCREMENT_OP(JSOP_INCNAME, 2, 2);
1408
+ BEGIN_CASE(JSOP_GVARINC)
1409
+ FAST_GLOBAL_INCREMENT_OP(JSOP_NAMEINC, 2, 0);
1410
+
1411
+ #undef FAST_GLOBAL_INCREMENT_OP
1412
+
1413
+ do_global_incop:
1414
+ JS_ASSERT((js_CodeSpec[op].format & JOF_TMPSLOT_MASK) ==
1415
+ JOF_TMPSLOT2);
1416
+ slot = GET_SLOTNO(regs.pc);
1417
+ JS_ASSERT(slot < GlobalVarCount(fp));
1418
+ METER_SLOT_OP(op, slot);
1419
+ lval = fp->slots[slot];
1420
+ if (JSVAL_IS_NULL(lval)) {
1421
+ op = op2;
1422
+ DO_OP();
1423
+ }
1424
+ slot = JSVAL_TO_INT(lval);
1425
+ rval = OBJ_GET_SLOT(cx, fp->varobj, slot);
1426
+ if (JS_LIKELY(CAN_DO_FAST_INC_DEC(rval))) {
1427
+ PUSH_OPND(rval + incr2);
1428
+ rval += incr;
1429
+ } else {
1430
+ PUSH_OPND(rval);
1431
+ PUSH_OPND(JSVAL_NULL); /* Extra root */
1432
+ if (!js_DoIncDec(cx, &js_CodeSpec[op], &regs.sp[-2], &regs.sp[-1]))
1433
+ goto error;
1434
+ rval = regs.sp[-1];
1435
+ --regs.sp;
1436
+ }
1437
+ OBJ_SET_SLOT(cx, fp->varobj, slot, rval);
1438
+ len = JSOP_INCGVAR_LENGTH; /* all gvar incops are same length */
1439
+ JS_ASSERT(len == js_CodeSpec[op].length);
1440
+ DO_NEXT_OP(len);
1441
+ }
1442
+
1443
+ #define COMPUTE_THIS(cx, fp, obj) \
1444
+ JS_BEGIN_MACRO \
1445
+ if (!(obj = js_ComputeThisForFrame(cx, fp))) \
1446
+ goto error; \
1447
+ JS_END_MACRO
1448
+
1449
+ BEGIN_CASE(JSOP_THIS)
1450
+ COMPUTE_THIS(cx, fp, obj);
1451
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
1452
+ END_CASE(JSOP_THIS)
1453
+
1454
+ BEGIN_CASE(JSOP_GETTHISPROP)
1455
+ i = 0;
1456
+ COMPUTE_THIS(cx, fp, obj);
1457
+ PUSH(JSVAL_NULL);
1458
+ goto do_getprop_with_obj;
1459
+
1460
+ #undef COMPUTE_THIS
1461
+
1462
+ BEGIN_CASE(JSOP_GETARGPROP)
1463
+ i = ARGNO_LEN;
1464
+ slot = GET_ARGNO(regs.pc);
1465
+ JS_ASSERT(slot < fp->fun->nargs);
1466
+ PUSH_OPND(fp->argv[slot]);
1467
+ goto do_getprop_body;
1468
+
1469
+ BEGIN_CASE(JSOP_GETLOCALPROP)
1470
+ i = SLOTNO_LEN;
1471
+ slot = GET_SLOTNO(regs.pc);
1472
+ JS_ASSERT(slot < script->nslots);
1473
+ PUSH_OPND(fp->slots[slot]);
1474
+ goto do_getprop_body;
1475
+
1476
+ BEGIN_CASE(JSOP_GETPROP)
1477
+ BEGIN_CASE(JSOP_GETXPROP)
1478
+ i = 0;
1479
+
1480
+ do_getprop_body:
1481
+ lval = FETCH_OPND(-1);
1482
+
1483
+ do_getprop_with_lval:
1484
+ VALUE_TO_OBJECT(cx, -1, lval, obj);
1485
+
1486
+ do_getprop_with_obj:
1487
+ do {
1488
+ JSObject *aobj;
1489
+ JSPropCacheEntry *entry;
1490
+
1491
+ aobj = js_GetProtoIfDenseArray(cx, obj);
1492
+ if (JS_LIKELY(aobj->map->ops->getProperty == js_GetProperty)) {
1493
+ PROPERTY_CACHE_TEST(cx, regs.pc, aobj, obj2, entry, atom);
1494
+ if (!atom) {
1495
+ ASSERT_VALID_PROPERTY_CACHE_HIT(i, aobj, obj2, entry);
1496
+ if (PCVAL_IS_OBJECT(entry->vword)) {
1497
+ rval = PCVAL_OBJECT_TO_JSVAL(entry->vword);
1498
+ } else if (PCVAL_IS_SLOT(entry->vword)) {
1499
+ slot = PCVAL_TO_SLOT(entry->vword);
1500
+ JS_ASSERT(slot < OBJ_SCOPE(obj2)->freeslot);
1501
+ rval = LOCKED_OBJ_GET_SLOT(obj2, slot);
1502
+ } else {
1503
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
1504
+ sprop = PCVAL_TO_SPROP(entry->vword);
1505
+ NATIVE_GET(cx, obj, obj2, sprop, &rval);
1506
+ }
1507
+ JS_UNLOCK_OBJ(cx, obj2);
1508
+ break;
1509
+ }
1510
+ } else {
1511
+ entry = NULL;
1512
+ if (i < 0)
1513
+ atom = rt->atomState.lengthAtom;
1514
+ else
1515
+ LOAD_ATOM(i);
1516
+ }
1517
+ id = ATOM_TO_JSID(atom);
1518
+ if (entry
1519
+ ? !js_GetPropertyHelper(cx, obj, id, true, &rval)
1520
+ : !obj->getProperty(cx, id, &rval)) {
1521
+ goto error;
1522
+ }
1523
+ } while (0);
1524
+
1525
+ STORE_OPND(-1, rval);
1526
+ JS_ASSERT(JSOP_GETPROP_LENGTH + i == js_CodeSpec[op].length);
1527
+ len = JSOP_GETPROP_LENGTH + i;
1528
+ END_VARLEN_CASE
1529
+
1530
+ BEGIN_CASE(JSOP_LENGTH)
1531
+ lval = FETCH_OPND(-1);
1532
+ if (JSVAL_IS_STRING(lval)) {
1533
+ str = JSVAL_TO_STRING(lval);
1534
+ regs.sp[-1] = INT_TO_JSVAL(str->length());
1535
+ } else if (!JSVAL_IS_PRIMITIVE(lval) &&
1536
+ (obj = JSVAL_TO_OBJECT(lval), OBJ_IS_ARRAY(cx, obj))) {
1537
+ jsuint length;
1538
+
1539
+ /*
1540
+ * We know that the array is created with only its 'length'
1541
+ * private data in a fixed slot at JSSLOT_ARRAY_LENGTH. See
1542
+ * also JSOP_ARRAYPUSH, far below.
1543
+ */
1544
+ length = obj->fslots[JSSLOT_ARRAY_LENGTH];
1545
+ if (length <= JSVAL_INT_MAX) {
1546
+ regs.sp[-1] = INT_TO_JSVAL(length);
1547
+ } else if (!js_NewDoubleInRootedValue(cx, (jsdouble) length,
1548
+ &regs.sp[-1])) {
1549
+ goto error;
1550
+ }
1551
+ } else {
1552
+ i = -2;
1553
+ goto do_getprop_with_lval;
1554
+ }
1555
+ END_CASE(JSOP_LENGTH)
1556
+
1557
+ BEGIN_CASE(JSOP_CALLPROP)
1558
+ {
1559
+ JSObject *aobj;
1560
+ JSPropCacheEntry *entry;
1561
+
1562
+ lval = FETCH_OPND(-1);
1563
+ if (!JSVAL_IS_PRIMITIVE(lval)) {
1564
+ obj = JSVAL_TO_OBJECT(lval);
1565
+ } else {
1566
+ if (JSVAL_IS_STRING(lval)) {
1567
+ i = JSProto_String;
1568
+ } else if (JSVAL_IS_NUMBER(lval)) {
1569
+ i = JSProto_Number;
1570
+ } else if (JSVAL_IS_BOOLEAN(lval)) {
1571
+ i = JSProto_Boolean;
1572
+ } else {
1573
+ JS_ASSERT(JSVAL_IS_NULL(lval) || JSVAL_IS_VOID(lval));
1574
+ js_ReportIsNullOrUndefined(cx, -1, lval, NULL);
1575
+ goto error;
1576
+ }
1577
+
1578
+ if (!js_GetClassPrototype(cx, NULL, INT_TO_JSID(i), &obj))
1579
+ goto error;
1580
+ }
1581
+
1582
+ aobj = js_GetProtoIfDenseArray(cx, obj);
1583
+ if (JS_LIKELY(aobj->map->ops->getProperty == js_GetProperty)) {
1584
+ PROPERTY_CACHE_TEST(cx, regs.pc, aobj, obj2, entry, atom);
1585
+ if (!atom) {
1586
+ ASSERT_VALID_PROPERTY_CACHE_HIT(0, aobj, obj2, entry);
1587
+ if (PCVAL_IS_OBJECT(entry->vword)) {
1588
+ rval = PCVAL_OBJECT_TO_JSVAL(entry->vword);
1589
+ } else if (PCVAL_IS_SLOT(entry->vword)) {
1590
+ slot = PCVAL_TO_SLOT(entry->vword);
1591
+ JS_ASSERT(slot < OBJ_SCOPE(obj2)->freeslot);
1592
+ rval = LOCKED_OBJ_GET_SLOT(obj2, slot);
1593
+ } else {
1594
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
1595
+ sprop = PCVAL_TO_SPROP(entry->vword);
1596
+ NATIVE_GET(cx, obj, obj2, sprop, &rval);
1597
+ }
1598
+ JS_UNLOCK_OBJ(cx, obj2);
1599
+ STORE_OPND(-1, rval);
1600
+ PUSH_OPND(lval);
1601
+ goto end_callprop;
1602
+ }
1603
+ } else {
1604
+ entry = NULL;
1605
+ LOAD_ATOM(0);
1606
+ }
1607
+
1608
+ /*
1609
+ * Cache miss: use the immediate atom that was loaded for us under
1610
+ * PROPERTY_CACHE_TEST.
1611
+ */
1612
+ id = ATOM_TO_JSID(atom);
1613
+ PUSH(JSVAL_NULL);
1614
+ if (!JSVAL_IS_PRIMITIVE(lval)) {
1615
+ if (!js_GetMethod(cx, obj, id, !!entry, &rval))
1616
+ goto error;
1617
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
1618
+ STORE_OPND(-2, rval);
1619
+ } else {
1620
+ JS_ASSERT(obj->map->ops->getProperty == js_GetProperty);
1621
+ if (!js_GetPropertyHelper(cx, obj, id, true, &rval))
1622
+ goto error;
1623
+ STORE_OPND(-1, lval);
1624
+ STORE_OPND(-2, rval);
1625
+ }
1626
+
1627
+ end_callprop:
1628
+ /* Wrap primitive lval in object clothing if necessary. */
1629
+ if (JSVAL_IS_PRIMITIVE(lval)) {
1630
+ /* FIXME: https://bugzilla.mozilla.org/show_bug.cgi?id=412571 */
1631
+ if (!VALUE_IS_FUNCTION(cx, rval) ||
1632
+ (obj = JSVAL_TO_OBJECT(rval),
1633
+ fun = GET_FUNCTION_PRIVATE(cx, obj),
1634
+ !PRIMITIVE_THIS_TEST(fun, lval))) {
1635
+ if (!js_PrimitiveToObject(cx, &regs.sp[-1]))
1636
+ goto error;
1637
+ }
1638
+ }
1639
+ #if JS_HAS_NO_SUCH_METHOD
1640
+ if (JS_UNLIKELY(JSVAL_IS_VOID(rval))) {
1641
+ LOAD_ATOM(0);
1642
+ regs.sp[-2] = ATOM_KEY(atom);
1643
+ if (!js_OnUnknownMethod(cx, regs.sp - 2))
1644
+ goto error;
1645
+ }
1646
+ #endif
1647
+ }
1648
+ END_CASE(JSOP_CALLPROP)
1649
+
1650
+ BEGIN_CASE(JSOP_SETNAME)
1651
+ BEGIN_CASE(JSOP_SETPROP)
1652
+ rval = FETCH_OPND(-1);
1653
+ lval = FETCH_OPND(-2);
1654
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(lval) || op == JSOP_SETPROP);
1655
+ VALUE_TO_OBJECT(cx, -2, lval, obj);
1656
+
1657
+ do {
1658
+ JSPropCacheEntry *entry;
1659
+
1660
+ entry = NULL;
1661
+ atom = NULL;
1662
+ if (JS_LIKELY(obj->map->ops->setProperty == js_SetProperty)) {
1663
+ JSPropertyCache *cache = &JS_PROPERTY_CACHE(cx);
1664
+ uint32 kshape = OBJ_SHAPE(obj);
1665
+
1666
+ /*
1667
+ * Open-code PROPERTY_CACHE_TEST, specializing for two
1668
+ * important set-property cases. First:
1669
+ *
1670
+ * function f(a, b, c) {
1671
+ * var o = {p:a, q:b, r:c};
1672
+ * return o;
1673
+ * }
1674
+ *
1675
+ * or similar real-world cases, which evolve a newborn
1676
+ * native object predicatably through some bounded number
1677
+ * of property additions. And second:
1678
+ *
1679
+ * o.p = x;
1680
+ *
1681
+ * in a frequently executed method or loop body, where p
1682
+ * will (possibly after the first iteration) always exist
1683
+ * in native object o.
1684
+ */
1685
+ entry = &cache->table[PROPERTY_CACHE_HASH_PC(regs.pc, kshape)];
1686
+ PCMETER(cache->pctestentry = entry);
1687
+ PCMETER(cache->tests++);
1688
+ PCMETER(cache->settests++);
1689
+ if (entry->kpc == regs.pc && entry->kshape == kshape) {
1690
+ JS_ASSERT(PCVCAP_TAG(entry->vcap) <= 1);
1691
+ if (JS_LOCK_OBJ_IF_SHAPE(cx, obj, kshape)) {
1692
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
1693
+ sprop = PCVAL_TO_SPROP(entry->vword);
1694
+ JS_ASSERT(!(sprop->attrs & JSPROP_READONLY));
1695
+ JS_ASSERT_IF(!(sprop->attrs & JSPROP_SHARED),
1696
+ PCVCAP_TAG(entry->vcap) == 0);
1697
+
1698
+ JSScope *scope = OBJ_SCOPE(obj);
1699
+ JS_ASSERT(!scope->sealed());
1700
+
1701
+ /*
1702
+ * Fastest path: check whether the cached sprop is
1703
+ * already in scope and call NATIVE_SET and break
1704
+ * to get out of the do-while(0). But we can call
1705
+ * NATIVE_SET only if obj owns scope or sprop is
1706
+ * shared.
1707
+ */
1708
+ bool checkForAdd;
1709
+ if (sprop->attrs & JSPROP_SHARED) {
1710
+ if (PCVCAP_TAG(entry->vcap) == 0 ||
1711
+ ((obj2 = OBJ_GET_PROTO(cx, obj)) &&
1712
+ OBJ_IS_NATIVE(obj2) &&
1713
+ OBJ_SHAPE(obj2) == PCVCAP_SHAPE(entry->vcap))) {
1714
+ goto fast_set_propcache_hit;
1715
+ }
1716
+
1717
+ /* The cache entry doesn't apply. vshape mismatch. */
1718
+ checkForAdd = false;
1719
+ } else if (scope->owned()) {
1720
+ if (sprop == scope->lastProp || scope->has(sprop)) {
1721
+ fast_set_propcache_hit:
1722
+ PCMETER(cache->pchits++);
1723
+ PCMETER(cache->setpchits++);
1724
+ NATIVE_SET(cx, obj, sprop, entry, &rval);
1725
+ JS_UNLOCK_SCOPE(cx, scope);
1726
+ break;
1727
+ }
1728
+ checkForAdd =
1729
+ !(sprop->attrs & JSPROP_SHARED) &&
1730
+ sprop->parent == scope->lastProp &&
1731
+ !scope->hadMiddleDelete();
1732
+ } else {
1733
+ scope = js_GetMutableScope(cx, obj);
1734
+ if (!scope) {
1735
+ JS_UNLOCK_OBJ(cx, obj);
1736
+ goto error;
1737
+ }
1738
+ checkForAdd = !sprop->parent;
1739
+ }
1740
+
1741
+ if (checkForAdd &&
1742
+ SPROP_HAS_STUB_SETTER(sprop) &&
1743
+ (slot = sprop->slot) == scope->freeslot) {
1744
+ /*
1745
+ * Fast path: adding a plain old property that
1746
+ * was once at the frontier of the property
1747
+ * tree, whose slot is next to claim among the
1748
+ * allocated slots in obj, where scope->table
1749
+ * has not been created yet.
1750
+ *
1751
+ * We may want to remove hazard conditions
1752
+ * above and inline compensation code here,
1753
+ * depending on real-world workloads.
1754
+ */
1755
+ JS_ASSERT(!(obj->getClass()->flags &
1756
+ JSCLASS_SHARE_ALL_PROPERTIES));
1757
+
1758
+ PCMETER(cache->pchits++);
1759
+ PCMETER(cache->addpchits++);
1760
+
1761
+ /*
1762
+ * Beware classes such as Function that use
1763
+ * the reserveSlots hook to allocate a number
1764
+ * of reserved slots that may vary with obj.
1765
+ */
1766
+ if (slot < STOBJ_NSLOTS(obj) &&
1767
+ !OBJ_GET_CLASS(cx, obj)->reserveSlots) {
1768
+ ++scope->freeslot;
1769
+ } else {
1770
+ if (!js_AllocSlot(cx, obj, &slot)) {
1771
+ JS_UNLOCK_SCOPE(cx, scope);
1772
+ goto error;
1773
+ }
1774
+ }
1775
+
1776
+ /*
1777
+ * If this obj's number of reserved slots
1778
+ * differed, or if something created a hash
1779
+ * table for scope, we must pay the price of
1780
+ * JSScope::add.
1781
+ *
1782
+ * If slot does not match the cached sprop's
1783
+ * slot, update the cache entry in the hope
1784
+ * that obj and other instances with the same
1785
+ * number of reserved slots are now "hot".
1786
+ */
1787
+ if (slot != sprop->slot || scope->table) {
1788
+ JSScopeProperty *sprop2 =
1789
+ scope->add(cx, sprop->id,
1790
+ sprop->getter, sprop->setter,
1791
+ slot, sprop->attrs,
1792
+ sprop->flags, sprop->shortid);
1793
+ if (!sprop2) {
1794
+ js_FreeSlot(cx, obj, slot);
1795
+ JS_UNLOCK_SCOPE(cx, scope);
1796
+ goto error;
1797
+ }
1798
+ if (sprop2 != sprop) {
1799
+ PCMETER(cache->slotchanges++);
1800
+ JS_ASSERT(slot != sprop->slot &&
1801
+ slot == sprop2->slot &&
1802
+ sprop2->id == sprop->id);
1803
+ entry->vword = SPROP_TO_PCVAL(sprop2);
1804
+ }
1805
+ sprop = sprop2;
1806
+ } else {
1807
+ scope->extend(cx, sprop);
1808
+ }
1809
+
1810
+ LOCKED_OBJ_WRITE_BARRIER(cx, obj, slot, rval);
1811
+ TRACE_2(SetPropHit, entry, sprop);
1812
+ LOCKED_OBJ_SET_SLOT(obj, slot, rval);
1813
+ JS_UNLOCK_SCOPE(cx, scope);
1814
+
1815
+ /*
1816
+ * Purge the property cache of the id we may
1817
+ * have just shadowed in obj's scope and proto
1818
+ * chains. We do this after unlocking obj's
1819
+ * scope to avoid lock nesting.
1820
+ */
1821
+ js_PurgeScopeChain(cx, obj, sprop->id);
1822
+ break;
1823
+ }
1824
+ JS_UNLOCK_SCOPE(cx, scope);
1825
+ PCMETER(cache->setpcmisses++);
1826
+ }
1827
+ }
1828
+
1829
+ atom = js_FullTestPropertyCache(cx, regs.pc, &obj, &obj2,
1830
+ &entry);
1831
+ if (atom) {
1832
+ PCMETER(cache->misses++);
1833
+ PCMETER(cache->setmisses++);
1834
+ } else {
1835
+ ASSERT_VALID_PROPERTY_CACHE_HIT(0, obj, obj2, entry);
1836
+ sprop = NULL;
1837
+ if (obj == obj2) {
1838
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
1839
+ sprop = PCVAL_TO_SPROP(entry->vword);
1840
+ JS_ASSERT(!(sprop->attrs & JSPROP_READONLY));
1841
+ JS_ASSERT(!OBJ_SCOPE(obj2)->sealed());
1842
+ NATIVE_SET(cx, obj, sprop, entry, &rval);
1843
+ }
1844
+ JS_UNLOCK_OBJ(cx, obj2);
1845
+ if (sprop)
1846
+ break;
1847
+ }
1848
+ }
1849
+
1850
+ if (!atom)
1851
+ LOAD_ATOM(0);
1852
+ id = ATOM_TO_JSID(atom);
1853
+ if (entry) {
1854
+ if (!js_SetPropertyHelper(cx, obj, id, true, &rval))
1855
+ goto error;
1856
+ } else {
1857
+ if (!obj->setProperty(cx, id, &rval))
1858
+ goto error;
1859
+ ABORT_RECORDING(cx, "Non-native set");
1860
+ }
1861
+ } while (0);
1862
+ END_SET_CASE_STORE_RVAL(JSOP_SETPROP, 2);
1863
+
1864
+ BEGIN_CASE(JSOP_GETELEM)
1865
+ /* Open-coded ELEMENT_OP optimized for strings and dense arrays. */
1866
+ lval = FETCH_OPND(-2);
1867
+ rval = FETCH_OPND(-1);
1868
+ if (JSVAL_IS_STRING(lval) && JSVAL_IS_INT(rval)) {
1869
+ str = JSVAL_TO_STRING(lval);
1870
+ i = JSVAL_TO_INT(rval);
1871
+ if ((size_t)i < str->length()) {
1872
+ str = JSString::getUnitString(cx, str, size_t(i));
1873
+ if (!str)
1874
+ goto error;
1875
+ rval = STRING_TO_JSVAL(str);
1876
+ goto end_getelem;
1877
+ }
1878
+ }
1879
+
1880
+ VALUE_TO_OBJECT(cx, -2, lval, obj);
1881
+ if (JSVAL_IS_INT(rval)) {
1882
+ if (OBJ_IS_DENSE_ARRAY(cx, obj)) {
1883
+ jsuint length;
1884
+
1885
+ length = js_DenseArrayCapacity(obj);
1886
+ i = JSVAL_TO_INT(rval);
1887
+ if ((jsuint)i < length &&
1888
+ i < obj->fslots[JSSLOT_ARRAY_LENGTH]) {
1889
+ rval = obj->dslots[i];
1890
+ if (rval != JSVAL_HOLE)
1891
+ goto end_getelem;
1892
+
1893
+ /* Reload rval from the stack in the rare hole case. */
1894
+ rval = FETCH_OPND(-1);
1895
+ }
1896
+ }
1897
+ id = INT_JSVAL_TO_JSID(rval);
1898
+ } else {
1899
+ if (!js_InternNonIntElementId(cx, obj, rval, &id))
1900
+ goto error;
1901
+ }
1902
+
1903
+ if (!obj->getProperty(cx, id, &rval))
1904
+ goto error;
1905
+ end_getelem:
1906
+ regs.sp--;
1907
+ STORE_OPND(-1, rval);
1908
+ END_CASE(JSOP_GETELEM)
1909
+
1910
+ BEGIN_CASE(JSOP_CALLELEM)
1911
+ ELEMENT_OP(-1, js_GetMethod(cx, obj, id, false, &rval));
1912
+ #if JS_HAS_NO_SUCH_METHOD
1913
+ if (JS_UNLIKELY(JSVAL_IS_VOID(rval))) {
1914
+ regs.sp[-2] = regs.sp[-1];
1915
+ regs.sp[-1] = OBJECT_TO_JSVAL(obj);
1916
+ if (!js_OnUnknownMethod(cx, regs.sp - 2))
1917
+ goto error;
1918
+ } else
1919
+ #endif
1920
+ {
1921
+ STORE_OPND(-2, rval);
1922
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
1923
+ }
1924
+ END_CASE(JSOP_CALLELEM)
1925
+
1926
+ BEGIN_CASE(JSOP_SETELEM)
1927
+ rval = FETCH_OPND(-1);
1928
+ FETCH_OBJECT(cx, -3, lval, obj);
1929
+ FETCH_ELEMENT_ID(obj, -2, id);
1930
+ do {
1931
+ if (OBJ_IS_DENSE_ARRAY(cx, obj) && JSID_IS_INT(id)) {
1932
+ jsuint length;
1933
+
1934
+ length = js_DenseArrayCapacity(obj);
1935
+ i = JSID_TO_INT(id);
1936
+ if ((jsuint)i < length) {
1937
+ if (obj->dslots[i] == JSVAL_HOLE) {
1938
+ if (js_PrototypeHasIndexedProperties(cx, obj))
1939
+ break;
1940
+ if (i >= obj->fslots[JSSLOT_ARRAY_LENGTH])
1941
+ obj->fslots[JSSLOT_ARRAY_LENGTH] = i + 1;
1942
+ obj->fslots[JSSLOT_ARRAY_COUNT]++;
1943
+ }
1944
+ obj->dslots[i] = rval;
1945
+ goto end_setelem;
1946
+ }
1947
+ }
1948
+ } while (0);
1949
+ if (!obj->setProperty(cx, id, &rval))
1950
+ goto error;
1951
+ end_setelem:
1952
+ END_SET_CASE_STORE_RVAL(JSOP_SETELEM, 3)
1953
+
1954
+ BEGIN_CASE(JSOP_ENUMELEM)
1955
+ /* Funky: the value to set is under the [obj, id] pair. */
1956
+ rval = FETCH_OPND(-3);
1957
+ FETCH_OBJECT(cx, -2, lval, obj);
1958
+ FETCH_ELEMENT_ID(obj, -1, id);
1959
+ if (!obj->setProperty(cx, id, &rval))
1960
+ goto error;
1961
+ regs.sp -= 3;
1962
+ END_CASE(JSOP_ENUMELEM)
1963
+
1964
+ BEGIN_CASE(JSOP_NEW)
1965
+ /* Get immediate argc and find the constructor function. */
1966
+ argc = GET_ARGC(regs.pc);
1967
+ vp = regs.sp - (2 + argc);
1968
+ JS_ASSERT(vp >= StackBase(fp));
1969
+
1970
+ /*
1971
+ * Assign lval, obj, and fun exactly as the code at inline_call:
1972
+ * expects to find them, to avoid nesting a js_Interpret call via
1973
+ * js_InvokeConstructor.
1974
+ */
1975
+ lval = *vp;
1976
+ if (VALUE_IS_FUNCTION(cx, lval)) {
1977
+ obj = JSVAL_TO_OBJECT(lval);
1978
+ fun = GET_FUNCTION_PRIVATE(cx, obj);
1979
+ if (FUN_INTERPRETED(fun)) {
1980
+ /* Root as we go using vp[1]. */
1981
+ if (!obj->getProperty(cx,
1982
+ ATOM_TO_JSID(cx->runtime->atomState.classPrototypeAtom),
1983
+ &vp[1])) {
1984
+ goto error;
1985
+ }
1986
+ rval = vp[1];
1987
+ obj2 = js_NewObject(cx, &js_ObjectClass,
1988
+ JSVAL_IS_OBJECT(rval)
1989
+ ? JSVAL_TO_OBJECT(rval)
1990
+ : NULL,
1991
+ OBJ_GET_PARENT(cx, obj));
1992
+ if (!obj2)
1993
+ goto error;
1994
+ vp[1] = OBJECT_TO_JSVAL(obj2);
1995
+ flags = JSFRAME_CONSTRUCTING;
1996
+ goto inline_call;
1997
+ }
1998
+ }
1999
+
2000
+ if (!js_InvokeConstructor(cx, argc, JS_FALSE, vp))
2001
+ goto error;
2002
+ regs.sp = vp + 1;
2003
+ CHECK_INTERRUPT_HANDLER();
2004
+ TRACE_0(NativeCallComplete);
2005
+ END_CASE(JSOP_NEW)
2006
+
2007
+ BEGIN_CASE(JSOP_CALL)
2008
+ BEGIN_CASE(JSOP_EVAL)
2009
+ BEGIN_CASE(JSOP_APPLY)
2010
+ argc = GET_ARGC(regs.pc);
2011
+ vp = regs.sp - (argc + 2);
2012
+
2013
+ lval = *vp;
2014
+ if (VALUE_IS_FUNCTION(cx, lval)) {
2015
+ obj = JSVAL_TO_OBJECT(lval);
2016
+ fun = GET_FUNCTION_PRIVATE(cx, obj);
2017
+
2018
+ /* Clear frame flags since this is not a constructor call. */
2019
+ flags = 0;
2020
+ if (FUN_INTERPRETED(fun))
2021
+ inline_call:
2022
+ {
2023
+ uintN nframeslots, nvars, missing;
2024
+ JSArena *a;
2025
+ jsuword nbytes;
2026
+ void *newmark;
2027
+ jsval *newsp;
2028
+ JSInlineFrame *newifp;
2029
+ JSInterpreterHook hook;
2030
+
2031
+ /* Restrict recursion of lightweight functions. */
2032
+ if (inlineCallCount == MAX_INLINE_CALL_COUNT) {
2033
+ js_ReportOverRecursed(cx);
2034
+ goto error;
2035
+ }
2036
+
2037
+ /* Compute the total number of stack slots needed by fun. */
2038
+ nframeslots = JS_HOWMANY(sizeof(JSInlineFrame),
2039
+ sizeof(jsval));
2040
+ script = fun->u.i.script;
2041
+ atoms = script->atomMap.vector;
2042
+ nbytes = (nframeslots + script->nslots) * sizeof(jsval);
2043
+
2044
+ /* Allocate missing expected args adjacent to actuals. */
2045
+ a = cx->stackPool.current;
2046
+ newmark = (void *) a->avail;
2047
+ if (fun->nargs <= argc) {
2048
+ missing = 0;
2049
+ } else {
2050
+ newsp = vp + 2 + fun->nargs;
2051
+ JS_ASSERT(newsp > regs.sp);
2052
+ if ((jsuword) newsp <= a->limit) {
2053
+ if ((jsuword) newsp > a->avail)
2054
+ a->avail = (jsuword) newsp;
2055
+ jsval *argsp = newsp;
2056
+ do {
2057
+ *--argsp = JSVAL_VOID;
2058
+ } while (argsp != regs.sp);
2059
+ missing = 0;
2060
+ } else {
2061
+ missing = fun->nargs - argc;
2062
+ nbytes += (2 + fun->nargs) * sizeof(jsval);
2063
+ }
2064
+ }
2065
+
2066
+ /* Allocate the inline frame with its slots and operands. */
2067
+ if (a->avail + nbytes <= a->limit) {
2068
+ newsp = (jsval *) a->avail;
2069
+ a->avail += nbytes;
2070
+ JS_ASSERT(missing == 0);
2071
+ } else {
2072
+ JS_ARENA_ALLOCATE_CAST(newsp, jsval *, &cx->stackPool,
2073
+ nbytes);
2074
+ if (!newsp) {
2075
+ js_ReportOutOfScriptQuota(cx);
2076
+ goto bad_inline_call;
2077
+ }
2078
+
2079
+ /*
2080
+ * Move args if the missing ones overflow arena a, then
2081
+ * push undefined for the missing args.
2082
+ */
2083
+ if (missing) {
2084
+ memcpy(newsp, vp, (2 + argc) * sizeof(jsval));
2085
+ vp = newsp;
2086
+ newsp = vp + 2 + argc;
2087
+ do {
2088
+ *newsp++ = JSVAL_VOID;
2089
+ } while (--missing != 0);
2090
+ }
2091
+ }
2092
+
2093
+ /* Claim space for the stack frame and initialize it. */
2094
+ newifp = (JSInlineFrame *) newsp;
2095
+ newsp += nframeslots;
2096
+ newifp->frame.callobj = NULL;
2097
+ newifp->frame.argsobj = NULL;
2098
+ newifp->frame.varobj = NULL;
2099
+ newifp->frame.script = script;
2100
+ newifp->frame.fun = fun;
2101
+ newifp->frame.argc = argc;
2102
+ newifp->frame.argv = vp + 2;
2103
+ newifp->frame.rval = JSVAL_VOID;
2104
+ newifp->frame.down = fp;
2105
+ newifp->frame.annotation = NULL;
2106
+ newifp->frame.scopeChain = parent = OBJ_GET_PARENT(cx, obj);
2107
+ newifp->frame.sharpDepth = 0;
2108
+ newifp->frame.sharpArray = NULL;
2109
+ newifp->frame.flags = flags;
2110
+ newifp->frame.dormantNext = NULL;
2111
+ newifp->frame.blockChain = NULL;
2112
+ if (script->staticLevel < JS_DISPLAY_SIZE) {
2113
+ JSStackFrame **disp = &cx->display[script->staticLevel];
2114
+ newifp->frame.displaySave = *disp;
2115
+ *disp = &newifp->frame;
2116
+ }
2117
+ newifp->mark = newmark;
2118
+
2119
+ /* Compute the 'this' parameter now that argv is set. */
2120
+ JS_ASSERT(!JSFUN_BOUND_METHOD_TEST(fun->flags));
2121
+ JS_ASSERT(JSVAL_IS_OBJECT(vp[1]));
2122
+ newifp->frame.thisp = (JSObject *)vp[1];
2123
+
2124
+ newifp->frame.regs = NULL;
2125
+ newifp->frame.imacpc = NULL;
2126
+ newifp->frame.slots = newsp;
2127
+
2128
+ /* Push void to initialize local variables. */
2129
+ nvars = fun->u.i.nvars;
2130
+ while (nvars--)
2131
+ *newsp++ = JSVAL_VOID;
2132
+
2133
+ /* Scope with a call object parented by callee's parent. */
2134
+ if (JSFUN_HEAVYWEIGHT_TEST(fun->flags) &&
2135
+ !js_GetCallObject(cx, &newifp->frame)) {
2136
+ goto bad_inline_call;
2137
+ }
2138
+
2139
+ /* Switch version if currentVersion wasn't overridden. */
2140
+ newifp->callerVersion = (JSVersion) cx->version;
2141
+ if (JS_LIKELY(cx->version == currentVersion)) {
2142
+ currentVersion = (JSVersion) script->version;
2143
+ if (currentVersion != cx->version)
2144
+ js_SetVersion(cx, currentVersion);
2145
+ }
2146
+
2147
+ /* Push the frame and set interpreter registers. */
2148
+ newifp->callerRegs = regs;
2149
+ fp->regs = &newifp->callerRegs;
2150
+ regs.sp = newsp;
2151
+ regs.pc = script->code;
2152
+ newifp->frame.regs = &regs;
2153
+ cx->fp = fp = &newifp->frame;
2154
+
2155
+ /* Call the debugger hook if present. */
2156
+ hook = cx->debugHooks->callHook;
2157
+ if (hook) {
2158
+ newifp->hookData = hook(cx, &newifp->frame, JS_TRUE, 0,
2159
+ cx->debugHooks->callHookData);
2160
+ CHECK_INTERRUPT_HANDLER();
2161
+ } else {
2162
+ newifp->hookData = NULL;
2163
+ }
2164
+
2165
+ TRACE_0(EnterFrame);
2166
+
2167
+ inlineCallCount++;
2168
+ JS_RUNTIME_METER(rt, inlineCalls);
2169
+
2170
+ #ifdef INCLUDE_MOZILLA_DTRACE
2171
+ /* DTrace function entry, inlines */
2172
+ if (JAVASCRIPT_FUNCTION_ENTRY_ENABLED())
2173
+ jsdtrace_function_entry(cx, fp, fun);
2174
+ if (JAVASCRIPT_FUNCTION_INFO_ENABLED())
2175
+ jsdtrace_function_info(cx, fp, fp->down, fun);
2176
+ if (JAVASCRIPT_FUNCTION_ARGS_ENABLED())
2177
+ jsdtrace_function_args(cx, fp, fun, fp->argc, fp->argv);
2178
+ #endif
2179
+
2180
+ /* Load first op and dispatch it (safe since JSOP_STOP). */
2181
+ op = (JSOp) *regs.pc;
2182
+ DO_OP();
2183
+
2184
+ bad_inline_call:
2185
+ JS_ASSERT(fp->regs == &regs);
2186
+ script = fp->script;
2187
+ atoms = script->atomMap.vector;
2188
+ js_FreeRawStack(cx, newmark);
2189
+ goto error;
2190
+ }
2191
+
2192
+ if (fun->flags & JSFUN_FAST_NATIVE) {
2193
+ #ifdef INCLUDE_MOZILLA_DTRACE
2194
+ /* DTrace function entry, non-inlines */
2195
+ if (VALUE_IS_FUNCTION(cx, lval)) {
2196
+ if (JAVASCRIPT_FUNCTION_ENTRY_ENABLED())
2197
+ jsdtrace_function_entry(cx, NULL, fun);
2198
+ if (JAVASCRIPT_FUNCTION_INFO_ENABLED())
2199
+ jsdtrace_function_info(cx, NULL, fp, fun);
2200
+ if (JAVASCRIPT_FUNCTION_ARGS_ENABLED())
2201
+ jsdtrace_function_args(cx, fp, fun, argc, vp+2);
2202
+ }
2203
+ #endif
2204
+
2205
+ JS_ASSERT(fun->u.n.extra == 0);
2206
+ JS_ASSERT(JSVAL_IS_OBJECT(vp[1]) ||
2207
+ PRIMITIVE_THIS_TEST(fun, vp[1]));
2208
+ ok = ((JSFastNative) fun->u.n.native)(cx, argc, vp);
2209
+ #ifdef INCLUDE_MOZILLA_DTRACE
2210
+ if (VALUE_IS_FUNCTION(cx, lval)) {
2211
+ if (JAVASCRIPT_FUNCTION_RVAL_ENABLED())
2212
+ jsdtrace_function_rval(cx, NULL, fun, vp);
2213
+ if (JAVASCRIPT_FUNCTION_RETURN_ENABLED())
2214
+ jsdtrace_function_return(cx, NULL, fun);
2215
+ }
2216
+ #endif
2217
+ regs.sp = vp + 1;
2218
+ if (!ok) {
2219
+ /*
2220
+ * If we are executing the JSOP_NEXTITER imacro and a Stopiteration
2221
+ * exception is raised, transform it into a JSVAL_HOLE return value.
2222
+ * The tracer generates equivalent code by calling CatchStopIteration_tn.
2223
+ */
2224
+ if (fp->imacpc && *fp->imacpc == JSOP_NEXTITER &&
2225
+ cx->throwing && js_ValueIsStopIteration(cx->exception)) {
2226
+ // pc may point to JSOP_DUP here due to bug 474854.
2227
+ JS_ASSERT(*regs.pc == JSOP_CALL || *regs.pc == JSOP_DUP);
2228
+ cx->throwing = JS_FALSE;
2229
+ cx->exception = JSVAL_VOID;
2230
+ regs.sp[-1] = JSVAL_HOLE;
2231
+ } else {
2232
+ goto error;
2233
+ }
2234
+ }
2235
+ TRACE_0(NativeCallComplete);
2236
+ goto end_call;
2237
+ }
2238
+ }
2239
+
2240
+ ok = js_Invoke(cx, argc, vp, 0);
2241
+ regs.sp = vp + 1;
2242
+ CHECK_INTERRUPT_HANDLER();
2243
+ if (!ok)
2244
+ goto error;
2245
+ JS_RUNTIME_METER(rt, nonInlineCalls);
2246
+ TRACE_0(NativeCallComplete);
2247
+
2248
+ end_call:
2249
+ #if JS_HAS_LVALUE_RETURN
2250
+ if (cx->rval2set) {
2251
+ /*
2252
+ * Use the stack depth we didn't claim in our budget, but that
2253
+ * we know is there on account of [fun, this] already having
2254
+ * been pushed, at a minimum (if no args). Those two slots
2255
+ * have been popped and [rval] has been pushed, which leaves
2256
+ * one more slot for rval2 before we might overflow.
2257
+ *
2258
+ * NB: rval2 must be the property identifier, and rval the
2259
+ * object from which to get the property. The pair form an
2260
+ * ECMA "reference type", which can be used on the right- or
2261
+ * left-hand side of assignment ops. Note well: only native
2262
+ * methods can return reference types. See JSOP_SETCALL just
2263
+ * below for the left-hand-side case.
2264
+ */
2265
+ PUSH_OPND(cx->rval2);
2266
+ ELEMENT_OP(-1, obj->getProperty(cx, id, &rval));
2267
+
2268
+ regs.sp--;
2269
+ STORE_OPND(-1, rval);
2270
+ cx->rval2set = JS_FALSE;
2271
+ }
2272
+ #endif /* JS_HAS_LVALUE_RETURN */
2273
+ END_CASE(JSOP_CALL)
2274
+
2275
+ #if JS_HAS_LVALUE_RETURN
2276
+ BEGIN_CASE(JSOP_SETCALL)
2277
+ argc = GET_ARGC(regs.pc);
2278
+ vp = regs.sp - argc - 2;
2279
+ ok = js_Invoke(cx, argc, vp, 0);
2280
+ regs.sp = vp + 1;
2281
+ CHECK_INTERRUPT_HANDLER();
2282
+ if (!ok)
2283
+ goto error;
2284
+ if (!cx->rval2set) {
2285
+ op2 = js_GetOpcode(cx, script, regs.pc + JSOP_SETCALL_LENGTH);
2286
+ if (op2 != JSOP_DELELEM) {
2287
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
2288
+ JSMSG_BAD_LEFTSIDE_OF_ASS);
2289
+ goto error;
2290
+ }
2291
+
2292
+ /*
2293
+ * Store true as the result of the emulated delete of a
2294
+ * non-existent property. NB: We don't METER_OP_PAIR here;
2295
+ * it doesn't seem worth the code for this obscure case.
2296
+ */
2297
+ *vp = JSVAL_TRUE;
2298
+ regs.pc += JSOP_SETCALL_LENGTH + JSOP_DELELEM_LENGTH;
2299
+ op = (JSOp) *regs.pc;
2300
+ DO_OP();
2301
+ }
2302
+ PUSH_OPND(cx->rval2);
2303
+ cx->rval2set = JS_FALSE;
2304
+ END_CASE(JSOP_SETCALL)
2305
+ #endif
2306
+
2307
+ BEGIN_CASE(JSOP_NAME)
2308
+ BEGIN_CASE(JSOP_CALLNAME)
2309
+ {
2310
+ JSPropCacheEntry *entry;
2311
+
2312
+ obj = fp->scopeChain;
2313
+ if (JS_LIKELY(OBJ_IS_NATIVE(obj))) {
2314
+ PROPERTY_CACHE_TEST(cx, regs.pc, obj, obj2, entry, atom);
2315
+ if (!atom) {
2316
+ ASSERT_VALID_PROPERTY_CACHE_HIT(0, obj, obj2, entry);
2317
+ if (PCVAL_IS_OBJECT(entry->vword)) {
2318
+ rval = PCVAL_OBJECT_TO_JSVAL(entry->vword);
2319
+ JS_UNLOCK_OBJ(cx, obj2);
2320
+ goto do_push_rval;
2321
+ }
2322
+
2323
+ if (PCVAL_IS_SLOT(entry->vword)) {
2324
+ slot = PCVAL_TO_SLOT(entry->vword);
2325
+ JS_ASSERT(slot < OBJ_SCOPE(obj2)->freeslot);
2326
+ rval = LOCKED_OBJ_GET_SLOT(obj2, slot);
2327
+ JS_UNLOCK_OBJ(cx, obj2);
2328
+ goto do_push_rval;
2329
+ }
2330
+
2331
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
2332
+ sprop = PCVAL_TO_SPROP(entry->vword);
2333
+ goto do_native_get;
2334
+ }
2335
+ } else {
2336
+ LOAD_ATOM(0);
2337
+ }
2338
+
2339
+ id = ATOM_TO_JSID(atom);
2340
+ if (!js_FindPropertyHelper(cx, id, true, &obj, &obj2, &prop))
2341
+ goto error;
2342
+ if (!prop) {
2343
+ /* Kludge to allow (typeof foo == "undefined") tests. */
2344
+ endpc = script->code + script->length;
2345
+ op2 = js_GetOpcode(cx, script, regs.pc + JSOP_NAME_LENGTH);
2346
+ if (op2 == JSOP_TYPEOF) {
2347
+ PUSH_OPND(JSVAL_VOID);
2348
+ len = JSOP_NAME_LENGTH;
2349
+ DO_NEXT_OP(len);
2350
+ }
2351
+ goto atom_not_defined;
2352
+ }
2353
+
2354
+ /* Take the slow path if prop was not found in a native object. */
2355
+ if (!OBJ_IS_NATIVE(obj) || !OBJ_IS_NATIVE(obj2)) {
2356
+ obj2->dropProperty(cx, prop);
2357
+ if (!obj->getProperty(cx, id, &rval))
2358
+ goto error;
2359
+ } else {
2360
+ sprop = (JSScopeProperty *)prop;
2361
+ do_native_get:
2362
+ NATIVE_GET(cx, obj, obj2, sprop, &rval);
2363
+ obj2->dropProperty(cx, (JSProperty *) sprop);
2364
+ }
2365
+
2366
+ do_push_rval:
2367
+ PUSH_OPND(rval);
2368
+ if (op == JSOP_CALLNAME)
2369
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
2370
+ }
2371
+ END_CASE(JSOP_NAME)
2372
+
2373
+ BEGIN_CASE(JSOP_UINT16)
2374
+ i = (jsint) GET_UINT16(regs.pc);
2375
+ rval = INT_TO_JSVAL(i);
2376
+ PUSH_OPND(rval);
2377
+ END_CASE(JSOP_UINT16)
2378
+
2379
+ BEGIN_CASE(JSOP_UINT24)
2380
+ i = (jsint) GET_UINT24(regs.pc);
2381
+ rval = INT_TO_JSVAL(i);
2382
+ PUSH_OPND(rval);
2383
+ END_CASE(JSOP_UINT24)
2384
+
2385
+ BEGIN_CASE(JSOP_INT8)
2386
+ i = GET_INT8(regs.pc);
2387
+ rval = INT_TO_JSVAL(i);
2388
+ PUSH_OPND(rval);
2389
+ END_CASE(JSOP_INT8)
2390
+
2391
+ BEGIN_CASE(JSOP_INT32)
2392
+ i = GET_INT32(regs.pc);
2393
+ rval = INT_TO_JSVAL(i);
2394
+ PUSH_OPND(rval);
2395
+ END_CASE(JSOP_INT32)
2396
+
2397
+ BEGIN_CASE(JSOP_INDEXBASE)
2398
+ /*
2399
+ * Here atoms can exceed script->atomMap.length as we use atoms
2400
+ * as a segment register for object literals as well.
2401
+ */
2402
+ atoms += GET_INDEXBASE(regs.pc);
2403
+ END_CASE(JSOP_INDEXBASE)
2404
+
2405
+ BEGIN_CASE(JSOP_INDEXBASE1)
2406
+ BEGIN_CASE(JSOP_INDEXBASE2)
2407
+ BEGIN_CASE(JSOP_INDEXBASE3)
2408
+ atoms += (op - JSOP_INDEXBASE1 + 1) << 16;
2409
+ END_CASE(JSOP_INDEXBASE3)
2410
+
2411
+ BEGIN_CASE(JSOP_RESETBASE0)
2412
+ BEGIN_CASE(JSOP_RESETBASE)
2413
+ atoms = script->atomMap.vector;
2414
+ END_CASE(JSOP_RESETBASE)
2415
+
2416
+ BEGIN_CASE(JSOP_DOUBLE)
2417
+ JS_ASSERT(!fp->imacpc);
2418
+ JS_ASSERT(size_t(atoms - script->atomMap.vector) < script->atomMap.length);
2419
+ /* FALL THROUGH */
2420
+
2421
+ BEGIN_CASE(JSOP_STRING)
2422
+ LOAD_ATOM(0);
2423
+ PUSH_OPND(ATOM_KEY(atom));
2424
+ END_CASE(JSOP_DOUBLE)
2425
+
2426
+ BEGIN_CASE(JSOP_OBJECT)
2427
+ LOAD_OBJECT(0);
2428
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
2429
+ END_CASE(JSOP_OBJECT)
2430
+
2431
+ BEGIN_CASE(JSOP_REGEXP)
2432
+ {
2433
+ JSObject *funobj;
2434
+
2435
+ /*
2436
+ * Push a regexp object for the atom mapped by the bytecode at pc,
2437
+ * cloning the literal's regexp object if necessary, to simulate in
2438
+ * the pre-compile/execute-later case what ECMA specifies for the
2439
+ * compile-and-go case: that scanning each regexp literal creates
2440
+ * a single corresponding RegExp object.
2441
+ *
2442
+ * To support pre-compilation transparently, we must handle the
2443
+ * case where a regexp object literal is used in a different global
2444
+ * at execution time from the global with which it was scanned at
2445
+ * compile time. We do this by re-wrapping the JSRegExp private
2446
+ * data struct with a cloned object having the right prototype and
2447
+ * parent, and having its own lastIndex property value storage.
2448
+ *
2449
+ * Unlike JSOP_DEFFUN and other prolog bytecodes that may clone
2450
+ * literal objects, we don't want to pay a script prolog execution
2451
+ * price for all regexp literals in a script (many may not be used
2452
+ * by a particular execution of that script, depending on control
2453
+ * flow), so we initialize lazily here.
2454
+ *
2455
+ * XXX This code is specific to regular expression objects. If we
2456
+ * need a similar op for other kinds of object literals, we should
2457
+ * push cloning down under JSObjectOps and reuse code here.
2458
+ */
2459
+ index = GET_FULL_INDEX(0);
2460
+ JS_ASSERT(index < script->regexps()->length);
2461
+
2462
+ slot = index;
2463
+ if (fp->fun) {
2464
+ /*
2465
+ * We're in function code, not global or eval code (in eval
2466
+ * code, JSOP_REGEXP is never emitted). The cloned funobj
2467
+ * contains script->regexps()->length reserved slots
2468
+ * for the cloned regexps; see fun_reserveSlots, jsfun.c.
2469
+ */
2470
+ funobj = JSVAL_TO_OBJECT(fp->argv[-2]);
2471
+ slot += JSCLASS_RESERVED_SLOTS(&js_FunctionClass);
2472
+ if (script->upvarsOffset != 0)
2473
+ slot += script->upvars()->length;
2474
+ if (!JS_GetReservedSlot(cx, funobj, slot, &rval))
2475
+ goto error;
2476
+ if (JSVAL_IS_VOID(rval))
2477
+ rval = JSVAL_NULL;
2478
+ } else {
2479
+ /*
2480
+ * We're in global code. The code generator reserved a slot
2481
+ * for the regexp among script->nfixed slots. All such slots
2482
+ * are initialized to null, not void, for faster testing in
2483
+ * JSOP_*GVAR cases. To simplify index calculations we count
2484
+ * regexps in the reverse order down from script->nslots - 1.
2485
+ */
2486
+ JS_ASSERT(slot < script->nfixed);
2487
+ slot = script->nfixed - slot - 1;
2488
+ rval = fp->slots[slot];
2489
+ #ifdef __GNUC__
2490
+ funobj = NULL; /* suppress bogus gcc warnings */
2491
+ #endif
2492
+ }
2493
+
2494
+ if (JSVAL_IS_NULL(rval)) {
2495
+ /* Compute the current global object in obj2. */
2496
+ obj2 = fp->scopeChain;
2497
+ while ((parent = OBJ_GET_PARENT(cx, obj2)) != NULL)
2498
+ obj2 = parent;
2499
+
2500
+ /*
2501
+ * If obj's parent is not obj2, we must clone obj so that it
2502
+ * has the right parent, and therefore, the right prototype.
2503
+ *
2504
+ * Yes, this means we assume that the correct RegExp.prototype
2505
+ * to which regexp instances (including literals) delegate can
2506
+ * be distinguished solely by the instance's parent, which was
2507
+ * set to the parent of the RegExp constructor function object
2508
+ * when the instance was created. In other words,
2509
+ *
2510
+ * (/x/.__parent__ == RegExp.__parent__) implies
2511
+ * (/x/.__proto__ == RegExp.prototype)
2512
+ *
2513
+ * (unless you assign a different object to RegExp.prototype
2514
+ * at runtime, in which case, ECMA doesn't specify operation,
2515
+ * and you get what you deserve).
2516
+ *
2517
+ * This same coupling between instance parent and constructor
2518
+ * parent turns up everywhere (see jsobj.c's FindClassObject,
2519
+ * js_ConstructObject, and js_NewObject). It's fundamental to
2520
+ * the design of the language when you consider multiple global
2521
+ * objects and separate compilation and execution, even though
2522
+ * it is not specified fully in ECMA.
2523
+ */
2524
+ obj = script->getRegExp(index);
2525
+ if (OBJ_GET_PARENT(cx, obj) != obj2) {
2526
+ obj = js_CloneRegExpObject(cx, obj, obj2);
2527
+ if (!obj)
2528
+ goto error;
2529
+ }
2530
+ rval = OBJECT_TO_JSVAL(obj);
2531
+
2532
+ /* Store the regexp object value in its cloneIndex slot. */
2533
+ if (fp->fun) {
2534
+ if (!JS_SetReservedSlot(cx, funobj, slot, rval))
2535
+ goto error;
2536
+ } else {
2537
+ fp->slots[slot] = rval;
2538
+ }
2539
+ }
2540
+
2541
+ PUSH_OPND(rval);
2542
+ }
2543
+ END_CASE(JSOP_REGEXP)
2544
+
2545
+ BEGIN_CASE(JSOP_ZERO)
2546
+ PUSH_OPND(JSVAL_ZERO);
2547
+ END_CASE(JSOP_ZERO)
2548
+
2549
+ BEGIN_CASE(JSOP_ONE)
2550
+ PUSH_OPND(JSVAL_ONE);
2551
+ END_CASE(JSOP_ONE)
2552
+
2553
+ BEGIN_CASE(JSOP_NULL)
2554
+ PUSH_OPND(JSVAL_NULL);
2555
+ END_CASE(JSOP_NULL)
2556
+
2557
+ BEGIN_CASE(JSOP_FALSE)
2558
+ PUSH_OPND(JSVAL_FALSE);
2559
+ END_CASE(JSOP_FALSE)
2560
+
2561
+ BEGIN_CASE(JSOP_TRUE)
2562
+ PUSH_OPND(JSVAL_TRUE);
2563
+ END_CASE(JSOP_TRUE)
2564
+
2565
+ BEGIN_CASE(JSOP_TABLESWITCH)
2566
+ pc2 = regs.pc;
2567
+ len = GET_JUMP_OFFSET(pc2);
2568
+
2569
+ /*
2570
+ * ECMAv2+ forbids conversion of discriminant, so we will skip to
2571
+ * the default case if the discriminant isn't already an int jsval.
2572
+ * (This opcode is emitted only for dense jsint-domain switches.)
2573
+ */
2574
+ rval = POP_OPND();
2575
+ if (JSVAL_IS_INT(rval)) {
2576
+ i = JSVAL_TO_INT(rval);
2577
+ } else if (JSVAL_IS_DOUBLE(rval) && *JSVAL_TO_DOUBLE(rval) == 0) {
2578
+ /* Treat -0 (double) as 0. */
2579
+ i = 0;
2580
+ } else {
2581
+ DO_NEXT_OP(len);
2582
+ }
2583
+
2584
+ pc2 += JUMP_OFFSET_LEN;
2585
+ low = GET_JUMP_OFFSET(pc2);
2586
+ pc2 += JUMP_OFFSET_LEN;
2587
+ high = GET_JUMP_OFFSET(pc2);
2588
+
2589
+ i -= low;
2590
+ if ((jsuint)i < (jsuint)(high - low + 1)) {
2591
+ pc2 += JUMP_OFFSET_LEN + JUMP_OFFSET_LEN * i;
2592
+ off = (jsint) GET_JUMP_OFFSET(pc2);
2593
+ if (off)
2594
+ len = off;
2595
+ }
2596
+ END_VARLEN_CASE
2597
+
2598
+ BEGIN_CASE(JSOP_TABLESWITCHX)
2599
+ pc2 = regs.pc;
2600
+ len = GET_JUMPX_OFFSET(pc2);
2601
+
2602
+ /*
2603
+ * ECMAv2+ forbids conversion of discriminant, so we will skip to
2604
+ * the default case if the discriminant isn't already an int jsval.
2605
+ * (This opcode is emitted only for dense jsint-domain switches.)
2606
+ */
2607
+ rval = POP_OPND();
2608
+ if (JSVAL_IS_INT(rval)) {
2609
+ i = JSVAL_TO_INT(rval);
2610
+ } else if (JSVAL_IS_DOUBLE(rval) && *JSVAL_TO_DOUBLE(rval) == 0) {
2611
+ /* Treat -0 (double) as 0. */
2612
+ i = 0;
2613
+ } else {
2614
+ DO_NEXT_OP(len);
2615
+ }
2616
+
2617
+ pc2 += JUMPX_OFFSET_LEN;
2618
+ low = GET_JUMP_OFFSET(pc2);
2619
+ pc2 += JUMP_OFFSET_LEN;
2620
+ high = GET_JUMP_OFFSET(pc2);
2621
+
2622
+ i -= low;
2623
+ if ((jsuint)i < (jsuint)(high - low + 1)) {
2624
+ pc2 += JUMP_OFFSET_LEN + JUMPX_OFFSET_LEN * i;
2625
+ off = (jsint) GET_JUMPX_OFFSET(pc2);
2626
+ if (off)
2627
+ len = off;
2628
+ }
2629
+ END_VARLEN_CASE
2630
+
2631
+ BEGIN_CASE(JSOP_LOOKUPSWITCHX)
2632
+ off = JUMPX_OFFSET_LEN;
2633
+ goto do_lookup_switch;
2634
+
2635
+ BEGIN_CASE(JSOP_LOOKUPSWITCH)
2636
+ off = JUMP_OFFSET_LEN;
2637
+
2638
+ do_lookup_switch:
2639
+ /*
2640
+ * JSOP_LOOKUPSWITCH and JSOP_LOOKUPSWITCHX are never used if
2641
+ * any atom index in it would exceed 64K limit.
2642
+ */
2643
+ JS_ASSERT(!fp->imacpc);
2644
+ JS_ASSERT(atoms == script->atomMap.vector);
2645
+ pc2 = regs.pc;
2646
+ lval = POP_OPND();
2647
+
2648
+ if (!JSVAL_IS_NUMBER(lval) &&
2649
+ !JSVAL_IS_STRING(lval) &&
2650
+ !JSVAL_IS_BOOLEAN(lval)) {
2651
+ goto end_lookup_switch;
2652
+ }
2653
+
2654
+ pc2 += off;
2655
+ npairs = (jsint) GET_UINT16(pc2);
2656
+ pc2 += UINT16_LEN;
2657
+ JS_ASSERT(npairs); /* empty switch uses JSOP_TABLESWITCH */
2658
+
2659
+ #define SEARCH_PAIRS(MATCH_CODE) \
2660
+ for (;;) { \
2661
+ JS_ASSERT(GET_INDEX(pc2) < script->atomMap.length); \
2662
+ atom = atoms[GET_INDEX(pc2)]; \
2663
+ rval = ATOM_KEY(atom); \
2664
+ MATCH_CODE \
2665
+ pc2 += INDEX_LEN; \
2666
+ if (match) \
2667
+ break; \
2668
+ pc2 += off; \
2669
+ if (--npairs == 0) { \
2670
+ pc2 = regs.pc; \
2671
+ break; \
2672
+ } \
2673
+ }
2674
+ if (JSVAL_IS_STRING(lval)) {
2675
+ str = JSVAL_TO_STRING(lval);
2676
+ SEARCH_PAIRS(
2677
+ match = (JSVAL_IS_STRING(rval) &&
2678
+ ((str2 = JSVAL_TO_STRING(rval)) == str ||
2679
+ js_EqualStrings(str2, str)));
2680
+ )
2681
+ } else if (JSVAL_IS_DOUBLE(lval)) {
2682
+ d = *JSVAL_TO_DOUBLE(lval);
2683
+ SEARCH_PAIRS(
2684
+ match = (JSVAL_IS_DOUBLE(rval) &&
2685
+ *JSVAL_TO_DOUBLE(rval) == d);
2686
+ )
2687
+ } else {
2688
+ SEARCH_PAIRS(
2689
+ match = (lval == rval);
2690
+ )
2691
+ }
2692
+ #undef SEARCH_PAIRS
2693
+
2694
+ end_lookup_switch:
2695
+ len = (op == JSOP_LOOKUPSWITCH)
2696
+ ? GET_JUMP_OFFSET(pc2)
2697
+ : GET_JUMPX_OFFSET(pc2);
2698
+ END_VARLEN_CASE
2699
+
2700
+ BEGIN_CASE(JSOP_TRAP)
2701
+ {
2702
+ JSTrapStatus status;
2703
+
2704
+ status = JS_HandleTrap(cx, script, regs.pc, &rval);
2705
+ switch (status) {
2706
+ case JSTRAP_ERROR:
2707
+ goto error;
2708
+ case JSTRAP_RETURN:
2709
+ fp->rval = rval;
2710
+ ok = JS_TRUE;
2711
+ goto forced_return;
2712
+ case JSTRAP_THROW:
2713
+ cx->throwing = JS_TRUE;
2714
+ cx->exception = rval;
2715
+ goto error;
2716
+ default:;
2717
+ break;
2718
+ }
2719
+ JS_ASSERT(status == JSTRAP_CONTINUE);
2720
+ CHECK_INTERRUPT_HANDLER();
2721
+ JS_ASSERT(JSVAL_IS_INT(rval));
2722
+ op = (JSOp) JSVAL_TO_INT(rval);
2723
+ JS_ASSERT((uintN)op < (uintN)JSOP_LIMIT);
2724
+ DO_OP();
2725
+ }
2726
+
2727
+ BEGIN_CASE(JSOP_ARGUMENTS)
2728
+ if (!js_GetArgsValue(cx, fp, &rval))
2729
+ goto error;
2730
+ PUSH_OPND(rval);
2731
+ END_CASE(JSOP_ARGUMENTS)
2732
+
2733
+ BEGIN_CASE(JSOP_ARGSUB)
2734
+ id = INT_TO_JSID(GET_ARGNO(regs.pc));
2735
+ if (!js_GetArgsProperty(cx, fp, id, &rval))
2736
+ goto error;
2737
+ PUSH_OPND(rval);
2738
+ END_CASE(JSOP_ARGSUB)
2739
+
2740
+ BEGIN_CASE(JSOP_ARGCNT)
2741
+ id = ATOM_TO_JSID(rt->atomState.lengthAtom);
2742
+ if (!js_GetArgsProperty(cx, fp, id, &rval))
2743
+ goto error;
2744
+ PUSH_OPND(rval);
2745
+ END_CASE(JSOP_ARGCNT)
2746
+
2747
+ BEGIN_CASE(JSOP_GETARG)
2748
+ BEGIN_CASE(JSOP_CALLARG)
2749
+ slot = GET_ARGNO(regs.pc);
2750
+ JS_ASSERT(slot < fp->fun->nargs);
2751
+ METER_SLOT_OP(op, slot);
2752
+ PUSH_OPND(fp->argv[slot]);
2753
+ if (op == JSOP_CALLARG)
2754
+ PUSH_OPND(JSVAL_NULL);
2755
+ END_CASE(JSOP_GETARG)
2756
+
2757
+ BEGIN_CASE(JSOP_SETARG)
2758
+ slot = GET_ARGNO(regs.pc);
2759
+ JS_ASSERT(slot < fp->fun->nargs);
2760
+ METER_SLOT_OP(op, slot);
2761
+ vp = &fp->argv[slot];
2762
+ *vp = FETCH_OPND(-1);
2763
+ END_SET_CASE(JSOP_SETARG)
2764
+
2765
+ BEGIN_CASE(JSOP_GETLOCAL)
2766
+ slot = GET_SLOTNO(regs.pc);
2767
+ JS_ASSERT(slot < script->nslots);
2768
+ PUSH_OPND(fp->slots[slot]);
2769
+ END_CASE(JSOP_GETLOCAL)
2770
+
2771
+ BEGIN_CASE(JSOP_CALLLOCAL)
2772
+ slot = GET_SLOTNO(regs.pc);
2773
+ JS_ASSERT(slot < script->nslots);
2774
+ PUSH_OPND(fp->slots[slot]);
2775
+ PUSH_OPND(JSVAL_NULL);
2776
+ END_CASE(JSOP_CALLLOCAL)
2777
+
2778
+ BEGIN_CASE(JSOP_SETLOCAL)
2779
+ slot = GET_SLOTNO(regs.pc);
2780
+ JS_ASSERT(slot < script->nslots);
2781
+ vp = &fp->slots[slot];
2782
+ *vp = FETCH_OPND(-1);
2783
+ END_SET_CASE(JSOP_SETLOCAL)
2784
+
2785
+ BEGIN_CASE(JSOP_GETUPVAR)
2786
+ BEGIN_CASE(JSOP_CALLUPVAR)
2787
+ {
2788
+ JSUpvarArray *uva = script->upvars();
2789
+
2790
+ index = GET_UINT16(regs.pc);
2791
+ JS_ASSERT(index < uva->length);
2792
+
2793
+ rval = js_GetUpvar(cx, script->staticLevel, uva->vector[index]);
2794
+ PUSH_OPND(rval);
2795
+
2796
+ if (op == JSOP_CALLUPVAR)
2797
+ PUSH_OPND(JSVAL_NULL);
2798
+ }
2799
+ END_CASE(JSOP_GETUPVAR)
2800
+
2801
+ BEGIN_CASE(JSOP_GETUPVAR_DBG)
2802
+ BEGIN_CASE(JSOP_CALLUPVAR_DBG)
2803
+ fun = fp->fun;
2804
+ JS_ASSERT(FUN_KIND(fun) == JSFUN_INTERPRETED);
2805
+ JS_ASSERT(fun->u.i.wrapper);
2806
+
2807
+ /* Scope for tempPool mark and local names allocation in it. */
2808
+ {
2809
+ void *mark = JS_ARENA_MARK(&cx->tempPool);
2810
+ jsuword *names = js_GetLocalNameArray(cx, fun, &cx->tempPool);
2811
+ if (!names)
2812
+ goto error;
2813
+
2814
+ index = fun->countArgsAndVars() + GET_UINT16(regs.pc);
2815
+ atom = JS_LOCAL_NAME_TO_ATOM(names[index]);
2816
+ id = ATOM_TO_JSID(atom);
2817
+
2818
+ ok = js_FindProperty(cx, id, &obj, &obj2, &prop);
2819
+ JS_ARENA_RELEASE(&cx->tempPool, mark);
2820
+ if (!ok)
2821
+ goto error;
2822
+ }
2823
+
2824
+ if (!prop)
2825
+ goto atom_not_defined;
2826
+
2827
+ /* Minimize footprint with generic code instead of NATIVE_GET. */
2828
+ obj2->dropProperty(cx, prop);
2829
+ vp = regs.sp;
2830
+ PUSH_OPND(JSVAL_NULL);
2831
+ if (!obj->getProperty(cx, id, vp))
2832
+ goto error;
2833
+
2834
+ if (op == JSOP_CALLUPVAR_DBG)
2835
+ PUSH_OPND(JSVAL_NULL);
2836
+ END_CASE(JSOP_GETUPVAR_DBG)
2837
+
2838
+ BEGIN_CASE(JSOP_GETDSLOT)
2839
+ BEGIN_CASE(JSOP_CALLDSLOT)
2840
+ JS_ASSERT(fp->argv);
2841
+ obj = JSVAL_TO_OBJECT(fp->argv[-2]);
2842
+ JS_ASSERT(obj);
2843
+ JS_ASSERT(obj->dslots);
2844
+
2845
+ index = GET_UINT16(regs.pc);
2846
+ JS_ASSERT(JS_INITIAL_NSLOTS + index < jsatomid(obj->dslots[-1]));
2847
+ JS_ASSERT_IF(OBJ_SCOPE(obj)->object == obj,
2848
+ JS_INITIAL_NSLOTS + index < OBJ_SCOPE(obj)->freeslot);
2849
+
2850
+ PUSH_OPND(obj->dslots[index]);
2851
+ if (op == JSOP_CALLDSLOT)
2852
+ PUSH_OPND(JSVAL_NULL);
2853
+ END_CASE(JSOP_GETDSLOT)
2854
+
2855
+ BEGIN_CASE(JSOP_GETGVAR)
2856
+ BEGIN_CASE(JSOP_CALLGVAR)
2857
+ slot = GET_SLOTNO(regs.pc);
2858
+ JS_ASSERT(slot < GlobalVarCount(fp));
2859
+ METER_SLOT_OP(op, slot);
2860
+ lval = fp->slots[slot];
2861
+ if (JSVAL_IS_NULL(lval)) {
2862
+ op = (op == JSOP_GETGVAR) ? JSOP_NAME : JSOP_CALLNAME;
2863
+ DO_OP();
2864
+ }
2865
+ obj = fp->varobj;
2866
+ slot = JSVAL_TO_INT(lval);
2867
+ rval = OBJ_GET_SLOT(cx, obj, slot);
2868
+ PUSH_OPND(rval);
2869
+ if (op == JSOP_CALLGVAR)
2870
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
2871
+ END_CASE(JSOP_GETGVAR)
2872
+
2873
+ BEGIN_CASE(JSOP_SETGVAR)
2874
+ slot = GET_SLOTNO(regs.pc);
2875
+ JS_ASSERT(slot < GlobalVarCount(fp));
2876
+ METER_SLOT_OP(op, slot);
2877
+ rval = FETCH_OPND(-1);
2878
+ obj = fp->varobj;
2879
+ lval = fp->slots[slot];
2880
+ if (JSVAL_IS_NULL(lval)) {
2881
+ /*
2882
+ * Inline-clone and deoptimize JSOP_SETNAME code here because
2883
+ * JSOP_SETGVAR has arity 1: [rval], not arity 2: [obj, rval]
2884
+ * as JSOP_SETNAME does, where [obj] is due to JSOP_BINDNAME.
2885
+ */
2886
+ #ifdef JS_TRACER
2887
+ if (TRACE_RECORDER(cx))
2888
+ js_AbortRecording(cx, "SETGVAR with NULL slot");
2889
+ #endif
2890
+ LOAD_ATOM(0);
2891
+ id = ATOM_TO_JSID(atom);
2892
+ if (!obj->setProperty(cx, id, &rval))
2893
+ goto error;
2894
+ } else {
2895
+ slot = JSVAL_TO_INT(lval);
2896
+ JS_LOCK_OBJ(cx, obj);
2897
+ LOCKED_OBJ_WRITE_SLOT(cx, obj, slot, rval);
2898
+ JS_UNLOCK_OBJ(cx, obj);
2899
+ }
2900
+ END_SET_CASE(JSOP_SETGVAR)
2901
+
2902
+ BEGIN_CASE(JSOP_DEFCONST)
2903
+ BEGIN_CASE(JSOP_DEFVAR)
2904
+ index = GET_INDEX(regs.pc);
2905
+ atom = atoms[index];
2906
+
2907
+ /*
2908
+ * index is relative to atoms at this point but for global var
2909
+ * code below we need the absolute value.
2910
+ */
2911
+ index += atoms - script->atomMap.vector;
2912
+ obj = fp->varobj;
2913
+ JS_ASSERT(obj->map->ops->defineProperty == js_DefineProperty);
2914
+ attrs = JSPROP_ENUMERATE;
2915
+ if (!(fp->flags & JSFRAME_EVAL))
2916
+ attrs |= JSPROP_PERMANENT;
2917
+ if (op == JSOP_DEFCONST)
2918
+ attrs |= JSPROP_READONLY;
2919
+
2920
+ /* Lookup id in order to check for redeclaration problems. */
2921
+ id = ATOM_TO_JSID(atom);
2922
+ prop = NULL;
2923
+ if (!js_CheckRedeclaration(cx, obj, id, attrs, &obj2, &prop))
2924
+ goto error;
2925
+
2926
+ /* Bind a variable only if it's not yet defined. */
2927
+ if (!prop) {
2928
+ if (!js_DefineNativeProperty(cx, obj, id, JSVAL_VOID, JS_PropertyStub, JS_PropertyStub,
2929
+ attrs, 0, 0, &prop)) {
2930
+ goto error;
2931
+ }
2932
+ JS_ASSERT(prop);
2933
+ obj2 = obj;
2934
+ }
2935
+
2936
+ /*
2937
+ * Try to optimize a property we either just created, or found
2938
+ * directly in the global object, that is permanent, has a slot,
2939
+ * and has stub getter and setter, into a "fast global" accessed
2940
+ * by the JSOP_*GVAR opcodes.
2941
+ */
2942
+ if (!fp->fun &&
2943
+ index < GlobalVarCount(fp) &&
2944
+ obj2 == obj &&
2945
+ OBJ_IS_NATIVE(obj)) {
2946
+ sprop = (JSScopeProperty *) prop;
2947
+ if ((sprop->attrs & JSPROP_PERMANENT) &&
2948
+ SPROP_HAS_VALID_SLOT(sprop, OBJ_SCOPE(obj)) &&
2949
+ SPROP_HAS_STUB_GETTER(sprop) &&
2950
+ SPROP_HAS_STUB_SETTER(sprop)) {
2951
+ /*
2952
+ * Fast globals use frame variables to map the global
2953
+ * name's atom index to the permanent fp->varobj slot
2954
+ * number, tagged as a jsval. The atom index for the
2955
+ * global's name literal is identical to its variable
2956
+ * index.
2957
+ */
2958
+ fp->slots[index] = INT_TO_JSVAL(sprop->slot);
2959
+ }
2960
+ }
2961
+
2962
+ obj2->dropProperty(cx, prop);
2963
+ END_CASE(JSOP_DEFVAR)
2964
+
2965
+ BEGIN_CASE(JSOP_DEFFUN)
2966
+ {
2967
+ JSPropertyOp getter, setter;
2968
+ bool doSet;
2969
+ JSObject *pobj;
2970
+ JSProperty *prop;
2971
+ uint32 old;
2972
+
2973
+ /*
2974
+ * A top-level function defined in Global or Eval code (see
2975
+ * ECMA-262 Ed. 3), or else a SpiderMonkey extension: a named
2976
+ * function statement in a compound statement (not at the top
2977
+ * statement level of global code, or at the top level of a
2978
+ * function body).
2979
+ */
2980
+ LOAD_FUNCTION(0);
2981
+ obj = FUN_OBJECT(fun);
2982
+
2983
+ if (FUN_NULL_CLOSURE(fun)) {
2984
+ /*
2985
+ * Even a null closure needs a parent for principals finding.
2986
+ * FIXME: bug 476950, although debugger users may also demand
2987
+ * some kind of scope link for debugger-assisted eval-in-frame.
2988
+ */
2989
+ obj2 = fp->scopeChain;
2990
+ } else {
2991
+ JS_ASSERT(!FUN_FLAT_CLOSURE(fun));
2992
+
2993
+ /*
2994
+ * Inline js_GetScopeChain a bit to optimize for the case of a
2995
+ * top-level function.
2996
+ */
2997
+ if (!fp->blockChain) {
2998
+ obj2 = fp->scopeChain;
2999
+ } else {
3000
+ obj2 = js_GetScopeChain(cx, fp);
3001
+ if (!obj2)
3002
+ goto error;
3003
+ }
3004
+ }
3005
+
3006
+ /*
3007
+ * If static link is not current scope, clone fun's object to link
3008
+ * to the current scope via parent. We do this to enable sharing of
3009
+ * compiled functions among multiple equivalent scopes, amortizing
3010
+ * the cost of compilation over a number of executions. Examples
3011
+ * include XUL scripts and event handlers shared among Firefox or
3012
+ * other Mozilla app chrome windows, and user-defined JS functions
3013
+ * precompiled and then shared among requests in server-side JS.
3014
+ */
3015
+ if (OBJ_GET_PARENT(cx, obj) != obj2) {
3016
+ obj = js_CloneFunctionObject(cx, fun, obj2);
3017
+ if (!obj)
3018
+ goto error;
3019
+ }
3020
+
3021
+ /*
3022
+ * Protect obj from any GC hiding below JSObject::setProperty or
3023
+ * JSObject::defineProperty. All paths from here must flow through
3024
+ * the "Restore fp->scopeChain" code below the
3025
+ * parent->defineProperty call.
3026
+ */
3027
+ MUST_FLOW_THROUGH("restore_scope");
3028
+ fp->scopeChain = obj;
3029
+
3030
+ rval = OBJECT_TO_JSVAL(obj);
3031
+
3032
+ /*
3033
+ * ECMA requires functions defined when entering Eval code to be
3034
+ * impermanent.
3035
+ */
3036
+ attrs = (fp->flags & JSFRAME_EVAL)
3037
+ ? JSPROP_ENUMERATE
3038
+ : JSPROP_ENUMERATE | JSPROP_PERMANENT;
3039
+
3040
+ /*
3041
+ * Load function flags that are also property attributes. Getters
3042
+ * and setters do not need a slot, their value is stored elsewhere
3043
+ * in the property itself, not in obj slots.
3044
+ */
3045
+ setter = getter = JS_PropertyStub;
3046
+ flags = JSFUN_GSFLAG2ATTR(fun->flags);
3047
+ if (flags) {
3048
+ /* Function cannot be both getter a setter. */
3049
+ JS_ASSERT(flags == JSPROP_GETTER || flags == JSPROP_SETTER);
3050
+ attrs |= flags | JSPROP_SHARED;
3051
+ rval = JSVAL_VOID;
3052
+ if (flags == JSPROP_GETTER)
3053
+ getter = js_CastAsPropertyOp(obj);
3054
+ else
3055
+ setter = js_CastAsPropertyOp(obj);
3056
+ }
3057
+
3058
+ /*
3059
+ * We define the function as a property of the variable object and
3060
+ * not the current scope chain even for the case of function
3061
+ * expression statements and functions defined by eval inside let
3062
+ * or with blocks.
3063
+ */
3064
+ parent = fp->varobj;
3065
+ JS_ASSERT(parent);
3066
+
3067
+ /*
3068
+ * Check for a const property of the same name -- or any kind
3069
+ * of property if executing with the strict option. We check
3070
+ * here at runtime as well as at compile-time, to handle eval
3071
+ * as well as multiple HTML script tags.
3072
+ */
3073
+ id = ATOM_TO_JSID(fun->atom);
3074
+ prop = NULL;
3075
+ ok = js_CheckRedeclaration(cx, parent, id, attrs, &pobj, &prop);
3076
+ if (!ok)
3077
+ goto restore_scope;
3078
+
3079
+ /*
3080
+ * We deviate from 10.1.2 in ECMA 262 v3 and under eval use for
3081
+ * function declarations JSObject::setProperty, not
3082
+ * JSObject::defineProperty, to preserve the JSOP_PERMANENT
3083
+ * attribute of existing properties and make sure that such
3084
+ * properties cannot be deleted.
3085
+ *
3086
+ * We also use JSObject::setProperty for the existing properties of
3087
+ * Call objects with matching attributes to preserve the native
3088
+ * getters and setters that store the value of the property in the
3089
+ * interpreter frame, see bug 467495.
3090
+ */
3091
+ doSet = (attrs == JSPROP_ENUMERATE);
3092
+ JS_ASSERT_IF(doSet, fp->flags & JSFRAME_EVAL);
3093
+ if (prop) {
3094
+ if (parent == pobj &&
3095
+ OBJ_GET_CLASS(cx, parent) == &js_CallClass &&
3096
+ (old = ((JSScopeProperty *) prop)->attrs,
3097
+ !(old & (JSPROP_GETTER|JSPROP_SETTER)) &&
3098
+ (old & (JSPROP_ENUMERATE|JSPROP_PERMANENT)) == attrs)) {
3099
+ /*
3100
+ * js_CheckRedeclaration must reject attempts to add a
3101
+ * getter or setter to an existing property without a
3102
+ * getter or setter.
3103
+ */
3104
+ JS_ASSERT(!(attrs & ~(JSPROP_ENUMERATE|JSPROP_PERMANENT)));
3105
+ JS_ASSERT(!(old & JSPROP_READONLY));
3106
+ doSet = JS_TRUE;
3107
+ }
3108
+ pobj->dropProperty(cx, prop);
3109
+ }
3110
+ ok = doSet
3111
+ ? parent->setProperty(cx, id, &rval)
3112
+ : parent->defineProperty(cx, id, rval, getter, setter, attrs);
3113
+
3114
+ restore_scope:
3115
+ /* Restore fp->scopeChain now that obj is defined in fp->varobj. */
3116
+ fp->scopeChain = obj2;
3117
+ if (!ok)
3118
+ goto error;
3119
+ }
3120
+ END_CASE(JSOP_DEFFUN)
3121
+
3122
+ BEGIN_CASE(JSOP_DEFFUN_FC)
3123
+ BEGIN_CASE(JSOP_DEFFUN_DBGFC)
3124
+ LOAD_FUNCTION(0);
3125
+
3126
+ obj = (op == JSOP_DEFFUN_FC)
3127
+ ? js_NewFlatClosure(cx, fun)
3128
+ : js_NewDebuggableFlatClosure(cx, fun);
3129
+ if (!obj)
3130
+ goto error;
3131
+ rval = OBJECT_TO_JSVAL(obj);
3132
+
3133
+ attrs = (fp->flags & JSFRAME_EVAL)
3134
+ ? JSPROP_ENUMERATE
3135
+ : JSPROP_ENUMERATE | JSPROP_PERMANENT;
3136
+
3137
+ flags = JSFUN_GSFLAG2ATTR(fun->flags);
3138
+ if (flags) {
3139
+ attrs |= flags | JSPROP_SHARED;
3140
+ rval = JSVAL_VOID;
3141
+ }
3142
+
3143
+ parent = fp->varobj;
3144
+ JS_ASSERT(parent);
3145
+
3146
+ id = ATOM_TO_JSID(fun->atom);
3147
+ ok = js_CheckRedeclaration(cx, parent, id, attrs, NULL, NULL);
3148
+ if (ok) {
3149
+ if (attrs == JSPROP_ENUMERATE) {
3150
+ JS_ASSERT(fp->flags & JSFRAME_EVAL);
3151
+ ok = parent->setProperty(cx, id, &rval);
3152
+ } else {
3153
+ JS_ASSERT(attrs & JSPROP_PERMANENT);
3154
+
3155
+ ok = parent->defineProperty(cx, id, rval,
3156
+ (flags & JSPROP_GETTER)
3157
+ ? JS_EXTENSION (JSPropertyOp) obj
3158
+ : JS_PropertyStub,
3159
+ (flags & JSPROP_SETTER)
3160
+ ? JS_EXTENSION (JSPropertyOp) obj
3161
+ : JS_PropertyStub,
3162
+ attrs);
3163
+ }
3164
+ }
3165
+
3166
+ if (!ok)
3167
+ goto error;
3168
+ END_CASE(JSOP_DEFFUN_FC)
3169
+
3170
+ BEGIN_CASE(JSOP_DEFLOCALFUN)
3171
+ /*
3172
+ * Define a local function (i.e., one nested at the top level of
3173
+ * another function), parented by the current scope chain, stored
3174
+ * in a local variable slot that the compiler allocated. This is
3175
+ * an optimization over JSOP_DEFFUN that avoids requiring a call
3176
+ * object for the outer function's activation.
3177
+ */
3178
+ LOAD_FUNCTION(SLOTNO_LEN);
3179
+ JS_ASSERT(FUN_INTERPRETED(fun));
3180
+ JS_ASSERT(!FUN_FLAT_CLOSURE(fun));
3181
+ obj = FUN_OBJECT(fun);
3182
+
3183
+ if (FUN_NULL_CLOSURE(fun)) {
3184
+ obj = js_CloneFunctionObject(cx, fun, fp->scopeChain);
3185
+ if (!obj)
3186
+ goto error;
3187
+ } else {
3188
+ parent = js_GetScopeChain(cx, fp);
3189
+ if (!parent)
3190
+ goto error;
3191
+
3192
+ if (OBJ_GET_PARENT(cx, obj) != parent) {
3193
+ #ifdef JS_TRACER
3194
+ if (TRACE_RECORDER(cx))
3195
+ js_AbortRecording(cx, "DEFLOCALFUN for closure");
3196
+ #endif
3197
+ obj = js_CloneFunctionObject(cx, fun, parent);
3198
+ if (!obj)
3199
+ goto error;
3200
+ }
3201
+ }
3202
+
3203
+ slot = GET_SLOTNO(regs.pc);
3204
+ TRACE_2(DefLocalFunSetSlot, slot, obj);
3205
+
3206
+ fp->slots[slot] = OBJECT_TO_JSVAL(obj);
3207
+ END_CASE(JSOP_DEFLOCALFUN)
3208
+
3209
+ BEGIN_CASE(JSOP_DEFLOCALFUN_FC)
3210
+ LOAD_FUNCTION(SLOTNO_LEN);
3211
+
3212
+ obj = js_NewFlatClosure(cx, fun);
3213
+ if (!obj)
3214
+ goto error;
3215
+
3216
+ slot = GET_SLOTNO(regs.pc);
3217
+ TRACE_2(DefLocalFunSetSlot, slot, obj);
3218
+
3219
+ fp->slots[slot] = OBJECT_TO_JSVAL(obj);
3220
+ END_CASE(JSOP_DEFLOCALFUN_FC)
3221
+
3222
+ BEGIN_CASE(JSOP_DEFLOCALFUN_DBGFC)
3223
+ LOAD_FUNCTION(SLOTNO_LEN);
3224
+
3225
+ obj = js_NewDebuggableFlatClosure(cx, fun);
3226
+ if (!obj)
3227
+ goto error;
3228
+
3229
+ slot = GET_SLOTNO(regs.pc);
3230
+ fp->slots[slot] = OBJECT_TO_JSVAL(obj);
3231
+ END_CASE(JSOP_DEFLOCALFUN_DBGFC)
3232
+
3233
+ BEGIN_CASE(JSOP_LAMBDA)
3234
+ /* Load the specified function object literal. */
3235
+ LOAD_FUNCTION(0);
3236
+ obj = FUN_OBJECT(fun);
3237
+
3238
+ if (FUN_NULL_CLOSURE(fun)) {
3239
+ obj = js_CloneFunctionObject(cx, fun, fp->scopeChain);
3240
+ if (!obj)
3241
+ goto error;
3242
+ } else {
3243
+ parent = js_GetScopeChain(cx, fp);
3244
+ if (!parent)
3245
+ goto error;
3246
+
3247
+ /*
3248
+ * FIXME: bug 471214, Cloning here even when the compiler saw
3249
+ * the right parent is wasteful but we don't fully support
3250
+ * joined function objects, yet.
3251
+ */
3252
+ obj = js_CloneFunctionObject(cx, fun, parent);
3253
+ if (!obj)
3254
+ goto error;
3255
+ }
3256
+
3257
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3258
+ END_CASE(JSOP_LAMBDA)
3259
+
3260
+ BEGIN_CASE(JSOP_LAMBDA_FC)
3261
+ LOAD_FUNCTION(0);
3262
+
3263
+ obj = js_NewFlatClosure(cx, fun);
3264
+ if (!obj)
3265
+ goto error;
3266
+
3267
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3268
+ END_CASE(JSOP_LAMBDA_FC)
3269
+
3270
+ BEGIN_CASE(JSOP_LAMBDA_DBGFC)
3271
+ LOAD_FUNCTION(0);
3272
+
3273
+ obj = js_NewDebuggableFlatClosure(cx, fun);
3274
+ if (!obj)
3275
+ goto error;
3276
+
3277
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3278
+ END_CASE(JSOP_LAMBDA_DBGFC)
3279
+
3280
+ BEGIN_CASE(JSOP_CALLEE)
3281
+ PUSH_OPND(fp->argv[-2]);
3282
+ END_CASE(JSOP_CALLEE)
3283
+
3284
+ #if JS_HAS_GETTER_SETTER
3285
+ BEGIN_CASE(JSOP_GETTER)
3286
+ BEGIN_CASE(JSOP_SETTER)
3287
+ do_getter_setter:
3288
+ op2 = (JSOp) *++regs.pc;
3289
+ switch (op2) {
3290
+ case JSOP_INDEXBASE:
3291
+ atoms += GET_INDEXBASE(regs.pc);
3292
+ regs.pc += JSOP_INDEXBASE_LENGTH - 1;
3293
+ goto do_getter_setter;
3294
+ case JSOP_INDEXBASE1:
3295
+ case JSOP_INDEXBASE2:
3296
+ case JSOP_INDEXBASE3:
3297
+ atoms += (op2 - JSOP_INDEXBASE1 + 1) << 16;
3298
+ goto do_getter_setter;
3299
+
3300
+ case JSOP_SETNAME:
3301
+ case JSOP_SETPROP:
3302
+ LOAD_ATOM(0);
3303
+ id = ATOM_TO_JSID(atom);
3304
+ rval = FETCH_OPND(-1);
3305
+ i = -1;
3306
+ goto gs_pop_lval;
3307
+
3308
+ case JSOP_SETELEM:
3309
+ rval = FETCH_OPND(-1);
3310
+ id = 0;
3311
+ i = -2;
3312
+ gs_pop_lval:
3313
+ FETCH_OBJECT(cx, i - 1, lval, obj);
3314
+ break;
3315
+
3316
+ case JSOP_INITPROP:
3317
+ JS_ASSERT(regs.sp - StackBase(fp) >= 2);
3318
+ rval = FETCH_OPND(-1);
3319
+ i = -1;
3320
+ LOAD_ATOM(0);
3321
+ id = ATOM_TO_JSID(atom);
3322
+ goto gs_get_lval;
3323
+
3324
+ default:
3325
+ JS_ASSERT(op2 == JSOP_INITELEM);
3326
+
3327
+ JS_ASSERT(regs.sp - StackBase(fp) >= 3);
3328
+ rval = FETCH_OPND(-1);
3329
+ id = 0;
3330
+ i = -2;
3331
+ gs_get_lval:
3332
+ lval = FETCH_OPND(i-1);
3333
+ JS_ASSERT(JSVAL_IS_OBJECT(lval));
3334
+ obj = JSVAL_TO_OBJECT(lval);
3335
+ break;
3336
+ }
3337
+
3338
+ /* Ensure that id has a type suitable for use with obj. */
3339
+ if (id == 0)
3340
+ FETCH_ELEMENT_ID(obj, i, id);
3341
+
3342
+ if (JS_TypeOfValue(cx, rval) != JSTYPE_FUNCTION) {
3343
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
3344
+ JSMSG_BAD_GETTER_OR_SETTER,
3345
+ (op == JSOP_GETTER)
3346
+ ? js_getter_str
3347
+ : js_setter_str);
3348
+ goto error;
3349
+ }
3350
+
3351
+ /*
3352
+ * Getters and setters are just like watchpoints from an access
3353
+ * control point of view.
3354
+ */
3355
+ if (!obj->checkAccess(cx, id, JSACC_WATCH, &rtmp, &attrs))
3356
+ goto error;
3357
+
3358
+ if (op == JSOP_GETTER) {
3359
+ getter = JS_EXTENSION (JSPropertyOp) JSVAL_TO_OBJECT(rval);
3360
+ setter = JS_PropertyStub;
3361
+ attrs = JSPROP_GETTER;
3362
+ } else {
3363
+ getter = JS_PropertyStub;
3364
+ setter = JS_EXTENSION (JSPropertyOp) JSVAL_TO_OBJECT(rval);
3365
+ attrs = JSPROP_SETTER;
3366
+ }
3367
+ attrs |= JSPROP_ENUMERATE | JSPROP_SHARED;
3368
+
3369
+ /* Check for a readonly or permanent property of the same name. */
3370
+ if (!js_CheckRedeclaration(cx, obj, id, attrs, NULL, NULL))
3371
+ goto error;
3372
+
3373
+ if (!obj->defineProperty(cx, id, JSVAL_VOID, getter, setter, attrs))
3374
+ goto error;
3375
+
3376
+ regs.sp += i;
3377
+ if (js_CodeSpec[op2].ndefs)
3378
+ STORE_OPND(-1, rval);
3379
+ len = js_CodeSpec[op2].length;
3380
+ DO_NEXT_OP(len);
3381
+ #endif /* JS_HAS_GETTER_SETTER */
3382
+
3383
+ BEGIN_CASE(JSOP_HOLE)
3384
+ PUSH_OPND(JSVAL_HOLE);
3385
+ END_CASE(JSOP_HOLE)
3386
+
3387
+ BEGIN_CASE(JSOP_NEWARRAY)
3388
+ len = GET_UINT16(regs.pc);
3389
+ cx->fp->assertValidStackDepth(len);
3390
+ obj = js_NewArrayObject(cx, len, regs.sp - len, JS_TRUE);
3391
+ if (!obj)
3392
+ goto error;
3393
+ regs.sp -= len - 1;
3394
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3395
+ END_CASE(JSOP_NEWARRAY)
3396
+
3397
+ BEGIN_CASE(JSOP_NEWINIT)
3398
+ i = GET_INT8(regs.pc);
3399
+ JS_ASSERT(i == JSProto_Array || i == JSProto_Object);
3400
+ obj = (i == JSProto_Array)
3401
+ ? js_NewArrayObject(cx, 0, NULL)
3402
+ : js_NewObject(cx, &js_ObjectClass, NULL, NULL);
3403
+ if (!obj)
3404
+ goto error;
3405
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3406
+ fp->sharpDepth++;
3407
+ CHECK_INTERRUPT_HANDLER();
3408
+ END_CASE(JSOP_NEWINIT)
3409
+
3410
+ BEGIN_CASE(JSOP_ENDINIT)
3411
+ if (--fp->sharpDepth == 0)
3412
+ fp->sharpArray = NULL;
3413
+
3414
+ /* Re-set the newborn root to the top of this object tree. */
3415
+ JS_ASSERT(regs.sp - StackBase(fp) >= 1);
3416
+ lval = FETCH_OPND(-1);
3417
+ JS_ASSERT(JSVAL_IS_OBJECT(lval));
3418
+ cx->weakRoots.newborn[GCX_OBJECT] = JSVAL_TO_GCTHING(lval);
3419
+ END_CASE(JSOP_ENDINIT)
3420
+
3421
+ BEGIN_CASE(JSOP_INITPROP)
3422
+ /* Load the property's initial value into rval. */
3423
+ JS_ASSERT(regs.sp - StackBase(fp) >= 2);
3424
+ rval = FETCH_OPND(-1);
3425
+
3426
+ /* Load the object being initialized into lval/obj. */
3427
+ lval = FETCH_OPND(-2);
3428
+ obj = JSVAL_TO_OBJECT(lval);
3429
+ JS_ASSERT(OBJ_IS_NATIVE(obj));
3430
+ JS_ASSERT(!OBJ_GET_CLASS(cx, obj)->reserveSlots);
3431
+ JS_ASSERT(!(obj->getClass()->flags & JSCLASS_SHARE_ALL_PROPERTIES));
3432
+
3433
+ do {
3434
+ JSScope *scope;
3435
+ uint32 kshape;
3436
+ JSPropertyCache *cache;
3437
+ JSPropCacheEntry *entry;
3438
+
3439
+ JS_LOCK_OBJ(cx, obj);
3440
+ scope = OBJ_SCOPE(obj);
3441
+ JS_ASSERT(!scope->sealed());
3442
+ kshape = scope->shape;
3443
+ cache = &JS_PROPERTY_CACHE(cx);
3444
+ entry = &cache->table[PROPERTY_CACHE_HASH_PC(regs.pc, kshape)];
3445
+ PCMETER(cache->pctestentry = entry);
3446
+ PCMETER(cache->tests++);
3447
+ PCMETER(cache->initests++);
3448
+
3449
+ if (entry->kpc == regs.pc &&
3450
+ entry->kshape == kshape &&
3451
+ PCVCAP_SHAPE(entry->vcap) == rt->protoHazardShape) {
3452
+ JS_ASSERT(PCVCAP_TAG(entry->vcap) == 0);
3453
+
3454
+ PCMETER(cache->pchits++);
3455
+ PCMETER(cache->inipchits++);
3456
+
3457
+ JS_ASSERT(PCVAL_IS_SPROP(entry->vword));
3458
+ sprop = PCVAL_TO_SPROP(entry->vword);
3459
+ JS_ASSERT(!(sprop->attrs & JSPROP_READONLY));
3460
+
3461
+ /*
3462
+ * If this property has a non-stub setter, it must be
3463
+ * __proto__, __parent__, or another "shared prototype"
3464
+ * built-in. Force a miss to save code size here and let
3465
+ * the standard code path take care of business.
3466
+ */
3467
+ if (!SPROP_HAS_STUB_SETTER(sprop))
3468
+ goto do_initprop_miss;
3469
+
3470
+ if (!scope->owned()) {
3471
+ scope = js_GetMutableScope(cx, obj);
3472
+ if (!scope) {
3473
+ JS_UNLOCK_OBJ(cx, obj);
3474
+ goto error;
3475
+ }
3476
+ }
3477
+
3478
+ /*
3479
+ * Detect a repeated property name and force a miss to
3480
+ * share the strict warning code and cope with complexity
3481
+ * managed by JSScope::add.
3482
+ */
3483
+ if (sprop->parent != scope->lastProp)
3484
+ goto do_initprop_miss;
3485
+
3486
+ /*
3487
+ * Otherwise this entry must be for a direct property of
3488
+ * obj, not a proto-property, and there cannot have been
3489
+ * any deletions of prior properties.
3490
+ */
3491
+ JS_ASSERT(!scope->hadMiddleDelete());
3492
+ JS_ASSERT_IF(scope->table, !scope->has(sprop));
3493
+
3494
+ slot = sprop->slot;
3495
+ JS_ASSERT(slot == scope->freeslot);
3496
+ if (slot < STOBJ_NSLOTS(obj)) {
3497
+ ++scope->freeslot;
3498
+ } else {
3499
+ if (!js_AllocSlot(cx, obj, &slot)) {
3500
+ JS_UNLOCK_SCOPE(cx, scope);
3501
+ goto error;
3502
+ }
3503
+ JS_ASSERT(slot == sprop->slot);
3504
+ }
3505
+
3506
+ JS_ASSERT(!scope->lastProp ||
3507
+ scope->shape == scope->lastProp->shape);
3508
+ if (scope->table) {
3509
+ JSScopeProperty *sprop2 =
3510
+ scope->add(cx, sprop->id,
3511
+ sprop->getter, sprop->setter,
3512
+ slot, sprop->attrs,
3513
+ sprop->flags, sprop->shortid);
3514
+ if (!sprop2) {
3515
+ js_FreeSlot(cx, obj, slot);
3516
+ JS_UNLOCK_SCOPE(cx, scope);
3517
+ goto error;
3518
+ }
3519
+ JS_ASSERT(sprop2 == sprop);
3520
+ } else {
3521
+ JS_ASSERT(scope->owned());
3522
+ js_LeaveTraceIfGlobalObject(cx, obj);
3523
+ scope->shape = sprop->shape;
3524
+ ++scope->entryCount;
3525
+ scope->lastProp = sprop;
3526
+ }
3527
+
3528
+ LOCKED_OBJ_WRITE_BARRIER(cx, obj, slot, rval);
3529
+ TRACE_2(SetPropHit, entry, sprop);
3530
+ LOCKED_OBJ_SET_SLOT(obj, slot, rval);
3531
+ JS_UNLOCK_SCOPE(cx, scope);
3532
+ break;
3533
+ }
3534
+
3535
+ do_initprop_miss:
3536
+ PCMETER(cache->inipcmisses++);
3537
+ JS_UNLOCK_SCOPE(cx, scope);
3538
+
3539
+ /* Get the immediate property name into id. */
3540
+ LOAD_ATOM(0);
3541
+ id = ATOM_TO_JSID(atom);
3542
+
3543
+ /* Set the property named by obj[id] to rval. */
3544
+ if (!js_CheckRedeclaration(cx, obj, id, JSPROP_INITIALIZER,
3545
+ NULL, NULL)) {
3546
+ goto error;
3547
+ }
3548
+
3549
+ if (!(JS_UNLIKELY(atom == cx->runtime->atomState.protoAtom)
3550
+ ? js_SetPropertyHelper(cx, obj, id, true, &rval)
3551
+ : js_DefineNativeProperty(cx, obj, id, rval, NULL, NULL,
3552
+ JSPROP_ENUMERATE, 0, 0, NULL,
3553
+ JSDNP_CACHE_RESULT)))
3554
+ goto error;
3555
+ } while (0);
3556
+
3557
+ /* Common tail for property cache hit and miss cases. */
3558
+ regs.sp--;
3559
+ END_CASE(JSOP_INITPROP);
3560
+
3561
+ BEGIN_CASE(JSOP_INITELEM)
3562
+ /* Pop the element's value into rval. */
3563
+ JS_ASSERT(regs.sp - StackBase(fp) >= 3);
3564
+ rval = FETCH_OPND(-1);
3565
+
3566
+ /* Find the object being initialized at top of stack. */
3567
+ lval = FETCH_OPND(-3);
3568
+ JS_ASSERT(!JSVAL_IS_PRIMITIVE(lval));
3569
+ obj = JSVAL_TO_OBJECT(lval);
3570
+
3571
+ /* Fetch id now that we have obj. */
3572
+ FETCH_ELEMENT_ID(obj, -2, id);
3573
+
3574
+ /*
3575
+ * Check for property redeclaration strict warning (we may be in
3576
+ * an object initialiser, not an array initialiser).
3577
+ */
3578
+ if (!js_CheckRedeclaration(cx, obj, id, JSPROP_INITIALIZER, NULL, NULL))
3579
+ goto error;
3580
+
3581
+ /*
3582
+ * If rval is a hole, do not call JSObject::defineProperty. In this case,
3583
+ * obj must be an array, so if the current op is the last element
3584
+ * initialiser, set the array length to one greater than id.
3585
+ */
3586
+ if (rval == JSVAL_HOLE) {
3587
+ JS_ASSERT(OBJ_IS_ARRAY(cx, obj));
3588
+ JS_ASSERT(JSID_IS_INT(id));
3589
+ JS_ASSERT(jsuint(JSID_TO_INT(id)) < JS_ARGS_LENGTH_MAX);
3590
+ if (js_GetOpcode(cx, script, regs.pc + JSOP_INITELEM_LENGTH) == JSOP_ENDINIT &&
3591
+ !js_SetLengthProperty(cx, obj, (jsuint) (JSID_TO_INT(id) + 1))) {
3592
+ goto error;
3593
+ }
3594
+ } else {
3595
+ if (!obj->defineProperty(cx, id, rval, NULL, NULL, JSPROP_ENUMERATE))
3596
+ goto error;
3597
+ }
3598
+ regs.sp -= 2;
3599
+ END_CASE(JSOP_INITELEM)
3600
+
3601
+ #if JS_HAS_SHARP_VARS
3602
+ BEGIN_CASE(JSOP_DEFSHARP)
3603
+ obj = fp->sharpArray;
3604
+ if (!obj) {
3605
+ obj = js_NewArrayObject(cx, 0, NULL);
3606
+ if (!obj)
3607
+ goto error;
3608
+ fp->sharpArray = obj;
3609
+ }
3610
+ i = (jsint) GET_UINT16(regs.pc);
3611
+ id = INT_TO_JSID(i);
3612
+ rval = FETCH_OPND(-1);
3613
+ if (JSVAL_IS_PRIMITIVE(rval)) {
3614
+ char numBuf[12];
3615
+ JS_snprintf(numBuf, sizeof numBuf, "%u", (unsigned) i);
3616
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
3617
+ JSMSG_BAD_SHARP_DEF, numBuf);
3618
+ goto error;
3619
+ }
3620
+ if (!obj->defineProperty(cx, id, rval, NULL, NULL, JSPROP_ENUMERATE))
3621
+ goto error;
3622
+ END_CASE(JSOP_DEFSHARP)
3623
+
3624
+ BEGIN_CASE(JSOP_USESHARP)
3625
+ i = (jsint) GET_UINT16(regs.pc);
3626
+ id = INT_TO_JSID(i);
3627
+ obj = fp->sharpArray;
3628
+ if (!obj) {
3629
+ rval = JSVAL_VOID;
3630
+ } else {
3631
+ if (!obj->getProperty(cx, id, &rval))
3632
+ goto error;
3633
+ }
3634
+ if (!JSVAL_IS_OBJECT(rval)) {
3635
+ char numBuf[12];
3636
+
3637
+ JS_snprintf(numBuf, sizeof numBuf, "%u", (unsigned) i);
3638
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
3639
+ JSMSG_BAD_SHARP_USE, numBuf);
3640
+ goto error;
3641
+ }
3642
+ PUSH_OPND(rval);
3643
+ END_CASE(JSOP_USESHARP)
3644
+ #endif /* JS_HAS_SHARP_VARS */
3645
+
3646
+ BEGIN_CASE(JSOP_GOSUB)
3647
+ PUSH(JSVAL_FALSE);
3648
+ i = (regs.pc - script->main) + JSOP_GOSUB_LENGTH;
3649
+ PUSH(INT_TO_JSVAL(i));
3650
+ len = GET_JUMP_OFFSET(regs.pc);
3651
+ END_VARLEN_CASE
3652
+
3653
+ BEGIN_CASE(JSOP_GOSUBX)
3654
+ PUSH(JSVAL_FALSE);
3655
+ i = (regs.pc - script->main) + JSOP_GOSUBX_LENGTH;
3656
+ len = GET_JUMPX_OFFSET(regs.pc);
3657
+ PUSH(INT_TO_JSVAL(i));
3658
+ END_VARLEN_CASE
3659
+
3660
+ BEGIN_CASE(JSOP_RETSUB)
3661
+ /* Pop [exception or hole, retsub pc-index]. */
3662
+ rval = POP();
3663
+ lval = POP();
3664
+ JS_ASSERT(JSVAL_IS_BOOLEAN(lval));
3665
+ if (JSVAL_TO_BOOLEAN(lval)) {
3666
+ /*
3667
+ * Exception was pending during finally, throw it *before* we
3668
+ * adjust pc, because pc indexes into script->trynotes. This
3669
+ * turns out not to be necessary, but it seems clearer. And
3670
+ * it points out a FIXME: 350509, due to Igor Bukanov.
3671
+ */
3672
+ cx->throwing = JS_TRUE;
3673
+ cx->exception = rval;
3674
+ goto error;
3675
+ }
3676
+ JS_ASSERT(JSVAL_IS_INT(rval));
3677
+ len = JSVAL_TO_INT(rval);
3678
+ regs.pc = script->main;
3679
+ END_VARLEN_CASE
3680
+
3681
+ BEGIN_CASE(JSOP_EXCEPTION)
3682
+ JS_ASSERT(cx->throwing);
3683
+ PUSH(cx->exception);
3684
+ cx->throwing = JS_FALSE;
3685
+ CHECK_BRANCH();
3686
+ END_CASE(JSOP_EXCEPTION)
3687
+
3688
+ BEGIN_CASE(JSOP_FINALLY)
3689
+ CHECK_BRANCH();
3690
+ END_CASE(JSOP_FINALLY)
3691
+
3692
+ BEGIN_CASE(JSOP_THROWING)
3693
+ JS_ASSERT(!cx->throwing);
3694
+ cx->throwing = JS_TRUE;
3695
+ cx->exception = POP_OPND();
3696
+ END_CASE(JSOP_THROWING)
3697
+
3698
+ BEGIN_CASE(JSOP_THROW)
3699
+ JS_ASSERT(!cx->throwing);
3700
+ CHECK_BRANCH();
3701
+ cx->throwing = JS_TRUE;
3702
+ cx->exception = POP_OPND();
3703
+ /* let the code at error try to catch the exception. */
3704
+ goto error;
3705
+
3706
+ BEGIN_CASE(JSOP_SETLOCALPOP)
3707
+ /*
3708
+ * The stack must have a block with at least one local slot below
3709
+ * the exception object.
3710
+ */
3711
+ JS_ASSERT((size_t) (regs.sp - StackBase(fp)) >= 2);
3712
+ slot = GET_UINT16(regs.pc);
3713
+ JS_ASSERT(slot + 1 < script->nslots);
3714
+ fp->slots[slot] = POP_OPND();
3715
+ END_CASE(JSOP_SETLOCALPOP)
3716
+
3717
+ BEGIN_CASE(JSOP_IFPRIMTOP)
3718
+ /*
3719
+ * If the top of stack is of primitive type, jump to our target.
3720
+ * Otherwise advance to the next opcode.
3721
+ */
3722
+ JS_ASSERT(regs.sp > StackBase(fp));
3723
+ rval = FETCH_OPND(-1);
3724
+ if (JSVAL_IS_PRIMITIVE(rval)) {
3725
+ len = GET_JUMP_OFFSET(regs.pc);
3726
+ BRANCH(len);
3727
+ }
3728
+ END_CASE(JSOP_IFPRIMTOP)
3729
+
3730
+ BEGIN_CASE(JSOP_PRIMTOP)
3731
+ JS_ASSERT(regs.sp > StackBase(fp));
3732
+ lval = FETCH_OPND(-1);
3733
+ i = GET_INT8(regs.pc);
3734
+ if (!JSVAL_IS_PRIMITIVE(lval)) {
3735
+ lval = FETCH_OPND(-2);
3736
+ js_ReportValueError2(cx, JSMSG_CANT_CONVERT_TO,
3737
+ -2, lval, NULL,
3738
+ (i == JSTYPE_VOID)
3739
+ ? "primitive type"
3740
+ : JS_TYPE_STR(i));
3741
+ goto error;
3742
+ }
3743
+ END_CASE(JSOP_PRIMTOP)
3744
+
3745
+ BEGIN_CASE(JSOP_OBJTOP)
3746
+ lval = FETCH_OPND(-1);
3747
+ if (JSVAL_IS_PRIMITIVE(lval)) {
3748
+ js_ReportValueError(cx, GET_UINT16(regs.pc), -1, lval, NULL);
3749
+ goto error;
3750
+ }
3751
+ END_CASE(JSOP_OBJTOP)
3752
+
3753
+ BEGIN_CASE(JSOP_INSTANCEOF)
3754
+ rval = FETCH_OPND(-1);
3755
+ if (JSVAL_IS_PRIMITIVE(rval) ||
3756
+ !(obj = JSVAL_TO_OBJECT(rval))->map->ops->hasInstance) {
3757
+ js_ReportValueError(cx, JSMSG_BAD_INSTANCEOF_RHS,
3758
+ -1, rval, NULL);
3759
+ goto error;
3760
+ }
3761
+ lval = FETCH_OPND(-2);
3762
+ cond = JS_FALSE;
3763
+ if (!obj->map->ops->hasInstance(cx, obj, lval, &cond))
3764
+ goto error;
3765
+ regs.sp--;
3766
+ STORE_OPND(-1, BOOLEAN_TO_JSVAL(cond));
3767
+ END_CASE(JSOP_INSTANCEOF)
3768
+
3769
+ #if JS_HAS_DEBUGGER_KEYWORD
3770
+ BEGIN_CASE(JSOP_DEBUGGER)
3771
+ {
3772
+ JSTrapHandler handler = cx->debugHooks->debuggerHandler;
3773
+ if (handler) {
3774
+ switch (handler(cx, script, regs.pc, &rval,
3775
+ cx->debugHooks->debuggerHandlerData)) {
3776
+ case JSTRAP_ERROR:
3777
+ goto error;
3778
+ case JSTRAP_CONTINUE:
3779
+ break;
3780
+ case JSTRAP_RETURN:
3781
+ fp->rval = rval;
3782
+ ok = JS_TRUE;
3783
+ goto forced_return;
3784
+ case JSTRAP_THROW:
3785
+ cx->throwing = JS_TRUE;
3786
+ cx->exception = rval;
3787
+ goto error;
3788
+ default:;
3789
+ }
3790
+ CHECK_INTERRUPT_HANDLER();
3791
+ }
3792
+ }
3793
+ END_CASE(JSOP_DEBUGGER)
3794
+ #endif /* JS_HAS_DEBUGGER_KEYWORD */
3795
+
3796
+ #if JS_HAS_XML_SUPPORT
3797
+ BEGIN_CASE(JSOP_DEFXMLNS)
3798
+ rval = POP();
3799
+ if (!js_SetDefaultXMLNamespace(cx, rval))
3800
+ goto error;
3801
+ END_CASE(JSOP_DEFXMLNS)
3802
+
3803
+ BEGIN_CASE(JSOP_ANYNAME)
3804
+ if (!js_GetAnyName(cx, &rval))
3805
+ goto error;
3806
+ PUSH_OPND(rval);
3807
+ END_CASE(JSOP_ANYNAME)
3808
+
3809
+ BEGIN_CASE(JSOP_QNAMEPART)
3810
+ LOAD_ATOM(0);
3811
+ PUSH_OPND(ATOM_KEY(atom));
3812
+ END_CASE(JSOP_QNAMEPART)
3813
+
3814
+ BEGIN_CASE(JSOP_QNAMECONST)
3815
+ LOAD_ATOM(0);
3816
+ rval = ATOM_KEY(atom);
3817
+ lval = FETCH_OPND(-1);
3818
+ obj = js_ConstructXMLQNameObject(cx, lval, rval);
3819
+ if (!obj)
3820
+ goto error;
3821
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3822
+ END_CASE(JSOP_QNAMECONST)
3823
+
3824
+ BEGIN_CASE(JSOP_QNAME)
3825
+ rval = FETCH_OPND(-1);
3826
+ lval = FETCH_OPND(-2);
3827
+ obj = js_ConstructXMLQNameObject(cx, lval, rval);
3828
+ if (!obj)
3829
+ goto error;
3830
+ regs.sp--;
3831
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3832
+ END_CASE(JSOP_QNAME)
3833
+
3834
+ BEGIN_CASE(JSOP_TOATTRNAME)
3835
+ rval = FETCH_OPND(-1);
3836
+ if (!js_ToAttributeName(cx, &rval))
3837
+ goto error;
3838
+ STORE_OPND(-1, rval);
3839
+ END_CASE(JSOP_TOATTRNAME)
3840
+
3841
+ BEGIN_CASE(JSOP_TOATTRVAL)
3842
+ rval = FETCH_OPND(-1);
3843
+ JS_ASSERT(JSVAL_IS_STRING(rval));
3844
+ str = js_EscapeAttributeValue(cx, JSVAL_TO_STRING(rval), JS_FALSE);
3845
+ if (!str)
3846
+ goto error;
3847
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
3848
+ END_CASE(JSOP_TOATTRVAL)
3849
+
3850
+ BEGIN_CASE(JSOP_ADDATTRNAME)
3851
+ BEGIN_CASE(JSOP_ADDATTRVAL)
3852
+ rval = FETCH_OPND(-1);
3853
+ lval = FETCH_OPND(-2);
3854
+ str = JSVAL_TO_STRING(lval);
3855
+ str2 = JSVAL_TO_STRING(rval);
3856
+ str = js_AddAttributePart(cx, op == JSOP_ADDATTRNAME, str, str2);
3857
+ if (!str)
3858
+ goto error;
3859
+ regs.sp--;
3860
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
3861
+ END_CASE(JSOP_ADDATTRNAME)
3862
+
3863
+ BEGIN_CASE(JSOP_BINDXMLNAME)
3864
+ lval = FETCH_OPND(-1);
3865
+ if (!js_FindXMLProperty(cx, lval, &obj, &id))
3866
+ goto error;
3867
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3868
+ PUSH_OPND(ID_TO_VALUE(id));
3869
+ END_CASE(JSOP_BINDXMLNAME)
3870
+
3871
+ BEGIN_CASE(JSOP_SETXMLNAME)
3872
+ obj = JSVAL_TO_OBJECT(FETCH_OPND(-3));
3873
+ rval = FETCH_OPND(-1);
3874
+ FETCH_ELEMENT_ID(obj, -2, id);
3875
+ if (!obj->setProperty(cx, id, &rval))
3876
+ goto error;
3877
+ rval = FETCH_OPND(-1);
3878
+ regs.sp -= 2;
3879
+ STORE_OPND(-1, rval);
3880
+ END_CASE(JSOP_SETXMLNAME)
3881
+
3882
+ BEGIN_CASE(JSOP_CALLXMLNAME)
3883
+ BEGIN_CASE(JSOP_XMLNAME)
3884
+ lval = FETCH_OPND(-1);
3885
+ if (!js_FindXMLProperty(cx, lval, &obj, &id))
3886
+ goto error;
3887
+ if (!obj->getProperty(cx, id, &rval))
3888
+ goto error;
3889
+ STORE_OPND(-1, rval);
3890
+ if (op == JSOP_CALLXMLNAME)
3891
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3892
+ END_CASE(JSOP_XMLNAME)
3893
+
3894
+ BEGIN_CASE(JSOP_DESCENDANTS)
3895
+ BEGIN_CASE(JSOP_DELDESC)
3896
+ FETCH_OBJECT(cx, -2, lval, obj);
3897
+ rval = FETCH_OPND(-1);
3898
+ if (!js_GetXMLDescendants(cx, obj, rval, &rval))
3899
+ goto error;
3900
+
3901
+ if (op == JSOP_DELDESC) {
3902
+ regs.sp[-1] = rval; /* set local root */
3903
+ if (!js_DeleteXMLListElements(cx, JSVAL_TO_OBJECT(rval)))
3904
+ goto error;
3905
+ rval = JSVAL_TRUE; /* always succeed */
3906
+ }
3907
+
3908
+ regs.sp--;
3909
+ STORE_OPND(-1, rval);
3910
+ END_CASE(JSOP_DESCENDANTS)
3911
+
3912
+ BEGIN_CASE(JSOP_FILTER)
3913
+ /*
3914
+ * We push the hole value before jumping to [enditer] so we can
3915
+ * detect the first iteration and direct js_StepXMLListFilter to
3916
+ * initialize filter's state.
3917
+ */
3918
+ PUSH_OPND(JSVAL_HOLE);
3919
+ len = GET_JUMP_OFFSET(regs.pc);
3920
+ JS_ASSERT(len > 0);
3921
+ END_VARLEN_CASE
3922
+
3923
+ BEGIN_CASE(JSOP_ENDFILTER)
3924
+ cond = (regs.sp[-1] != JSVAL_HOLE);
3925
+ if (cond) {
3926
+ /* Exit the "with" block left from the previous iteration. */
3927
+ js_LeaveWith(cx);
3928
+ }
3929
+ if (!js_StepXMLListFilter(cx, cond))
3930
+ goto error;
3931
+ if (regs.sp[-1] != JSVAL_NULL) {
3932
+ /*
3933
+ * Decrease sp after EnterWith returns as we use sp[-1] there
3934
+ * to root temporaries.
3935
+ */
3936
+ JS_ASSERT(VALUE_IS_XML(cx, regs.sp[-1]));
3937
+ if (!js_EnterWith(cx, -2))
3938
+ goto error;
3939
+ regs.sp--;
3940
+ len = GET_JUMP_OFFSET(regs.pc);
3941
+ JS_ASSERT(len < 0);
3942
+ BRANCH(len);
3943
+ }
3944
+ regs.sp--;
3945
+ END_CASE(JSOP_ENDFILTER);
3946
+
3947
+ BEGIN_CASE(JSOP_TOXML)
3948
+ rval = FETCH_OPND(-1);
3949
+ obj = js_ValueToXMLObject(cx, rval);
3950
+ if (!obj)
3951
+ goto error;
3952
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3953
+ END_CASE(JSOP_TOXML)
3954
+
3955
+ BEGIN_CASE(JSOP_TOXMLLIST)
3956
+ rval = FETCH_OPND(-1);
3957
+ obj = js_ValueToXMLListObject(cx, rval);
3958
+ if (!obj)
3959
+ goto error;
3960
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
3961
+ END_CASE(JSOP_TOXMLLIST)
3962
+
3963
+ BEGIN_CASE(JSOP_XMLTAGEXPR)
3964
+ rval = FETCH_OPND(-1);
3965
+ str = js_ValueToString(cx, rval);
3966
+ if (!str)
3967
+ goto error;
3968
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
3969
+ END_CASE(JSOP_XMLTAGEXPR)
3970
+
3971
+ BEGIN_CASE(JSOP_XMLELTEXPR)
3972
+ rval = FETCH_OPND(-1);
3973
+ if (VALUE_IS_XML(cx, rval)) {
3974
+ str = js_ValueToXMLString(cx, rval);
3975
+ } else {
3976
+ str = js_ValueToString(cx, rval);
3977
+ if (str)
3978
+ str = js_EscapeElementValue(cx, str);
3979
+ }
3980
+ if (!str)
3981
+ goto error;
3982
+ STORE_OPND(-1, STRING_TO_JSVAL(str));
3983
+ END_CASE(JSOP_XMLELTEXPR)
3984
+
3985
+ BEGIN_CASE(JSOP_XMLOBJECT)
3986
+ LOAD_OBJECT(0);
3987
+ obj = js_CloneXMLObject(cx, obj);
3988
+ if (!obj)
3989
+ goto error;
3990
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
3991
+ END_CASE(JSOP_XMLOBJECT)
3992
+
3993
+ BEGIN_CASE(JSOP_XMLCDATA)
3994
+ LOAD_ATOM(0);
3995
+ str = ATOM_TO_STRING(atom);
3996
+ obj = js_NewXMLSpecialObject(cx, JSXML_CLASS_TEXT, NULL, str);
3997
+ if (!obj)
3998
+ goto error;
3999
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
4000
+ END_CASE(JSOP_XMLCDATA)
4001
+
4002
+ BEGIN_CASE(JSOP_XMLCOMMENT)
4003
+ LOAD_ATOM(0);
4004
+ str = ATOM_TO_STRING(atom);
4005
+ obj = js_NewXMLSpecialObject(cx, JSXML_CLASS_COMMENT, NULL, str);
4006
+ if (!obj)
4007
+ goto error;
4008
+ PUSH_OPND(OBJECT_TO_JSVAL(obj));
4009
+ END_CASE(JSOP_XMLCOMMENT)
4010
+
4011
+ BEGIN_CASE(JSOP_XMLPI)
4012
+ LOAD_ATOM(0);
4013
+ str = ATOM_TO_STRING(atom);
4014
+ rval = FETCH_OPND(-1);
4015
+ str2 = JSVAL_TO_STRING(rval);
4016
+ obj = js_NewXMLSpecialObject(cx,
4017
+ JSXML_CLASS_PROCESSING_INSTRUCTION,
4018
+ str, str2);
4019
+ if (!obj)
4020
+ goto error;
4021
+ STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
4022
+ END_CASE(JSOP_XMLPI)
4023
+
4024
+ BEGIN_CASE(JSOP_GETFUNNS)
4025
+ if (!js_GetFunctionNamespace(cx, &rval))
4026
+ goto error;
4027
+ PUSH_OPND(rval);
4028
+ END_CASE(JSOP_GETFUNNS)
4029
+ #endif /* JS_HAS_XML_SUPPORT */
4030
+
4031
+ BEGIN_CASE(JSOP_ENTERBLOCK)
4032
+ LOAD_OBJECT(0);
4033
+ JS_ASSERT(!OBJ_IS_CLONED_BLOCK(obj));
4034
+ JS_ASSERT(StackBase(fp) + OBJ_BLOCK_DEPTH(cx, obj) == regs.sp);
4035
+ vp = regs.sp + OBJ_BLOCK_COUNT(cx, obj);
4036
+ JS_ASSERT(regs.sp < vp);
4037
+ JS_ASSERT(vp <= fp->slots + script->nslots);
4038
+ while (regs.sp < vp) {
4039
+ STORE_OPND(0, JSVAL_VOID);
4040
+ regs.sp++;
4041
+ }
4042
+
4043
+ #ifdef DEBUG
4044
+ JS_ASSERT(fp->blockChain == OBJ_GET_PARENT(cx, obj));
4045
+
4046
+ /*
4047
+ * The young end of fp->scopeChain may omit blocks if we
4048
+ * haven't closed over them, but if there are any closure
4049
+ * blocks on fp->scopeChain, they'd better be (clones of)
4050
+ * ancestors of the block we're entering now; anything
4051
+ * else we should have popped off fp->scopeChain when we
4052
+ * left its static scope.
4053
+ */
4054
+ obj2 = fp->scopeChain;
4055
+ while ((clasp = OBJ_GET_CLASS(cx, obj2)) == &js_WithClass)
4056
+ obj2 = OBJ_GET_PARENT(cx, obj2);
4057
+ if (clasp == &js_BlockClass &&
4058
+ obj2->getPrivate() == fp) {
4059
+ JSObject *youngestProto = OBJ_GET_PROTO(cx, obj2);
4060
+ JS_ASSERT(!OBJ_IS_CLONED_BLOCK(youngestProto));
4061
+ parent = obj;
4062
+ while ((parent = OBJ_GET_PARENT(cx, parent)) != youngestProto)
4063
+ JS_ASSERT(parent);
4064
+ }
4065
+ #endif
4066
+
4067
+ fp->blockChain = obj;
4068
+ END_CASE(JSOP_ENTERBLOCK)
4069
+
4070
+ BEGIN_CASE(JSOP_LEAVEBLOCKEXPR)
4071
+ BEGIN_CASE(JSOP_LEAVEBLOCK)
4072
+ {
4073
+ #ifdef DEBUG
4074
+ JS_ASSERT(OBJ_GET_CLASS(cx, fp->blockChain) == &js_BlockClass);
4075
+ uintN blockDepth = OBJ_BLOCK_DEPTH(cx, fp->blockChain);
4076
+
4077
+ JS_ASSERT(blockDepth <= StackDepth(script));
4078
+ #endif
4079
+ /*
4080
+ * If we're about to leave the dynamic scope of a block that has
4081
+ * been cloned onto fp->scopeChain, clear its private data, move
4082
+ * its locals from the stack into the clone, and pop it off the
4083
+ * chain.
4084
+ */
4085
+ obj = fp->scopeChain;
4086
+ if (OBJ_GET_PROTO(cx, obj) == fp->blockChain) {
4087
+ JS_ASSERT (OBJ_GET_CLASS(cx, obj) == &js_BlockClass);
4088
+ if (!js_PutBlockObject(cx, JS_TRUE))
4089
+ goto error;
4090
+ }
4091
+
4092
+ /* Pop the block chain, too. */
4093
+ fp->blockChain = OBJ_GET_PARENT(cx, fp->blockChain);
4094
+
4095
+ /*
4096
+ * We will move the result of the expression to the new topmost
4097
+ * stack slot.
4098
+ */
4099
+ if (op == JSOP_LEAVEBLOCKEXPR)
4100
+ rval = FETCH_OPND(-1);
4101
+ regs.sp -= GET_UINT16(regs.pc);
4102
+ if (op == JSOP_LEAVEBLOCKEXPR) {
4103
+ JS_ASSERT(StackBase(fp) + blockDepth == regs.sp - 1);
4104
+ STORE_OPND(-1, rval);
4105
+ } else {
4106
+ JS_ASSERT(StackBase(fp) + blockDepth == regs.sp);
4107
+ }
4108
+ }
4109
+ END_CASE(JSOP_LEAVEBLOCK)
4110
+
4111
+ BEGIN_CASE(JSOP_CALLBUILTIN)
4112
+ #ifdef JS_TRACER
4113
+ obj = js_GetBuiltinFunction(cx, GET_INDEX(regs.pc));
4114
+ if (!obj)
4115
+ goto error;
4116
+ rval = FETCH_OPND(-1);
4117
+ PUSH_OPND(rval);
4118
+ STORE_OPND(-2, OBJECT_TO_JSVAL(obj));
4119
+ #else
4120
+ goto bad_opcode; /* This is an imacro-only opcode. */
4121
+ #endif
4122
+ END_CASE(JSOP_CALLBUILTIN)
4123
+
4124
+ #if JS_HAS_GENERATORS
4125
+ BEGIN_CASE(JSOP_GENERATOR)
4126
+ ASSERT_NOT_THROWING(cx);
4127
+ regs.pc += JSOP_GENERATOR_LENGTH;
4128
+ obj = js_NewGenerator(cx, fp);
4129
+ if (!obj)
4130
+ goto error;
4131
+ JS_ASSERT(!fp->callobj && !fp->argsobj);
4132
+ fp->rval = OBJECT_TO_JSVAL(obj);
4133
+ ok = JS_TRUE;
4134
+ if (inlineCallCount != 0)
4135
+ goto inline_return;
4136
+ goto exit;
4137
+
4138
+ BEGIN_CASE(JSOP_YIELD)
4139
+ ASSERT_NOT_THROWING(cx);
4140
+ if (FRAME_TO_GENERATOR(fp)->state == JSGEN_CLOSING) {
4141
+ js_ReportValueError(cx, JSMSG_BAD_GENERATOR_YIELD,
4142
+ JSDVG_SEARCH_STACK, fp->argv[-2], NULL);
4143
+ goto error;
4144
+ }
4145
+ fp->rval = FETCH_OPND(-1);
4146
+ fp->flags |= JSFRAME_YIELDING;
4147
+ regs.pc += JSOP_YIELD_LENGTH;
4148
+ ok = JS_TRUE;
4149
+ goto exit;
4150
+
4151
+ BEGIN_CASE(JSOP_ARRAYPUSH)
4152
+ slot = GET_UINT16(regs.pc);
4153
+ JS_ASSERT(script->nfixed <= slot);
4154
+ JS_ASSERT(slot < script->nslots);
4155
+ lval = fp->slots[slot];
4156
+ obj = JSVAL_TO_OBJECT(lval);
4157
+ rval = FETCH_OPND(-1);
4158
+ if (!js_ArrayCompPush(cx, obj, rval))
4159
+ goto error;
4160
+ regs.sp--;
4161
+ END_CASE(JSOP_ARRAYPUSH)
4162
+ #endif /* JS_HAS_GENERATORS */
4163
+
4164
+ #if JS_THREADED_INTERP
4165
+ L_JSOP_BACKPATCH:
4166
+ L_JSOP_BACKPATCH_POP:
4167
+
4168
+ # if !JS_HAS_GENERATORS
4169
+ L_JSOP_GENERATOR:
4170
+ L_JSOP_YIELD:
4171
+ L_JSOP_ARRAYPUSH:
4172
+ # endif
4173
+
4174
+ # if !JS_HAS_SHARP_VARS
4175
+ L_JSOP_DEFSHARP:
4176
+ L_JSOP_USESHARP:
4177
+ # endif
4178
+
4179
+ # if !JS_HAS_DESTRUCTURING
4180
+ L_JSOP_ENUMCONSTELEM:
4181
+ # endif
4182
+
4183
+ # if !JS_HAS_XML_SUPPORT
4184
+ L_JSOP_CALLXMLNAME:
4185
+ L_JSOP_STARTXMLEXPR:
4186
+ L_JSOP_STARTXML:
4187
+ L_JSOP_DELDESC:
4188
+ L_JSOP_GETFUNNS:
4189
+ L_JSOP_XMLPI:
4190
+ L_JSOP_XMLCOMMENT:
4191
+ L_JSOP_XMLCDATA:
4192
+ L_JSOP_XMLOBJECT:
4193
+ L_JSOP_XMLELTEXPR:
4194
+ L_JSOP_XMLTAGEXPR:
4195
+ L_JSOP_TOXMLLIST:
4196
+ L_JSOP_TOXML:
4197
+ L_JSOP_ENDFILTER:
4198
+ L_JSOP_FILTER:
4199
+ L_JSOP_DESCENDANTS:
4200
+ L_JSOP_XMLNAME:
4201
+ L_JSOP_SETXMLNAME:
4202
+ L_JSOP_BINDXMLNAME:
4203
+ L_JSOP_ADDATTRVAL:
4204
+ L_JSOP_ADDATTRNAME:
4205
+ L_JSOP_TOATTRVAL:
4206
+ L_JSOP_TOATTRNAME:
4207
+ L_JSOP_QNAME:
4208
+ L_JSOP_QNAMECONST:
4209
+ L_JSOP_QNAMEPART:
4210
+ L_JSOP_ANYNAME:
4211
+ L_JSOP_DEFXMLNS:
4212
+ # endif
4213
+ #endif /* !JS_THREADED_INTERP */