johnson 2.0.0.pre0 → 2.0.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -40,6 +40,14 @@
40
40
  #ifndef jsnum_h___
41
41
  #define jsnum_h___
42
42
 
43
+ #include <math.h>
44
+ #if defined(XP_WIN) || defined(XP_OS2)
45
+ #include <float.h>
46
+ #endif
47
+ #ifdef SOLARIS
48
+ #include <ieeefp.h>
49
+ #endif
50
+
43
51
  /*
44
52
  * JS number (IEEE double) interface.
45
53
  *
@@ -74,66 +82,82 @@ typedef union jsdpun {
74
82
  jsdouble d;
75
83
  } jsdpun;
76
84
 
77
- #if (__GNUC__ == 2 && __GNUC_MINOR__ > 95) || __GNUC__ > 2
78
- /*
79
- * This version of the macros is safe for the alias optimizations that gcc
80
- * does, but uses gcc-specific extensions.
81
- */
82
-
83
- #define JSDOUBLE_HI32(x) (__extension__ ({ jsdpun u; u.d = (x); u.s.hi; }))
84
- #define JSDOUBLE_LO32(x) (__extension__ ({ jsdpun u; u.d = (x); u.s.lo; }))
85
- #define JSDOUBLE_SET_HI32(x, y) \
86
- (__extension__ ({ jsdpun u; u.d = (x); u.s.hi = (y); (x) = u.d; }))
87
- #define JSDOUBLE_SET_LO32(x, y) \
88
- (__extension__ ({ jsdpun u; u.d = (x); u.s.lo = (y); (x) = u.d; }))
89
-
90
- #else /* not or old GNUC */
91
-
92
- /*
93
- * We don't know of any non-gcc compilers that perform alias optimization,
94
- * so this code should work.
95
- */
96
-
97
- #if defined(IS_LITTLE_ENDIAN) && !defined(FPU_IS_ARM_FPA)
98
- #define JSDOUBLE_HI32(x) (((uint32 *)&(x))[1])
99
- #define JSDOUBLE_LO32(x) (((uint32 *)&(x))[0])
85
+ static inline int
86
+ JSDOUBLE_IS_NaN(jsdouble d)
87
+ {
88
+ #ifdef WIN32
89
+ return _isnan(d);
100
90
  #else
101
- #define JSDOUBLE_HI32(x) (((uint32 *)&(x))[0])
102
- #define JSDOUBLE_LO32(x) (((uint32 *)&(x))[1])
91
+ return isnan(d);
103
92
  #endif
93
+ }
104
94
 
105
- #define JSDOUBLE_SET_HI32(x, y) (JSDOUBLE_HI32(x)=(y))
106
- #define JSDOUBLE_SET_LO32(x, y) (JSDOUBLE_LO32(x)=(y))
107
-
108
- #endif /* not or old GNUC */
95
+ static inline int
96
+ JSDOUBLE_IS_FINITE(jsdouble d)
97
+ {
98
+ #ifdef WIN32
99
+ return _finite(d);
100
+ #else
101
+ return finite(d);
102
+ #endif
103
+ }
104
+
105
+ static inline int
106
+ JSDOUBLE_IS_INFINITE(jsdouble d)
107
+ {
108
+ #ifdef WIN32
109
+ int c = _fpclass(d);
110
+ return c == _FPCLASS_NINF || c == _FPCLASS_PINF;
111
+ #elif defined(SOLARIS)
112
+ return !finite(d) && !isnan(d);
113
+ #else
114
+ return isinf(d);
115
+ #endif
116
+ }
117
+
118
+ static inline int
119
+ JSDOUBLE_IS_NEGZERO(jsdouble d)
120
+ {
121
+ #ifdef WIN32
122
+ return (d == 0 && (_fpclass(d) & _FPCLASS_NZ));
123
+ #elif defined(SOLARIS)
124
+ return (d == 0 && copysign(1, d) < 0);
125
+ #else
126
+ return (d == 0 && signbit(d));
127
+ #endif
128
+ }
109
129
 
110
130
  #define JSDOUBLE_HI32_SIGNBIT 0x80000000
111
131
  #define JSDOUBLE_HI32_EXPMASK 0x7ff00000
112
132
  #define JSDOUBLE_HI32_MANTMASK 0x000fffff
113
133
 
114
- #define JSDOUBLE_IS_NaN(x) \
115
- ((JSDOUBLE_HI32(x) & JSDOUBLE_HI32_EXPMASK) == JSDOUBLE_HI32_EXPMASK && \
116
- (JSDOUBLE_LO32(x) || (JSDOUBLE_HI32(x) & JSDOUBLE_HI32_MANTMASK)))
117
-
118
- #define JSDOUBLE_IS_INFINITE(x) \
119
- ((JSDOUBLE_HI32(x) & ~JSDOUBLE_HI32_SIGNBIT) == JSDOUBLE_HI32_EXPMASK && \
120
- !JSDOUBLE_LO32(x))
121
-
122
- #define JSDOUBLE_IS_FINITE(x) \
123
- ((JSDOUBLE_HI32(x) & JSDOUBLE_HI32_EXPMASK) != JSDOUBLE_HI32_EXPMASK)
124
-
125
- #define JSDOUBLE_IS_NEGZERO(d) (JSDOUBLE_HI32(d) == JSDOUBLE_HI32_SIGNBIT && \
126
- JSDOUBLE_LO32(d) == 0)
134
+ static inline int
135
+ JSDOUBLE_IS_INT(jsdouble d, jsint& i)
136
+ {
137
+ if (JSDOUBLE_IS_NEGZERO(d))
138
+ return false;
139
+ return d == (i = jsint(d));
140
+ }
141
+
142
+ static inline int
143
+ JSDOUBLE_IS_NEG(jsdouble d)
144
+ {
145
+ #ifdef WIN32
146
+ return JSDOUBLE_IS_NEGZERO(d) || d < 0;
147
+ #elif defined(SOLARIS)
148
+ return copysign(1, d) < 0;
149
+ #else
150
+ return signbit(d);
151
+ #endif
152
+ }
127
153
 
128
- /*
129
- * JSDOUBLE_IS_INT first checks that d is neither NaN nor infinite, to avoid
130
- * raising SIGFPE on platforms such as Alpha Linux, then (only if the cast is
131
- * safe) leaves i as (jsint)d. This also avoid anomalous NaN floating point
132
- * comparisons under MSVC.
133
- */
134
- #define JSDOUBLE_IS_INT(d, i) (JSDOUBLE_IS_FINITE(d) \
135
- && !JSDOUBLE_IS_NEGZERO(d) \
136
- && ((d) == (i = (jsint)(d))))
154
+ static inline uint32
155
+ JS_HASH_DOUBLE(jsdouble d)
156
+ {
157
+ jsdpun u;
158
+ u.d = d;
159
+ return u.s.lo ^ u.s.hi;
160
+ }
137
161
 
138
162
  #if defined(XP_WIN)
139
163
  #define JSDOUBLE_COMPARE(LVAL, OP, RVAL, IFNAN) \
@@ -189,6 +213,13 @@ js_NewWeaklyRootedNumber(JSContext *cx, jsdouble d, jsval *vp);
189
213
  extern JSString * JS_FASTCALL
190
214
  js_NumberToString(JSContext *cx, jsdouble d);
191
215
 
216
+ /*
217
+ * Convert an integer or double (contained in the given jsval) to a string and
218
+ * append to the given buffer.
219
+ */
220
+ extern JSBool JS_FASTCALL
221
+ js_NumberValueToCharBuffer(JSContext *cx, jsval v, JSCharBuffer &cb);
222
+
192
223
  /*
193
224
  * Convert a value to a number. On exit JSVAL_IS_NULL(*vp) iff there was an
194
225
  * error. If on exit JSVAL_IS_NUMBER(*vp), then *vp holds the jsval that
@@ -216,8 +247,109 @@ js_ValueToECMAUint32(JSContext *cx, jsval *vp);
216
247
  /*
217
248
  * Specialized ToInt32 and ToUint32 converters for doubles.
218
249
  */
219
- extern int32
220
- js_DoubleToECMAInt32(jsdouble d);
250
+ /*
251
+ * From the ES3 spec, 9.5
252
+ * 2. If Result(1) is NaN, +0, -0, +Inf, or -Inf, return +0.
253
+ * 3. Compute sign(Result(1)) * floor(abs(Result(1))).
254
+ * 4. Compute Result(3) modulo 2^32; that is, a finite integer value k of Number
255
+ * type with positive sign and less than 2^32 in magnitude such the mathematical
256
+ * difference of Result(3) and k is mathematically an integer multiple of 2^32.
257
+ * 5. If Result(4) is greater than or equal to 2^31, return Result(4)- 2^32,
258
+ * otherwise return Result(4).
259
+ */
260
+ static inline int32
261
+ js_DoubleToECMAInt32(jsdouble d)
262
+ {
263
+ #ifdef __i386__
264
+ jsdpun du, duh, two32;
265
+ uint32 di_h, u_tmp, expon, shift_amount;
266
+ int32 mask32;
267
+
268
+ /*
269
+ * Algorithm Outline
270
+ * Step 1. If d is NaN, +/-Inf or |d|>=2^84 or |d|<1, then return 0
271
+ * All of this is implemented based on an exponent comparison.
272
+ * Step 2. If |d|<2^31, then return (int)d
273
+ * The cast to integer (conversion in RZ mode) returns the correct result.
274
+ * Step 3. If |d|>=2^32, d:=fmod(d, 2^32) is taken -- but without a call
275
+ * Step 4. If |d|>=2^31, then the fractional bits are cleared before
276
+ * applying the correction by 2^32: d - sign(d)*2^32
277
+ * Step 5. Return (int)d
278
+ */
279
+
280
+ du.d = d;
281
+ di_h = du.s.hi;
282
+
283
+ u_tmp = (di_h & 0x7ff00000) - 0x3ff00000;
284
+ if (u_tmp >= (0x45300000-0x3ff00000)) {
285
+ // d is Nan, +/-Inf or +/-0, or |d|>=2^(32+52) or |d|<1, in which case result=0
286
+ return 0;
287
+ }
288
+
289
+ if (u_tmp < 0x01f00000) {
290
+ // |d|<2^31
291
+ return int32_t(d);
292
+ }
293
+
294
+ if (u_tmp > 0x01f00000) {
295
+ // |d|>=2^32
296
+ expon = u_tmp >> 20;
297
+ shift_amount = expon - 21;
298
+ duh.u64 = du.u64;
299
+ mask32 = 0x80000000;
300
+ if (shift_amount < 32) {
301
+ mask32 >>= shift_amount;
302
+ duh.s.hi = du.s.hi & mask32;
303
+ duh.s.lo = 0;
304
+ } else {
305
+ mask32 >>= (shift_amount-32);
306
+ duh.s.hi = du.s.hi;
307
+ duh.s.lo = du.s.lo & mask32;
308
+ }
309
+ du.d -= duh.d;
310
+ }
311
+
312
+ di_h = du.s.hi;
313
+
314
+ // eliminate fractional bits
315
+ u_tmp = (di_h & 0x7ff00000);
316
+ if (u_tmp >= 0x41e00000) {
317
+ // |d|>=2^31
318
+ expon = u_tmp >> 20;
319
+ shift_amount = expon - (0x3ff - 11);
320
+ mask32 = 0x80000000;
321
+ if (shift_amount < 32) {
322
+ mask32 >>= shift_amount;
323
+ du.s.hi &= mask32;
324
+ du.s.lo = 0;
325
+ } else {
326
+ mask32 >>= (shift_amount-32);
327
+ du.s.lo &= mask32;
328
+ }
329
+ two32.s.hi = 0x41f00000 ^ (du.s.hi & 0x80000000);
330
+ two32.s.lo = 0;
331
+ du.d -= two32.d;
332
+ }
333
+
334
+ return int32(du.d);
335
+ #else
336
+ int32 i;
337
+ jsdouble two32, two31;
338
+
339
+ if (!JSDOUBLE_IS_FINITE(d))
340
+ return 0;
341
+
342
+ i = (int32) d;
343
+ if ((jsdouble) i == d)
344
+ return i;
345
+
346
+ two32 = 4294967296.0;
347
+ two31 = 2147483648.0;
348
+ d = fmod(d, two32);
349
+ d = (d >= 0) ? floor(d) : ceil(d) + two32;
350
+ return (int32) (d >= two31 ? d - two32 : d);
351
+ #endif
352
+ }
221
353
 
222
354
  extern uint32
223
355
  js_DoubleToECMAUint32(jsdouble d);
@@ -245,8 +377,23 @@ js_ValueToUint16(JSContext *cx, jsval *vp);
245
377
  * Convert a jsdouble to an integral number, stored in a jsdouble.
246
378
  * If d is NaN, return 0. If d is an infinity, return it without conversion.
247
379
  */
248
- extern jsdouble
249
- js_DoubleToInteger(jsdouble d);
380
+ static inline jsdouble
381
+ js_DoubleToInteger(jsdouble d)
382
+ {
383
+ if (d == 0)
384
+ return d;
385
+
386
+ if (!JSDOUBLE_IS_FINITE(d)) {
387
+ if (JSDOUBLE_IS_NaN(d))
388
+ return 0;
389
+ return d;
390
+ }
391
+
392
+ JSBool neg = (d < 0);
393
+ d = floor(neg ? -d : d);
394
+
395
+ return neg ? -d : d;
396
+ }
250
397
 
251
398
  /*
252
399
  * Similar to strtod except that it replaces overflows with infinities of the
@@ -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 ts=8 sw=4 et tw=79:
3
3
  *
4
4
  * ***** BEGIN LICENSE BLOCK *****
@@ -41,10 +41,10 @@
41
41
  /*
42
42
  * JS object implementation.
43
43
  */
44
- #include "jsstddef.h"
45
44
  #include <stdlib.h>
46
45
  #include <string.h>
47
46
  #include "jstypes.h"
47
+ #include "jsstdint.h"
48
48
  #include "jsarena.h" /* Added by JSIFY */
49
49
  #include "jsbit.h"
50
50
  #include "jsutil.h" /* Added by JSIFY */
@@ -69,6 +69,7 @@
69
69
  #include "jsparse.h"
70
70
  #include "jsscope.h"
71
71
  #include "jsscript.h"
72
+ #include "jsscriptinlines.h"
72
73
  #include "jsstaticcheck.h"
73
74
  #include "jsstr.h"
74
75
  #include "jstracer.h"
@@ -90,6 +91,10 @@
90
91
  #include "jsdtracef.h"
91
92
  #endif
92
93
 
94
+ #include "jsatominlines.h"
95
+ #include "jsobjinlines.h"
96
+ #include "jsscriptinlines.h"
97
+
93
98
  #include "jsautooplen.h"
94
99
 
95
100
  #ifdef JS_THREADSAFE
@@ -111,15 +116,14 @@ JS_FRIEND_DATA(JSObjectOps) js_ObjectOps = {
111
116
  NULL, NATIVE_DROP_PROPERTY,
112
117
  js_Call, js_Construct,
113
118
  js_HasInstance, js_TraceObject,
114
- js_Clear, js_GetRequiredSlot,
115
- js_SetRequiredSlot
119
+ js_Clear
116
120
  };
117
121
 
118
122
  JSClass js_ObjectClass = {
119
123
  js_Object_str,
120
124
  JSCLASS_HAS_CACHED_PROTO(JSProto_Object),
121
125
  JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
122
- JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
126
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, NULL,
123
127
  JSCLASS_NO_OPTIONAL_MEMBERS
124
128
  };
125
129
 
@@ -179,8 +183,8 @@ obj_getSlot(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
179
183
  mode = JSACC_PARENT;
180
184
  }
181
185
 
182
- /* Let OBJ_CHECK_ACCESS get the slot's value, based on the access mode. */
183
- if (!OBJ_CHECK_ACCESS(cx, obj, propid, mode, vp, &attrs))
186
+ /* Let obj->checkAccess get the slot's value, based on the access mode. */
187
+ if (!obj->checkAccess(cx, propid, mode, vp, &attrs))
184
188
  return JS_FALSE;
185
189
 
186
190
  pobj = JSVAL_TO_OBJECT(*vp);
@@ -234,11 +238,8 @@ obj_setSlot(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
234
238
 
235
239
  /* __parent__ is readonly and permanent, only __proto__ may be set. */
236
240
  propid = ATOM_TO_JSID(cx->runtime->atomState.protoAtom);
237
- if (!OBJ_CHECK_ACCESS(cx, obj, propid,
238
- (JSAccessMode)(JSACC_PROTO|JSACC_WRITE), vp,
239
- &attrs)) {
241
+ if (!obj->checkAccess(cx, propid, (JSAccessMode)(JSACC_PROTO|JSACC_WRITE), vp, &attrs))
240
242
  return JS_FALSE;
241
- }
242
243
 
243
244
  return js_SetProtoOrParent(cx, obj, slot, pobj, JS_TRUE);
244
245
  }
@@ -253,9 +254,11 @@ obj_getCount(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
253
254
  if (JS_HAS_STRICT_OPTION(cx) && !ReportStrictSlot(cx, JSSLOT_COUNT))
254
255
  return JS_FALSE;
255
256
 
256
- /* Get the number of properties to enumerate. */
257
257
  iter_state = JSVAL_NULL;
258
- ok = OBJ_ENUMERATE(cx, obj, JSENUMERATE_INIT, &iter_state, &num_properties);
258
+ JSAutoEnumStateRooter tvr(cx, obj, &iter_state);
259
+
260
+ /* Get the number of properties to enumerate. */
261
+ ok = obj->enumerate(cx, JSENUMERATE_INIT, &iter_state, &num_properties);
259
262
  if (!ok)
260
263
  goto out;
261
264
 
@@ -267,8 +270,8 @@ obj_getCount(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
267
270
  *vp = num_properties;
268
271
 
269
272
  out:
270
- if (iter_state != JSVAL_NULL)
271
- ok = OBJ_ENUMERATE(cx, obj, JSENUMERATE_DESTROY, &iter_state, 0);
273
+ if (!JSVAL_IS_NULL(iter_state))
274
+ ok &= obj->enumerate(cx, JSENUMERATE_DESTROY, &iter_state, 0);
272
275
  return ok;
273
276
  }
274
277
 
@@ -297,14 +300,14 @@ js_SetProtoOrParent(JSContext *cx, JSObject *obj, uint32 slot, JSObject *pobj,
297
300
  /*
298
301
  * Regenerate property cache shape ids for all of the scopes along the
299
302
  * old prototype chain to invalidate their property cache entries, in
300
- * case any entries were filled by looking up starting from obj.
303
+ * case any entries were filled by looking up through obj.
301
304
  */
302
305
  JSObject *oldproto = obj;
303
306
  while (oldproto && OBJ_IS_NATIVE(oldproto)) {
304
307
  JS_LOCK_OBJ(cx, oldproto);
305
308
  JSScope *scope = OBJ_SCOPE(oldproto);
306
- js_MakeScopeShapeUnique(cx, scope);
307
- JSObject *tmp = STOBJ_GET_PROTO(scope->object);
309
+ scope->protoShapeChange(cx);
310
+ JSObject *tmp = STOBJ_GET_PROTO(oldproto);
308
311
  JS_UNLOCK_OBJ(cx, oldproto);
309
312
  oldproto = tmp;
310
313
  }
@@ -312,9 +315,9 @@ js_SetProtoOrParent(JSContext *cx, JSObject *obj, uint32 slot, JSObject *pobj,
312
315
 
313
316
  if (!pobj || !checkForCycles) {
314
317
  if (slot == JSSLOT_PROTO)
315
- STOBJ_SET_PROTO(obj, pobj);
318
+ obj->setProto(pobj);
316
319
  else
317
- STOBJ_SET_PARENT(obj, pobj);
320
+ obj->setParent(pobj);
318
321
  } else {
319
322
  /*
320
323
  * Use the GC machinery to serialize access to all objects on the
@@ -404,12 +407,12 @@ MarkSharpObjects(JSContext *cx, JSObject *obj, JSIdArray **idap)
404
407
  for (i = 0, length = ida->length; i < length; i++) {
405
408
  id = ida->vector[i];
406
409
  #if JS_HAS_GETTER_SETTER
407
- ok = OBJ_LOOKUP_PROPERTY(cx, obj, id, &obj2, &prop);
410
+ ok = obj->lookupProperty(cx, id, &obj2, &prop);
408
411
  if (!ok)
409
412
  break;
410
413
  if (!prop)
411
414
  continue;
412
- ok = OBJ_GET_ATTRIBUTES(cx, obj2, id, prop, &attrs);
415
+ ok = obj2->getAttributes(cx, id, prop, &attrs);
413
416
  if (ok) {
414
417
  if (OBJ_IS_NATIVE(obj2) &&
415
418
  (attrs & (JSPROP_GETTER | JSPROP_SETTER))) {
@@ -427,12 +430,12 @@ MarkSharpObjects(JSContext *cx, JSObject *obj, JSIdArray **idap)
427
430
  val = js_CastAsObjectJSVal(sprop->setter);
428
431
  }
429
432
  } else {
430
- ok = OBJ_GET_PROPERTY(cx, obj, id, &val);
433
+ ok = obj->getProperty(cx, id, &val);
431
434
  }
432
435
  }
433
- OBJ_DROP_PROPERTY(cx, obj2, prop);
436
+ obj2->dropProperty(cx, prop);
434
437
  #else
435
- ok = OBJ_GET_PROPERTY(cx, obj, id, &val);
438
+ ok = obj->getProperty(cx, id, &val);
436
439
  #endif
437
440
  if (!ok)
438
441
  break;
@@ -524,7 +527,7 @@ js_EnterSharpObject(JSContext *cx, JSObject *obj, JSIdArray **idap,
524
527
  * It's possible that the value of a property has changed from the
525
528
  * first time the object's properties are traversed (when the property
526
529
  * ids are entered into the hash table) to the second (when they are
527
- * converted to strings), i.e., the OBJ_GET_PROPERTY() call is not
530
+ * converted to strings), i.e., the JSObject::getProperty() call is not
528
531
  * idempotent.
529
532
  */
530
533
  if (!he) {
@@ -558,7 +561,7 @@ out:
558
561
  ida = JS_Enumerate(cx, obj);
559
562
  if (!ida) {
560
563
  if (*sp) {
561
- JS_free(cx, *sp);
564
+ cx->free(*sp);
562
565
  *sp = NULL;
563
566
  }
564
567
  goto bad;
@@ -702,7 +705,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
702
705
 
703
706
  if (!chars) {
704
707
  /* If outermost, allocate 4 + 1 for "({})" and the terminator. */
705
- chars = (jschar *) malloc(((outermost ? 4 : 2) + 1) * sizeof(jschar));
708
+ chars = (jschar *) js_malloc(((outermost ? 4 : 2) + 1) * sizeof(jschar));
706
709
  nchars = 0;
707
710
  if (!chars)
708
711
  goto error;
@@ -713,9 +716,9 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
713
716
  MAKE_SHARP(he);
714
717
  nchars = js_strlen(chars);
715
718
  chars = (jschar *)
716
- realloc((ochars = chars), (nchars + 2 + 1) * sizeof(jschar));
719
+ js_realloc((ochars = chars), (nchars + 2 + 1) * sizeof(jschar));
717
720
  if (!chars) {
718
- free(ochars);
721
+ js_free(ochars);
719
722
  goto error;
720
723
  }
721
724
  if (outermost) {
@@ -746,7 +749,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
746
749
  id = ida->vector[i];
747
750
 
748
751
  #if JS_HAS_GETTER_SETTER
749
- ok = OBJ_LOOKUP_PROPERTY(cx, obj, id, &obj2, &prop);
752
+ ok = obj->lookupProperty(cx, id, &obj2, &prop);
750
753
  if (!ok)
751
754
  goto error;
752
755
  #endif
@@ -758,23 +761,22 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
758
761
  idstr = js_ValueToString(cx, ID_TO_VALUE(id));
759
762
  if (!idstr) {
760
763
  ok = JS_FALSE;
761
- OBJ_DROP_PROPERTY(cx, obj2, prop);
764
+ obj2->dropProperty(cx, prop);
762
765
  goto error;
763
766
  }
764
767
  *vp = STRING_TO_JSVAL(idstr); /* local root */
765
768
  idIsLexicalIdentifier = js_IsIdentifier(idstr);
766
769
  needOldStyleGetterSetter =
767
770
  !idIsLexicalIdentifier ||
768
- js_CheckKeyword(JSSTRING_CHARS(idstr),
769
- JSSTRING_LENGTH(idstr)) != TOK_EOF;
771
+ js_CheckKeyword(idstr->chars(), idstr->length()) != TOK_EOF;
770
772
 
771
773
  #if JS_HAS_GETTER_SETTER
772
774
 
773
775
  valcnt = 0;
774
776
  if (prop) {
775
- ok = OBJ_GET_ATTRIBUTES(cx, obj2, id, prop, &attrs);
777
+ ok = obj2->getAttributes(cx, id, prop, &attrs);
776
778
  if (!ok) {
777
- OBJ_DROP_PROPERTY(cx, obj2, prop);
779
+ obj2->dropProperty(cx, prop);
778
780
  goto error;
779
781
  }
780
782
  if (OBJ_IS_NATIVE(obj2) &&
@@ -802,9 +804,9 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
802
804
  valcnt = 1;
803
805
  gsop[0] = NULL;
804
806
  gsopold[0] = NULL;
805
- ok = OBJ_GET_PROPERTY(cx, obj, id, &val[0]);
807
+ ok = obj->getProperty(cx, id, &val[0]);
806
808
  }
807
- OBJ_DROP_PROPERTY(cx, obj2, prop);
809
+ obj2->dropProperty(cx, prop);
808
810
  }
809
811
 
810
812
  #else /* !JS_HAS_GETTER_SETTER */
@@ -818,7 +820,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
818
820
  valcnt = 1;
819
821
  gsop[0] = NULL;
820
822
  gsopold[0] = NULL;
821
- ok = OBJ_GET_PROPERTY(cx, obj, id, &val[0]);
823
+ ok = obj->getProperty(cx, id, &val[0]);
822
824
 
823
825
  #endif /* !JS_HAS_GETTER_SETTER */
824
826
 
@@ -839,7 +841,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
839
841
  }
840
842
  *vp = STRING_TO_JSVAL(idstr); /* local root */
841
843
  }
842
- JSSTRING_CHARS_AND_LENGTH(idstr, idstrchars, idstrlength);
844
+ idstr->getCharsAndLength(idstrchars, idstrlength);
843
845
 
844
846
  for (j = 0; j < valcnt; j++) {
845
847
  /* Convert val[j] to its canonical source form. */
@@ -849,7 +851,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
849
851
  goto error;
850
852
  }
851
853
  localroot[j] = STRING_TO_JSVAL(valstr); /* local root */
852
- JSSTRING_CHARS_AND_LENGTH(valstr, vchars, vlength);
854
+ valstr->getCharsAndLength(vchars, vlength);
853
855
 
854
856
  if (vchars[0] == '#')
855
857
  needOldStyleGetterSetter = JS_TRUE;
@@ -945,7 +947,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
945
947
  SAFE_ADD(2);
946
948
  SAFE_ADD(idstrlength + 1);
947
949
  if (gsop[j])
948
- SAFE_ADD(JSSTRING_LENGTH(gsop[j]) + 1);
950
+ SAFE_ADD(gsop[j]->length() + 1);
949
951
  SAFE_ADD(vsharplength);
950
952
  SAFE_ADD(vlength);
951
953
  /* Account for the trailing null. */
@@ -957,11 +959,11 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
957
959
 
958
960
  /* Allocate 1 + 1 at end for closing brace and terminating 0. */
959
961
  chars = (jschar *)
960
- realloc((ochars = chars), curlen * sizeof(jschar));
962
+ js_realloc((ochars = chars), curlen * sizeof(jschar));
961
963
  if (!chars) {
962
964
  /* Save code space on error: let JS_free ignore null vsharp. */
963
- JS_free(cx, vsharp);
964
- free(ochars);
965
+ cx->free(vsharp);
966
+ js_free(ochars);
965
967
  goto error;
966
968
  }
967
969
 
@@ -976,16 +978,16 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
976
978
  nchars += idstrlength;
977
979
  if (gsop[j]) {
978
980
  chars[nchars++] = ' ';
979
- gsoplength = JSSTRING_LENGTH(gsop[j]);
980
- js_strncpy(&chars[nchars], JSSTRING_CHARS(gsop[j]),
981
+ gsoplength = gsop[j]->length();
982
+ js_strncpy(&chars[nchars], gsop[j]->chars(),
981
983
  gsoplength);
982
984
  nchars += gsoplength;
983
985
  }
984
986
  chars[nchars++] = ':';
985
987
  } else { /* New style "decompilation" */
986
988
  if (gsop[j]) {
987
- gsoplength = JSSTRING_LENGTH(gsop[j]);
988
- js_strncpy(&chars[nchars], JSSTRING_CHARS(gsop[j]),
989
+ gsoplength = gsop[j]->length();
990
+ js_strncpy(&chars[nchars], gsop[j]->chars(),
989
991
  gsoplength);
990
992
  nchars += gsoplength;
991
993
  chars[nchars++] = ' ';
@@ -1004,7 +1006,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
1004
1006
  nchars += vlength;
1005
1007
 
1006
1008
  if (vsharp)
1007
- JS_free(cx, vsharp);
1009
+ cx->free(vsharp);
1008
1010
  }
1009
1011
  }
1010
1012
 
@@ -1018,7 +1020,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
1018
1020
 
1019
1021
  if (!ok) {
1020
1022
  if (chars)
1021
- free(chars);
1023
+ js_free(chars);
1022
1024
  goto out;
1023
1025
  }
1024
1026
 
@@ -1030,7 +1032,7 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
1030
1032
  make_string:
1031
1033
  str = js_NewString(cx, chars, nchars);
1032
1034
  if (!str) {
1033
- free(chars);
1035
+ js_free(chars);
1034
1036
  ok = JS_FALSE;
1035
1037
  goto out;
1036
1038
  }
@@ -1041,8 +1043,8 @@ obj_toSource(JSContext *cx, uintN argc, jsval *vp)
1041
1043
  return ok;
1042
1044
 
1043
1045
  overflow:
1044
- JS_free(cx, vsharp);
1045
- free(chars);
1046
+ cx->free(vsharp);
1047
+ js_free(chars);
1046
1048
  chars = NULL;
1047
1049
  goto error;
1048
1050
  }
@@ -1063,7 +1065,7 @@ obj_toString(JSContext *cx, uintN argc, jsval *vp)
1063
1065
  obj = js_GetWrappedObject(cx, obj);
1064
1066
  clazz = OBJ_GET_CLASS(cx, obj)->name;
1065
1067
  nchars = 9 + strlen(clazz); /* 9 for "[object ]" */
1066
- chars = (jschar *) JS_malloc(cx, (nchars + 1) * sizeof(jschar));
1068
+ chars = (jschar *) cx->malloc((nchars + 1) * sizeof(jschar));
1067
1069
  if (!chars)
1068
1070
  return JS_FALSE;
1069
1071
 
@@ -1078,7 +1080,7 @@ obj_toString(JSContext *cx, uintN argc, jsval *vp)
1078
1080
 
1079
1081
  str = js_NewString(cx, chars, nchars);
1080
1082
  if (!str) {
1081
- JS_free(cx, chars);
1083
+ cx->free(chars);
1082
1084
  return JS_FALSE;
1083
1085
  }
1084
1086
  *vp = STRING_TO_JSVAL(str);
@@ -1203,10 +1205,9 @@ js_ComputeFilename(JSContext *cx, JSStackFrame *caller,
1203
1205
  return principals->codebase;
1204
1206
  }
1205
1207
 
1206
- jsbytecode *pc = caller->regs->pc;
1207
- if (caller->regs && js_GetOpcode(cx, caller->script, pc) == JSOP_EVAL) {
1208
- JS_ASSERT(js_GetOpcode(cx, caller->script, pc + JSOP_EVAL_LENGTH) == JSOP_LINENO);
1209
- *linenop = GET_UINT16(pc + JSOP_EVAL_LENGTH);
1208
+ if (caller->regs && js_GetOpcode(cx, caller->script, caller->regs->pc) == JSOP_EVAL) {
1209
+ JS_ASSERT(js_GetOpcode(cx, caller->script, caller->regs->pc + JSOP_EVAL_LENGTH) == JSOP_LINENO);
1210
+ *linenop = GET_UINT16(caller->regs->pc + JSOP_EVAL_LENGTH);
1210
1211
  } else {
1211
1212
  *linenop = js_FramePCToLineNumber(cx, caller);
1212
1213
  }
@@ -1224,7 +1225,7 @@ EvalCacheHash(JSContext *cx, JSString *str)
1224
1225
  size_t n;
1225
1226
  uint32 h;
1226
1227
 
1227
- JSSTRING_CHARS_AND_LENGTH(str, s, n);
1228
+ str->getCharsAndLength(s, n);
1228
1229
  if (n > 100)
1229
1230
  n = 100;
1230
1231
  for (h = 0; n; s++, n--)
@@ -1257,6 +1258,7 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1257
1258
  fp = js_GetTopStackFrame(cx);
1258
1259
  caller = js_GetScriptedCaller(cx, fp);
1259
1260
  indirectCall = (caller && caller->regs && *caller->regs->pc != JSOP_EVAL);
1261
+ uintN staticLevel = caller->script->staticLevel + 1;
1260
1262
 
1261
1263
  /*
1262
1264
  * This call to js_GetWrappedObject is safe because of the security checks
@@ -1398,7 +1400,7 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1398
1400
 
1399
1401
  tcflags = TCF_COMPILE_N_GO;
1400
1402
  if (caller) {
1401
- tcflags |= TCF_PUT_STATIC_LEVEL(caller->script->staticLevel + 1);
1403
+ tcflags |= TCF_PUT_STATIC_LEVEL(staticLevel);
1402
1404
  principals = JS_EvalFramePrincipals(cx, fp, caller);
1403
1405
  file = js_ComputeFilename(cx, caller, principals, &line);
1404
1406
  } else {
@@ -1412,13 +1414,14 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1412
1414
 
1413
1415
  /* Cache local eval scripts indexed by source qualified by scope. */
1414
1416
  bucket = EvalCacheHash(cx, str);
1415
- if (caller->fun) {
1417
+ if (!indirectCall && argc == 1 && caller->fun) {
1416
1418
  uintN count = 0;
1417
1419
  JSScript **scriptp = bucket;
1418
1420
 
1419
1421
  EVAL_CACHE_METER(probe);
1420
1422
  while ((script = *scriptp) != NULL) {
1421
1423
  if ((script->flags & JSSF_SAVED_CALLER_FUN) &&
1424
+ script->staticLevel == staticLevel &&
1422
1425
  script->version == cx->version &&
1423
1426
  (script->principals == principals ||
1424
1427
  (principals->subsume(principals, script->principals) &&
@@ -1428,7 +1431,7 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1428
1431
  * See JSCompiler::compileScript in jsparse.cpp.
1429
1432
  */
1430
1433
  JSFunction *fun;
1431
- JS_GET_SCRIPT_FUNCTION(script, 0, fun);
1434
+ fun = script->getFunction(0);
1432
1435
 
1433
1436
  if (fun == caller->fun) {
1434
1437
  /*
@@ -1445,11 +1448,11 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1445
1448
  * script has no compiled-in dependencies on the prior
1446
1449
  * eval's scopeobj.
1447
1450
  */
1448
- JSObjectArray *objarray = JS_SCRIPT_OBJECTS(script);
1451
+ JSObjectArray *objarray = script->objects();
1449
1452
  int i = 1;
1450
1453
  if (objarray->length == 1) {
1451
1454
  if (script->regexpsOffset != 0) {
1452
- objarray = JS_SCRIPT_REGEXPS(script);
1455
+ objarray = script->regexps();
1453
1456
  i = 0;
1454
1457
  } else {
1455
1458
  EVAL_CACHE_METER(noscope);
@@ -1458,6 +1461,7 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1458
1461
  }
1459
1462
  if (i < 0 ||
1460
1463
  STOBJ_GET_PARENT(objarray->vector[i]) == scopeobj) {
1464
+ JS_ASSERT(staticLevel == script->staticLevel);
1461
1465
  EVAL_CACHE_METER(hit);
1462
1466
  *scriptp = script->u.nextToGC;
1463
1467
  script->u.nextToGC = NULL;
@@ -1478,7 +1482,7 @@ obj_eval(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
1478
1482
 
1479
1483
  if (!script) {
1480
1484
  script = JSCompiler::compileScript(cx, scopeobj, caller, principals, tcflags,
1481
- JSSTRING_CHARS(str), JSSTRING_LENGTH(str),
1485
+ str->chars(), str->length(),
1482
1486
  NULL, file, line, str);
1483
1487
  if (!script) {
1484
1488
  ok = JS_FALSE;
@@ -1513,7 +1517,7 @@ out:
1513
1517
  if (setCallerScopeChain) {
1514
1518
  caller->scopeChain = callerScopeChain;
1515
1519
  JS_ASSERT(OBJ_GET_CLASS(cx, setCallerScopeChain) == &js_WithClass);
1516
- JS_SetPrivate(cx, setCallerScopeChain, NULL);
1520
+ setCallerScopeChain->setPrivate(NULL);
1517
1521
  }
1518
1522
  if (setCallerVarObj)
1519
1523
  caller->varobj = callerVarObj;
@@ -1599,7 +1603,7 @@ obj_watch(JSContext *cx, uintN argc, jsval *vp)
1599
1603
  return JS_FALSE;
1600
1604
 
1601
1605
  obj = JS_THIS_OBJECT(cx, vp);
1602
- if (!obj || !OBJ_CHECK_ACCESS(cx, obj, propid, JSACC_WATCH, &value, &attrs))
1606
+ if (!obj || !obj->checkAccess(cx, propid, JSACC_WATCH, &value, &attrs))
1603
1607
  return JS_FALSE;
1604
1608
  if (attrs & JSPROP_READONLY)
1605
1609
  return JS_TRUE;
@@ -1707,7 +1711,7 @@ js_HasOwnProperty(JSContext *cx, JSLookupPropOp lookup, JSObject *obj, jsid id,
1707
1711
  }
1708
1712
  }
1709
1713
  if (prop)
1710
- OBJ_DROP_PROPERTY(cx, obj2, prop);
1714
+ obj2->dropProperty(cx, prop);
1711
1715
  return JS_TRUE;
1712
1716
  }
1713
1717
 
@@ -1782,7 +1786,7 @@ js_PropertyIsEnumerable(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
1782
1786
  JSProperty *prop;
1783
1787
  JSBool ok;
1784
1788
 
1785
- if (!OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
1789
+ if (!obj->lookupProperty(cx, id, &pobj, &prop))
1786
1790
  return JS_FALSE;
1787
1791
 
1788
1792
  if (!prop) {
@@ -1804,13 +1808,13 @@ js_PropertyIsEnumerable(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
1804
1808
  if (pobj != obj &&
1805
1809
  !(OBJ_IS_NATIVE(pobj) &&
1806
1810
  SPROP_IS_SHARED_PERMANENT((JSScopeProperty *)prop))) {
1807
- OBJ_DROP_PROPERTY(cx, pobj, prop);
1811
+ pobj->dropProperty(cx, prop);
1808
1812
  *vp = JSVAL_FALSE;
1809
1813
  return JS_TRUE;
1810
1814
  }
1811
1815
 
1812
- ok = OBJ_GET_ATTRIBUTES(cx, pobj, id, prop, &attrs);
1813
- OBJ_DROP_PROPERTY(cx, pobj, prop);
1816
+ ok = pobj->getAttributes(cx, id, prop, &attrs);
1817
+ pobj->dropProperty(cx, prop);
1814
1818
  if (ok)
1815
1819
  *vp = BOOLEAN_TO_JSVAL((attrs & JSPROP_ENUMERATE) != 0);
1816
1820
  return ok;
@@ -1842,14 +1846,12 @@ js_obj_defineGetter(JSContext *cx, uintN argc, jsval *vp)
1842
1846
  * Getters and setters are just like watchpoints from an access
1843
1847
  * control point of view.
1844
1848
  */
1845
- if (!OBJ_CHECK_ACCESS(cx, obj, id, JSACC_WATCH, &junk, &attrs))
1849
+ if (!obj->checkAccess(cx, id, JSACC_WATCH, &junk, &attrs))
1846
1850
  return JS_FALSE;
1847
1851
  *vp = JSVAL_VOID;
1848
- return OBJ_DEFINE_PROPERTY(cx, obj, id, JSVAL_VOID,
1849
- js_CastAsPropertyOp(JSVAL_TO_OBJECT(fval)),
1850
- JS_PropertyStub,
1851
- JSPROP_ENUMERATE | JSPROP_GETTER | JSPROP_SHARED,
1852
- NULL);
1852
+ return obj->defineProperty(cx, id, JSVAL_VOID,
1853
+ js_CastAsPropertyOp(JSVAL_TO_OBJECT(fval)), JS_PropertyStub,
1854
+ JSPROP_ENUMERATE | JSPROP_GETTER | JSPROP_SHARED);
1853
1855
  }
1854
1856
 
1855
1857
  JS_FRIEND_API(JSBool)
@@ -1877,14 +1879,12 @@ js_obj_defineSetter(JSContext *cx, uintN argc, jsval *vp)
1877
1879
  * Getters and setters are just like watchpoints from an access
1878
1880
  * control point of view.
1879
1881
  */
1880
- if (!OBJ_CHECK_ACCESS(cx, obj, id, JSACC_WATCH, &junk, &attrs))
1882
+ if (!obj->checkAccess(cx, id, JSACC_WATCH, &junk, &attrs))
1881
1883
  return JS_FALSE;
1882
1884
  *vp = JSVAL_VOID;
1883
- return OBJ_DEFINE_PROPERTY(cx, obj, id, JSVAL_VOID,
1884
- JS_PropertyStub,
1885
- js_CastAsPropertyOp(JSVAL_TO_OBJECT(fval)),
1886
- JSPROP_ENUMERATE | JSPROP_SETTER | JSPROP_SHARED,
1887
- NULL);
1885
+ return obj->defineProperty(cx, id, JSVAL_VOID,
1886
+ JS_PropertyStub, js_CastAsPropertyOp(JSVAL_TO_OBJECT(fval)),
1887
+ JSPROP_ENUMERATE | JSPROP_SETTER | JSPROP_SHARED);
1888
1888
  }
1889
1889
 
1890
1890
  static JSBool
@@ -1898,7 +1898,7 @@ obj_lookupGetter(JSContext *cx, uintN argc, jsval *vp)
1898
1898
  if (!JS_ValueToId(cx, argc != 0 ? vp[2] : JSVAL_VOID, &id))
1899
1899
  return JS_FALSE;
1900
1900
  obj = JS_THIS_OBJECT(cx, vp);
1901
- if (!obj || !OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
1901
+ if (!obj || !obj->lookupProperty(cx, id, &pobj, &prop))
1902
1902
  return JS_FALSE;
1903
1903
  *vp = JSVAL_VOID;
1904
1904
  if (prop) {
@@ -1907,7 +1907,7 @@ obj_lookupGetter(JSContext *cx, uintN argc, jsval *vp)
1907
1907
  if (sprop->attrs & JSPROP_GETTER)
1908
1908
  *vp = js_CastAsObjectJSVal(sprop->getter);
1909
1909
  }
1910
- OBJ_DROP_PROPERTY(cx, pobj, prop);
1910
+ pobj->dropProperty(cx, prop);
1911
1911
  }
1912
1912
  return JS_TRUE;
1913
1913
  }
@@ -1923,7 +1923,7 @@ obj_lookupSetter(JSContext *cx, uintN argc, jsval *vp)
1923
1923
  if (!JS_ValueToId(cx, argc != 0 ? vp[2] : JSVAL_VOID, &id))
1924
1924
  return JS_FALSE;
1925
1925
  obj = JS_THIS_OBJECT(cx, vp);
1926
- if (!obj || !OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
1926
+ if (!obj || !obj->lookupProperty(cx, id, &pobj, &prop))
1927
1927
  return JS_FALSE;
1928
1928
  *vp = JSVAL_VOID;
1929
1929
  if (prop) {
@@ -1932,7 +1932,7 @@ obj_lookupSetter(JSContext *cx, uintN argc, jsval *vp)
1932
1932
  if (sprop->attrs & JSPROP_SETTER)
1933
1933
  *vp = js_CastAsObjectJSVal(sprop->setter);
1934
1934
  }
1935
- OBJ_DROP_PROPERTY(cx, pobj, prop);
1935
+ pobj->dropProperty(cx, prop);
1936
1936
  }
1937
1937
  return JS_TRUE;
1938
1938
  }
@@ -1954,8 +1954,7 @@ obj_getPrototypeOf(JSContext *cx, uintN argc, jsval *vp)
1954
1954
  return JS_FALSE;
1955
1955
  vp[2] = OBJECT_TO_JSVAL(obj);
1956
1956
 
1957
- return OBJ_CHECK_ACCESS(cx, obj,
1958
- ATOM_TO_JSID(cx->runtime->atomState.protoAtom),
1957
+ return obj->checkAccess(cx, ATOM_TO_JSID(cx->runtime->atomState.protoAtom),
1959
1958
  JSACC_PROTO, vp, &attrs);
1960
1959
  }
1961
1960
 
@@ -1986,17 +1985,14 @@ static JSFunctionSpec object_methods[] = {
1986
1985
  #endif
1987
1986
  JS_FN(js_toString_str, obj_toString, 0,0),
1988
1987
  JS_FN(js_toLocaleString_str, obj_toLocaleString, 0,0),
1989
- JS_TN(js_valueOf_str, obj_valueOf, 0,0,
1990
- obj_valueOf_trcinfo),
1988
+ JS_TN(js_valueOf_str, obj_valueOf, 0,0, &obj_valueOf_trcinfo),
1991
1989
  #if JS_HAS_OBJ_WATCHPOINT
1992
1990
  JS_FN(js_watch_str, obj_watch, 2,0),
1993
1991
  JS_FN(js_unwatch_str, obj_unwatch, 1,0),
1994
1992
  #endif
1995
- JS_TN(js_hasOwnProperty_str, obj_hasOwnProperty, 1,0,
1996
- obj_hasOwnProperty_trcinfo),
1993
+ JS_TN(js_hasOwnProperty_str, obj_hasOwnProperty, 1,0, &obj_hasOwnProperty_trcinfo),
1997
1994
  JS_FN(js_isPrototypeOf_str, obj_isPrototypeOf, 1,0),
1998
- JS_TN(js_propertyIsEnumerable_str, obj_propertyIsEnumerable, 1,0,
1999
- obj_propertyIsEnumerable_trcinfo),
1995
+ JS_TN(js_propertyIsEnumerable_str, obj_propertyIsEnumerable, 1,0, &obj_propertyIsEnumerable_trcinfo),
2000
1996
  #if JS_HAS_GETTER_SETTER
2001
1997
  JS_FN(js_defineGetter_str, js_obj_defineGetter, 2,0),
2002
1998
  JS_FN(js_defineSetter_str, js_obj_defineSetter, 2,0),
@@ -2011,6 +2007,149 @@ static JSFunctionSpec object_static_methods[] = {
2011
2007
  JS_FS_END
2012
2008
  };
2013
2009
 
2010
+ static bool
2011
+ AllocSlots(JSContext *cx, JSObject *obj, size_t nslots);
2012
+
2013
+ static inline bool
2014
+ InitScopeForObject(JSContext* cx, JSObject* obj, JSObject* proto, JSObjectOps* ops)
2015
+ {
2016
+ JS_ASSERT(OPS_IS_NATIVE(ops));
2017
+ JS_ASSERT(proto == OBJ_GET_PROTO(cx, obj));
2018
+
2019
+ /* Share proto's emptyScope only if obj is similar to proto. */
2020
+ JSClass *clasp = OBJ_GET_CLASS(cx, obj);
2021
+ JSScope *scope;
2022
+ if (proto && OBJ_IS_NATIVE(proto) &&
2023
+ (scope = OBJ_SCOPE(proto))->canProvideEmptyScope(ops, clasp)) {
2024
+ scope = scope->getEmptyScope(cx, clasp);
2025
+ if (!scope)
2026
+ goto bad;
2027
+ } else {
2028
+ scope = JSScope::create(cx, ops, clasp, obj, js_GenerateShape(cx, false));
2029
+ if (!scope)
2030
+ goto bad;
2031
+
2032
+ /* Let JSScope::create set freeslot so as to reserve slots. */
2033
+ JS_ASSERT(scope->freeslot >= JSSLOT_PRIVATE);
2034
+ if (scope->freeslot > JS_INITIAL_NSLOTS &&
2035
+ !AllocSlots(cx, obj, scope->freeslot)) {
2036
+ JSScope::destroy(cx, scope);
2037
+ goto bad;
2038
+ }
2039
+ }
2040
+ obj->map = scope;
2041
+ return true;
2042
+
2043
+ bad:
2044
+ /* The GC nulls map initially. It should still be null on error. */
2045
+ JS_ASSERT(!obj->map);
2046
+ return false;
2047
+ }
2048
+
2049
+ JSObject *
2050
+ js_NewObjectWithGivenProto(JSContext *cx, JSClass *clasp, JSObject *proto,
2051
+ JSObject *parent, size_t objectSize)
2052
+ {
2053
+ #ifdef INCLUDE_MOZILLA_DTRACE
2054
+ if (JAVASCRIPT_OBJECT_CREATE_START_ENABLED())
2055
+ jsdtrace_object_create_start(cx->fp, clasp);
2056
+ #endif
2057
+
2058
+ /* Assert that the class is a proper class. */
2059
+ JS_ASSERT_IF(clasp->flags & JSCLASS_IS_EXTENDED,
2060
+ ((JSExtendedClass *)clasp)->equality);
2061
+
2062
+ /* Always call the class's getObjectOps hook if it has one. */
2063
+ JSObjectOps *ops = clasp->getObjectOps
2064
+ ? clasp->getObjectOps(cx, clasp)
2065
+ : &js_ObjectOps;
2066
+
2067
+ /*
2068
+ * Allocate an object from the GC heap and initialize all its fields before
2069
+ * doing any operation that can potentially trigger GC. Functions have a
2070
+ * larger non-standard allocation size.
2071
+ */
2072
+ JSObject* obj;
2073
+ if (clasp == &js_FunctionClass && !objectSize) {
2074
+ obj = (JSObject*) js_NewGCFunction(cx, GCX_OBJECT);
2075
+ #ifdef DEBUG
2076
+ memset((uint8 *) obj + sizeof(JSObject), JS_FREE_PATTERN,
2077
+ sizeof(JSFunction) - sizeof(JSObject));
2078
+ #endif
2079
+ } else {
2080
+ JS_ASSERT(!objectSize || objectSize == sizeof(JSObject));
2081
+ obj = js_NewGCObject(cx, GCX_OBJECT);
2082
+ }
2083
+ if (!obj)
2084
+ goto out;
2085
+
2086
+ /*
2087
+ * Default parent to the parent of the prototype, which was set from
2088
+ * the parent of the prototype's constructor.
2089
+ */
2090
+ obj->init(clasp,
2091
+ proto,
2092
+ (!parent && proto) ? proto->getParent() : parent,
2093
+ JSObject::defaultPrivate(clasp));
2094
+
2095
+ if (OPS_IS_NATIVE(ops)) {
2096
+ if (!InitScopeForObject(cx, obj, proto, ops)) {
2097
+ obj = NULL;
2098
+ goto out;
2099
+ }
2100
+ } else {
2101
+ JS_ASSERT(ops->objectMap->ops == ops);
2102
+ obj->map = const_cast<JSObjectMap *>(ops->objectMap);
2103
+ }
2104
+
2105
+ /* Check that the newborn root still holds the object. */
2106
+ JS_ASSERT_IF(!cx->localRootStack, cx->weakRoots.newborn[GCX_OBJECT] == obj);
2107
+
2108
+ /*
2109
+ * Do not call debug hooks on trace, because we might be in a non-_FAIL
2110
+ * builtin. See bug 481444.
2111
+ */
2112
+ if (cx->debugHooks->objectHook && !JS_ON_TRACE(cx)) {
2113
+ JSAutoTempValueRooter tvr(cx, obj);
2114
+ JS_KEEP_ATOMS(cx->runtime);
2115
+ cx->debugHooks->objectHook(cx, obj, JS_TRUE,
2116
+ cx->debugHooks->objectHookData);
2117
+ JS_UNKEEP_ATOMS(cx->runtime);
2118
+ cx->weakRoots.newborn[GCX_OBJECT] = obj;
2119
+ }
2120
+
2121
+ out:
2122
+ #ifdef INCLUDE_MOZILLA_DTRACE
2123
+ if (JAVASCRIPT_OBJECT_CREATE_ENABLED())
2124
+ jsdtrace_object_create(cx, clasp, obj);
2125
+ if (JAVASCRIPT_OBJECT_CREATE_DONE_ENABLED())
2126
+ jsdtrace_object_create_done(cx->fp, clasp);
2127
+ #endif
2128
+ return obj;
2129
+ }
2130
+
2131
+ JSObject *
2132
+ js_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto,
2133
+ JSObject *parent, size_t objectSize)
2134
+ {
2135
+ jsid id;
2136
+
2137
+ /* Bootstrap the ur-object, and make it the default prototype object. */
2138
+ if (!proto) {
2139
+ if (!js_GetClassId(cx, clasp, &id))
2140
+ return NULL;
2141
+ if (!js_GetClassPrototype(cx, parent, id, &proto))
2142
+ return NULL;
2143
+ if (!proto &&
2144
+ !js_GetClassPrototype(cx, parent, INT_TO_JSID(JSProto_Object),
2145
+ &proto)) {
2146
+ return NULL;
2147
+ }
2148
+ }
2149
+
2150
+ return js_NewObjectWithGivenProto(cx, clasp, proto, parent, objectSize);
2151
+ }
2152
+
2014
2153
  JSBool
2015
2154
  js_Object(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
2016
2155
  {
@@ -2026,7 +2165,7 @@ js_Object(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
2026
2165
  JS_ASSERT(!argc || JSVAL_IS_NULL(argv[0]) || JSVAL_IS_VOID(argv[0]));
2027
2166
  if (JS_IsConstructing(cx))
2028
2167
  return JS_TRUE;
2029
- obj = js_NewObject(cx, &js_ObjectClass, NULL, NULL, 0);
2168
+ obj = js_NewObject(cx, &js_ObjectClass, NULL, NULL);
2030
2169
  if (!obj)
2031
2170
  return JS_FALSE;
2032
2171
  }
@@ -2034,86 +2173,46 @@ js_Object(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
2034
2173
  return JS_TRUE;
2035
2174
  }
2036
2175
 
2037
- static inline bool
2038
- InitScopeForObject(JSContext* cx, JSObject* obj, JSObject* proto,
2039
- JSObjectOps* ops)
2040
- {
2041
- JS_ASSERT(OPS_IS_NATIVE(ops));
2042
- JS_ASSERT(proto == OBJ_GET_PROTO(cx, obj));
2043
-
2044
- JSClass* protoclasp;
2045
- JSClass* clasp = OBJ_GET_CLASS(cx, obj);
2046
-
2047
- /*
2048
- * Share proto's map only if it has the same JSObjectOps, and only if
2049
- * proto's class has the same private and reserved slots as obj's map
2050
- * and class have. We assume that if prototype and object are of the
2051
- * same class, they always have the same number of computed reserved
2052
- * slots (returned via clasp->reserveSlots); otherwise, prototype and
2053
- * object classes must have the same (null or not) reserveSlots hook.
2054
- */
2055
- if (proto &&
2056
- proto->map->ops == ops &&
2057
- ((protoclasp = OBJ_GET_CLASS(cx, proto)) == clasp ||
2058
- (!((protoclasp->flags ^ clasp->flags) &
2059
- (JSCLASS_HAS_PRIVATE |
2060
- (JSCLASS_RESERVED_SLOTS_MASK << JSCLASS_RESERVED_SLOTS_SHIFT))) &&
2061
- protoclasp->reserveSlots == clasp->reserveSlots)))
2062
- {
2063
- js_HoldScope(OBJ_SCOPE(proto));
2064
- obj->map = proto->map;
2065
- return true;
2066
- }
2067
-
2068
- JSScope *scope = js_NewScope(cx, ops, clasp, obj);
2069
- if (!scope)
2070
- goto bad;
2071
-
2072
- /* Let js_NewScope set freeslot so as to reserve slots. */
2073
- JS_ASSERT(scope->freeslot >= JSSLOT_PRIVATE);
2074
- if (scope->freeslot > JS_INITIAL_NSLOTS &&
2075
- !js_ReallocSlots(cx, obj, scope->freeslot, JS_TRUE)) {
2076
- js_DestroyScope(cx, scope);
2077
- goto bad;
2078
- }
2079
- obj->map = &scope->map;
2080
- return true;
2081
-
2082
- bad:
2083
- /* Ensure that the map field is initialized for GC. */
2084
- obj->map = NULL;
2085
- return false;
2086
- }
2087
-
2088
2176
  #ifdef JS_TRACER
2089
2177
 
2090
- static inline JSObject*
2091
- NewNativeObject(JSContext* cx, JSClass* clasp, JSObject* proto, JSObject *parent)
2178
+ JSObject*
2179
+ js_NewObjectWithClassProto(JSContext *cx, JSClass *clasp, JSObject *proto,
2180
+ jsval privateSlotValue)
2092
2181
  {
2093
- JS_ASSERT(JS_ON_TRACE(cx));
2094
- JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
2182
+ JS_ASSERT(!clasp->getObjectOps);
2183
+ JS_ASSERT(proto->map->ops == &js_ObjectOps);
2184
+
2185
+ JSObject* obj = js_NewGCObject(cx, GCX_OBJECT);
2095
2186
  if (!obj)
2096
2187
  return NULL;
2097
2188
 
2098
- obj->classword = jsuword(clasp);
2099
- obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
2100
- obj->fslots[JSSLOT_PARENT] = OBJECT_TO_JSVAL(parent);
2101
- for (unsigned i = JSSLOT_PRIVATE; i < JS_INITIAL_NSLOTS; ++i)
2102
- obj->fslots[i] = JSVAL_VOID;
2103
-
2104
- obj->dslots = NULL;
2105
- return InitScopeForObject(cx, obj, proto, &js_ObjectOps) ? obj : NULL;
2189
+ obj->initSharingEmptyScope(clasp, proto, proto->getParent(), privateSlotValue);
2190
+ return obj;
2106
2191
  }
2107
2192
 
2108
2193
  JSObject* FASTCALL
2109
2194
  js_Object_tn(JSContext* cx, JSObject* proto)
2110
2195
  {
2111
- return NewNativeObject(cx, &js_ObjectClass, proto, JSVAL_TO_OBJECT(proto->fslots[JSSLOT_PARENT]));
2196
+ JS_ASSERT(!(js_ObjectClass.flags & JSCLASS_HAS_PRIVATE));
2197
+ return js_NewObjectWithClassProto(cx, &js_ObjectClass, proto, JSVAL_VOID);
2112
2198
  }
2113
2199
 
2114
2200
  JS_DEFINE_TRCINFO_1(js_Object,
2115
2201
  (2, (extern, CONSTRUCTOR_RETRY, js_Object_tn, CONTEXT, CALLEE_PROTOTYPE, 0, 0)))
2116
2202
 
2203
+ static inline JSObject*
2204
+ NewNativeObject(JSContext* cx, JSClass* clasp, JSObject* proto,
2205
+ JSObject *parent, jsval privateSlotValue)
2206
+ {
2207
+ JS_ASSERT(JS_ON_TRACE(cx));
2208
+ JSObject* obj = js_NewGCObject(cx, GCX_OBJECT);
2209
+ if (!obj)
2210
+ return NULL;
2211
+
2212
+ obj->init(clasp, proto, parent, privateSlotValue);
2213
+ return InitScopeForObject(cx, obj, proto, &js_ObjectOps) ? obj : NULL;
2214
+ }
2215
+
2117
2216
  JSObject* FASTCALL
2118
2217
  js_NewInstance(JSContext *cx, JSClass *clasp, JSObject *ctor)
2119
2218
  {
@@ -2126,13 +2225,13 @@ js_NewInstance(JSContext *cx, JSClass *clasp, JSObject *ctor)
2126
2225
  if (scope->title.ownercx != cx)
2127
2226
  return NULL;
2128
2227
  #endif
2129
- if (scope->object != ctor) {
2228
+ if (!scope->owned()) {
2130
2229
  scope = js_GetMutableScope(cx, ctor);
2131
2230
  if (!scope)
2132
2231
  return NULL;
2133
2232
  }
2134
2233
 
2135
- JSScopeProperty *sprop = SCOPE_GET_PROPERTY(scope, ATOM_TO_JSID(atom));
2234
+ JSScopeProperty *sprop = scope->lookup(ATOM_TO_JSID(atom));
2136
2235
  jsval pval = sprop ? STOBJ_GET_SLOT(ctor, sprop->slot) : JSVAL_HOLE;
2137
2236
 
2138
2237
  JSObject *proto;
@@ -2141,7 +2240,7 @@ js_NewInstance(JSContext *cx, JSClass *clasp, JSObject *ctor)
2141
2240
  proto = JSVAL_TO_OBJECT(pval);
2142
2241
  } else if (pval == JSVAL_HOLE) {
2143
2242
  /* No ctor.prototype yet, inline and optimize fun_resolve's prototype code. */
2144
- proto = js_NewObject(cx, clasp, NULL, OBJ_GET_PARENT(cx, ctor), 0);
2243
+ proto = js_NewObject(cx, clasp, NULL, OBJ_GET_PARENT(cx, ctor));
2145
2244
  if (!proto)
2146
2245
  return NULL;
2147
2246
  if (!js_SetClassPrototype(cx, ctor, proto, JSPROP_ENUMERATE | JSPROP_PERMANENT))
@@ -2154,7 +2253,8 @@ js_NewInstance(JSContext *cx, JSClass *clasp, JSObject *ctor)
2154
2253
  }
2155
2254
  }
2156
2255
 
2157
- return NewNativeObject(cx, clasp, proto, JSVAL_TO_OBJECT(ctor->fslots[JSSLOT_PARENT]));
2256
+ return NewNativeObject(cx, clasp, proto, ctor->getParent(),
2257
+ JSObject::defaultPrivate(clasp));
2158
2258
  }
2159
2259
 
2160
2260
  JS_DEFINE_CALLINFO_3(extern, CONSTRUCTOR_RETRY, js_NewInstance, CONTEXT, CLASS, OBJECT, 0, 0)
@@ -2170,7 +2270,7 @@ JS_DEFINE_CALLINFO_3(extern, CONSTRUCTOR_RETRY, js_NewInstance, CONTEXT, CLASS,
2170
2270
  * access is "object-detecting" in the sense used by web scripts, e.g., when
2171
2271
  * checking whether document.all is defined.
2172
2272
  */
2173
- static JS_REQUIRES_STACK JSBool
2273
+ JS_REQUIRES_STACK JSBool
2174
2274
  Detecting(JSContext *cx, jsbytecode *pc)
2175
2275
  {
2176
2276
  JSScript *script;
@@ -2181,7 +2281,7 @@ Detecting(JSContext *cx, jsbytecode *pc)
2181
2281
  script = cx->fp->script;
2182
2282
  endpc = script->code + script->length;
2183
2283
  for (;; pc += js_CodeSpec[op].length) {
2184
- JS_ASSERT(pc < endpc);
2284
+ JS_ASSERT_IF(!cx->fp->imacpc, script->code <= pc && pc < endpc);
2185
2285
 
2186
2286
  /* General case: a branch or equality op follows the access. */
2187
2287
  op = js_GetOpcode(cx, script, pc);
@@ -2233,9 +2333,16 @@ Detecting(JSContext *cx, jsbytecode *pc)
2233
2333
  * does not indicate whether we are in a with statement. Return defaultFlags
2234
2334
  * if a currently executing bytecode cannot be determined.
2235
2335
  */
2236
- static uintN
2237
- InferFlags(JSContext *cx, uintN defaultFlags)
2336
+ uintN
2337
+ js_InferFlags(JSContext *cx, uintN defaultFlags)
2238
2338
  {
2339
+ #ifdef JS_TRACER
2340
+ if (JS_ON_TRACE(cx))
2341
+ return cx->bailExit->lookupFlags;
2342
+ #endif
2343
+
2344
+ JS_ASSERT_NOT_ON_TRACE(cx);
2345
+
2239
2346
  JSStackFrame *fp;
2240
2347
  jsbytecode *pc;
2241
2348
  const JSCodeSpec *cs;
@@ -2253,7 +2360,7 @@ InferFlags(JSContext *cx, uintN defaultFlags)
2253
2360
  if ((format & (JOF_SET | JOF_FOR)) ||
2254
2361
  (fp->flags & JSFRAME_ASSIGNING)) {
2255
2362
  flags |= JSRESOLVE_ASSIGNING;
2256
- } else {
2363
+ } else if (cs->length >= 0) {
2257
2364
  pc += cs->length;
2258
2365
  if (pc < cx->fp->script->code + cx->fp->script->length && Detecting(cx, pc))
2259
2366
  flags |= JSRESOLVE_DETECTING;
@@ -2273,13 +2380,13 @@ with_LookupProperty(JSContext *cx, JSObject *obj, jsid id, JSObject **objp,
2273
2380
  /* Fixes bug 463997 */
2274
2381
  uintN flags = cx->resolveFlags;
2275
2382
  if (flags == JSRESOLVE_INFER)
2276
- flags = InferFlags(cx, flags);
2383
+ flags = js_InferFlags(cx, flags);
2277
2384
  flags |= JSRESOLVE_WITH;
2278
2385
  JSAutoResolveFlags rf(cx, flags);
2279
2386
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2280
2387
  if (!proto)
2281
2388
  return js_LookupProperty(cx, obj, id, objp, propp);
2282
- return OBJ_LOOKUP_PROPERTY(cx, proto, id, objp, propp);
2389
+ return proto->lookupProperty(cx, id, objp, propp);
2283
2390
  }
2284
2391
 
2285
2392
  static JSBool
@@ -2288,7 +2395,7 @@ with_GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
2288
2395
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2289
2396
  if (!proto)
2290
2397
  return js_GetProperty(cx, obj, id, vp);
2291
- return OBJ_GET_PROPERTY(cx, proto, id, vp);
2398
+ return proto->getProperty(cx, id, vp);
2292
2399
  }
2293
2400
 
2294
2401
  static JSBool
@@ -2297,7 +2404,7 @@ with_SetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
2297
2404
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2298
2405
  if (!proto)
2299
2406
  return js_SetProperty(cx, obj, id, vp);
2300
- return OBJ_SET_PROPERTY(cx, proto, id, vp);
2407
+ return proto->setProperty(cx, id, vp);
2301
2408
  }
2302
2409
 
2303
2410
  static JSBool
@@ -2307,7 +2414,7 @@ with_GetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,
2307
2414
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2308
2415
  if (!proto)
2309
2416
  return js_GetAttributes(cx, obj, id, prop, attrsp);
2310
- return OBJ_GET_ATTRIBUTES(cx, proto, id, prop, attrsp);
2417
+ return proto->getAttributes(cx, id, prop, attrsp);
2311
2418
  }
2312
2419
 
2313
2420
  static JSBool
@@ -2317,7 +2424,7 @@ with_SetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,
2317
2424
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2318
2425
  if (!proto)
2319
2426
  return js_SetAttributes(cx, obj, id, prop, attrsp);
2320
- return OBJ_SET_ATTRIBUTES(cx, proto, id, prop, attrsp);
2427
+ return proto->setAttributes(cx, id, prop, attrsp);
2321
2428
  }
2322
2429
 
2323
2430
  static JSBool
@@ -2326,7 +2433,7 @@ with_DeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
2326
2433
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2327
2434
  if (!proto)
2328
2435
  return js_DeleteProperty(cx, obj, id, rval);
2329
- return OBJ_DELETE_PROPERTY(cx, proto, id, rval);
2436
+ return proto->deleteProperty(cx, id, rval);
2330
2437
  }
2331
2438
 
2332
2439
  static JSBool
@@ -2335,7 +2442,7 @@ with_DefaultValue(JSContext *cx, JSObject *obj, JSType hint, jsval *vp)
2335
2442
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2336
2443
  if (!proto)
2337
2444
  return js_DefaultValue(cx, obj, hint, vp);
2338
- return OBJ_DEFAULT_VALUE(cx, proto, hint, vp);
2445
+ return proto->defaultValue(cx, hint, vp);
2339
2446
  }
2340
2447
 
2341
2448
  static JSBool
@@ -2345,7 +2452,7 @@ with_Enumerate(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
2345
2452
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2346
2453
  if (!proto)
2347
2454
  return js_Enumerate(cx, obj, enum_op, statep, idp);
2348
- return OBJ_ENUMERATE(cx, proto, enum_op, statep, idp);
2455
+ return proto->enumerate(cx, enum_op, statep, idp);
2349
2456
  }
2350
2457
 
2351
2458
  static JSBool
@@ -2355,7 +2462,7 @@ with_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
2355
2462
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2356
2463
  if (!proto)
2357
2464
  return js_CheckAccess(cx, obj, id, mode, vp, attrsp);
2358
- return OBJ_CHECK_ACCESS(cx, proto, id, mode, vp, attrsp);
2465
+ return proto->checkAccess(cx, id, mode, vp, attrsp);
2359
2466
  }
2360
2467
 
2361
2468
  static JSObject *
@@ -2364,7 +2471,7 @@ with_ThisObject(JSContext *cx, JSObject *obj)
2364
2471
  JSObject *proto = OBJ_GET_PROTO(cx, obj);
2365
2472
  if (!proto)
2366
2473
  return obj;
2367
- return OBJ_THIS_OBJECT(cx, proto);
2474
+ return proto->thisObject(cx);
2368
2475
  }
2369
2476
 
2370
2477
  JS_FRIEND_DATA(JSObjectOps) js_WithObjectOps = {
@@ -2377,8 +2484,7 @@ JS_FRIEND_DATA(JSObjectOps) js_WithObjectOps = {
2377
2484
  with_ThisObject, NATIVE_DROP_PROPERTY,
2378
2485
  NULL, NULL,
2379
2486
  NULL, js_TraceObject,
2380
- js_Clear, NULL,
2381
- NULL
2487
+ js_Clear
2382
2488
  };
2383
2489
 
2384
2490
  static JSObjectOps *
@@ -2391,7 +2497,7 @@ JSClass js_WithClass = {
2391
2497
  "With",
2392
2498
  JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(1) | JSCLASS_IS_ANONYMOUS,
2393
2499
  JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
2394
- JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
2500
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, NULL,
2395
2501
  with_getObjectOps,
2396
2502
  0,0,0,0,0,0,0
2397
2503
  };
@@ -2401,10 +2507,10 @@ js_NewWithObject(JSContext *cx, JSObject *proto, JSObject *parent, jsint depth)
2401
2507
  {
2402
2508
  JSObject *obj;
2403
2509
 
2404
- obj = js_NewObject(cx, &js_WithClass, proto, parent, 0);
2510
+ obj = js_NewObject(cx, &js_WithClass, proto, parent);
2405
2511
  if (!obj)
2406
2512
  return NULL;
2407
- STOBJ_SET_SLOT(obj, JSSLOT_PRIVATE, PRIVATE_TO_JSVAL(cx->fp));
2513
+ obj->setPrivate(cx->fp);
2408
2514
  OBJ_SET_BLOCK_DEPTH(cx, obj, depth);
2409
2515
  return obj;
2410
2516
  }
@@ -2416,28 +2522,36 @@ js_NewBlockObject(JSContext *cx)
2416
2522
  * Null obj's proto slot so that Object.prototype.* does not pollute block
2417
2523
  * scopes and to give the block object its own scope.
2418
2524
  */
2419
- JSObject *blockObj = js_NewObjectWithGivenProto(cx, &js_BlockClass,
2420
- NULL, NULL, 0);
2525
+ JSObject *blockObj = js_NewObjectWithGivenProto(cx, &js_BlockClass, NULL, NULL);
2421
2526
  JS_ASSERT_IF(blockObj, !OBJ_IS_CLONED_BLOCK(blockObj));
2422
2527
  return blockObj;
2423
2528
  }
2424
2529
 
2425
2530
  JSObject *
2426
- js_CloneBlockObject(JSContext *cx, JSObject *proto, JSObject *parent,
2427
- JSStackFrame *fp)
2531
+ js_CloneBlockObject(JSContext *cx, JSObject *proto, JSStackFrame *fp)
2428
2532
  {
2429
- JSObject *clone;
2430
-
2431
- JS_ASSERT(STOBJ_GET_CLASS(proto) == &js_BlockClass);
2432
2533
  JS_ASSERT(!OBJ_IS_CLONED_BLOCK(proto));
2433
- clone = js_NewObject(cx, &js_BlockClass, proto, parent, 0);
2534
+ JS_ASSERT(STOBJ_GET_CLASS(proto) == &js_BlockClass);
2535
+
2536
+ JSObject *clone = js_NewGCObject(cx, GCX_OBJECT);
2434
2537
  if (!clone)
2435
2538
  return NULL;
2436
- STOBJ_SET_SLOT(clone, JSSLOT_PRIVATE, PRIVATE_TO_JSVAL(fp));
2437
- STOBJ_SET_SLOT(clone, JSSLOT_BLOCK_DEPTH,
2438
- OBJ_GET_SLOT(cx, proto, JSSLOT_BLOCK_DEPTH));
2539
+
2540
+ JSScope *scope = OBJ_SCOPE(proto);
2541
+ scope->hold();
2542
+ JS_ASSERT(!scope->owned());
2543
+ clone->map = scope;
2544
+
2545
+ clone->classword = jsuword(&js_BlockClass);
2546
+ clone->setProto(proto);
2547
+ clone->setParent(NULL); // caller's responsibility
2548
+ clone->setPrivate(fp);
2549
+ clone->fslots[JSSLOT_BLOCK_DEPTH] = proto->fslots[JSSLOT_BLOCK_DEPTH];
2550
+ JS_ASSERT(scope->freeslot == JSSLOT_BLOCK_DEPTH + 1);
2551
+ for (uint32 i = JSSLOT_BLOCK_DEPTH + 1; i < JS_INITIAL_NSLOTS; ++i)
2552
+ clone->fslots[i] = JSVAL_VOID;
2553
+ clone->dslots = NULL;
2439
2554
  JS_ASSERT(OBJ_IS_CLONED_BLOCK(clone));
2440
- JS_ASSERT(OBJ_SCOPE(clone)->object == proto);
2441
2555
  return clone;
2442
2556
  }
2443
2557
 
@@ -2454,7 +2568,7 @@ js_PutBlockObject(JSContext *cx, JSBool normalUnwind)
2454
2568
  fp = cx->fp;
2455
2569
  obj = fp->scopeChain;
2456
2570
  JS_ASSERT(OBJ_GET_CLASS(cx, obj) == &js_BlockClass);
2457
- JS_ASSERT(OBJ_GET_PRIVATE(cx, obj) == cx->fp);
2571
+ JS_ASSERT(obj->getPrivate() == cx->fp);
2458
2572
  JS_ASSERT(OBJ_IS_CLONED_BLOCK(obj));
2459
2573
 
2460
2574
  /*
@@ -2482,7 +2596,7 @@ js_PutBlockObject(JSContext *cx, JSBool normalUnwind)
2482
2596
  if (normalUnwind && count > 1) {
2483
2597
  --count;
2484
2598
  JS_LOCK_OBJ(cx, obj);
2485
- if (!js_ReallocSlots(cx, obj, JS_INITIAL_NSLOTS + count, JS_TRUE))
2599
+ if (!AllocSlots(cx, obj, JS_INITIAL_NSLOTS + count))
2486
2600
  normalUnwind = JS_FALSE;
2487
2601
  else
2488
2602
  memcpy(obj->dslots, fp->slots + depth + 1, count * sizeof(jsval));
@@ -2490,7 +2604,7 @@ js_PutBlockObject(JSContext *cx, JSBool normalUnwind)
2490
2604
  }
2491
2605
 
2492
2606
  /* We must clear the private slot even with errors. */
2493
- JS_SetPrivate(cx, obj, NULL);
2607
+ obj->setPrivate(NULL);
2494
2608
  fp->scopeChain = OBJ_GET_PARENT(cx, obj);
2495
2609
  return normalUnwind;
2496
2610
  }
@@ -2498,50 +2612,69 @@ js_PutBlockObject(JSContext *cx, JSBool normalUnwind)
2498
2612
  static JSBool
2499
2613
  block_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
2500
2614
  {
2501
- uintN index;
2502
- JSStackFrame *fp;
2503
-
2504
- JS_ASSERT(JS_InstanceOf(cx, obj, &js_BlockClass, NULL));
2615
+ /*
2616
+ * Block objects are never exposed to script, and the engine handles them
2617
+ * with care. So unlike other getters, this one can assert (rather than
2618
+ * check) certain invariants about obj.
2619
+ */
2620
+ JS_ASSERT(obj->getClass() == &js_BlockClass);
2505
2621
  JS_ASSERT(OBJ_IS_CLONED_BLOCK(obj));
2506
- if (!JSVAL_IS_INT(id))
2507
- return JS_TRUE;
2622
+ uintN index = (uintN) JSVAL_TO_INT(id);
2623
+ JS_ASSERT(index < OBJ_BLOCK_COUNT(cx, obj));
2508
2624
 
2509
- index = (uint16) JSVAL_TO_INT(id);
2510
- fp = (JSStackFrame *) JS_GetPrivate(cx, obj);
2625
+ JSStackFrame *fp = (JSStackFrame *) obj->getPrivate();
2511
2626
  if (fp) {
2512
2627
  index += fp->script->nfixed + OBJ_BLOCK_DEPTH(cx, obj);
2513
2628
  JS_ASSERT(index < fp->script->nslots);
2514
2629
  *vp = fp->slots[index];
2515
- return JS_TRUE;
2630
+ return true;
2516
2631
  }
2517
2632
 
2518
- /* Reserve slots start with the first slot after the private. */
2519
- index += JSSLOT_BLOCK_DEPTH - JSSLOT_PRIVATE;
2520
- return JS_GetReservedSlot(cx, obj, index, vp);
2633
+ /* Values are in reserved slots immediately following DEPTH. */
2634
+ uint32 slot = JSSLOT_BLOCK_DEPTH + 1 + index;
2635
+ JS_LOCK_OBJ(cx, obj);
2636
+ JS_ASSERT(slot < STOBJ_NSLOTS(obj));
2637
+ *vp = STOBJ_GET_SLOT(obj, slot);
2638
+ JS_UNLOCK_OBJ(cx, obj);
2639
+ return true;
2521
2640
  }
2522
2641
 
2523
2642
  static JSBool
2524
2643
  block_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
2525
2644
  {
2526
- uintN index;
2527
- JSStackFrame *fp;
2528
-
2529
- JS_ASSERT(JS_InstanceOf(cx, obj, &js_BlockClass, NULL));
2530
- if (!JSVAL_IS_INT(id))
2531
- return JS_TRUE;
2645
+ JS_ASSERT(obj->getClass() == &js_BlockClass);
2646
+ JS_ASSERT(OBJ_IS_CLONED_BLOCK(obj));
2647
+ uintN index = (uintN) JSVAL_TO_INT(id);
2648
+ JS_ASSERT(index < OBJ_BLOCK_COUNT(cx, obj));
2532
2649
 
2533
- index = (uint16) JSVAL_TO_INT(id);
2534
- fp = (JSStackFrame *) JS_GetPrivate(cx, obj);
2650
+ JSStackFrame *fp = (JSStackFrame *) obj->getPrivate();
2535
2651
  if (fp) {
2536
2652
  index += fp->script->nfixed + OBJ_BLOCK_DEPTH(cx, obj);
2537
2653
  JS_ASSERT(index < fp->script->nslots);
2538
2654
  fp->slots[index] = *vp;
2539
- return JS_TRUE;
2655
+ return true;
2540
2656
  }
2541
2657
 
2542
- /* Reserve slots start with the first slot after the private. */
2543
- index += JSSLOT_BLOCK_DEPTH - JSSLOT_PRIVATE;
2544
- return JS_SetReservedSlot(cx, obj, index, *vp);
2658
+ /* Values are in reserved slots immediately following DEPTH. */
2659
+ uint32 slot = JSSLOT_BLOCK_DEPTH + 1 + index;
2660
+ JS_LOCK_OBJ(cx, obj);
2661
+ JS_ASSERT(slot < STOBJ_NSLOTS(obj));
2662
+ STOBJ_SET_SLOT(obj, slot, *vp);
2663
+ JS_UNLOCK_OBJ(cx, obj);
2664
+ return true;
2665
+ }
2666
+
2667
+ JSBool
2668
+ js_DefineBlockVariable(JSContext *cx, JSObject *obj, jsid id, int16 index)
2669
+ {
2670
+ JS_ASSERT(obj->getClass() == &js_BlockClass);
2671
+ JS_ASSERT(!OBJ_IS_CLONED_BLOCK(obj));
2672
+
2673
+ /* Use JSPROP_ENUMERATE to aid the disassembler. */
2674
+ return js_DefineNativeProperty(cx, obj, id, JSVAL_VOID,
2675
+ block_getProperty, block_setProperty,
2676
+ JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_SHARED,
2677
+ SPROP_HAS_SHORTID, index, NULL);
2545
2678
  }
2546
2679
 
2547
2680
  #if JS_HAS_XDR
@@ -2573,7 +2706,6 @@ js_XDRBlockObject(JSXDRState *xdr, JSObject **objp)
2573
2706
  JSObject *obj, *parent;
2574
2707
  uint16 depth, count, i;
2575
2708
  uint32 tmp;
2576
- JSTempValueRooter tvr;
2577
2709
  JSScopeProperty *sprop;
2578
2710
  jsid propid;
2579
2711
  JSAtom *atom;
@@ -2590,7 +2722,7 @@ js_XDRBlockObject(JSXDRState *xdr, JSObject **objp)
2590
2722
  parent = OBJ_GET_PARENT(cx, obj);
2591
2723
  parentId = (xdr->script->objectsOffset == 0)
2592
2724
  ? NO_PARENT_INDEX
2593
- : FindObjectIndex(JS_SCRIPT_OBJECTS(xdr->script), parent);
2725
+ : FindObjectIndex(xdr->script->objects(), parent);
2594
2726
  depth = (uint16)OBJ_BLOCK_DEPTH(cx, obj);
2595
2727
  count = (uint16)OBJ_BLOCK_COUNT(cx, obj);
2596
2728
  tmp = (uint32)(depth << 16) | count;
@@ -2617,16 +2749,14 @@ js_XDRBlockObject(JSXDRState *xdr, JSObject **objp)
2617
2749
  if (parentId == NO_PARENT_INDEX)
2618
2750
  parent = NULL;
2619
2751
  else
2620
- JS_GET_SCRIPT_OBJECT(xdr->script, parentId, parent);
2752
+ parent = xdr->script->getObject(parentId);
2621
2753
  STOBJ_SET_PARENT(obj, parent);
2622
2754
  }
2623
2755
 
2624
- JS_PUSH_SINGLE_TEMP_ROOT(cx, OBJECT_TO_JSVAL(obj), &tvr);
2756
+ JSAutoTempValueRooter tvr(cx, obj);
2625
2757
 
2626
- if (!JS_XDRUint32(xdr, &tmp)) {
2627
- JS_POP_TEMP_ROOT(cx, &tvr);
2628
- return JS_FALSE;
2629
- }
2758
+ if (!JS_XDRUint32(xdr, &tmp))
2759
+ return false;
2630
2760
 
2631
2761
  if (xdr->mode == JSXDR_DECODE) {
2632
2762
  depth = (uint16)(tmp >> 16);
@@ -2649,7 +2779,7 @@ js_XDRBlockObject(JSXDRState *xdr, JSObject **objp)
2649
2779
  sprop = sprop ? sprop->parent : OBJ_SCOPE(obj)->lastProp;
2650
2780
  } while (!(sprop->flags & SPROP_HAS_SHORTID));
2651
2781
 
2652
- JS_ASSERT(sprop->getter == js_BlockClass.getProperty);
2782
+ JS_ASSERT(sprop->getter == block_getProperty);
2653
2783
  propid = sprop->id;
2654
2784
  JS_ASSERT(JSID_IS_ATOM(propid));
2655
2785
  atom = JSID_TO_ATOM(propid);
@@ -2660,24 +2790,20 @@ js_XDRBlockObject(JSXDRState *xdr, JSObject **objp)
2660
2790
  /* XDR the real id, then the shortid. */
2661
2791
  if (!js_XDRStringAtom(xdr, &atom) ||
2662
2792
  !JS_XDRUint16(xdr, (uint16 *)&shortid)) {
2663
- ok = JS_FALSE;
2664
- break;
2793
+ return false;
2665
2794
  }
2666
2795
 
2667
2796
  if (xdr->mode == JSXDR_DECODE) {
2668
- if (!js_DefineNativeProperty(cx, obj, ATOM_TO_JSID(atom),
2669
- JSVAL_VOID, NULL, NULL,
2670
- JSPROP_ENUMERATE | JSPROP_PERMANENT |
2671
- JSPROP_SHARED,
2672
- SPROP_HAS_SHORTID, shortid, NULL)) {
2673
- ok = JS_FALSE;
2674
- break;
2675
- }
2797
+ if (!js_DefineBlockVariable(cx, obj, ATOM_TO_JSID(atom), shortid))
2798
+ return false;
2676
2799
  }
2677
2800
  }
2678
2801
 
2679
- JS_POP_TEMP_ROOT(cx, &tvr);
2680
- return ok;
2802
+ if (xdr->mode == JSXDR_DECODE) {
2803
+ /* Do as the parser does and make this block scope shareable. */
2804
+ OBJ_SCOPE(obj)->object = NULL;
2805
+ }
2806
+ return true;
2681
2807
  }
2682
2808
 
2683
2809
  #endif
@@ -2691,8 +2817,8 @@ block_reserveSlots(JSContext *cx, JSObject *obj)
2691
2817
  JSClass js_BlockClass = {
2692
2818
  "Block",
2693
2819
  JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(1) | JSCLASS_IS_ANONYMOUS,
2694
- JS_PropertyStub, JS_PropertyStub, block_getProperty, block_setProperty,
2695
- JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
2820
+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
2821
+ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, NULL,
2696
2822
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, block_reserveSlots
2697
2823
  };
2698
2824
 
@@ -2756,7 +2882,7 @@ js_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
2756
2882
  }
2757
2883
 
2758
2884
  /* Create a prototype object for this class. */
2759
- proto = js_NewObject(cx, clasp, parent_proto, obj, 0);
2885
+ proto = js_NewObject(cx, clasp, parent_proto, obj);
2760
2886
  if (!proto)
2761
2887
  return NULL;
2762
2888
 
@@ -2775,13 +2901,12 @@ js_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
2775
2901
  key != JSProto_Null) {
2776
2902
  named = JS_FALSE;
2777
2903
  } else {
2778
- named = OBJ_DEFINE_PROPERTY(cx, obj, ATOM_TO_JSID(atom),
2904
+ named = obj->defineProperty(cx, ATOM_TO_JSID(atom),
2779
2905
  OBJECT_TO_JSVAL(proto),
2780
2906
  JS_PropertyStub, JS_PropertyStub,
2781
2907
  (clasp->flags & JSCLASS_IS_ANONYMOUS)
2782
2908
  ? JSPROP_READONLY | JSPROP_PERMANENT
2783
- : 0,
2784
- NULL);
2909
+ : 0);
2785
2910
  if (!named)
2786
2911
  goto bad;
2787
2912
  }
@@ -2836,6 +2961,21 @@ js_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
2836
2961
  goto bad;
2837
2962
  }
2838
2963
 
2964
+ /*
2965
+ * Make sure proto's scope's emptyScope is available to be shared by
2966
+ * objects of this class. JSScope::emptyScope is a one-slot cache. If we
2967
+ * omit this, some other class could snap it up. (The risk is particularly
2968
+ * great for Object.prototype.)
2969
+ *
2970
+ * All callers of JSObject::initSharingEmptyScope depend on this.
2971
+ */
2972
+ if (OBJ_IS_NATIVE(proto)) {
2973
+ JSScope *scope = OBJ_SCOPE(proto)->getEmptyScope(cx, clasp);
2974
+ if (!scope)
2975
+ goto bad;
2976
+ scope->drop(cx, NULL);
2977
+ }
2978
+
2839
2979
  /* If this is a standard class, cache its prototype. */
2840
2980
  if (key != JSProto_Null && !js_SetClassObject(cx, obj, key, ctor))
2841
2981
  goto bad;
@@ -2846,146 +2986,138 @@ out:
2846
2986
 
2847
2987
  bad:
2848
2988
  if (named)
2849
- (void) OBJ_DELETE_PROPERTY(cx, obj, ATOM_TO_JSID(atom), &rval);
2989
+ (void) obj->deleteProperty(cx, ATOM_TO_JSID(atom), &rval);
2850
2990
  proto = NULL;
2851
2991
  goto out;
2852
2992
  }
2853
2993
 
2854
- static void
2855
- FreeSlots(JSContext *cx, JSObject *obj)
2856
- {
2857
- if (obj->dslots) {
2858
- JS_ASSERT((uint32)obj->dslots[-1] > JS_INITIAL_NSLOTS);
2859
- JS_free(cx, obj->dslots - 1);
2860
- obj->dslots = NULL;
2861
- }
2862
- }
2863
-
2864
2994
  #define SLOTS_TO_DYNAMIC_WORDS(nslots) \
2865
2995
  (JS_ASSERT((nslots) > JS_INITIAL_NSLOTS), (nslots) + 1 - JS_INITIAL_NSLOTS)
2866
2996
 
2867
2997
  #define DYNAMIC_WORDS_TO_SLOTS(words) \
2868
2998
  (JS_ASSERT((words) > 1), (words) - 1 + JS_INITIAL_NSLOTS)
2869
2999
 
2870
- JSBool
2871
- js_ReallocSlots(JSContext *cx, JSObject *obj, uint32 nslots,
2872
- JSBool exactAllocation)
3000
+
3001
+ static bool
3002
+ AllocSlots(JSContext *cx, JSObject *obj, size_t nslots)
2873
3003
  {
2874
- jsval *old, *slots;
2875
- uint32 oslots, nwords, owords, log, i;
3004
+ JS_ASSERT(!obj->dslots);
3005
+ JS_ASSERT(nslots > JS_INITIAL_NSLOTS);
3006
+
3007
+ jsval* slots;
3008
+ slots = (jsval*) cx->malloc(SLOTS_TO_DYNAMIC_WORDS(nslots) * sizeof(jsval));
3009
+ if (!slots)
3010
+ return true;
3011
+
3012
+ *slots++ = nslots;
3013
+ /* clear the newly allocated cells. */
3014
+ for (jsuint n = JS_INITIAL_NSLOTS; n < nslots; ++n)
3015
+ slots[n - JS_INITIAL_NSLOTS] = JSVAL_VOID;
3016
+ obj->dslots = slots;
3017
+
3018
+ return true;
3019
+ }
2876
3020
 
3021
+ bool
3022
+ js_GrowSlots(JSContext *cx, JSObject *obj, size_t nslots)
3023
+ {
2877
3024
  /*
2878
3025
  * Minimal number of dynamic slots to allocate.
2879
3026
  */
2880
- #define MIN_DYNAMIC_WORDS 4
3027
+ const size_t MIN_DYNAMIC_WORDS = 4;
2881
3028
 
2882
3029
  /*
2883
3030
  * The limit to switch to linear allocation strategy from the power of 2
2884
3031
  * growth no to waste too much memory.
2885
3032
  */
2886
- #define LINEAR_GROWTH_STEP JS_BIT(16)
3033
+ const size_t LINEAR_GROWTH_STEP = JS_BIT(16);
2887
3034
 
2888
- old = obj->dslots;
2889
- if (nslots <= JS_INITIAL_NSLOTS) {
2890
- if (old &&
2891
- (exactAllocation ||
2892
- SLOTS_TO_DYNAMIC_WORDS((uint32)old[-1]) != MIN_DYNAMIC_WORDS ||
2893
- nslots <= (JS_INITIAL_NSLOTS +
2894
- JSSLOT_FREE(STOBJ_GET_CLASS(obj))) / 2)) {
2895
- /*
2896
- * We do not want to free dynamic slots when allocation is a hint,
2897
- * we reached minimal allocation and almost all fixed slots are
2898
- * used. It avoids allocating dynamic slots again when properties
2899
- * are added to the object.
2900
- *
2901
- * If there were no private or reserved slots, the condition to
2902
- * free the slots would be
2903
- *
2904
- * nslots <= JS_INITIAL_NSLOTS / 2
2905
- *
2906
- * but to account for never removed slots before JSSLOT_FREE(class)
2907
- * we need to subtract it from the slot counts which gives
2908
- *
2909
- * nslots - JSSLOT_FREE <= (JS_INITIAL_NSLOTS - JSSLOT_FREE) / 2
2910
- *
2911
- * or
2912
- *
2913
- * nslots <= (JS_INITIAL_NSLOTS + JSSLOT_FREE) / 2
2914
- */
2915
- FreeSlots(cx, obj);
2916
- }
3035
+ /* If we are allocating fslots, there is nothing to do. */
3036
+ if (nslots <= JS_INITIAL_NSLOTS)
2917
3037
  return JS_TRUE;
2918
- }
2919
3038
 
2920
- oslots = (old) ? (uint32)*--old : JS_INITIAL_NSLOTS;
2921
- nwords = SLOTS_TO_DYNAMIC_WORDS(nslots);
3039
+ size_t nwords = SLOTS_TO_DYNAMIC_WORDS(nslots);
2922
3040
 
2923
- if (nslots > oslots) {
2924
- if (!exactAllocation) {
2925
- /*
2926
- * Round up nslots so the number of bytes in dslots array is power
2927
- * of 2 to ensure exponential grouth.
2928
- */
2929
- if (nwords <= MIN_DYNAMIC_WORDS) {
2930
- nwords = MIN_DYNAMIC_WORDS;
2931
- } else if (nwords < LINEAR_GROWTH_STEP) {
2932
- JS_CEILING_LOG2(log, nwords);
2933
- nwords = JS_BIT(log);
2934
- } else {
2935
- nwords = JS_ROUNDUP(nwords, LINEAR_GROWTH_STEP);
2936
- }
2937
- }
2938
- slots = (jsval *)JS_realloc(cx, old, nwords * sizeof(jsval));
2939
- if (!slots)
2940
- return JS_FALSE;
3041
+ /*
3042
+ * Round up nslots so the number of bytes in dslots array is power
3043
+ * of 2 to ensure exponential grouth.
3044
+ */
3045
+ uintN log;
3046
+ if (nwords <= MIN_DYNAMIC_WORDS) {
3047
+ nwords = MIN_DYNAMIC_WORDS;
3048
+ } else if (nwords < LINEAR_GROWTH_STEP) {
3049
+ JS_CEILING_LOG2(log, nwords);
3050
+ nwords = JS_BIT(log);
2941
3051
  } else {
2942
- JS_ASSERT(nslots < oslots);
2943
- if (!exactAllocation) {
2944
- owords = DYNAMIC_WORDS_TO_SLOTS(oslots);
2945
- if (owords <= MIN_DYNAMIC_WORDS)
2946
- return JS_TRUE;
2947
- if (owords < LINEAR_GROWTH_STEP * 2) {
2948
- /*
2949
- * Shrink only if 1/4 of slots are left and we need to grow
2950
- * the array at least twice to reach the current capacity. It
2951
- * prevents frequent capacity growth/shrinking when slots are
2952
- * often removed and added.
2953
- */
2954
- if (nwords > owords / 4)
2955
- return JS_TRUE;
2956
- JS_CEILING_LOG2(log, nwords);
2957
- nwords = JS_BIT(log);
2958
- if (nwords < MIN_DYNAMIC_WORDS)
2959
- nwords = MIN_DYNAMIC_WORDS;
2960
- } else {
2961
- /*
2962
- * Shrink only if we free at least 2 linear allocation
2963
- * segments, to prevent growth/shrinking resonance.
2964
- */
2965
- if (nwords > owords - LINEAR_GROWTH_STEP * 2)
2966
- return JS_TRUE;
2967
- nwords = JS_ROUNDUP(nwords, LINEAR_GROWTH_STEP);
2968
- }
2969
- }
2970
-
2971
- /* We avoid JS_realloc not to report a failed shrink attempt. */
2972
- slots = (jsval *)realloc(old, nwords * sizeof(jsval));
2973
- if (!slots)
2974
- slots = old;
3052
+ nwords = JS_ROUNDUP(nwords, LINEAR_GROWTH_STEP);
2975
3053
  }
2976
-
2977
3054
  nslots = DYNAMIC_WORDS_TO_SLOTS(nwords);
2978
- *slots++ = (jsval)nslots;
3055
+
3056
+ /*
3057
+ * If nothing was allocated yet, treat it as initial allocation (but with
3058
+ * the exponential growth algorithm applied).
3059
+ */
3060
+ jsval* slots = obj->dslots;
3061
+ if (!slots)
3062
+ return AllocSlots(cx, obj, nslots);
3063
+
3064
+ size_t oslots = size_t(slots[-1]);
3065
+
3066
+ slots = (jsval*) cx->realloc(slots - 1, nwords * sizeof(jsval));
3067
+ *slots++ = nslots;
2979
3068
  obj->dslots = slots;
2980
3069
 
2981
- /* If we're extending an allocation, initialize free slots. */
2982
- for (i = oslots; i < nslots; i++)
3070
+ /* Initialize the additional slots we added. */
3071
+ JS_ASSERT(nslots > oslots);
3072
+ for (size_t i = oslots; i < nslots; i++)
2983
3073
  slots[i - JS_INITIAL_NSLOTS] = JSVAL_VOID;
2984
3074
 
2985
- return JS_TRUE;
3075
+ return true;
3076
+ }
3077
+
3078
+ void
3079
+ js_ShrinkSlots(JSContext *cx, JSObject *obj, size_t nslots)
3080
+ {
3081
+ jsval* slots = obj->dslots;
3082
+
3083
+ /* Nothing to shrink? */
3084
+ if (!slots)
3085
+ return;
3086
+
3087
+ JS_ASSERT(size_t(slots[-1]) > JS_INITIAL_NSLOTS);
3088
+ JS_ASSERT(nslots <= size_t(slots[-1]));
3089
+
3090
+ if (nslots <= JS_INITIAL_NSLOTS) {
3091
+ cx->free(slots - 1);
3092
+ obj->dslots = NULL;
3093
+ } else {
3094
+ size_t nwords = SLOTS_TO_DYNAMIC_WORDS(nslots);
3095
+ slots = (jsval*) cx->realloc(slots - 1, nwords * sizeof(jsval));
3096
+ *slots++ = nslots;
3097
+ obj->dslots = slots;
3098
+ }
3099
+ }
3100
+
3101
+ bool
3102
+ js_EnsureReservedSlots(JSContext *cx, JSObject *obj, size_t nreserved)
3103
+ {
3104
+ JS_ASSERT(OBJ_IS_NATIVE(obj));
3105
+ JS_ASSERT(!obj->dslots);
2986
3106
 
2987
- #undef LINEAR_GROWTH_STEP
2988
- #undef MIN_DYNAMIC_WORDS
3107
+ uintN nslots = JSSLOT_FREE(STOBJ_GET_CLASS(obj)) + nreserved;
3108
+ if (nslots > STOBJ_NSLOTS(obj) && !AllocSlots(cx, obj, nslots))
3109
+ return false;
3110
+
3111
+ JSScope *scope = OBJ_SCOPE(obj);
3112
+ if (scope->owned()) {
3113
+ #ifdef JS_THREADSAFE
3114
+ JS_ASSERT(scope->title.ownercx->thread == cx->thread);
3115
+ #endif
3116
+ JS_ASSERT(scope->freeslot == JSSLOT_FREE(STOBJ_GET_CLASS(obj)));
3117
+ if (scope->freeslot < nslots)
3118
+ scope->freeslot = nslots;
3119
+ }
3120
+ return true;
2989
3121
  }
2990
3122
 
2991
3123
  extern JSBool
@@ -3008,156 +3140,6 @@ js_GetClassId(JSContext *cx, JSClass *clasp, jsid *idp)
3008
3140
  return JS_TRUE;
3009
3141
  }
3010
3142
 
3011
- JSObject *
3012
- js_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto, JSObject *parent,
3013
- uintN objectSize)
3014
- {
3015
- jsid id;
3016
-
3017
- /* Bootstrap the ur-object, and make it the default prototype object. */
3018
- if (!proto) {
3019
- if (!js_GetClassId(cx, clasp, &id))
3020
- return NULL;
3021
- if (!js_GetClassPrototype(cx, parent, id, &proto))
3022
- return NULL;
3023
- if (!proto &&
3024
- !js_GetClassPrototype(cx, parent, INT_TO_JSID(JSProto_Object),
3025
- &proto)) {
3026
- return NULL;
3027
- }
3028
- }
3029
-
3030
- return js_NewObjectWithGivenProto(cx, clasp, proto, parent, objectSize);
3031
- }
3032
-
3033
- JSObject *
3034
- js_NewObjectWithGivenProto(JSContext *cx, JSClass *clasp, JSObject *proto,
3035
- JSObject *parent, uintN objectSize)
3036
- {
3037
- #ifdef INCLUDE_MOZILLA_DTRACE
3038
- if (JAVASCRIPT_OBJECT_CREATE_START_ENABLED())
3039
- jsdtrace_object_create_start(cx->fp, clasp);
3040
- #endif
3041
-
3042
- /* Currently only functions can have non-standard allocation size. */
3043
- if (clasp == &js_FunctionClass) {
3044
- if (objectSize == 0)
3045
- objectSize = sizeof(JSFunction);
3046
- else
3047
- JS_ASSERT(objectSize == sizeof(JSObject));
3048
- } else {
3049
- JS_ASSERT(objectSize == 0);
3050
- objectSize = sizeof(JSObject);
3051
- }
3052
-
3053
- /* Assert that the class is a proper class. */
3054
- JS_ASSERT_IF(clasp->flags & JSCLASS_IS_EXTENDED,
3055
- ((JSExtendedClass *)clasp)->equality);
3056
-
3057
- /* Always call the class's getObjectOps hook if it has one. */
3058
- JSObjectOps *ops = clasp->getObjectOps
3059
- ? clasp->getObjectOps(cx, clasp)
3060
- : &js_ObjectOps;
3061
-
3062
- /*
3063
- * Allocate an object from the GC heap and initialize all its fields before
3064
- * doing any operation that can potentially trigger GC.
3065
- */
3066
- JSObject *obj = (JSObject *) js_NewGCThing(cx, GCX_OBJECT, objectSize);
3067
- if (!obj)
3068
- goto out;
3069
-
3070
- /*
3071
- * Set the class slot with the initial value of the system and delegate
3072
- * flags set to false.
3073
- */
3074
- JS_ASSERT(((jsuword) clasp & 3) == 0);
3075
- obj->classword = jsuword(clasp);
3076
- JS_ASSERT(!STOBJ_IS_DELEGATE(obj));
3077
- JS_ASSERT(!STOBJ_IS_SYSTEM(obj));
3078
-
3079
- obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
3080
-
3081
- /*
3082
- * Default parent to the parent of the prototype, which was set from
3083
- * the parent of the prototype's constructor.
3084
- */
3085
- obj->fslots[JSSLOT_PARENT] = OBJECT_TO_JSVAL((!parent && proto)
3086
- ? OBJ_GET_PARENT(cx, proto)
3087
- : parent);
3088
-
3089
- /* Initialize the remaining fixed slots. */
3090
- for (uint32 i = JSSLOT_PRIVATE; i < JS_INITIAL_NSLOTS; ++i)
3091
- obj->fslots[i] = JSVAL_VOID;
3092
-
3093
- obj->dslots = NULL;
3094
-
3095
- if (OPS_IS_NATIVE(ops)) {
3096
- if (!InitScopeForObject(cx, obj, proto, ops)) {
3097
- obj = NULL;
3098
- goto out;
3099
- }
3100
- } else {
3101
- JS_ASSERT(ops->objectMap->ops == ops);
3102
- obj->map = const_cast<JSObjectMap *>(ops->objectMap);
3103
- }
3104
-
3105
- #ifdef DEBUG
3106
- memset((uint8 *) obj + sizeof(JSObject), JS_FREE_PATTERN,
3107
- objectSize - sizeof(JSObject));
3108
- #endif
3109
-
3110
- /* Check that the newborn root still holds the object. */
3111
- JS_ASSERT_IF(!cx->localRootStack, cx->weakRoots.newborn[GCX_OBJECT] == obj);
3112
-
3113
- /*
3114
- * Do not call debug hooks on trace, because we might be in a non-_FAIL
3115
- * builtin. See bug 481444.
3116
- */
3117
- if (cx->debugHooks->objectHook && !JS_ON_TRACE(cx)) {
3118
- JSAutoTempValueRooter tvr(cx, obj);
3119
- JS_KEEP_ATOMS(cx->runtime);
3120
- cx->debugHooks->objectHook(cx, obj, JS_TRUE,
3121
- cx->debugHooks->objectHookData);
3122
- JS_UNKEEP_ATOMS(cx->runtime);
3123
- cx->weakRoots.newborn[GCX_OBJECT] = obj;
3124
- }
3125
-
3126
- out:
3127
- #ifdef INCLUDE_MOZILLA_DTRACE
3128
- if (JAVASCRIPT_OBJECT_CREATE_ENABLED())
3129
- jsdtrace_object_create(cx, clasp, obj);
3130
- if (JAVASCRIPT_OBJECT_CREATE_DONE_ENABLED())
3131
- jsdtrace_object_create_done(cx->fp, clasp);
3132
- #endif
3133
- return obj;
3134
- }
3135
-
3136
- JSObject*
3137
- js_NewNativeObject(JSContext *cx, JSClass *clasp, JSObject *proto, uint32 slot)
3138
- {
3139
- JS_ASSERT(!clasp->getObjectOps);
3140
- JS_ASSERT(proto->map->ops == &js_ObjectOps);
3141
- JS_ASSERT(OBJ_GET_CLASS(cx, proto) == clasp);
3142
-
3143
- JSObject* obj = (JSObject*) js_NewGCThing(cx, GCX_OBJECT, sizeof(JSObject));
3144
- if (!obj)
3145
- return NULL;
3146
-
3147
- js_HoldScope(OBJ_SCOPE(proto));
3148
- obj->map = proto->map;
3149
- obj->classword = jsuword(clasp);
3150
- obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
3151
- obj->fslots[JSSLOT_PARENT] = proto->fslots[JSSLOT_PARENT];
3152
-
3153
- JS_ASSERT(slot > JSSLOT_PARENT);
3154
- while (slot < JS_INITIAL_NSLOTS)
3155
- obj->fslots[slot++] = JSVAL_VOID;
3156
-
3157
- obj->dslots = NULL;
3158
- return obj;
3159
- }
3160
-
3161
3143
  JS_BEGIN_EXTERN_C
3162
3144
 
3163
3145
  static JSObject *
@@ -3308,7 +3290,7 @@ js_FindClassObject(JSContext *cx, JSObject *start, jsid id, jsval *vp)
3308
3290
  v = JSVAL_VOID;
3309
3291
  }
3310
3292
  }
3311
- OBJ_DROP_PROPERTY(cx, pobj, prop);
3293
+ pobj->dropProperty(cx, prop);
3312
3294
  }
3313
3295
  *vp = v;
3314
3296
  return JS_TRUE;
@@ -3320,29 +3302,22 @@ js_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *proto,
3320
3302
  {
3321
3303
  jsid id;
3322
3304
  jsval cval, rval;
3323
- JSTempValueRooter argtvr, tvr;
3324
3305
  JSObject *obj, *ctor;
3325
3306
 
3326
- JS_PUSH_TEMP_ROOT(cx, argc, argv, &argtvr);
3307
+ JSAutoTempValueRooter argtvr(cx, argc, argv);
3327
3308
 
3328
3309
  if (!js_GetClassId(cx, clasp, &id) ||
3329
3310
  !js_FindClassObject(cx, parent, id, &cval)) {
3330
- JS_POP_TEMP_ROOT(cx, &argtvr);
3331
3311
  return NULL;
3332
3312
  }
3333
3313
 
3334
3314
  if (JSVAL_IS_PRIMITIVE(cval)) {
3335
3315
  js_ReportIsNotFunction(cx, &cval, JSV2F_CONSTRUCT | JSV2F_SEARCH_STACK);
3336
- JS_POP_TEMP_ROOT(cx, &argtvr);
3337
3316
  return NULL;
3338
3317
  }
3339
3318
 
3340
- /*
3341
- * Protect cval in case a crazy getter for .prototype uproots it. After
3342
- * this point, all control flow must exit through label out with obj set.
3343
- */
3344
- JS_PUSH_SINGLE_TEMP_ROOT(cx, cval, &tvr);
3345
- MUST_FLOW_THROUGH("out");
3319
+ /* Protect cval in case a crazy getter for .prototype uproots it. */
3320
+ JSAutoTempValueRooter tvr(cx, cval);
3346
3321
 
3347
3322
  /*
3348
3323
  * If proto or parent are NULL, set them to Constructor.prototype and/or
@@ -3352,27 +3327,23 @@ js_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *proto,
3352
3327
  if (!parent)
3353
3328
  parent = OBJ_GET_PARENT(cx, ctor);
3354
3329
  if (!proto) {
3355
- if (!OBJ_GET_PROPERTY(cx, ctor,
3356
- ATOM_TO_JSID(cx->runtime->atomState
3357
- .classPrototypeAtom),
3358
- &rval)) {
3359
- obj = NULL;
3360
- goto out;
3330
+ if (!ctor->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.classPrototypeAtom),
3331
+ &rval)) {
3332
+ return NULL;
3361
3333
  }
3362
3334
  if (JSVAL_IS_OBJECT(rval))
3363
3335
  proto = JSVAL_TO_OBJECT(rval);
3364
3336
  }
3365
3337
 
3366
- obj = js_NewObject(cx, clasp, proto, parent, 0);
3338
+ obj = js_NewObject(cx, clasp, proto, parent);
3367
3339
  if (!obj)
3368
- goto out;
3340
+ return NULL;
3369
3341
 
3370
3342
  if (!js_InternalConstruct(cx, obj, cval, argc, argv, &rval))
3371
- goto bad;
3343
+ return NULL;
3372
3344
 
3373
3345
  if (JSVAL_IS_PRIMITIVE(rval))
3374
- goto out;
3375
- obj = JSVAL_TO_OBJECT(rval);
3346
+ return obj;
3376
3347
 
3377
3348
  /*
3378
3349
  * If the instance's class differs from what was requested, throw a type
@@ -3381,49 +3352,16 @@ js_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *proto,
3381
3352
  * private data set at this point, then the constructor was replaced and
3382
3353
  * we should throw a type error.
3383
3354
  */
3355
+ obj = JSVAL_TO_OBJECT(rval);
3384
3356
  if (OBJ_GET_CLASS(cx, obj) != clasp ||
3385
3357
  (!(~clasp->flags & (JSCLASS_HAS_PRIVATE |
3386
3358
  JSCLASS_CONSTRUCT_PROTOTYPE)) &&
3387
- !JS_GetPrivate(cx, obj))) {
3359
+ !obj->getPrivate())) {
3388
3360
  JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
3389
3361
  JSMSG_WRONG_CONSTRUCTOR, clasp->name);
3390
- goto bad;
3362
+ return NULL;
3391
3363
  }
3392
-
3393
- out:
3394
- JS_POP_TEMP_ROOT(cx, &tvr);
3395
- JS_POP_TEMP_ROOT(cx, &argtvr);
3396
3364
  return obj;
3397
-
3398
- bad:
3399
- cx->weakRoots.newborn[GCX_OBJECT] = NULL;
3400
- obj = NULL;
3401
- goto out;
3402
- }
3403
-
3404
- void
3405
- js_FinalizeObject(JSContext *cx, JSObject *obj)
3406
- {
3407
- /* Cope with stillborn objects that have no map. */
3408
- if (!obj->map)
3409
- return;
3410
-
3411
- if (cx->debugHooks->objectHook) {
3412
- cx->debugHooks->objectHook(cx, obj, JS_FALSE,
3413
- cx->debugHooks->objectHookData);
3414
- }
3415
-
3416
- /* Finalize obj first, in case it needs map and slots. */
3417
- STOBJ_GET_CLASS(obj)->finalize(cx, obj);
3418
-
3419
- #ifdef INCLUDE_MOZILLA_DTRACE
3420
- if (JAVASCRIPT_OBJECT_FINALIZE_ENABLED())
3421
- jsdtrace_object_finalize(obj);
3422
- #endif
3423
-
3424
- if (OBJ_IS_NATIVE(obj))
3425
- js_DropScope(cx, OBJ_SCOPE(obj), obj);
3426
- FreeSlots(cx, obj);
3427
3365
  }
3428
3366
 
3429
3367
  /* XXXbe if one adds props, deletes earlier props, adds more, the last added
@@ -3434,14 +3372,14 @@ js_AllocSlot(JSContext *cx, JSObject *obj, uint32 *slotp)
3434
3372
  JS_ASSERT(OBJ_IS_NATIVE(obj));
3435
3373
 
3436
3374
  JSScope *scope = OBJ_SCOPE(obj);
3437
- JSClass *clasp = LOCKED_OBJ_GET_CLASS(obj);
3375
+ JSClass *clasp = obj->getClass();
3438
3376
  if (scope->freeslot == JSSLOT_FREE(clasp) && clasp->reserveSlots) {
3439
3377
  /* Adjust scope->freeslot to include computed reserved slots, if any. */
3440
3378
  scope->freeslot += clasp->reserveSlots(cx, obj);
3441
3379
  }
3442
3380
 
3443
3381
  if (scope->freeslot >= STOBJ_NSLOTS(obj) &&
3444
- !js_ReallocSlots(cx, obj, scope->freeslot + 1, JS_FALSE)) {
3382
+ !js_GrowSlots(cx, obj, scope->freeslot + 1)) {
3445
3383
  return JS_FALSE;
3446
3384
  }
3447
3385
 
@@ -3458,18 +3396,45 @@ js_FreeSlot(JSContext *cx, JSObject *obj, uint32 slot)
3458
3396
 
3459
3397
  JSScope *scope = OBJ_SCOPE(obj);
3460
3398
  LOCKED_OBJ_SET_SLOT(obj, slot, JSVAL_VOID);
3461
- if (scope->freeslot == slot + 1) {
3399
+ if (scope->freeslot == slot + 1)
3462
3400
  scope->freeslot = slot;
3463
-
3464
- /* When shrinking, js_ReallocSlots always returns true. */
3465
- js_ReallocSlots(cx, obj, slot, JS_FALSE);
3466
- }
3467
3401
  }
3468
3402
 
3403
+
3404
+ /* JSVAL_INT_MAX as a string */
3405
+ #define JSVAL_INT_MAX_STRING "1073741823"
3406
+
3407
+ /*
3408
+ * Convert string indexes that convert to int jsvals as ints to save memory.
3409
+ * Care must be taken to use this macro every time a property name is used, or
3410
+ * else double-sets, incorrect property cache misses, or other mistakes could
3411
+ * occur.
3412
+ */
3469
3413
  jsid
3470
- js_CheckForStringIndex(jsid id, const jschar *cp, const jschar *end,
3471
- JSBool negative)
3414
+ js_CheckForStringIndex(jsid id)
3472
3415
  {
3416
+ if (!JSID_IS_ATOM(id))
3417
+ return id;
3418
+
3419
+ JSAtom *atom = JSID_TO_ATOM(id);
3420
+ JSString *str = ATOM_TO_STRING(atom);
3421
+ const jschar *s = str->flatChars();
3422
+ jschar ch = *s;
3423
+
3424
+ JSBool negative = (ch == '-');
3425
+ if (negative)
3426
+ ch = *++s;
3427
+
3428
+ if (!JS7_ISDEC(ch))
3429
+ return id;
3430
+
3431
+ size_t n = str->flatLength() - negative;
3432
+ if (n > sizeof(JSVAL_INT_MAX_STRING) - 1)
3433
+ return id;
3434
+
3435
+ const jschar *cp = s;
3436
+ const jschar *end = s + n;
3437
+
3473
3438
  jsuint index = JS7_UNDEC(*cp++);
3474
3439
  jsuint oldIndex = 0;
3475
3440
  jsuint c = 0;
@@ -3489,12 +3454,14 @@ js_CheckForStringIndex(jsid id, const jschar *cp, const jschar *end,
3489
3454
  */
3490
3455
  if (cp != end || (negative && index == 0))
3491
3456
  return id;
3457
+
3492
3458
  if (oldIndex < JSVAL_INT_MAX / 10 ||
3493
3459
  (oldIndex == JSVAL_INT_MAX / 10 && c <= (JSVAL_INT_MAX % 10))) {
3494
3460
  if (negative)
3495
3461
  index = 0 - index;
3496
3462
  id = INT_TO_JSID((jsint)index);
3497
3463
  }
3464
+
3498
3465
  return id;
3499
3466
  }
3500
3467
 
@@ -3511,13 +3478,13 @@ PurgeProtoChain(JSContext *cx, JSObject *obj, jsid id)
3511
3478
  }
3512
3479
  JS_LOCK_OBJ(cx, obj);
3513
3480
  scope = OBJ_SCOPE(obj);
3514
- sprop = SCOPE_GET_PROPERTY(scope, id);
3481
+ sprop = scope->lookup(id);
3515
3482
  if (sprop) {
3516
3483
  PCMETER(JS_PROPERTY_CACHE(cx).pcpurges++);
3517
- js_MakeScopeShapeUnique(cx, scope);
3484
+ scope->shadowingShapeChange(cx, sprop);
3518
3485
  JS_UNLOCK_SCOPE(cx, scope);
3519
3486
 
3520
- if (!STOBJ_GET_PARENT(scope->object)) {
3487
+ if (!STOBJ_GET_PARENT(obj)) {
3521
3488
  /*
3522
3489
  * All scope chains end in a global object, so this will change
3523
3490
  * the global shape. jstracer.cpp assumes that the global shape
@@ -3527,7 +3494,7 @@ PurgeProtoChain(JSContext *cx, JSObject *obj, jsid id)
3527
3494
  }
3528
3495
  return JS_TRUE;
3529
3496
  }
3530
- obj = LOCKED_OBJ_GET_PROTO(scope->object);
3497
+ obj = obj->getProto();
3531
3498
  JS_UNLOCK_SCOPE(cx, scope);
3532
3499
  }
3533
3500
  return JS_FALSE;
@@ -3536,8 +3503,8 @@ PurgeProtoChain(JSContext *cx, JSObject *obj, jsid id)
3536
3503
  void
3537
3504
  js_PurgeScopeChainHelper(JSContext *cx, JSObject *obj, jsid id)
3538
3505
  {
3539
- JS_ASSERT(OBJ_IS_DELEGATE(cx, obj));
3540
- PurgeProtoChain(cx, OBJ_GET_PROTO(cx, obj), id);
3506
+ JS_ASSERT(obj->isDelegate());
3507
+ PurgeProtoChain(cx, obj->getProto(), id);
3541
3508
 
3542
3509
  /*
3543
3510
  * We must purge the scope chain only for Call objects as they are the only
@@ -3574,9 +3541,8 @@ js_AddNativeProperty(JSContext *cx, JSObject *obj, jsid id,
3574
3541
  sprop = NULL;
3575
3542
  } else {
3576
3543
  /* Convert string indices to integers if appropriate. */
3577
- CHECK_FOR_STRING_INDEX(id);
3578
- sprop = js_AddScopeProperty(cx, scope, id, getter, setter, slot, attrs,
3579
- flags, shortid);
3544
+ id = js_CheckForStringIndex(id);
3545
+ sprop = scope->add(cx, id, getter, setter, slot, attrs, flags, shortid);
3580
3546
  }
3581
3547
  JS_UNLOCK_OBJ(cx, obj);
3582
3548
  return sprop;
@@ -3594,8 +3560,7 @@ js_ChangeNativePropertyAttrs(JSContext *cx, JSObject *obj,
3594
3560
  if (!scope) {
3595
3561
  sprop = NULL;
3596
3562
  } else {
3597
- sprop = js_ChangeScopePropertyAttrs(cx, scope, sprop, attrs, mask,
3598
- getter, setter);
3563
+ sprop = scope->change(cx, sprop, attrs, mask, getter, setter);
3599
3564
  }
3600
3565
  JS_UNLOCK_OBJ(cx, obj);
3601
3566
  return sprop;
@@ -3603,11 +3568,10 @@ js_ChangeNativePropertyAttrs(JSContext *cx, JSObject *obj,
3603
3568
 
3604
3569
  JSBool
3605
3570
  js_DefineProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3606
- JSPropertyOp getter, JSPropertyOp setter, uintN attrs,
3607
- JSProperty **propp)
3571
+ JSPropertyOp getter, JSPropertyOp setter, uintN attrs)
3608
3572
  {
3609
3573
  return js_DefineNativeProperty(cx, obj, id, value, getter, setter, attrs,
3610
- 0, 0, propp);
3574
+ 0, 0, NULL);
3611
3575
  }
3612
3576
 
3613
3577
  /*
@@ -3628,7 +3592,7 @@ js_DefineProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3628
3592
  } \
3629
3593
  if (*(vp) != nominal_) { \
3630
3594
  if (SPROP_HAS_VALID_SLOT(sprop, scope)) \
3631
- LOCKED_OBJ_WRITE_BARRIER(cx, obj, (sprop)->slot, *(vp)); \
3595
+ LOCKED_OBJ_WRITE_SLOT(cx, obj, (sprop)->slot, *(vp)); \
3632
3596
  } \
3633
3597
  } \
3634
3598
  JS_END_MACRO
@@ -3642,13 +3606,13 @@ js_DefineNativeProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3642
3606
  JSClass *clasp;
3643
3607
  JSScope *scope;
3644
3608
  JSScopeProperty *sprop;
3645
- bool added;
3609
+ JSBool added;
3646
3610
 
3647
3611
  JS_ASSERT((defineHow & ~(JSDNP_CACHE_RESULT | JSDNP_DONT_PURGE)) == 0);
3648
3612
  js_LeaveTraceIfGlobalObject(cx, obj);
3649
3613
 
3650
3614
  /* Convert string indices to integers if appropriate. */
3651
- CHECK_FOR_STRING_INDEX(id);
3615
+ id = js_CheckForStringIndex(id);
3652
3616
 
3653
3617
  #if JS_HAS_GETTER_SETTER
3654
3618
  /*
@@ -3675,21 +3639,21 @@ js_DefineNativeProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3675
3639
  if (sprop &&
3676
3640
  pobj == obj &&
3677
3641
  (sprop->attrs & (JSPROP_GETTER | JSPROP_SETTER))) {
3678
- sprop = js_ChangeScopePropertyAttrs(cx, OBJ_SCOPE(obj), sprop,
3679
- attrs, sprop->attrs,
3680
- (attrs & JSPROP_GETTER)
3681
- ? getter
3682
- : sprop->getter,
3683
- (attrs & JSPROP_SETTER)
3684
- ? setter
3685
- : sprop->setter);
3642
+ sprop = OBJ_SCOPE(obj)->change(cx, sprop, attrs,
3643
+ JSPROP_GETTER | JSPROP_SETTER,
3644
+ (attrs & JSPROP_GETTER)
3645
+ ? getter
3646
+ : sprop->getter,
3647
+ (attrs & JSPROP_SETTER)
3648
+ ? setter
3649
+ : sprop->setter);
3686
3650
 
3687
3651
  /* NB: obj == pobj, so we can share unlock code at the bottom. */
3688
3652
  if (!sprop)
3689
3653
  goto error;
3690
3654
  } else if (prop) {
3691
- /* NB: call OBJ_DROP_PROPERTY, as pobj might not be native. */
3692
- OBJ_DROP_PROPERTY(cx, pobj, prop);
3655
+ /* NB: call JSObject::dropProperty, as pobj might not be native. */
3656
+ pobj->dropProperty(cx, prop);
3693
3657
  prop = NULL;
3694
3658
  sprop = NULL;
3695
3659
  }
@@ -3709,14 +3673,14 @@ js_DefineNativeProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3709
3673
  * prototype object. See the comment in jscntxt.h before protoHazardShape's
3710
3674
  * member declaration.
3711
3675
  */
3712
- if (OBJ_IS_DELEGATE(cx, obj) && (attrs & (JSPROP_READONLY | JSPROP_SETTER)))
3676
+ if (obj->isDelegate() && (attrs & (JSPROP_READONLY | JSPROP_SETTER)))
3713
3677
  cx->runtime->protoHazardShape = js_GenerateShape(cx, false);
3714
3678
 
3715
3679
  /* Lock if object locking is required by this implementation. */
3716
3680
  JS_LOCK_OBJ(cx, obj);
3717
3681
 
3718
3682
  /* Use the object's class getter and setter by default. */
3719
- clasp = LOCKED_OBJ_GET_CLASS(obj);
3683
+ clasp = obj->getClass();
3720
3684
  if (!getter)
3721
3685
  getter = clasp->getProperty;
3722
3686
  if (!setter)
@@ -3732,21 +3696,21 @@ js_DefineNativeProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
3732
3696
  /* Add a new property, or replace an existing one of the same id. */
3733
3697
  if (clasp->flags & JSCLASS_SHARE_ALL_PROPERTIES)
3734
3698
  attrs |= JSPROP_SHARED;
3735
- sprop = js_AddScopeProperty(cx, scope, id, getter, setter,
3736
- SPROP_INVALID_SLOT, attrs, flags,
3737
- shortid);
3699
+
3700
+ added = !scope->lookup(id);
3701
+ sprop = scope->add(cx, id, getter, setter, SPROP_INVALID_SLOT, attrs,
3702
+ flags, shortid);
3738
3703
  if (!sprop)
3739
3704
  goto error;
3740
- added = true;
3741
3705
  }
3742
3706
 
3743
3707
  /* Store value before calling addProperty, in case the latter GC's. */
3744
3708
  if (SPROP_HAS_VALID_SLOT(sprop, scope))
3745
- LOCKED_OBJ_WRITE_BARRIER(cx, obj, sprop->slot, value);
3709
+ LOCKED_OBJ_WRITE_SLOT(cx, obj, sprop->slot, value);
3746
3710
 
3747
3711
  /* XXXbe called with lock held */
3748
3712
  ADD_PROPERTY_HELPER(cx, clasp, obj, scope, sprop, &value,
3749
- js_RemoveScopeProperty(cx, scope, id);
3713
+ scope->remove(cx, id);
3750
3714
  goto error);
3751
3715
 
3752
3716
  if (defineHow & JSDNP_CACHE_RESULT) {
@@ -3794,23 +3758,18 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3794
3758
  JSBool ok;
3795
3759
 
3796
3760
  /* Convert string indices to integers if appropriate. */
3797
- CHECK_FOR_STRING_INDEX(id);
3761
+ id = js_CheckForStringIndex(id);
3798
3762
 
3799
3763
  /* Search scopes starting with obj and following the prototype link. */
3800
3764
  start = obj;
3801
3765
  for (protoIndex = 0; ; protoIndex++) {
3802
3766
  JS_LOCK_OBJ(cx, obj);
3803
3767
  scope = OBJ_SCOPE(obj);
3804
- if (scope->object == obj) {
3805
- sprop = SCOPE_GET_PROPERTY(scope, id);
3806
- } else {
3807
- /* Shared prototype scope: try resolve before lookup. */
3808
- sprop = NULL;
3809
- }
3768
+ sprop = scope->lookup(id);
3810
3769
 
3811
3770
  /* Try obj's class resolve hook if id was not found in obj's scope. */
3812
3771
  if (!sprop) {
3813
- clasp = LOCKED_OBJ_GET_CLASS(obj);
3772
+ clasp = obj->getClass();
3814
3773
  resolve = clasp->resolve;
3815
3774
  if (resolve != JS_ResolveStub) {
3816
3775
  /* Avoid recursion on (obj, id) already being resolved on cx. */
@@ -3840,7 +3799,7 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3840
3799
  if (clasp->flags & JSCLASS_NEW_RESOLVE) {
3841
3800
  newresolve = (JSNewResolveOp)resolve;
3842
3801
  if (flags == JSRESOLVE_INFER)
3843
- flags = InferFlags(cx, flags);
3802
+ flags = js_InferFlags(cx, flags);
3844
3803
  obj2 = (clasp->flags & JSCLASS_NEW_RESOLVE_GETS_START)
3845
3804
  ? start
3846
3805
  : NULL;
@@ -3869,7 +3828,7 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3869
3828
  if (!OBJ_IS_NATIVE(obj2)) {
3870
3829
  /* Whoops, newresolve handed back a foreign obj2. */
3871
3830
  JS_ASSERT(obj2 != obj);
3872
- ok = OBJ_LOOKUP_PROPERTY(cx, obj2, id, objp, propp);
3831
+ ok = obj2->lookupProperty(cx, id, objp, propp);
3873
3832
  if (!ok || *propp)
3874
3833
  goto cleanup;
3875
3834
  JS_LOCK_OBJ(cx, obj2);
@@ -3883,11 +3842,12 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3883
3842
  * "too bad!" case.
3884
3843
  */
3885
3844
  scope = OBJ_SCOPE(obj2);
3886
- if (scope->object == obj2)
3887
- sprop = SCOPE_GET_PROPERTY(scope, id);
3845
+ if (scope->owned())
3846
+ sprop = scope->lookup(id);
3888
3847
  }
3889
3848
  if (sprop) {
3890
- JS_ASSERT(obj2 == scope->object);
3849
+ JS_ASSERT(scope == OBJ_SCOPE(obj2));
3850
+ JS_ASSERT(scope->owned());
3891
3851
  obj = obj2;
3892
3852
  } else if (obj2 != obj) {
3893
3853
  if (OBJ_IS_NATIVE(obj2))
@@ -3907,8 +3867,8 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3907
3867
  JS_LOCK_OBJ(cx, obj);
3908
3868
  JS_ASSERT(OBJ_IS_NATIVE(obj));
3909
3869
  scope = OBJ_SCOPE(obj);
3910
- if (scope->object == obj)
3911
- sprop = SCOPE_GET_PROPERTY(scope, id);
3870
+ if (scope->owned())
3871
+ sprop = scope->lookup(id);
3912
3872
  }
3913
3873
 
3914
3874
  cleanup:
@@ -3923,21 +3883,34 @@ js_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, jsid id, uintN flags,
3923
3883
  if (sprop) {
3924
3884
  SCOPE_DEPTH_ACCUM(&cx->runtime->protoLookupDepthStats, protoIndex);
3925
3885
  JS_ASSERT(OBJ_SCOPE(obj) == scope);
3926
- *objp = scope->object; /* XXXbe hide in jsscope.[ch] */
3886
+ *objp = obj;
3927
3887
 
3928
3888
  *propp = (JSProperty *) sprop;
3929
3889
  return protoIndex;
3930
3890
  }
3931
3891
 
3932
- proto = LOCKED_OBJ_GET_PROTO(obj);
3892
+ proto = obj->getProto();
3933
3893
  JS_UNLOCK_OBJ(cx, obj);
3934
3894
  if (!proto)
3935
3895
  break;
3936
3896
  if (!OBJ_IS_NATIVE(proto)) {
3937
- if (!OBJ_LOOKUP_PROPERTY(cx, proto, id, objp, propp))
3897
+ if (!proto->lookupProperty(cx, id, objp, propp))
3938
3898
  return -1;
3939
3899
  return protoIndex + 1;
3940
3900
  }
3901
+
3902
+ /*
3903
+ * Correctness elsewhere (the property cache and JIT), not here in
3904
+ * particular, depends on all the objects on the prototype chain having
3905
+ * different scopes. This is just a convenient place to check.
3906
+ *
3907
+ * Cloned Block objects do in fact share their prototype's scope -- but
3908
+ * that is really just a memory-saving hack, safe because Blocks cannot
3909
+ * be on the prototype chain of other objects.
3910
+ */
3911
+ JS_ASSERT_IF(OBJ_GET_CLASS(cx, obj) != &js_BlockClass,
3912
+ OBJ_SCOPE(obj) != OBJ_SCOPE(proto));
3913
+
3941
3914
  obj = proto;
3942
3915
  }
3943
3916
 
@@ -3947,25 +3920,6 @@ out:
3947
3920
  return protoIndex;
3948
3921
  }
3949
3922
 
3950
- /*
3951
- * We cache name lookup results only for the global object or for native
3952
- * non-global objects without prototype or with prototype that never mutates,
3953
- * see bug 462734 and bug 487039.
3954
- */
3955
- static inline bool
3956
- IsCacheableNonGlobalScope(JSObject *obj)
3957
- {
3958
- JS_ASSERT(STOBJ_GET_PARENT(obj));
3959
-
3960
- JSClass *clasp = STOBJ_GET_CLASS(obj);
3961
- bool cacheable = (clasp == &js_CallClass ||
3962
- clasp == &js_BlockClass ||
3963
- clasp == &js_DeclEnvClass);
3964
-
3965
- JS_ASSERT_IF(cacheable, obj->map->ops->lookupProperty == js_LookupProperty);
3966
- return cacheable;
3967
- }
3968
-
3969
3923
  JSPropCacheEntry *
3970
3924
  js_FindPropertyHelper(JSContext *cx, jsid id, JSBool cacheResult,
3971
3925
  JSObject **objp, JSObject **pobjp, JSProperty **propp)
@@ -3984,7 +3938,7 @@ js_FindPropertyHelper(JSContext *cx, jsid id, JSBool cacheResult,
3984
3938
  parent = OBJ_GET_PARENT(cx, obj);
3985
3939
  for (scopeIndex = 0;
3986
3940
  parent
3987
- ? IsCacheableNonGlobalScope(obj)
3941
+ ? js_IsCacheableNonGlobalScope(obj)
3988
3942
  : obj->map->ops->lookupProperty == js_LookupProperty;
3989
3943
  ++scopeIndex) {
3990
3944
  protoIndex =
@@ -4004,9 +3958,8 @@ js_FindPropertyHelper(JSContext *cx, jsid id, JSBool cacheResult,
4004
3958
  * Block instances on the scope chain are immutable and
4005
3959
  * always share their scope with compile-time prototypes.
4006
3960
  */
4007
- JS_ASSERT(pobj == OBJ_GET_PROTO(cx, obj));
4008
- JS_ASSERT(OBJ_SCOPE(obj)->object == pobj);
4009
- JS_ASSERT(protoIndex == 1);
3961
+ JS_ASSERT(pobj == obj);
3962
+ JS_ASSERT(protoIndex == 0);
4010
3963
  } else {
4011
3964
  /* Call and DeclEnvClass objects have no prototypes. */
4012
3965
  JS_ASSERT(!OBJ_GET_PROTO(cx, obj));
@@ -4032,7 +3985,7 @@ js_FindPropertyHelper(JSContext *cx, jsid id, JSBool cacheResult,
4032
3985
  }
4033
3986
 
4034
3987
  for (;;) {
4035
- if (!OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
3988
+ if (!obj->lookupProperty(cx, id, &pobj, &prop))
4036
3989
  return NULL;
4037
3990
  if (prop) {
4038
3991
  PCMETER(JS_PROPERTY_CACHE(cx).nofills++);
@@ -4041,7 +3994,7 @@ js_FindPropertyHelper(JSContext *cx, jsid id, JSBool cacheResult,
4041
3994
 
4042
3995
  /*
4043
3996
  * We conservatively assume that a resolve hook could mutate the scope
4044
- * chain during OBJ_LOOKUP_PROPERTY. So we read parent here again.
3997
+ * chain during JSObject::lookupProperty. So we read parent here again.
4045
3998
  */
4046
3999
  parent = OBJ_GET_PARENT(cx, obj);
4047
4000
  if (!parent) {
@@ -4084,7 +4037,7 @@ js_FindIdentifierBase(JSContext *cx, JSObject *scopeChain, jsid id)
4084
4037
  * farther checks or lookups. For details see the JSOP_BINDNAME case of
4085
4038
  * js_Interpret.
4086
4039
  */
4087
- for (int scopeIndex = 0; IsCacheableNonGlobalScope(obj); scopeIndex++) {
4040
+ for (int scopeIndex = 0; js_IsCacheableNonGlobalScope(obj); scopeIndex++) {
4088
4041
  JSObject *pobj;
4089
4042
  JSProperty *prop;
4090
4043
  int protoIndex = js_LookupPropertyWithFlags(cx, obj, id,
@@ -4116,17 +4069,17 @@ js_FindIdentifierBase(JSContext *cx, JSObject *scopeChain, jsid id)
4116
4069
  do {
4117
4070
  JSObject *pobj;
4118
4071
  JSProperty *prop;
4119
- if (!OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
4072
+ if (!obj->lookupProperty(cx, id, &pobj, &prop))
4120
4073
  return NULL;
4121
4074
  if (prop) {
4122
- OBJ_DROP_PROPERTY(cx, pobj, prop);
4075
+ pobj->dropProperty(cx, prop);
4123
4076
  break;
4124
4077
  }
4125
4078
 
4126
4079
  /*
4127
4080
  * We conservatively assume that a resolve hook could mutate the scope
4128
- * chain during OBJ_LOOKUP_PROPERTY. So we must check if parent is not
4129
- * null here even if it wasn't before the lookup.
4081
+ * chain during JSObject::lookupProperty. So we must check if parent is
4082
+ * not null here even if it wasn't before the lookup.
4130
4083
  */
4131
4084
  JSObject *parent = OBJ_GET_PARENT(cx, obj);
4132
4085
  if (!parent)
@@ -4151,7 +4104,6 @@ js_NativeGet(JSContext *cx, JSObject *obj, JSObject *pobj,
4151
4104
  JS_ASSERT(OBJ_IS_NATIVE(pobj));
4152
4105
  JS_ASSERT(JS_IS_OBJ_LOCKED(cx, pobj));
4153
4106
  scope = OBJ_SCOPE(pobj);
4154
- JS_ASSERT(scope->object == pobj);
4155
4107
 
4156
4108
  slot = sprop->slot;
4157
4109
  *vp = (slot != SPROP_INVALID_SLOT)
@@ -4171,10 +4123,9 @@ js_NativeGet(JSContext *cx, JSObject *obj, JSObject *pobj,
4171
4123
  return JS_FALSE;
4172
4124
 
4173
4125
  JS_LOCK_SCOPE(cx, scope);
4174
- JS_ASSERT(scope->object == pobj);
4175
4126
  if (SLOT_IN_SCOPE(slot, scope) &&
4176
4127
  (JS_LIKELY(cx->runtime->propertyRemovals == sample) ||
4177
- SCOPE_GET_PROPERTY(scope, sprop->id) == sprop)) {
4128
+ scope->has(sprop))) {
4178
4129
  LOCKED_OBJ_SET_SLOT(pobj, slot, *vp);
4179
4130
  }
4180
4131
 
@@ -4195,7 +4146,6 @@ js_NativeSet(JSContext *cx, JSObject *obj, JSScopeProperty *sprop, jsval *vp)
4195
4146
  JS_ASSERT(OBJ_IS_NATIVE(obj));
4196
4147
  JS_ASSERT(JS_IS_OBJ_LOCKED(cx, obj));
4197
4148
  scope = OBJ_SCOPE(obj);
4198
- JS_ASSERT(scope->object == obj || (sprop->attrs & JSPROP_SHARED));
4199
4149
 
4200
4150
  slot = sprop->slot;
4201
4151
  if (slot != SPROP_INVALID_SLOT) {
@@ -4209,15 +4159,9 @@ js_NativeSet(JSContext *cx, JSObject *obj, JSScopeProperty *sprop, jsval *vp)
4209
4159
  * Allow API consumers to create shared properties with stub setters.
4210
4160
  * Such properties lack value storage, so setting them is like writing
4211
4161
  * to /dev/null.
4212
- *
4213
- * But we can't short-circuit if there's a scripted getter or setter
4214
- * since we might need to throw. In that case, we let SPROP_SET
4215
- * decide whether to throw an exception. See bug 478047.
4216
4162
  */
4217
- if (!(sprop->attrs & JSPROP_GETTER) && SPROP_HAS_STUB_SETTER(sprop)) {
4218
- JS_ASSERT(!(sprop->attrs & JSPROP_SETTER));
4163
+ if (SPROP_HAS_STUB_SETTER(sprop))
4219
4164
  return JS_TRUE;
4220
- }
4221
4165
  }
4222
4166
 
4223
4167
  sample = cx->runtime->propertyRemovals;
@@ -4229,12 +4173,11 @@ js_NativeSet(JSContext *cx, JSObject *obj, JSScopeProperty *sprop, jsval *vp)
4229
4173
  return JS_FALSE;
4230
4174
 
4231
4175
  JS_LOCK_SCOPE(cx, scope);
4232
- JS_ASSERT(scope->object == obj || (sprop->attrs & JSPROP_SHARED));
4233
4176
  if (SLOT_IN_SCOPE(slot, scope) &&
4234
4177
  (JS_LIKELY(cx->runtime->propertyRemovals == sample) ||
4235
- SCOPE_GET_PROPERTY(scope, sprop->id) == sprop)) {
4178
+ scope->has(sprop))) {
4236
4179
  set_slot:
4237
- LOCKED_OBJ_WRITE_BARRIER(cx, obj, slot, *vp);
4180
+ LOCKED_OBJ_WRITE_SLOT(cx, obj, slot, *vp);
4238
4181
  }
4239
4182
 
4240
4183
  return JS_TRUE;
@@ -4251,7 +4194,7 @@ js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4251
4194
 
4252
4195
  JS_ASSERT_IF(cacheResult, !JS_ON_TRACE(cx));
4253
4196
  /* Convert string indices to integers if appropriate. */
4254
- CHECK_FOR_STRING_INDEX(id);
4197
+ id = js_CheckForStringIndex(id);
4255
4198
 
4256
4199
  aobj = js_GetProtoIfDenseArray(cx, obj);
4257
4200
  protoIndex = js_LookupPropertyWithFlags(cx, aobj, id, cx->resolveFlags,
@@ -4284,7 +4227,8 @@ js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4284
4227
  flags = JSREPORT_ERROR;
4285
4228
  } else {
4286
4229
  if (!JS_HAS_STRICT_OPTION(cx) ||
4287
- (op != JSOP_GETPROP && op != JSOP_GETELEM)) {
4230
+ (op != JSOP_GETPROP && op != JSOP_GETELEM) ||
4231
+ js_CurrentPCIsInImacro(cx)) {
4288
4232
  return JS_TRUE;
4289
4233
  }
4290
4234
 
@@ -4319,8 +4263,8 @@ js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4319
4263
  }
4320
4264
 
4321
4265
  if (!OBJ_IS_NATIVE(obj2)) {
4322
- OBJ_DROP_PROPERTY(cx, obj2, prop);
4323
- return OBJ_GET_PROPERTY(cx, obj2, id, vp);
4266
+ obj2->dropProperty(cx, prop);
4267
+ return obj2->getProperty(cx, id, vp);
4324
4268
  }
4325
4269
 
4326
4270
  sprop = (JSScopeProperty *) prop;
@@ -4347,6 +4291,8 @@ JSBool
4347
4291
  js_GetMethod(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4348
4292
  jsval *vp)
4349
4293
  {
4294
+ JSAutoResolveFlags rf(cx, JSRESOLVE_QUALIFIED);
4295
+
4350
4296
  if (obj->map->ops == &js_ObjectOps ||
4351
4297
  obj->map->ops->getProperty == js_GetProperty) {
4352
4298
  return js_GetPropertyHelper(cx, obj, id, cacheResult, vp);
@@ -4356,7 +4302,7 @@ js_GetMethod(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4356
4302
  if (OBJECT_IS_XML(cx, obj))
4357
4303
  return js_GetXMLMethod(cx, obj, id, vp);
4358
4304
  #endif
4359
- return OBJ_GET_PROPERTY(cx, obj, id, vp);
4305
+ return obj->getProperty(cx, id, vp);
4360
4306
  }
4361
4307
 
4362
4308
  JS_FRIEND_API(JSBool)
@@ -4403,13 +4349,13 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4403
4349
  JS_ASSERT_NOT_ON_TRACE(cx);
4404
4350
 
4405
4351
  /* Convert string indices to integers if appropriate. */
4406
- CHECK_FOR_STRING_INDEX(id);
4352
+ id = js_CheckForStringIndex(id);
4407
4353
 
4408
4354
  /*
4409
4355
  * We peek at OBJ_SCOPE(obj) without locking obj. Any race means a failure
4410
4356
  * to seal before sharing, which is inherently ambiguous.
4411
4357
  */
4412
- if (SCOPE_IS_SEALED(OBJ_SCOPE(obj)) && OBJ_SCOPE(obj)->object == obj) {
4358
+ if (OBJ_SCOPE(obj)->sealed() && OBJ_SCOPE(obj)->object == obj) {
4413
4359
  flags = JSREPORT_ERROR;
4414
4360
  goto read_only_error;
4415
4361
  }
@@ -4420,7 +4366,7 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4420
4366
  return JS_FALSE;
4421
4367
  if (prop) {
4422
4368
  if (!OBJ_IS_NATIVE(pobj)) {
4423
- OBJ_DROP_PROPERTY(cx, pobj, prop);
4369
+ pobj->dropProperty(cx, prop);
4424
4370
  prop = NULL;
4425
4371
  }
4426
4372
  } else {
@@ -4436,9 +4382,9 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4436
4382
  * Now either sprop is null, meaning id was not found in obj or one of its
4437
4383
  * prototypes; or sprop is non-null, meaning id was found in pobj's scope.
4438
4384
  * If JS_THREADSAFE and sprop is non-null, then scope is locked, and sprop
4439
- * is held: we must OBJ_DROP_PROPERTY or JS_UNLOCK_SCOPE before we return
4440
- * (the two are equivalent for native objects, but we use JS_UNLOCK_SCOPE
4441
- * because it is cheaper).
4385
+ * is held: we must JSObject::dropProperty or JS_UNLOCK_SCOPE before we
4386
+ * return (the two are equivalent for native objects, but we use
4387
+ * JS_UNLOCK_SCOPE because it is cheaper).
4442
4388
  */
4443
4389
  attrs = JSPROP_ENUMERATE;
4444
4390
  flags = 0;
@@ -4457,7 +4403,7 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4457
4403
 
4458
4404
  attrs = sprop->attrs;
4459
4405
  if ((attrs & JSPROP_READONLY) ||
4460
- (SCOPE_IS_SEALED(scope) && (attrs & JSPROP_SHARED))) {
4406
+ (scope->sealed() && (attrs & JSPROP_SHARED))) {
4461
4407
  JS_UNLOCK_SCOPE(cx, scope);
4462
4408
 
4463
4409
  /*
@@ -4476,8 +4422,10 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4476
4422
  if (cacheResult)
4477
4423
  TRACE_2(SetPropHit, JS_NO_PROP_CACHE_FILL, sprop);
4478
4424
  return JS_TRUE;
4425
+ #ifdef JS_TRACER
4479
4426
  error: // TRACE_2 jumps here in case of error.
4480
4427
  return JS_FALSE;
4428
+ #endif
4481
4429
  }
4482
4430
 
4483
4431
  /* Strict mode: report a read-only strict warning. */
@@ -4558,8 +4506,8 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4558
4506
  }
4559
4507
  if (clasp->flags & JSCLASS_SHARE_ALL_PROPERTIES)
4560
4508
  attrs |= JSPROP_SHARED;
4561
- sprop = js_AddScopeProperty(cx, scope, id, getter, setter,
4562
- SPROP_INVALID_SLOT, attrs, flags, shortid);
4509
+ sprop = scope->add(cx, id, getter, setter, SPROP_INVALID_SLOT, attrs,
4510
+ flags, shortid);
4563
4511
  if (!sprop) {
4564
4512
  JS_UNLOCK_SCOPE(cx, scope);
4565
4513
  return JS_FALSE;
@@ -4575,7 +4523,7 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, JSBool cacheResult,
4575
4523
 
4576
4524
  /* XXXbe called with obj locked */
4577
4525
  ADD_PROPERTY_HELPER(cx, clasp, obj, scope, sprop, vp,
4578
- js_RemoveScopeProperty(cx, scope, id);
4526
+ scope->remove(cx, id);
4579
4527
  JS_UNLOCK_SCOPE(cx, scope);
4580
4528
  return JS_FALSE);
4581
4529
  added = true;
@@ -4621,15 +4569,15 @@ js_GetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,
4621
4569
  return JS_TRUE;
4622
4570
  }
4623
4571
  if (!OBJ_IS_NATIVE(obj)) {
4624
- ok = OBJ_GET_ATTRIBUTES(cx, obj, id, prop, attrsp);
4625
- OBJ_DROP_PROPERTY(cx, obj, prop);
4572
+ ok = obj->getAttributes(cx, id, prop, attrsp);
4573
+ obj->dropProperty(cx, prop);
4626
4574
  return ok;
4627
4575
  }
4628
4576
  }
4629
4577
  sprop = (JSScopeProperty *)prop;
4630
4578
  *attrsp = sprop->attrs;
4631
4579
  if (noprop)
4632
- OBJ_DROP_PROPERTY(cx, obj, prop);
4580
+ obj->dropProperty(cx, prop);
4633
4581
  return JS_TRUE;
4634
4582
  }
4635
4583
 
@@ -4647,8 +4595,8 @@ js_SetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,
4647
4595
  if (!prop)
4648
4596
  return JS_TRUE;
4649
4597
  if (!OBJ_IS_NATIVE(obj)) {
4650
- ok = OBJ_SET_ATTRIBUTES(cx, obj, id, prop, attrsp);
4651
- OBJ_DROP_PROPERTY(cx, obj, prop);
4598
+ ok = obj->setAttributes(cx, id, prop, attrsp);
4599
+ obj->dropProperty(cx, prop);
4652
4600
  return ok;
4653
4601
  }
4654
4602
  }
@@ -4656,7 +4604,7 @@ js_SetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,
4656
4604
  sprop = js_ChangeNativePropertyAttrs(cx, obj, sprop, *attrsp, 0,
4657
4605
  sprop->getter, sprop->setter);
4658
4606
  if (noprop)
4659
- OBJ_DROP_PROPERTY(cx, obj, prop);
4607
+ obj->dropProperty(cx, prop);
4660
4608
  return (sprop != NULL);
4661
4609
  }
4662
4610
 
@@ -4672,7 +4620,7 @@ js_DeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
4672
4620
  *rval = JSVAL_TRUE;
4673
4621
 
4674
4622
  /* Convert string indices to integers if appropriate. */
4675
- CHECK_FOR_STRING_INDEX(id);
4623
+ id = js_CheckForStringIndex(id);
4676
4624
 
4677
4625
  if (!js_LookupProperty(cx, obj, id, &proto, &prop))
4678
4626
  return JS_FALSE;
@@ -4689,7 +4637,7 @@ js_DeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
4689
4637
  if (SPROP_IS_SHARED_PERMANENT(sprop))
4690
4638
  *rval = JSVAL_FALSE;
4691
4639
  }
4692
- OBJ_DROP_PROPERTY(cx, proto, prop);
4640
+ proto->dropProperty(cx, prop);
4693
4641
  if (*rval == JSVAL_FALSE)
4694
4642
  return JS_TRUE;
4695
4643
  }
@@ -4705,15 +4653,14 @@ js_DeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
4705
4653
 
4706
4654
  sprop = (JSScopeProperty *)prop;
4707
4655
  if (sprop->attrs & JSPROP_PERMANENT) {
4708
- OBJ_DROP_PROPERTY(cx, obj, prop);
4656
+ obj->dropProperty(cx, prop);
4709
4657
  *rval = JSVAL_FALSE;
4710
4658
  return JS_TRUE;
4711
4659
  }
4712
4660
 
4713
4661
  /* XXXbe called with obj locked */
4714
- if (!LOCKED_OBJ_GET_CLASS(obj)->delProperty(cx, obj, SPROP_USERID(sprop),
4715
- rval)) {
4716
- OBJ_DROP_PROPERTY(cx, obj, prop);
4662
+ if (!obj->getClass()->delProperty(cx, obj, SPROP_USERID(sprop), rval)) {
4663
+ obj->dropProperty(cx, prop);
4717
4664
  return JS_FALSE;
4718
4665
  }
4719
4666
 
@@ -4721,8 +4668,8 @@ js_DeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
4721
4668
  if (SPROP_HAS_VALID_SLOT(sprop, scope))
4722
4669
  GC_POKE(cx, LOCKED_OBJ_GET_SLOT(obj, sprop->slot));
4723
4670
 
4724
- ok = js_RemoveScopeProperty(cx, scope, id);
4725
- OBJ_DROP_PROPERTY(cx, obj, prop);
4671
+ ok = scope->remove(cx, id);
4672
+ obj->dropProperty(cx, prop);
4726
4673
  return ok;
4727
4674
  }
4728
4675
 
@@ -4735,6 +4682,49 @@ js_DefaultValue(JSContext *cx, JSObject *obj, JSType hint, jsval *vp)
4735
4682
  v = save = OBJECT_TO_JSVAL(obj);
4736
4683
  switch (hint) {
4737
4684
  case JSTYPE_STRING:
4685
+ /*
4686
+ * Optimize for String objects with standard toString methods. Support
4687
+ * new String(...) instances whether mutated to have their own scope or
4688
+ * not, as well as direct String.prototype references.
4689
+ */
4690
+ if (OBJ_GET_CLASS(cx, obj) == &js_StringClass) {
4691
+ jsid toStringId = ATOM_TO_JSID(cx->runtime->atomState.toStringAtom);
4692
+
4693
+ JS_LOCK_OBJ(cx, obj);
4694
+ JSScope *scope = OBJ_SCOPE(obj);
4695
+ JSScopeProperty *sprop = scope->lookup(toStringId);
4696
+ JSObject *pobj = obj;
4697
+
4698
+ if (!sprop) {
4699
+ pobj = obj->getProto();
4700
+
4701
+ if (pobj && OBJ_GET_CLASS(cx, pobj) == &js_StringClass) {
4702
+ JS_UNLOCK_SCOPE(cx, scope);
4703
+ JS_LOCK_OBJ(cx, pobj);
4704
+ scope = OBJ_SCOPE(pobj);
4705
+ sprop = scope->lookup(toStringId);
4706
+ }
4707
+ }
4708
+
4709
+ if (sprop &&
4710
+ SPROP_HAS_STUB_GETTER(sprop) &&
4711
+ SPROP_HAS_VALID_SLOT(sprop, scope)) {
4712
+ jsval fval = LOCKED_OBJ_GET_SLOT(pobj, sprop->slot);
4713
+
4714
+ if (VALUE_IS_FUNCTION(cx, fval)) {
4715
+ JSObject *funobj = JSVAL_TO_OBJECT(fval);
4716
+ JSFunction *fun = GET_FUNCTION_PRIVATE(cx, funobj);
4717
+
4718
+ if (FUN_FAST_NATIVE(fun) == js_str_toString) {
4719
+ JS_UNLOCK_SCOPE(cx, scope);
4720
+ *vp = obj->fslots[JSSLOT_PRIMITIVE_THIS];
4721
+ return JS_TRUE;
4722
+ }
4723
+ }
4724
+ }
4725
+ JS_UNLOCK_SCOPE(cx, scope);
4726
+ }
4727
+
4738
4728
  /*
4739
4729
  * Propagate the exception if js_TryMethod finds an appropriate
4740
4730
  * method, and calling that method returned failure.
@@ -4795,69 +4785,81 @@ out:
4795
4785
  * in the object. Instead for the empty enumerator the code uses JSVAL_ZERO as
4796
4786
  * the enumeration state.
4797
4787
  *
4798
- * JSRuntime.nativeEnumCache caches the enumerators using scope's shape to
4788
+ * JSThreadData.nativeEnumCache caches the enumerators using scope's shape to
4799
4789
  * avoid repeated scanning of scopes for enumerable properties. The cache
4800
4790
  * entry is either JSNativeEnumerator* or, for the empty enumerator, the shape
4801
4791
  * value itself. The latter is stored as (shape << 1) | 1 to ensure that it is
4802
4792
  * always different from JSNativeEnumerator* values.
4793
+ *
4794
+ * We cache the enumerators in the JSENUMERATE_INIT case of js_Enumerate, not
4795
+ * during JSENUMERATE_DESTROY. The GC can invoke the latter case during the
4796
+ * finalization when JSNativeEnumerator contains finalized ids and the
4797
+ * enumerator must be freed.
4803
4798
  */
4804
4799
  struct JSNativeEnumerator {
4805
4800
  /*
4806
4801
  * The index into the ids array. It runs from the length down to 1 when
4807
4802
  * the enumerator is running. It is 0 when the enumerator is finished and
4808
- * can be reused on a cache hit. Its type is jsword, not uint32, for
4809
- * compatibility with js_CompareAndSwap.
4810
- */
4811
- jsword cursor;
4812
-
4803
+ * can be reused on a cache hit.
4804
+ */
4805
+ uint32 cursor;
4813
4806
  uint32 length; /* length of ids array */
4814
4807
  uint32 shape; /* "shape" number -- see jsscope.h */
4815
- JSNativeEnumerator *next; /* list linking */
4816
4808
  jsid ids[1]; /* enumeration id array */
4809
+
4810
+ static inline size_t size(uint32 length) {
4811
+ JS_ASSERT(length != 0);
4812
+ return offsetof(JSNativeEnumerator, ids) +
4813
+ (size_t) length * sizeof(jsid);
4814
+ }
4815
+
4816
+ bool isFinished() const {
4817
+ return cursor == 0;
4818
+ }
4819
+
4820
+ void mark(JSTracer *trc) {
4821
+ JS_ASSERT(length >= 1);
4822
+ jsid *cursor = ids;
4823
+ jsid *end = ids + length;
4824
+ do {
4825
+ js_TraceId(trc, *cursor);
4826
+ } while (++cursor != end);
4827
+ }
4817
4828
  };
4818
4829
 
4819
4830
  /* The tagging of shape values requires one bit. */
4820
4831
  JS_STATIC_ASSERT((jsuword) SHAPE_OVERFLOW_BIT <=
4821
4832
  ((jsuword) 1 << (JS_BITS_PER_WORD - 1)));
4822
4833
 
4823
- static inline size_t
4824
- NativeEnumeratorSize(uint32 length)
4834
+ static void
4835
+ SetEnumeratorCache(JSContext *cx, jsuword *cachep, jsuword newcache)
4825
4836
  {
4826
- JS_ASSERT(length != 0);
4827
- return offsetof(JSNativeEnumerator, ids) + (size_t) length * sizeof(jsid);
4837
+ jsuword old = *cachep;
4838
+ *cachep = newcache;
4839
+ if (!(old & jsuword(1)) && old) {
4840
+ /* Free the cached enumerator unless it is running. */
4841
+ JSNativeEnumerator *ne = reinterpret_cast<JSNativeEnumerator *>(old);
4842
+ if (ne->isFinished())
4843
+ cx->free(ne);
4844
+ }
4828
4845
  }
4829
4846
 
4830
- /*
4831
- * This function is used to enumerate the properties of native JSObjects
4832
- * and those host objects that do not define a JSNewEnumerateOp-style iterator
4833
- * function.
4834
- */
4835
4847
  JSBool
4836
4848
  js_Enumerate(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
4837
4849
  jsval *statep, jsid *idp)
4838
4850
  {
4839
- JSClass *clasp;
4840
- JSEnumerateOp enumerate;
4841
- JSNativeEnumerator *ne;
4842
- uint32 length, shape;
4843
- size_t allocated;
4844
- JSScope *scope;
4845
- jsuword *cachep, oldcache;
4846
- JSScopeProperty *sprop;
4847
- jsid *ids;
4848
- jsword newcursor;
4849
-
4850
- clasp = OBJ_GET_CLASS(cx, obj);
4851
- enumerate = clasp->enumerate;
4851
+ /* Here cx is JSTracer when enum_op is JSENUMERATE_MARK. */
4852
+ JSClass *clasp = obj->getClass();
4853
+ JSEnumerateOp enumerate = clasp->enumerate;
4852
4854
  if (clasp->flags & JSCLASS_NEW_ENUMERATE) {
4853
4855
  JS_ASSERT(enumerate != JS_EnumerateStub);
4854
4856
  return ((JSNewEnumerateOp) enumerate)(cx, obj, enum_op, statep, idp);
4855
4857
  }
4856
4858
 
4857
4859
  switch (enum_op) {
4858
- case JSENUMERATE_INIT:
4860
+ case JSENUMERATE_INIT: {
4859
4861
  if (!enumerate(cx, obj))
4860
- return JS_FALSE;
4862
+ return false;
4861
4863
 
4862
4864
  /*
4863
4865
  * The set of all property ids is pre-computed when the iterator is
@@ -4865,196 +4867,181 @@ js_Enumerate(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
4865
4867
  * during the iteration.
4866
4868
  *
4867
4869
  * Use a do-while(0) loop to avoid too many nested ifs. If ne is null
4868
- * after the loop, it indicates an empty enumerator. If allocated is
4869
- * not zero after the loop, we add the newly allocated ne to the cache
4870
- * and runtime->nativeEnumerators list.
4870
+ * after the loop, it indicates an empty enumerator.
4871
4871
  */
4872
- ne = NULL;
4873
- length = 0;
4874
- allocated = (size_t) 0;
4875
- JS_LOCK_OBJ(cx, obj);
4876
- scope = OBJ_SCOPE(obj);
4872
+ JSNativeEnumerator *ne;
4873
+ uint32 length;
4877
4874
  do {
4878
- /*
4879
- * If this object shares a scope with its prototype, don't
4880
- * enumerate its properties. Otherwise they will be enumerated
4881
- * a second time when the prototype object is enumerated.
4882
- */
4883
- if (scope->object != obj) {
4884
- #ifdef __GNUC__
4885
- cachep = NULL; /* suppress bogus gcc warnings */
4886
- #endif
4887
- break;
4888
- }
4875
+ uint32 shape = OBJ_SHAPE(obj);
4889
4876
 
4890
4877
  ENUM_CACHE_METER(nativeEnumProbes);
4891
- shape = scope->shape;
4892
- JS_ASSERT(shape < SHAPE_OVERFLOW_BIT);
4893
- cachep = &cx->runtime->
4894
- nativeEnumCache[NATIVE_ENUM_CACHE_HASH(shape)];
4895
- oldcache = *cachep;
4878
+ jsuword *cachep = &JS_THREAD_DATA(cx)->
4879
+ nativeEnumCache[NATIVE_ENUM_CACHE_HASH(shape)];
4880
+ jsuword oldcache = *cachep;
4896
4881
  if (oldcache & (jsuword) 1) {
4897
- if ((uint32) (oldcache >> 1) == shape) {
4882
+ if (uint32(oldcache >> 1) == shape) {
4898
4883
  /* scope has a shape with no enumerable properties. */
4884
+ ne = NULL;
4885
+ length = 0;
4899
4886
  break;
4900
4887
  }
4901
- } else if (oldcache != (jsuword) 0) {
4902
- /*
4903
- * We can safely read ne->shape without taking the GC lock as
4904
- * ne is deleted only when running the GC and ne->shape is
4905
- * read-only after initialization.
4906
- */
4907
- ne = (JSNativeEnumerator *) *cachep;
4888
+ } else if (oldcache != jsuword(0)) {
4889
+ ne = reinterpret_cast<JSNativeEnumerator *>(oldcache);
4908
4890
  JS_ASSERT(ne->length >= 1);
4909
- if (ne->shape == shape) {
4910
- /*
4911
- * Check that ne is not running with another enumerator
4912
- * and, if so, reuse and mark it as running from now.
4913
- */
4891
+ if (ne->shape == shape && ne->isFinished()) {
4892
+ /* Mark ne as active. */
4893
+ ne->cursor = ne->length;
4914
4894
  length = ne->length;
4915
- if (js_CompareAndSwap(&ne->cursor, 0, length))
4916
- break;
4917
- length = 0;
4895
+ JS_ASSERT(!ne->isFinished());
4896
+ break;
4918
4897
  }
4919
- ne = NULL;
4920
4898
  }
4921
4899
  ENUM_CACHE_METER(nativeEnumMisses);
4922
4900
 
4901
+ JS_LOCK_OBJ(cx, obj);
4902
+
4923
4903
  /* Count all enumerable properties in object's scope. */
4924
- JS_ASSERT(length == 0);
4925
- for (sprop = SCOPE_LAST_PROP(scope); sprop; sprop = sprop->parent) {
4904
+ JSScope *scope = OBJ_SCOPE(obj);
4905
+ length = 0;
4906
+ for (JSScopeProperty *sprop = SCOPE_LAST_PROP(scope);
4907
+ sprop;
4908
+ sprop = sprop->parent) {
4926
4909
  if ((sprop->attrs & JSPROP_ENUMERATE) &&
4927
4910
  !(sprop->flags & SPROP_IS_ALIAS) &&
4928
- (!SCOPE_HAD_MIDDLE_DELETE(scope) ||
4929
- SCOPE_HAS_PROPERTY(scope, sprop))) {
4911
+ (!scope->hadMiddleDelete() || scope->has(sprop))) {
4930
4912
  length++;
4931
4913
  }
4932
4914
  }
4933
4915
  if (length == 0) {
4934
- /* cache the scope without enumerable properties. */
4935
- *cachep = ((jsuword) shape << 1) | (jsuword) 1;
4916
+ /*
4917
+ * Cache the scope without enumerable properties unless its
4918
+ * shape overflows, see bug 440834.
4919
+ */
4920
+ JS_UNLOCK_SCOPE(cx, scope);
4921
+ if (shape < SHAPE_OVERFLOW_BIT) {
4922
+ SetEnumeratorCache(cx, cachep,
4923
+ (jsuword(shape) << 1) | jsuword(1));
4924
+ }
4925
+ ne = NULL;
4936
4926
  break;
4937
4927
  }
4938
4928
 
4939
- allocated = NativeEnumeratorSize(length);
4940
- ne = (JSNativeEnumerator *) JS_malloc(cx, allocated);
4929
+ ne = (JSNativeEnumerator *)
4930
+ cx->mallocNoReport(JSNativeEnumerator::size(length));
4941
4931
  if (!ne) {
4932
+ /* Report the OOM error outside the lock. */
4942
4933
  JS_UNLOCK_SCOPE(cx, scope);
4943
- return JS_FALSE;
4934
+ JS_ReportOutOfMemory(cx);
4935
+ return false;
4944
4936
  }
4945
4937
  ne->cursor = length;
4946
4938
  ne->length = length;
4947
4939
  ne->shape = shape;
4948
- ids = ne->ids;
4949
- for (sprop = SCOPE_LAST_PROP(scope); sprop; sprop = sprop->parent) {
4940
+
4941
+ jsid *ids = ne->ids;
4942
+ for (JSScopeProperty *sprop = SCOPE_LAST_PROP(scope);
4943
+ sprop;
4944
+ sprop = sprop->parent) {
4950
4945
  if ((sprop->attrs & JSPROP_ENUMERATE) &&
4951
4946
  !(sprop->flags & SPROP_IS_ALIAS) &&
4952
- (!SCOPE_HAD_MIDDLE_DELETE(scope) ||
4953
- SCOPE_HAS_PROPERTY(scope, sprop))) {
4947
+ (!scope->hadMiddleDelete() || scope->has(sprop))) {
4954
4948
  JS_ASSERT(ids < ne->ids + length);
4955
4949
  *ids++ = sprop->id;
4956
4950
  }
4957
4951
  }
4958
4952
  JS_ASSERT(ids == ne->ids + length);
4953
+ JS_UNLOCK_SCOPE(cx, scope);
4954
+
4955
+ /*
4956
+ * Do not cache enumerators for objects with with a shape
4957
+ * that had overflowed, see bug 440834.
4958
+ */
4959
+ if (shape < SHAPE_OVERFLOW_BIT)
4960
+ SetEnumeratorCache(cx, cachep, reinterpret_cast<jsuword>(ne));
4959
4961
  } while (0);
4960
- JS_UNLOCK_SCOPE(cx, scope);
4961
4962
 
4962
4963
  if (!ne) {
4963
4964
  JS_ASSERT(length == 0);
4964
- JS_ASSERT(allocated == 0);
4965
4965
  *statep = JSVAL_ZERO;
4966
4966
  } else {
4967
4967
  JS_ASSERT(length != 0);
4968
- JS_ASSERT(ne->cursor == (jsword) length);
4969
- if (allocated != 0) {
4970
- JS_LOCK_GC(cx->runtime);
4971
- if (!js_AddAsGCBytes(cx, allocated)) {
4972
- /* js_AddAsGCBytes releases the GC lock on failures. */
4973
- JS_free(cx, ne);
4974
- return JS_FALSE;
4975
- }
4976
- ne->next = cx->runtime->nativeEnumerators;
4977
- cx->runtime->nativeEnumerators = ne;
4978
- JS_ASSERT(((jsuword) ne & (jsuword) 1) == (jsuword) 0);
4979
- *cachep = (jsuword) ne;
4980
- JS_UNLOCK_GC(cx->runtime);
4981
- }
4968
+ JS_ASSERT(ne->cursor == length);
4969
+ JS_ASSERT(!(reinterpret_cast<jsuword>(ne) & jsuword(1)));
4982
4970
  *statep = PRIVATE_TO_JSVAL(ne);
4983
4971
  }
4984
4972
  if (idp)
4985
4973
  *idp = INT_TO_JSVAL(length);
4986
4974
  break;
4975
+ }
4987
4976
 
4988
4977
  case JSENUMERATE_NEXT:
4989
- case JSENUMERATE_DESTROY:
4978
+ case JSENUMERATE_DESTROY: {
4990
4979
  if (*statep == JSVAL_ZERO) {
4991
4980
  *statep = JSVAL_NULL;
4992
4981
  break;
4993
4982
  }
4994
- ne = (JSNativeEnumerator *) JSVAL_TO_PRIVATE(*statep);
4983
+ JSNativeEnumerator *ne = (JSNativeEnumerator *)
4984
+ JSVAL_TO_PRIVATE(*statep);
4995
4985
  JS_ASSERT(ne->length >= 1);
4996
4986
  JS_ASSERT(ne->cursor >= 1);
4997
-
4998
- /*
4999
- * We must not access ne->cursor when we set it to zero as it means
5000
- * that ne is free and another thread can grab it from the cache. So
5001
- * we set the state to JSVAL_ZERO in the NEXT case to avoid touching
5002
- * ne->length again in the DESTROY case.
5003
- */
5004
4987
  if (enum_op == JSENUMERATE_NEXT) {
5005
- newcursor = ne->cursor - 1;
4988
+ uint32 newcursor = ne->cursor - 1;
5006
4989
  *idp = ne->ids[newcursor];
5007
- ne->cursor = newcursor;
5008
- if (newcursor == 0)
5009
- *statep = JSVAL_ZERO;
4990
+ if (newcursor != 0) {
4991
+ ne->cursor = newcursor;
4992
+ break;
4993
+ }
5010
4994
  } else {
5011
4995
  /* The enumerator has not iterated over all ids. */
4996
+ JS_ASSERT(enum_op == JSENUMERATE_DESTROY);
4997
+ }
4998
+ *statep = JSVAL_ZERO;
4999
+
5000
+ jsuword *cachep = &JS_THREAD_DATA(cx)->
5001
+ nativeEnumCache[NATIVE_ENUM_CACHE_HASH(ne->shape)];
5002
+ if (reinterpret_cast<jsuword>(ne) == *cachep) {
5003
+ /* Mark the cached iterator as available. */
5012
5004
  ne->cursor = 0;
5005
+ } else {
5006
+ cx->free(ne);
5013
5007
  }
5014
5008
  break;
5009
+ }
5015
5010
  }
5016
- return JS_TRUE;
5011
+ return true;
5017
5012
  }
5018
5013
 
5019
5014
  void
5020
- js_TraceNativeEnumerators(JSTracer *trc)
5015
+ js_MarkEnumeratorState(JSTracer *trc, JSObject *obj, jsval state)
5021
5016
  {
5022
- JSRuntime *rt;
5023
- JSNativeEnumerator **nep, *ne;
5024
- jsid *cursor, *end;
5017
+ if (JSVAL_IS_TRACEABLE(state)) {
5018
+ JS_CALL_TRACER(trc, JSVAL_TO_TRACEABLE(state),
5019
+ JSVAL_TRACE_KIND(state), "enumerator_value");
5020
+ } else if (obj->map->ops->enumerate == js_Enumerate &&
5021
+ !(obj->getClass()->flags & JSCLASS_NEW_ENUMERATE)) {
5022
+ /* Check if state stores JSNativeEnumerator. */
5023
+ JS_ASSERT(JSVAL_IS_INT(state) ||
5024
+ JSVAL_IS_NULL(state) ||
5025
+ JSVAL_IS_VOID(state));
5026
+ if (JSVAL_IS_INT(state) && state != JSVAL_ZERO)
5027
+ ((JSNativeEnumerator *) JSVAL_TO_PRIVATE(state))->mark(trc);
5028
+ }
5029
+ }
5030
+
5031
+ void
5032
+ js_PurgeCachedNativeEnumerators(JSContext *cx, JSThreadData *data)
5033
+ {
5034
+ jsuword *cachep = &data->nativeEnumCache[0];
5035
+ jsuword *end = cachep + JS_ARRAY_LENGTH(data->nativeEnumCache);
5036
+ for (; cachep != end; ++cachep)
5037
+ SetEnumeratorCache(cx, cachep, jsuword(0));
5025
5038
 
5026
- /*
5027
- * Purge native enumerators cached by shape id, which we are about to
5028
- * re-number completely when tracing is done for the GC.
5029
- */
5030
- rt = trc->context->runtime;
5031
- if (IS_GC_MARKING_TRACER(trc)) {
5032
- memset(&rt->nativeEnumCache, 0, sizeof rt->nativeEnumCache);
5033
5039
  #ifdef JS_DUMP_ENUM_CACHE_STATS
5034
- printf("nativeEnumCache hit rate %g%%\n",
5035
- 100.0 * (rt->nativeEnumProbes - rt->nativeEnumMisses) /
5036
- rt->nativeEnumProbes);
5040
+ printf("nativeEnumCache hit rate %g%%\n",
5041
+ 100.0 * (cx->runtime->nativeEnumProbes -
5042
+ cx->runtime->nativeEnumMisses) /
5043
+ cx->runtime->nativeEnumProbes);
5037
5044
  #endif
5038
- }
5039
-
5040
- nep = &rt->nativeEnumerators;
5041
- while ((ne = *nep) != NULL) {
5042
- JS_ASSERT(ne->length != 0);
5043
- if (ne->cursor != 0) {
5044
- /* Trace ids of the running enumerator. */
5045
- cursor = ne->ids;
5046
- end = cursor + ne->length;
5047
- do {
5048
- TRACE_ID(trc, *cursor);
5049
- } while (++cursor != end);
5050
- } else if (IS_GC_MARKING_TRACER(trc)) {
5051
- js_RemoveAsGCBytes(rt, NativeEnumeratorSize(ne->length));
5052
- *nep = ne->next;
5053
- JS_free(trc->context, ne);
5054
- continue;
5055
- }
5056
- nep = &ne->next;
5057
- }
5058
5045
  }
5059
5046
 
5060
5047
  JSBool
@@ -5086,7 +5073,7 @@ js_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
5086
5073
  break;
5087
5074
 
5088
5075
  default:
5089
- if (!OBJ_LOOKUP_PROPERTY(cx, obj, id, &pobj, &prop))
5076
+ if (!obj->lookupProperty(cx, id, &pobj, &prop))
5090
5077
  return JS_FALSE;
5091
5078
  if (!prop) {
5092
5079
  if (!writing)
@@ -5097,7 +5084,7 @@ js_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
5097
5084
  }
5098
5085
 
5099
5086
  if (!OBJ_IS_NATIVE(pobj)) {
5100
- OBJ_DROP_PROPERTY(cx, pobj, prop);
5087
+ pobj->dropProperty(cx, prop);
5101
5088
 
5102
5089
  /* Avoid diverging for non-natives that reuse js_CheckAccess. */
5103
5090
  if (pobj->map->ops->checkAccess == js_CheckAccess) {
@@ -5107,7 +5094,7 @@ js_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
5107
5094
  }
5108
5095
  break;
5109
5096
  }
5110
- return OBJ_CHECK_ACCESS(cx, pobj, id, mode, vp, attrsp);
5097
+ return pobj->checkAccess(cx, id, mode, vp, attrsp);
5111
5098
  }
5112
5099
 
5113
5100
  sprop = (JSScopeProperty *)prop;
@@ -5117,7 +5104,7 @@ js_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
5117
5104
  ? LOCKED_OBJ_GET_SLOT(pobj, sprop->slot)
5118
5105
  : JSVAL_VOID;
5119
5106
  }
5120
- OBJ_DROP_PROPERTY(cx, pobj, prop);
5107
+ pobj->dropProperty(cx, prop);
5121
5108
  }
5122
5109
 
5123
5110
  /*
@@ -5158,19 +5145,14 @@ GetCurrentExecutionContext(JSContext *cx, JSObject *obj, jsval *rval)
5158
5145
 
5159
5146
  while ((tmp = OBJ_GET_PARENT(cx, obj)) != NULL)
5160
5147
  obj = tmp;
5161
- if (!OBJ_GET_PROPERTY(cx, obj,
5162
- ATOM_TO_JSID(cx->runtime->atomState
5163
- .ExecutionContextAtom),
5164
- &xcval)) {
5148
+ if (!obj->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.ExecutionContextAtom), &xcval))
5165
5149
  return JS_FALSE;
5166
- }
5167
5150
  if (JSVAL_IS_PRIMITIVE(xcval)) {
5168
5151
  JS_ReportError(cx, "invalid ExecutionContext in global object");
5169
5152
  return JS_FALSE;
5170
5153
  }
5171
- if (!OBJ_GET_PROPERTY(cx, JSVAL_TO_OBJECT(xcval),
5172
- ATOM_TO_JSID(cx->runtime->atomState.currentAtom),
5173
- rval)) {
5154
+ if (!JSVAL_TO_OBJECT(xcval)->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.currentAtom),
5155
+ rval)) {
5174
5156
  return JS_FALSE;
5175
5157
  }
5176
5158
  return JS_TRUE;
@@ -5190,11 +5172,8 @@ js_Call(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
5190
5172
  JSBool ok;
5191
5173
 
5192
5174
  callee = JSVAL_TO_OBJECT(argv[-2]);
5193
- if (!OBJ_GET_PROPERTY(cx, callee,
5194
- ATOM_TO_JSID(cx->runtime->atomState.__call__Atom),
5195
- &fval)) {
5175
+ if (!callee->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.__call__Atom), &fval))
5196
5176
  return JS_FALSE;
5197
- }
5198
5177
  if (VALUE_IS_FUNCTION(cx, fval)) {
5199
5178
  if (!GetCurrentExecutionContext(cx, obj, &nargv[2]))
5200
5179
  return JS_FALSE;
@@ -5232,10 +5211,8 @@ js_Construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
5232
5211
  JSBool ok;
5233
5212
 
5234
5213
  callee = JSVAL_TO_OBJECT(argv[-2]);
5235
- if (!OBJ_GET_PROPERTY(cx, callee,
5236
- ATOM_TO_JSID(cx->runtime->atomState
5237
- .__construct__Atom),
5238
- &cval)) {
5214
+ if (!callee->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.__construct__Atom),
5215
+ &cval)) {
5239
5216
  return JS_FALSE;
5240
5217
  }
5241
5218
  if (VALUE_IS_FUNCTION(cx, cval)) {
@@ -5272,12 +5249,8 @@ js_HasInstance(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
5272
5249
  {
5273
5250
  jsval fval, rval;
5274
5251
 
5275
- if (!OBJ_GET_PROPERTY(cx, obj,
5276
- ATOM_TO_JSID(cx->runtime->atomState
5277
- .__hasInstance__Atom),
5278
- &fval)) {
5252
+ if (!obj->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.__hasInstance__Atom), &fval))
5279
5253
  return JS_FALSE;
5280
- }
5281
5254
  if (VALUE_IS_FUNCTION(cx, fval)) {
5282
5255
  if (!js_InternalCall(cx, obj, fval, 1, &v, &rval))
5283
5256
  return JS_FALSE;
@@ -5320,12 +5293,8 @@ js_GetClassPrototype(JSContext *cx, JSObject *scope, jsid id,
5320
5293
  return JS_FALSE;
5321
5294
  if (VALUE_IS_FUNCTION(cx, v)) {
5322
5295
  ctor = JSVAL_TO_OBJECT(v);
5323
- if (!OBJ_GET_PROPERTY(cx, ctor,
5324
- ATOM_TO_JSID(cx->runtime->atomState
5325
- .classPrototypeAtom),
5326
- &v)) {
5296
+ if (!ctor->getProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.classPrototypeAtom), &v))
5327
5297
  return JS_FALSE;
5328
- }
5329
5298
  if (!JSVAL_IS_PRIMITIVE(v)) {
5330
5299
  /*
5331
5300
  * Set the newborn root in case v is otherwise unreferenced.
@@ -5366,8 +5335,7 @@ CheckCtorGetAccess(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
5366
5335
 
5367
5336
  atom = cx->runtime->atomState.constructorAtom;
5368
5337
  JS_ASSERT(id == ATOM_TO_JSID(atom));
5369
- return OBJ_CHECK_ACCESS(cx, obj, ATOM_TO_JSID(atom), JSACC_READ,
5370
- vp, &attrs);
5338
+ return obj->checkAccess(cx, ATOM_TO_JSID(atom), JSACC_READ, vp, &attrs);
5371
5339
  }
5372
5340
 
5373
5341
  static JSBool
@@ -5378,8 +5346,7 @@ CheckCtorSetAccess(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
5378
5346
 
5379
5347
  atom = cx->runtime->atomState.constructorAtom;
5380
5348
  JS_ASSERT(id == ATOM_TO_JSID(atom));
5381
- return OBJ_CHECK_ACCESS(cx, obj, ATOM_TO_JSID(atom), JSACC_WRITE,
5382
- vp, &attrs);
5349
+ return obj->checkAccess(cx, ATOM_TO_JSID(atom), JSACC_WRITE, vp, &attrs);
5383
5350
  }
5384
5351
 
5385
5352
  JSBool
@@ -5392,12 +5359,9 @@ js_SetClassPrototype(JSContext *cx, JSObject *ctor, JSObject *proto,
5392
5359
  * reset), while native or "system" constructors have DontEnum | ReadOnly |
5393
5360
  * DontDelete.
5394
5361
  */
5395
- if (!OBJ_DEFINE_PROPERTY(cx, ctor,
5396
- ATOM_TO_JSID(cx->runtime->atomState
5397
- .classPrototypeAtom),
5398
- OBJECT_TO_JSVAL(proto),
5399
- JS_PropertyStub, JS_PropertyStub,
5400
- attrs, NULL)) {
5362
+ if (!ctor->defineProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.classPrototypeAtom),
5363
+ OBJECT_TO_JSVAL(proto), JS_PropertyStub, JS_PropertyStub,
5364
+ attrs)) {
5401
5365
  return JS_FALSE;
5402
5366
  }
5403
5367
 
@@ -5405,12 +5369,8 @@ js_SetClassPrototype(JSContext *cx, JSObject *ctor, JSObject *proto,
5405
5369
  * ECMA says that Object.prototype.constructor, or f.prototype.constructor
5406
5370
  * for a user-defined function f, is DontEnum.
5407
5371
  */
5408
- return OBJ_DEFINE_PROPERTY(cx, proto,
5409
- ATOM_TO_JSID(cx->runtime->atomState
5410
- .constructorAtom),
5411
- OBJECT_TO_JSVAL(ctor),
5412
- CheckCtorGetAccess, CheckCtorSetAccess,
5413
- 0, NULL);
5372
+ return proto->defineProperty(cx, ATOM_TO_JSID(cx->runtime->atomState.constructorAtom),
5373
+ OBJECT_TO_JSVAL(ctor), CheckCtorGetAccess, CheckCtorSetAccess, 0);
5414
5374
  }
5415
5375
 
5416
5376
  JSBool
@@ -5423,7 +5383,7 @@ js_PrimitiveToObject(JSContext *cx, jsval *vp)
5423
5383
  JS_STATIC_ASSERT(JSVAL_INT == 1);
5424
5384
  JS_STATIC_ASSERT(JSVAL_DOUBLE == 2);
5425
5385
  JS_STATIC_ASSERT(JSVAL_STRING == 4);
5426
- JS_STATIC_ASSERT(JSVAL_BOOLEAN == 6);
5386
+ JS_STATIC_ASSERT(JSVAL_SPECIAL == 6);
5427
5387
  static JSClass *const PrimitiveClasses[] = {
5428
5388
  &js_NumberClass, /* INT */
5429
5389
  &js_NumberClass, /* DOUBLE */
@@ -5437,10 +5397,10 @@ js_PrimitiveToObject(JSContext *cx, jsval *vp)
5437
5397
  JS_ASSERT(!JSVAL_IS_OBJECT(*vp));
5438
5398
  JS_ASSERT(!JSVAL_IS_VOID(*vp));
5439
5399
  clasp = PrimitiveClasses[JSVAL_TAG(*vp) - 1];
5440
- obj = js_NewObject(cx, clasp, NULL, NULL, 0);
5400
+ obj = js_NewObject(cx, clasp, NULL, NULL);
5441
5401
  if (!obj)
5442
5402
  return JS_FALSE;
5443
- STOBJ_SET_SLOT(obj, JSSLOT_PRIVATE, *vp);
5403
+ obj->fslots[JSSLOT_PRIMITIVE_THIS] = *vp;
5444
5404
  *vp = OBJECT_TO_JSVAL(obj);
5445
5405
  return JS_TRUE;
5446
5406
  }
@@ -5454,7 +5414,7 @@ js_ValueToObject(JSContext *cx, jsval v, JSObject **objp)
5454
5414
  obj = NULL;
5455
5415
  } else if (JSVAL_IS_OBJECT(v)) {
5456
5416
  obj = JSVAL_TO_OBJECT(v);
5457
- if (!OBJ_DEFAULT_VALUE(cx, obj, JSTYPE_OBJECT, &v))
5417
+ if (!obj->defaultValue(cx, JSTYPE_OBJECT, &v))
5458
5418
  return JS_FALSE;
5459
5419
  if (!JSVAL_IS_PRIMITIVE(v))
5460
5420
  obj = JSVAL_TO_OBJECT(v);
@@ -5643,21 +5603,15 @@ js_DumpScopeMeters(JSRuntime *rt)
5643
5603
  void
5644
5604
  js_PrintObjectSlotName(JSTracer *trc, char *buf, size_t bufsize)
5645
5605
  {
5646
- JSObject *obj;
5647
- uint32 slot;
5648
- JSScope *scope;
5649
- jsval nval;
5650
- JSScopeProperty *sprop;
5651
- JSClass *clasp;
5652
- uint32 key;
5653
- const char *slotname;
5654
-
5655
5606
  JS_ASSERT(trc->debugPrinter == js_PrintObjectSlotName);
5656
- obj = (JSObject *)trc->debugPrintArg;
5657
- slot = (uint32)trc->debugPrintIndex;
5658
5607
 
5608
+ JSObject *obj = (JSObject *)trc->debugPrintArg;
5609
+ uint32 slot = (uint32)trc->debugPrintIndex;
5610
+ JS_ASSERT(slot >= JSSLOT_START(obj->getClass()));
5611
+
5612
+ JSScopeProperty *sprop;
5659
5613
  if (OBJ_IS_NATIVE(obj)) {
5660
- scope = OBJ_SCOPE(obj);
5614
+ JSScope *scope = OBJ_SCOPE(obj);
5661
5615
  sprop = SCOPE_LAST_PROP(scope);
5662
5616
  while (sprop && sprop->slot != slot)
5663
5617
  sprop = sprop->parent;
@@ -5666,32 +5620,22 @@ js_PrintObjectSlotName(JSTracer *trc, char *buf, size_t bufsize)
5666
5620
  }
5667
5621
 
5668
5622
  if (!sprop) {
5669
- switch (slot) {
5670
- case JSSLOT_PROTO:
5671
- JS_snprintf(buf, bufsize, "__proto__");
5672
- break;
5673
- case JSSLOT_PARENT:
5674
- JS_snprintf(buf, bufsize, "__parent__");
5675
- break;
5676
- default:
5677
- slotname = NULL;
5678
- clasp = LOCKED_OBJ_GET_CLASS(obj);
5679
- if (clasp->flags & JSCLASS_IS_GLOBAL) {
5680
- key = slot - JSSLOT_START(clasp);
5681
- #define JS_PROTO(name,code,init) \
5623
+ const char *slotname = NULL;
5624
+ JSClass *clasp = obj->getClass();
5625
+ if (clasp->flags & JSCLASS_IS_GLOBAL) {
5626
+ uint32 key = slot - JSSLOT_START(clasp);
5627
+ #define JS_PROTO(name,code,init) \
5682
5628
  if ((code) == key) { slotname = js_##name##_str; goto found; }
5683
5629
  #include "jsproto.tbl"
5684
5630
  #undef JS_PROTO
5685
- }
5686
- found:
5687
- if (slotname)
5688
- JS_snprintf(buf, bufsize, "CLASS_OBJECT(%s)", slotname);
5689
- else
5690
- JS_snprintf(buf, bufsize, "**UNKNOWN SLOT %ld**", (long)slot);
5691
- break;
5692
5631
  }
5632
+ found:
5633
+ if (slotname)
5634
+ JS_snprintf(buf, bufsize, "CLASS_OBJECT(%s)", slotname);
5635
+ else
5636
+ JS_snprintf(buf, bufsize, "**UNKNOWN SLOT %ld**", (long)slot);
5693
5637
  } else {
5694
- nval = ID_TO_VALUE(sprop->id);
5638
+ jsval nval = ID_TO_VALUE(sprop->id);
5695
5639
  if (JSVAL_IS_INT(nval)) {
5696
5640
  JS_snprintf(buf, bufsize, "%ld", (long)JSVAL_TO_INT(nval));
5697
5641
  } else if (JSVAL_IS_STRING(nval)) {
@@ -5706,78 +5650,32 @@ js_PrintObjectSlotName(JSTracer *trc, char *buf, size_t bufsize)
5706
5650
  void
5707
5651
  js_TraceObject(JSTracer *trc, JSObject *obj)
5708
5652
  {
5709
- JSContext *cx;
5710
- JSScope *scope;
5711
- JSBool traceScope;
5712
- JSScopeProperty *sprop;
5713
- JSClass *clasp;
5714
- size_t nslots, i;
5715
- jsval v;
5716
-
5717
5653
  JS_ASSERT(OBJ_IS_NATIVE(obj));
5718
- cx = trc->context;
5719
- scope = OBJ_SCOPE(obj);
5720
-
5721
- traceScope = (scope->object == obj);
5722
- if (!traceScope) {
5723
- JSObject *pobj = obj;
5724
5654
 
5655
+ JSContext *cx = trc->context;
5656
+ JSScope *scope = OBJ_SCOPE(obj);
5657
+ if (scope->owned() && IS_GC_MARKING_TRACER(trc)) {
5725
5658
  /*
5726
- * Because obj does not own scope, we should be able to assert that an
5727
- * object on obj's prototype chain does -- or scope's properties might
5728
- * go untraced. It indeed turns out that you can disconnect an object
5729
- * from the prototype object whose scope it shares, so we may have to
5730
- * mark scope even though scope->object != obj.
5659
+ * Check whether we should shrink the object's slots. Skip this check
5660
+ * if the scope is shared, since for Block objects and flat closures
5661
+ * that share their scope, scope->freeslot can be an underestimate.
5731
5662
  */
5732
- while ((pobj = LOCKED_OBJ_GET_PROTO(pobj)) != NULL) {
5733
- if (pobj == scope->object)
5734
- break;
5735
- }
5736
- JS_ASSERT_IF(pobj, OBJ_SCOPE(pobj) == scope);
5737
- traceScope = !pobj;
5663
+ size_t slots = scope->freeslot;
5664
+ if (STOBJ_NSLOTS(obj) != slots)
5665
+ js_ShrinkSlots(cx, obj, slots);
5738
5666
  }
5739
5667
 
5740
- if (traceScope) {
5741
5668
  #ifdef JS_DUMP_SCOPE_METERS
5742
- MeterEntryCount(scope->entryCount);
5669
+ MeterEntryCount(scope->entryCount);
5743
5670
  #endif
5744
5671
 
5745
- sprop = SCOPE_LAST_PROP(scope);
5746
- if (sprop) {
5747
- JS_ASSERT(SCOPE_HAS_PROPERTY(scope, sprop));
5748
-
5749
- /* Regenerate property cache shape ids if GC'ing. */
5750
- if (IS_GC_MARKING_TRACER(trc)) {
5751
- uint32 shape, oldshape;
5752
-
5753
- shape = js_RegenerateShapeForGC(cx);
5754
- if (!(sprop->flags & SPROP_MARK)) {
5755
- oldshape = sprop->shape;
5756
- sprop->shape = shape;
5757
- sprop->flags |= SPROP_FLAG_SHAPE_REGEN;
5758
- if (scope->shape != oldshape)
5759
- shape = js_RegenerateShapeForGC(cx);
5760
- }
5761
-
5762
- scope->shape = shape;
5763
- }
5764
-
5765
- /* Trace scope's property tree ancestor line. */
5766
- do {
5767
- if (SCOPE_HAD_MIDDLE_DELETE(scope) &&
5768
- !SCOPE_HAS_PROPERTY(scope, sprop)) {
5769
- continue;
5770
- }
5771
- TRACE_SCOPE_PROPERTY(trc, sprop);
5772
- } while ((sprop = sprop->parent) != NULL);
5773
- }
5774
- }
5672
+ scope->trace(trc);
5775
5673
 
5776
5674
  if (!JS_CLIST_IS_EMPTY(&cx->runtime->watchPointList))
5777
5675
  js_TraceWatchPoints(trc, obj);
5778
5676
 
5779
5677
  /* No one runs while the GC is running, so we can use LOCKED_... here. */
5780
- clasp = LOCKED_OBJ_GET_CLASS(obj);
5678
+ JSClass *clasp = obj->getClass();
5781
5679
  if (clasp->mark) {
5782
5680
  if (clasp->flags & JSCLASS_MARK_IS_TRACE)
5783
5681
  ((JSTraceOp) clasp->mark)(trc, obj);
@@ -5785,6 +5683,8 @@ js_TraceObject(JSTracer *trc, JSObject *obj)
5785
5683
  (void) clasp->mark(cx, obj, trc);
5786
5684
  }
5787
5685
 
5686
+ obj->traceProtoAndParent(trc);
5687
+
5788
5688
  /*
5789
5689
  * An unmutated object that shares a prototype object's scope. We can't
5790
5690
  * tell how many slots are in use in obj by looking at its scope, so we
@@ -5794,12 +5694,13 @@ js_TraceObject(JSTracer *trc, JSObject *obj)
5794
5694
  * don't move it up and unify it with the |if (!traceScope)| section
5795
5695
  * above.
5796
5696
  */
5797
- nslots = STOBJ_NSLOTS(obj);
5798
- if (scope->object == obj && scope->freeslot < nslots)
5697
+ uint32 nslots = STOBJ_NSLOTS(obj);
5698
+ if (scope->owned() && scope->freeslot < nslots)
5799
5699
  nslots = scope->freeslot;
5700
+ JS_ASSERT(nslots >= JSSLOT_START(clasp));
5800
5701
 
5801
- for (i = 0; i != nslots; ++i) {
5802
- v = STOBJ_GET_SLOT(obj, i);
5702
+ for (uint32 i = JSSLOT_START(clasp); i != nslots; ++i) {
5703
+ jsval v = STOBJ_GET_SLOT(obj, i);
5803
5704
  if (JSVAL_IS_TRACEABLE(v)) {
5804
5705
  JS_SET_TRACING_DETAILS(trc, js_PrintObjectSlotName, obj, i);
5805
5706
  JS_CallTracer(trc, JSVAL_TO_TRACEABLE(v), JSVAL_TRACE_KIND(v));
@@ -5815,19 +5716,18 @@ js_Clear(JSContext *cx, JSObject *obj)
5815
5716
 
5816
5717
  /*
5817
5718
  * Clear our scope and the property cache of all obj's properties only if
5818
- * obj owns the scope (i.e., not if obj is unmutated and therefore sharing
5819
- * its prototype's scope). NB: we do not clear any reserved slots lying
5820
- * below JSSLOT_FREE(clasp).
5719
+ * obj owns the scope (i.e., not if obj is sharing another object's scope).
5720
+ * NB: we do not clear any reserved slots lying below JSSLOT_FREE(clasp).
5821
5721
  */
5822
5722
  JS_LOCK_OBJ(cx, obj);
5823
5723
  scope = OBJ_SCOPE(obj);
5824
- if (scope->object == obj) {
5724
+ if (scope->owned()) {
5825
5725
  /* Now that we're done using scope->lastProp/table, clear scope. */
5826
- js_ClearScope(cx, scope);
5726
+ scope->clear(cx);
5827
5727
 
5828
5728
  /* Clear slot values and reset freeslot so we're consistent. */
5829
5729
  i = STOBJ_NSLOTS(obj);
5830
- n = JSSLOT_FREE(LOCKED_OBJ_GET_CLASS(obj));
5730
+ n = JSSLOT_FREE(obj->getClass());
5831
5731
  while (--i >= n)
5832
5732
  STOBJ_SET_SLOT(obj, i, JSVAL_VOID);
5833
5733
  scope->freeslot = n;
@@ -5835,57 +5735,92 @@ js_Clear(JSContext *cx, JSObject *obj)
5835
5735
  JS_UNLOCK_OBJ(cx, obj);
5836
5736
  }
5837
5737
 
5838
- jsval
5839
- js_GetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot)
5738
+ /* On failure the function unlocks the object. */
5739
+ static bool
5740
+ ReservedSlotIndexOK(JSContext *cx, JSObject *obj, JSClass *clasp,
5741
+ uint32 index, uint32 limit)
5840
5742
  {
5841
- jsval v;
5743
+ JS_ASSERT(JS_IS_OBJ_LOCKED(cx, obj));
5744
+
5745
+ /* Check the computed, possibly per-instance, upper bound. */
5746
+ if (clasp->reserveSlots)
5747
+ limit += clasp->reserveSlots(cx, obj);
5748
+ if (index >= limit) {
5749
+ JS_UNLOCK_OBJ(cx, obj);
5750
+ JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
5751
+ JSMSG_RESERVED_SLOT_RANGE);
5752
+ return false;
5753
+ }
5754
+ return true;
5755
+ }
5756
+
5757
+ bool
5758
+ js_GetReservedSlot(JSContext *cx, JSObject *obj, uint32 index, jsval *vp)
5759
+ {
5760
+ if (!OBJ_IS_NATIVE(obj)) {
5761
+ *vp = JSVAL_VOID;
5762
+ return true;
5763
+ }
5764
+
5765
+ JSClass *clasp = obj->getClass();
5766
+ uint32 limit = JSCLASS_RESERVED_SLOTS(clasp);
5842
5767
 
5843
5768
  JS_LOCK_OBJ(cx, obj);
5844
- v = (slot < STOBJ_NSLOTS(obj)) ? STOBJ_GET_SLOT(obj, slot) : JSVAL_VOID;
5769
+ if (index >= limit && !ReservedSlotIndexOK(cx, obj, clasp, index, limit))
5770
+ return false;
5771
+
5772
+ uint32 slot = JSSLOT_START(clasp) + index;
5773
+ *vp = (slot < STOBJ_NSLOTS(obj)) ? STOBJ_GET_SLOT(obj, slot) : JSVAL_VOID;
5845
5774
  JS_UNLOCK_OBJ(cx, obj);
5846
- return v;
5775
+ return true;
5847
5776
  }
5848
5777
 
5849
- JSBool
5850
- js_SetRequiredSlot(JSContext *cx, JSObject *obj, uint32 slot, jsval v)
5778
+ bool
5779
+ js_SetReservedSlot(JSContext *cx, JSObject *obj, uint32 index, jsval v)
5851
5780
  {
5852
- JSScope *scope;
5853
- uint32 nslots;
5854
- JSClass *clasp;
5781
+ if (!OBJ_IS_NATIVE(obj))
5782
+ return true;
5783
+
5784
+ JSClass *clasp = OBJ_GET_CLASS(cx, obj);
5785
+ uint32 limit = JSCLASS_RESERVED_SLOTS(clasp);
5855
5786
 
5856
5787
  JS_LOCK_OBJ(cx, obj);
5857
- scope = OBJ_SCOPE(obj);
5788
+ if (index >= limit && !ReservedSlotIndexOK(cx, obj, clasp, index, limit))
5789
+ return false;
5790
+
5791
+ uint32 slot = JSSLOT_START(clasp) + index;
5858
5792
  if (slot >= JS_INITIAL_NSLOTS && !obj->dslots) {
5859
5793
  /*
5860
- * At this point, obj may or may not own scope. If some path calls
5861
- * js_GetMutableScope but does not add a slot-owning property, then
5862
- * scope->object == obj but obj->dslots will be null. If obj shares a
5863
- * prototype's scope, then we cannot update scope->map here. Instead
5864
- * we rely on STOBJ_NSLOTS(obj) to get the number of available slots
5865
- * in obj after we allocate dynamic slots.
5866
- *
5867
- * See js_TraceObject, before the slot tracing, where we make a special
5868
- * case for unmutated (scope->object != obj) objects.
5794
+ * At this point, obj may or may not own scope, and we may or may not
5795
+ * need to allocate dslots. If scope is shared, scope->freeslot may not
5796
+ * be accurate for obj (see comment below).
5869
5797
  */
5870
- clasp = LOCKED_OBJ_GET_CLASS(obj);
5871
- nslots = JSSLOT_FREE(clasp);
5798
+ uint32 nslots = JSSLOT_FREE(clasp);
5872
5799
  if (clasp->reserveSlots)
5873
5800
  nslots += clasp->reserveSlots(cx, obj);
5874
5801
  JS_ASSERT(slot < nslots);
5875
- if (!js_ReallocSlots(cx, obj, nslots, JS_TRUE)) {
5876
- JS_UNLOCK_SCOPE(cx, scope);
5877
- return JS_FALSE;
5802
+ if (!AllocSlots(cx, obj, nslots)) {
5803
+ JS_UNLOCK_OBJ(cx, obj);
5804
+ return false;
5878
5805
  }
5879
5806
  }
5880
5807
 
5881
- /* Whether or not we grew nslots, we may need to advance freeslot. */
5882
- if (scope->object == obj && slot >= scope->freeslot)
5808
+ /*
5809
+ * Whether or not we grew nslots, we may need to advance freeslot.
5810
+ *
5811
+ * If scope is shared, do not modify scope->freeslot. It is OK for freeslot
5812
+ * to be an underestimate in objects with shared scopes, as they will get
5813
+ * their own scopes before mutating, and elsewhere (e.g. js_TraceObject) we
5814
+ * use STOBJ_NSLOTS(obj) rather than rely on freeslot.
5815
+ */
5816
+ JSScope *scope = OBJ_SCOPE(obj);
5817
+ if (scope->owned() && slot >= scope->freeslot)
5883
5818
  scope->freeslot = slot + 1;
5884
5819
 
5885
5820
  STOBJ_SET_SLOT(obj, slot, v);
5886
5821
  GC_POKE(cx, JS_NULL);
5887
5822
  JS_UNLOCK_SCOPE(cx, scope);
5888
- return JS_TRUE;
5823
+ return true;
5889
5824
  }
5890
5825
 
5891
5826
  JSObject *
@@ -5926,7 +5861,6 @@ js_ReportGetterOnlyAssignment(JSContext *cx)
5926
5861
  JSMSG_GETTER_ONLY, NULL);
5927
5862
  }
5928
5863
 
5929
-
5930
5864
  JS_FRIEND_API(JSBool)
5931
5865
  js_GetterOnlyPropertyStub(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
5932
5866
  {
@@ -5978,14 +5912,14 @@ js_DumpChars(const jschar *s, size_t n)
5978
5912
  void
5979
5913
  dumpString(JSString *str)
5980
5914
  {
5981
- dumpChars(JSSTRING_CHARS(str), JSSTRING_LENGTH(str));
5915
+ dumpChars(str->chars(), str->length());
5982
5916
  }
5983
5917
 
5984
5918
  JS_FRIEND_API(void)
5985
5919
  js_DumpString(JSString *str)
5986
5920
  {
5987
5921
  fprintf(stderr, "JSString* (%p) = jschar * (%p) = ",
5988
- (void *) str, (void *) JSSTRING_CHARS(str));
5922
+ (void *) str, (void *) str->chars());
5989
5923
  dumpString(str);
5990
5924
  fputc('\n', stderr);
5991
5925
  }
@@ -6007,7 +5941,7 @@ dumpValue(jsval val)
6007
5941
  } else if (JSVAL_IS_OBJECT(val) &&
6008
5942
  HAS_FUNCTION_CLASS(JSVAL_TO_OBJECT(val))) {
6009
5943
  JSObject *funobj = JSVAL_TO_OBJECT(val);
6010
- JSFunction *fun = (JSFunction *) STOBJ_GET_PRIVATE(funobj);
5944
+ JSFunction *fun = GET_FUNCTION_PRIVATE(cx, funobj);
6011
5945
  fprintf(stderr, "<%s %s at %p (JSFunction at %p)>",
6012
5946
  fun->atom ? "function" : "unnamed",
6013
5947
  fun->atom ? JS_GetStringBytes(ATOM_TO_STRING(fun->atom)) : "function",
@@ -6041,7 +5975,7 @@ dumpValue(jsval val)
6041
5975
  JS_FRIEND_API(void)
6042
5976
  js_DumpValue(jsval val)
6043
5977
  {
6044
- fprintf(stderr, "jsval %d (%p) = ", (int) val, (void *) val);
5978
+ fprintf(stderr, "jsval %p = ", (void *) val);
6045
5979
  dumpValue(val);
6046
5980
  fputc('\n', stderr);
6047
5981
  }
@@ -6049,7 +5983,7 @@ js_DumpValue(jsval val)
6049
5983
  JS_FRIEND_API(void)
6050
5984
  js_DumpId(jsid id)
6051
5985
  {
6052
- fprintf(stderr, "id %d (%p) = ", (int) id, (void *) id);
5986
+ fprintf(stderr, "jsid %p = ", (void *) id);
6053
5987
  dumpValue(ID_TO_VALUE(id));
6054
5988
  fputc('\n', stderr);
6055
5989
  }
@@ -6084,7 +6018,6 @@ js_DumpObject(JSObject *obj)
6084
6018
  uint32 i, slots;
6085
6019
  JSClass *clasp;
6086
6020
  jsuint reservedEnd;
6087
- bool sharesScope = false;
6088
6021
 
6089
6022
  fprintf(stderr, "object %p\n", (void *) obj);
6090
6023
  clasp = STOBJ_GET_CLASS(obj);
@@ -6106,54 +6039,42 @@ js_DumpObject(JSObject *obj)
6106
6039
 
6107
6040
  if (OBJ_IS_NATIVE(obj)) {
6108
6041
  JSScope *scope = OBJ_SCOPE(obj);
6109
- JSObject *proto = STOBJ_GET_PROTO(obj);
6110
-
6111
- if (SCOPE_IS_SEALED(scope))
6042
+ if (scope->sealed())
6112
6043
  fprintf(stderr, "sealed\n");
6113
6044
 
6114
- sharesScope = (scope->object != obj);
6115
- if (sharesScope) {
6116
- if (proto) {
6117
- fprintf(stderr, "no own properties - see proto (%s at %p)\n",
6118
- STOBJ_GET_CLASS(proto)->name, (void *) proto);
6119
- } else {
6120
- fprintf(stderr, "no own properties - null proto\n");
6121
- }
6122
- } else {
6123
- fprintf(stderr, "properties:\n");
6124
- for (JSScopeProperty *sprop = SCOPE_LAST_PROP(scope); sprop;
6125
- sprop = sprop->parent) {
6126
- if (!SCOPE_HAD_MIDDLE_DELETE(scope) ||
6127
- SCOPE_HAS_PROPERTY(scope, sprop)) {
6128
- dumpScopeProp(sprop);
6129
- }
6130
- }
6045
+ fprintf(stderr, "properties:\n");
6046
+ for (JSScopeProperty *sprop = SCOPE_LAST_PROP(scope); sprop;
6047
+ sprop = sprop->parent) {
6048
+ if (!scope->hadMiddleDelete() || scope->has(sprop))
6049
+ dumpScopeProp(sprop);
6131
6050
  }
6132
6051
  } else {
6133
6052
  if (!OBJ_IS_NATIVE(obj))
6134
6053
  fprintf(stderr, "not native\n");
6135
6054
  }
6136
6055
 
6056
+ fprintf(stderr, "proto ");
6057
+ dumpValue(OBJECT_TO_JSVAL(STOBJ_GET_PROTO(obj)));
6058
+ fputc('\n', stderr);
6059
+
6060
+ fprintf(stderr, "parent ");
6061
+ dumpValue(OBJECT_TO_JSVAL(STOBJ_GET_PARENT(obj)));
6062
+ fputc('\n', stderr);
6063
+
6064
+ i = JSSLOT_PRIVATE;
6065
+ if (clasp->flags & JSCLASS_HAS_PRIVATE) {
6066
+ i = JSSLOT_PRIVATE + 1;
6067
+ fprintf(stderr, "private %p\n", obj->getPrivate());
6068
+ }
6069
+
6137
6070
  fprintf(stderr, "slots:\n");
6138
- reservedEnd = JSSLOT_PRIVATE;
6139
- if (clasp->flags & JSCLASS_HAS_PRIVATE)
6140
- reservedEnd++;
6141
- reservedEnd += JSCLASS_RESERVED_SLOTS(clasp);
6142
- slots = (OBJ_IS_NATIVE(obj) && !sharesScope)
6071
+ reservedEnd = i + JSCLASS_RESERVED_SLOTS(clasp);
6072
+ slots = (OBJ_IS_NATIVE(obj) && OBJ_SCOPE(obj)->owned())
6143
6073
  ? OBJ_SCOPE(obj)->freeslot
6144
6074
  : STOBJ_NSLOTS(obj);
6145
- for (i = 0; i < slots; i++) {
6075
+ for (; i < slots; i++) {
6146
6076
  fprintf(stderr, " %3d ", i);
6147
- if (i == JSSLOT_PRIVATE && (clasp->flags & JSCLASS_HAS_PRIVATE)) {
6148
- fprintf(stderr, "(private) = %p\n",
6149
- JSVAL_TO_PRIVATE(STOBJ_GET_SLOT(obj, i)));
6150
- continue;
6151
- }
6152
- if (i == JSSLOT_PROTO)
6153
- fprintf(stderr, "(proto) ");
6154
- else if (i == JSSLOT_PARENT)
6155
- fprintf(stderr, "(parent) ");
6156
- else if (i < reservedEnd)
6077
+ if (i < reservedEnd)
6157
6078
  fprintf(stderr, "(reserved) ");
6158
6079
  fprintf(stderr, "= ");
6159
6080
  dumpValue(STOBJ_GET_SLOT(obj, i));
@@ -6162,4 +6083,115 @@ js_DumpObject(JSObject *obj)
6162
6083
  fputc('\n', stderr);
6163
6084
  }
6164
6085
 
6086
+ static void
6087
+ MaybeDumpObject(const char *name, JSObject *obj)
6088
+ {
6089
+ if (obj) {
6090
+ fprintf(stderr, " %s: ", name);
6091
+ dumpValue(OBJECT_TO_JSVAL(obj));
6092
+ fputc('\n', stderr);
6093
+ }
6094
+ }
6095
+
6096
+ JS_FRIEND_API(void)
6097
+ js_DumpStackFrame(JSStackFrame *fp)
6098
+ {
6099
+ jsval *sp = NULL;
6100
+
6101
+ for (; fp; fp = fp->down) {
6102
+ fprintf(stderr, "JSStackFrame at %p\n", (void *) fp);
6103
+ if (fp->argv)
6104
+ dumpValue(fp->argv[-2]);
6105
+ else
6106
+ fprintf(stderr, "global frame, no callee");
6107
+ fputc('\n', stderr);
6108
+
6109
+ if (fp->script)
6110
+ fprintf(stderr, "file %s line %u\n", fp->script->filename, (unsigned) fp->script->lineno);
6111
+
6112
+ if (fp->regs) {
6113
+ if (!fp->regs->pc) {
6114
+ fprintf(stderr, "*** regs && !regs->pc, skipping frame\n\n");
6115
+ continue;
6116
+ }
6117
+ if (!fp->script) {
6118
+ fprintf(stderr, "*** regs && !script, skipping frame\n\n");
6119
+ continue;
6120
+ }
6121
+ jsbytecode *pc = fp->regs->pc;
6122
+ sp = fp->regs->sp;
6123
+ if (fp->imacpc) {
6124
+ fprintf(stderr, " pc in imacro at %p\n called from ", pc);
6125
+ pc = fp->imacpc;
6126
+ } else {
6127
+ fprintf(stderr, " ");
6128
+ }
6129
+ fprintf(stderr, "pc = %p\n", pc);
6130
+ fprintf(stderr, " current op: %s\n", js_CodeName[*pc]);
6131
+ }
6132
+ if (sp && fp->slots) {
6133
+ fprintf(stderr, " slots: %p\n", (void *) fp->slots);
6134
+ fprintf(stderr, " sp: %p = slots + %u\n", (void *) sp, (unsigned) (sp - fp->slots));
6135
+ if (sp - fp->slots < 10000) { // sanity
6136
+ for (jsval *p = fp->slots; p < sp; p++) {
6137
+ fprintf(stderr, " %p: ", (void *) p);
6138
+ dumpValue(*p);
6139
+ fputc('\n', stderr);
6140
+ }
6141
+ }
6142
+ } else {
6143
+ fprintf(stderr, " sp: %p\n", (void *) sp);
6144
+ fprintf(stderr, " slots: %p\n", (void *) fp->slots);
6145
+ }
6146
+ fprintf(stderr, " argv: %p (argc: %u)\n", (void *) fp->argv, (unsigned) fp->argc);
6147
+ MaybeDumpObject("callobj", fp->callobj);
6148
+ MaybeDumpObject("argsobj", JSVAL_TO_OBJECT(fp->argsobj));
6149
+ MaybeDumpObject("varobj", fp->varobj);
6150
+ MaybeDumpObject("this", fp->thisp);
6151
+ fprintf(stderr, " rval: ");
6152
+ dumpValue(fp->rval);
6153
+ fputc('\n', stderr);
6154
+
6155
+ fprintf(stderr, " flags:");
6156
+ if (fp->flags == 0)
6157
+ fprintf(stderr, " none");
6158
+ if (fp->flags & JSFRAME_CONSTRUCTING)
6159
+ fprintf(stderr, " constructing");
6160
+ if (fp->flags & JSFRAME_COMPUTED_THIS)
6161
+ fprintf(stderr, " computed_this");
6162
+ if (fp->flags & JSFRAME_ASSIGNING)
6163
+ fprintf(stderr, " assigning");
6164
+ if (fp->flags & JSFRAME_DEBUGGER)
6165
+ fprintf(stderr, " debugger");
6166
+ if (fp->flags & JSFRAME_EVAL)
6167
+ fprintf(stderr, " eval");
6168
+ if (fp->flags & JSFRAME_ROOTED_ARGV)
6169
+ fprintf(stderr, " rooted_argv");
6170
+ if (fp->flags & JSFRAME_YIELDING)
6171
+ fprintf(stderr, " yielding");
6172
+ if (fp->flags & JSFRAME_ITERATOR)
6173
+ fprintf(stderr, " iterator");
6174
+ if (fp->flags & JSFRAME_GENERATOR)
6175
+ fprintf(stderr, " generator");
6176
+ if (fp->flags & JSFRAME_OVERRIDE_ARGS)
6177
+ fprintf(stderr, " overridden_args");
6178
+ fputc('\n', stderr);
6179
+
6180
+ if (fp->scopeChain)
6181
+ fprintf(stderr, " scopeChain: (JSObject *) %p\n", (void *) fp->scopeChain);
6182
+ if (fp->blockChain)
6183
+ fprintf(stderr, " blockChain: (JSObject *) %p\n", (void *) fp->blockChain);
6184
+
6185
+ if (fp->sharpDepth)
6186
+ fprintf(stderr, " sharpDepth: %u\n", (unsigned) fp->sharpDepth);
6187
+
6188
+ if (fp->dormantNext)
6189
+ fprintf(stderr, " dormantNext: (JSStackFrame *) %p\n", (void *) fp->dormantNext);
6190
+ if (fp->displaySave)
6191
+ fprintf(stderr, " displaySave: (JSStackFrame *) %p\n", (void *) fp->displaySave);
6192
+
6193
+ fputc('\n', stderr);
6194
+ }
6195
+ }
6196
+
6165
6197
  #endif