johnson 2.0.0.pre0 → 2.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3954) hide show
  1. data/CHANGELOG.rdoc +6 -0
  2. data/Manifest.txt +3709 -33
  3. data/Rakefile +19 -0
  4. data/ext/tracemonkey/extconf.rb +16 -2
  5. data/ext/tracemonkey/immutable_node.cc +3 -1
  6. data/ext/tracemonkey/js.cc +474 -0
  7. data/ext/tracemonkey/runtime.cc +3 -1
  8. data/ext/tracemonkey/split_global.cc +0 -373
  9. data/ext/tracemonkey/split_global.h +3 -0
  10. data/lib/johnson.rb +1 -1
  11. data/test/generic/parser_test.rb +27 -5
  12. data/test/johnson/generic/nodes/array_literal_test.rb +1 -1
  13. data/test/johnson/generic/nodes/ternary_test.rb +1 -1
  14. data/test/johnson/tracemonkey/split_global_test.html +18 -0
  15. data/vendor/tracemonkey/Makefile.in +100 -74
  16. data/vendor/tracemonkey/Makefile.ref +0 -13
  17. data/vendor/tracemonkey/README.html +2 -3
  18. data/vendor/tracemonkey/aclocal.m4 +3 -0
  19. data/vendor/tracemonkey/analysis-tests/Makefile.in +110 -0
  20. data/vendor/tracemonkey/analysis-tests/green-accessred.cpp +11 -0
  21. data/vendor/tracemonkey/analysis-tests/green-callred.cpp +12 -0
  22. data/vendor/tracemonkey/analysis-tests/green-callredptr.cpp +8 -0
  23. data/vendor/tracemonkey/analysis-tests/green-tored-badpath.cpp +14 -0
  24. data/vendor/tracemonkey/analysis-tests/green-tored.cpp +12 -0
  25. data/vendor/tracemonkey/analysis-tests/green-toredptr.cpp +12 -0
  26. data/vendor/tracemonkey/analysis-tests/misdeclared-red-funcptr.cpp +5 -0
  27. data/vendor/tracemonkey/analysis-tests/misdeclared-red-funcptr2.cpp +5 -0
  28. data/vendor/tracemonkey/analysis-tests/red-accessred.cpp +11 -0
  29. data/vendor/tracemonkey/analysis-tests/red-callgreen.cpp +8 -0
  30. data/vendor/tracemonkey/analysis-tests/red-callred.cpp +8 -0
  31. data/vendor/tracemonkey/analysis-tests/red-togreenptr-arg.cpp +11 -0
  32. data/vendor/tracemonkey/analysis-tests/red-togreenptr-field.cpp +15 -0
  33. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-array.cpp +8 -0
  34. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-cast.cpp +7 -0
  35. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-nested.cpp +18 -0
  36. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer-struct.cpp +12 -0
  37. data/vendor/tracemonkey/analysis-tests/red-togreenptr-initializer.cpp +7 -0
  38. data/vendor/tracemonkey/analysis-tests/red-togreenptr-return.cpp +9 -0
  39. data/vendor/tracemonkey/analysis-tests/red-togreenptr.cpp +10 -0
  40. data/vendor/tracemonkey/bench.sh +1 -1
  41. data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +0 -0
  42. data/vendor/tracemonkey/build/autoconf/config.sub +154 -63
  43. data/vendor/tracemonkey/build/autoconf/make-makefile +10 -3
  44. data/vendor/tracemonkey/build/autoconf/mozprog.m4 +76 -0
  45. data/vendor/tracemonkey/build/autoconf/nspr.m4 +25 -6
  46. data/vendor/tracemonkey/build/unix/mddepend.pl +2 -0
  47. data/vendor/tracemonkey/build/win32/pgomerge.py +0 -0
  48. data/vendor/tracemonkey/builtins.tbl +1 -1
  49. data/vendor/tracemonkey/config.mk +3 -5
  50. data/vendor/tracemonkey/config/Makefile.in +8 -5
  51. data/vendor/tracemonkey/config/autoconf.mk.in +5 -14
  52. data/vendor/tracemonkey/config/config.mk +28 -35
  53. data/vendor/tracemonkey/config/milestone.txt +1 -1
  54. data/vendor/tracemonkey/config/mkdepend/Makefile.in +2 -3
  55. data/vendor/tracemonkey/config/nsinstall.exe.manifest +17 -0
  56. data/vendor/tracemonkey/config/nsinstall_win.c +708 -0
  57. data/vendor/tracemonkey/config/rules.mk +153 -191
  58. data/vendor/tracemonkey/config/static-checking.js +21 -30
  59. data/vendor/tracemonkey/config/system-headers +17 -31
  60. data/vendor/tracemonkey/config/version.mk +2 -2
  61. data/vendor/tracemonkey/config/version_win.pl +5 -12
  62. data/vendor/tracemonkey/configure +1175 -1071
  63. data/vendor/tracemonkey/configure.in +237 -309
  64. data/vendor/tracemonkey/dtoa.c +0 -4
  65. data/vendor/tracemonkey/imacro_asm.js.in +8 -0
  66. data/vendor/tracemonkey/imacros.c.out +217 -267
  67. data/vendor/tracemonkey/imacros.jsasm +56 -98
  68. data/vendor/tracemonkey/jitstats.tbl +58 -16
  69. data/vendor/tracemonkey/js-config.h.in +8 -6
  70. data/vendor/tracemonkey/js.msg +1 -1
  71. data/vendor/tracemonkey/jsapi-tests/Makefile.in +76 -0
  72. data/vendor/tracemonkey/jsapi-tests/README +160 -0
  73. data/vendor/tracemonkey/jsapi-tests/selfTest.cpp +20 -0
  74. data/vendor/tracemonkey/jsapi-tests/testDebugger.cpp +25 -0
  75. data/vendor/tracemonkey/jsapi-tests/testDefineGetterSetterNonEnumerable.cpp +51 -0
  76. data/vendor/tracemonkey/jsapi-tests/testExtendedEq.cpp +45 -0
  77. data/vendor/tracemonkey/jsapi-tests/testIntString.cpp +13 -0
  78. data/vendor/tracemonkey/jsapi-tests/testIsAboutToBeFinalized.cpp +89 -0
  79. data/vendor/tracemonkey/jsapi-tests/testPropCache.cpp +31 -0
  80. data/vendor/tracemonkey/jsapi-tests/testSameValue.cpp +21 -0
  81. data/vendor/tracemonkey/jsapi-tests/testXDR.cpp +55 -0
  82. data/vendor/tracemonkey/jsapi-tests/tests.cpp +79 -0
  83. data/vendor/tracemonkey/jsapi-tests/tests.h +239 -0
  84. data/vendor/tracemonkey/jsapi.cpp +264 -336
  85. data/vendor/tracemonkey/jsapi.h +163 -57
  86. data/vendor/tracemonkey/jsarena.cpp +8 -8
  87. data/vendor/tracemonkey/jsarray.cpp +551 -602
  88. data/vendor/tracemonkey/jsarray.h +58 -57
  89. data/vendor/tracemonkey/jsatom.cpp +59 -56
  90. data/vendor/tracemonkey/jsatom.h +0 -6
  91. data/vendor/tracemonkey/jsatominlines.h +95 -0
  92. data/vendor/tracemonkey/jsbit.h +26 -1
  93. data/vendor/tracemonkey/jsbool.cpp +18 -11
  94. data/vendor/tracemonkey/jsbool.h +7 -11
  95. data/vendor/tracemonkey/jsbuiltins.cpp +91 -66
  96. data/vendor/tracemonkey/jsbuiltins.h +146 -76
  97. data/vendor/tracemonkey/jscntxt.cpp +141 -73
  98. data/vendor/tracemonkey/jscntxt.h +415 -106
  99. data/vendor/tracemonkey/jscompat.h +3 -4
  100. data/vendor/tracemonkey/jsconfig.mk +0 -12
  101. data/vendor/tracemonkey/jscpucfg.cpp +1 -1
  102. data/vendor/tracemonkey/jsdate.cpp +373 -181
  103. data/vendor/tracemonkey/jsdate.h +5 -1
  104. data/vendor/tracemonkey/jsdbgapi.cpp +595 -84
  105. data/vendor/tracemonkey/jsdbgapi.h +13 -4
  106. data/vendor/tracemonkey/jsdhash.cpp +42 -15
  107. data/vendor/tracemonkey/jsdhash.h +19 -0
  108. data/vendor/tracemonkey/jsdtoa.cpp +7 -7
  109. data/vendor/tracemonkey/{jsdtracef.c → jsdtracef.cpp} +56 -93
  110. data/vendor/tracemonkey/jsdtracef.h +2 -2
  111. data/vendor/tracemonkey/jsemit.cpp +92 -82
  112. data/vendor/tracemonkey/jsemit.h +3 -6
  113. data/vendor/tracemonkey/jsexn.cpp +46 -62
  114. data/vendor/tracemonkey/jsfile.cpp +91 -71
  115. data/vendor/tracemonkey/jsfun.cpp +535 -549
  116. data/vendor/tracemonkey/jsfun.h +104 -20
  117. data/vendor/tracemonkey/jsgc.cpp +275 -255
  118. data/vendor/tracemonkey/jsgc.h +46 -54
  119. data/vendor/tracemonkey/jshash.cpp +5 -5
  120. data/vendor/tracemonkey/jshash.h +3 -1
  121. data/vendor/tracemonkey/jsinterp.cpp +350 -4490
  122. data/vendor/tracemonkey/jsinterp.h +50 -39
  123. data/vendor/tracemonkey/jsinttypes.h +139 -0
  124. data/vendor/tracemonkey/jsinvoke.cpp +1 -1
  125. data/vendor/tracemonkey/jsiter.cpp +65 -58
  126. data/vendor/tracemonkey/jsiter.h +2 -2
  127. data/vendor/tracemonkey/jskwgen.cpp +2 -2
  128. data/vendor/tracemonkey/jslibmath.h +17 -0
  129. data/vendor/tracemonkey/jslock.cpp +73 -71
  130. data/vendor/tracemonkey/jslock.h +21 -18
  131. data/vendor/tracemonkey/jslog2.cpp +1 -1
  132. data/vendor/tracemonkey/jsmath.cpp +69 -109
  133. data/vendor/tracemonkey/jsmath.h +18 -8
  134. data/vendor/tracemonkey/jsnum.cpp +129 -106
  135. data/vendor/tracemonkey/jsnum.h +202 -55
  136. data/vendor/tracemonkey/jsobj.cpp +1108 -1076
  137. data/vendor/tracemonkey/jsobj.h +441 -204
  138. data/vendor/tracemonkey/jsobjinlines.h +59 -0
  139. data/vendor/tracemonkey/json.cpp +170 -263
  140. data/vendor/tracemonkey/json.h +2 -13
  141. data/vendor/tracemonkey/jsopcode.cpp +141 -89
  142. data/vendor/tracemonkey/jsopcode.h +23 -4
  143. data/vendor/tracemonkey/jsopcode.tbl +7 -1
  144. data/vendor/tracemonkey/jsoplengen.cpp +1 -1
  145. data/vendor/tracemonkey/jsops.cpp +4213 -0
  146. data/vendor/tracemonkey/jsotypes.h +0 -4
  147. data/vendor/tracemonkey/jsparse.cpp +147 -262
  148. data/vendor/tracemonkey/jsparse.h +12 -10
  149. data/vendor/tracemonkey/jsprf.cpp +11 -11
  150. data/vendor/tracemonkey/jsprvtd.h +40 -33
  151. data/vendor/tracemonkey/jspubtd.h +3 -6
  152. data/vendor/tracemonkey/jsregexp.cpp +1260 -455
  153. data/vendor/tracemonkey/jsregexp.h +17 -8
  154. data/vendor/tracemonkey/jsscan.cpp +151 -324
  155. data/vendor/tracemonkey/jsscan.h +25 -82
  156. data/vendor/tracemonkey/jsscope.cpp +385 -300
  157. data/vendor/tracemonkey/jsscope.h +290 -117
  158. data/vendor/tracemonkey/jsscript.cpp +135 -153
  159. data/vendor/tracemonkey/jsscript.h +52 -68
  160. data/vendor/tracemonkey/jsscriptinlines.h +69 -0
  161. data/vendor/tracemonkey/jsshell.msg +2 -0
  162. data/vendor/tracemonkey/jsstack.js +213 -7
  163. data/vendor/tracemonkey/jsstdint.h +58 -40
  164. data/vendor/tracemonkey/jsstr.cpp +1247 -954
  165. data/vendor/tracemonkey/jsstr.h +410 -95
  166. data/vendor/tracemonkey/{jsstddef.h → jsstrinlines.h} +30 -42
  167. data/vendor/tracemonkey/jstask.cpp +126 -0
  168. data/vendor/tracemonkey/jstask.h +88 -0
  169. data/vendor/tracemonkey/jstl.h +262 -0
  170. data/vendor/tracemonkey/jstracer.cpp +6806 -3438
  171. data/vendor/tracemonkey/jstracer.h +675 -169
  172. data/vendor/tracemonkey/jstypes.h +29 -49
  173. data/vendor/tracemonkey/jsutil.cpp +3 -3
  174. data/vendor/tracemonkey/jsutil.h +127 -5
  175. data/vendor/tracemonkey/jsvector.h +775 -0
  176. data/vendor/tracemonkey/jswince.asm +40 -2
  177. data/vendor/tracemonkey/jsxdrapi.cpp +24 -30
  178. data/vendor/tracemonkey/jsxdrapi.h +1 -1
  179. data/vendor/tracemonkey/jsxml.cpp +542 -712
  180. data/vendor/tracemonkey/jsxml.h +3 -11
  181. data/vendor/tracemonkey/lirasm/Makefile.in +78 -0
  182. data/vendor/tracemonkey/lirasm/lirasm.cpp +1159 -0
  183. data/vendor/tracemonkey/lirasm/testlirc.sh +27 -0
  184. data/vendor/tracemonkey/lirasm/tests/add.in +4 -0
  185. data/vendor/tracemonkey/lirasm/tests/add.out +1 -0
  186. data/vendor/tracemonkey/lirasm/tests/addsub.in +5 -0
  187. data/vendor/tracemonkey/lirasm/tests/addsub.out +1 -0
  188. data/vendor/tracemonkey/lirasm/tests/call1.in +11 -0
  189. data/vendor/tracemonkey/lirasm/tests/call1.out +2 -0
  190. data/vendor/tracemonkey/lirasm/tests/call2.in +5 -0
  191. data/vendor/tracemonkey/lirasm/tests/call2.out +1 -0
  192. data/vendor/tracemonkey/lirasm/tests/floatingpoint.in +4 -0
  193. data/vendor/tracemonkey/lirasm/tests/floatingpoint.out +1 -0
  194. data/vendor/tracemonkey/lirasm/tests/loadstore.in +9 -0
  195. data/vendor/tracemonkey/lirasm/tests/loadstore.out +1 -0
  196. data/vendor/tracemonkey/lirasm/tests/multfrag1.in +26 -0
  197. data/vendor/tracemonkey/lirasm/tests/multfrag1.out +2 -0
  198. data/vendor/tracemonkey/lirasm/tests/multfrag2.in +14 -0
  199. data/vendor/tracemonkey/lirasm/tests/multfrag2.out +1 -0
  200. data/vendor/tracemonkey/lirasm/tests/multfrag3.in +15 -0
  201. data/vendor/tracemonkey/lirasm/tests/multfrag3.out +1 -0
  202. data/vendor/tracemonkey/liveconnect/jsj.c +5 -5
  203. data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +2 -4
  204. data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +2 -4
  205. data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +3 -5
  206. data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +4 -24
  207. data/vendor/tracemonkey/liveconnect/jsj_private.h +4 -4
  208. data/vendor/tracemonkey/liveconnect/jsj_utils.c +18 -2
  209. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +30 -4
  210. data/vendor/tracemonkey/nanojit/{TraceTreeDrawer.h → Allocator.cpp} +56 -48
  211. data/vendor/tracemonkey/nanojit/Allocator.h +117 -0
  212. data/vendor/tracemonkey/nanojit/Assembler.cpp +1378 -1442
  213. data/vendor/tracemonkey/nanojit/Assembler.h +250 -280
  214. data/vendor/tracemonkey/nanojit/CodeAlloc.cpp +506 -0
  215. data/vendor/tracemonkey/nanojit/CodeAlloc.h +201 -0
  216. data/vendor/tracemonkey/nanojit/Containers.cpp +95 -0
  217. data/vendor/tracemonkey/nanojit/Containers.h +463 -0
  218. data/vendor/tracemonkey/nanojit/Fragmento.cpp +35 -604
  219. data/vendor/tracemonkey/nanojit/Fragmento.h +84 -183
  220. data/vendor/tracemonkey/nanojit/LIR.cpp +1969 -2050
  221. data/vendor/tracemonkey/nanojit/LIR.h +1351 -720
  222. data/vendor/tracemonkey/nanojit/LIRopcode.tbl +173 -159
  223. data/vendor/tracemonkey/nanojit/Native.h +61 -48
  224. data/vendor/tracemonkey/nanojit/NativeARM.cpp +1509 -849
  225. data/vendor/tracemonkey/nanojit/NativeARM.h +362 -286
  226. data/vendor/tracemonkey/nanojit/NativePPC.cpp +1296 -0
  227. data/vendor/tracemonkey/nanojit/NativePPC.h +587 -0
  228. data/vendor/tracemonkey/nanojit/NativeSparc.cpp +146 -224
  229. data/vendor/tracemonkey/nanojit/NativeSparc.h +235 -229
  230. data/vendor/tracemonkey/nanojit/NativeX64.cpp +1434 -0
  231. data/vendor/tracemonkey/nanojit/NativeX64.h +392 -0
  232. data/vendor/tracemonkey/nanojit/Nativei386.cpp +1395 -1367
  233. data/vendor/tracemonkey/nanojit/Nativei386.h +519 -514
  234. data/vendor/tracemonkey/nanojit/RegAlloc.cpp +37 -130
  235. data/vendor/tracemonkey/nanojit/RegAlloc.h +90 -49
  236. data/vendor/tracemonkey/nanojit/avmplus.cpp +249 -32
  237. data/vendor/tracemonkey/nanojit/avmplus.h +121 -667
  238. data/vendor/tracemonkey/nanojit/manifest.mk +79 -0
  239. data/vendor/tracemonkey/nanojit/nanojit.h +179 -157
  240. data/vendor/tracemonkey/plify_jsdhash.sed +10 -6
  241. data/vendor/tracemonkey/prmjtime.cpp +97 -55
  242. data/vendor/tracemonkey/prmjtime.h +1 -1
  243. data/vendor/tracemonkey/{config/revdepth.pl → ref-config/HP-UXB.11.31.mk} +28 -14
  244. data/vendor/tracemonkey/resource.h +1 -1
  245. data/vendor/tracemonkey/shell/js.cpp +358 -201
  246. data/vendor/tracemonkey/tests/Makefile.in +78 -0
  247. data/vendor/tracemonkey/tests/Patterns.pm +257 -0
  248. data/vendor/tracemonkey/tests/README-jsDriver.html +325 -0
  249. data/vendor/tracemonkey/tests/SisyphusMakefile +58 -0
  250. data/vendor/tracemonkey/tests/bisect.sh +488 -0
  251. data/vendor/tracemonkey/tests/browser.js +964 -0
  252. data/vendor/tracemonkey/tests/changes.sh +122 -0
  253. data/vendor/tracemonkey/tests/config.mk +113 -0
  254. data/vendor/tracemonkey/tests/config.sh +138 -0
  255. data/vendor/tracemonkey/tests/detect-universe.sh +126 -0
  256. data/vendor/tracemonkey/tests/dikdik-n.tests +3 -0
  257. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.1.js +85 -0
  258. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.2.js +86 -0
  259. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.3.js +56 -0
  260. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-01.js +61 -0
  261. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-02.js +58 -0
  262. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-03.js +60 -0
  263. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-04.js +56 -0
  264. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-05.js +57 -0
  265. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-06.js +61 -0
  266. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-07.js +78 -0
  267. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4-08.js +158 -0
  268. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.4.js +140 -0
  269. data/vendor/tracemonkey/tests/e4x/Expressions/11.1.5.js +62 -0
  270. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.1.js +173 -0
  271. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.2.js +106 -0
  272. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.3.js +61 -0
  273. data/vendor/tracemonkey/tests/e4x/Expressions/11.2.4.js +117 -0
  274. data/vendor/tracemonkey/tests/e4x/Expressions/11.3.1.js +272 -0
  275. data/vendor/tracemonkey/tests/e4x/Expressions/11.3.2.js +52 -0
  276. data/vendor/tracemonkey/tests/e4x/Expressions/11.4.1.js +139 -0
  277. data/vendor/tracemonkey/tests/e4x/Expressions/11.5.1.js +101 -0
  278. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.1.js +429 -0
  279. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.2.js +326 -0
  280. data/vendor/tracemonkey/tests/e4x/Expressions/11.6.3.js +119 -0
  281. data/vendor/tracemonkey/tests/e4x/Expressions/jstests.list +30 -0
  282. data/vendor/tracemonkey/tests/e4x/Expressions/regress-301545.js +55 -0
  283. data/vendor/tracemonkey/tests/e4x/Expressions/regress-302531.js +63 -0
  284. data/vendor/tracemonkey/tests/e4x/Expressions/regress-340024.js +61 -0
  285. data/vendor/tracemonkey/tests/e4x/Expressions/regress-366123.js +67 -0
  286. data/vendor/tracemonkey/tests/e4x/Expressions/regress-496113.js +65 -0
  287. data/vendor/tracemonkey/tests/e4x/Expressions/shell.js +1 -0
  288. data/vendor/tracemonkey/tests/e4x/GC/jstests.list +11 -0
  289. data/vendor/tracemonkey/tests/e4x/GC/regress-280844-1.js +59 -0
  290. data/vendor/tracemonkey/tests/e4x/GC/regress-280844-2.js +71 -0
  291. data/vendor/tracemonkey/tests/e4x/GC/regress-292455.js +79 -0
  292. data/vendor/tracemonkey/tests/e4x/GC/regress-313952-01.js +68 -0
  293. data/vendor/tracemonkey/tests/e4x/GC/regress-313952-02.js +77 -0
  294. data/vendor/tracemonkey/tests/e4x/GC/regress-324117.js +98 -0
  295. data/vendor/tracemonkey/tests/e4x/GC/regress-324278.js +86 -0
  296. data/vendor/tracemonkey/tests/e4x/GC/regress-339785.js +92 -0
  297. data/vendor/tracemonkey/tests/e4x/GC/regress-357063-01.js +73 -0
  298. data/vendor/tracemonkey/tests/e4x/GC/regress-357063-02.js +69 -0
  299. data/vendor/tracemonkey/tests/e4x/GC/shell.js +1 -0
  300. data/vendor/tracemonkey/tests/e4x/Global/13.1.2.1.js +559 -0
  301. data/vendor/tracemonkey/tests/e4x/Global/jstests.list +2 -0
  302. data/vendor/tracemonkey/tests/e4x/Global/shell.js +1 -0
  303. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.1.js +68 -0
  304. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.2.js +86 -0
  305. data/vendor/tracemonkey/tests/e4x/Namespace/13.2.5.js +67 -0
  306. data/vendor/tracemonkey/tests/e4x/Namespace/jstests.list +9 -0
  307. data/vendor/tracemonkey/tests/e4x/Namespace/regress-283972.js +65 -0
  308. data/vendor/tracemonkey/tests/e4x/Namespace/regress-292863.js +62 -0
  309. data/vendor/tracemonkey/tests/e4x/Namespace/regress-350442.js +74 -0
  310. data/vendor/tracemonkey/tests/e4x/Namespace/regress-444608-02.js +55 -0
  311. data/vendor/tracemonkey/tests/e4x/Namespace/regress-444608.js +55 -0
  312. data/vendor/tracemonkey/tests/e4x/Namespace/shell.js +1 -0
  313. data/vendor/tracemonkey/tests/e4x/QName/13.3.1.js +75 -0
  314. data/vendor/tracemonkey/tests/e4x/QName/13.3.2.js +87 -0
  315. data/vendor/tracemonkey/tests/e4x/QName/13.3.5.js +67 -0
  316. data/vendor/tracemonkey/tests/e4x/QName/jstests.list +8 -0
  317. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-01.js +53 -0
  318. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-02.js +55 -0
  319. data/vendor/tracemonkey/tests/e4x/QName/regress-373595-03.js +55 -0
  320. data/vendor/tracemonkey/tests/e4x/QName/regress-444608.js +56 -0
  321. data/vendor/tracemonkey/tests/e4x/QName/shell.js +1 -0
  322. data/vendor/tracemonkey/tests/e4x/Regress/jstests.list +93 -0
  323. data/vendor/tracemonkey/tests/e4x/Regress/regress-257679.js +52 -0
  324. data/vendor/tracemonkey/tests/e4x/Regress/regress-263934.js +66 -0
  325. data/vendor/tracemonkey/tests/e4x/Regress/regress-263935.js +67 -0
  326. data/vendor/tracemonkey/tests/e4x/Regress/regress-263936.js +65 -0
  327. data/vendor/tracemonkey/tests/e4x/Regress/regress-264369.js +53 -0
  328. data/vendor/tracemonkey/tests/e4x/Regress/regress-271545.js +74 -0
  329. data/vendor/tracemonkey/tests/e4x/Regress/regress-277650.js +64 -0
  330. data/vendor/tracemonkey/tests/e4x/Regress/regress-277664.js +64 -0
  331. data/vendor/tracemonkey/tests/e4x/Regress/regress-277683.js +65 -0
  332. data/vendor/tracemonkey/tests/e4x/Regress/regress-277779.js +60 -0
  333. data/vendor/tracemonkey/tests/e4x/Regress/regress-277935.js +68 -0
  334. data/vendor/tracemonkey/tests/e4x/Regress/regress-278112.js +55 -0
  335. data/vendor/tracemonkey/tests/e4x/Regress/regress-283349.js +57 -0
  336. data/vendor/tracemonkey/tests/e4x/Regress/regress-290056.js +61 -0
  337. data/vendor/tracemonkey/tests/e4x/Regress/regress-290499.js +52 -0
  338. data/vendor/tracemonkey/tests/e4x/Regress/regress-301553.js +60 -0
  339. data/vendor/tracemonkey/tests/e4x/Regress/regress-301573.js +57 -0
  340. data/vendor/tracemonkey/tests/e4x/Regress/regress-301596.js +60 -0
  341. data/vendor/tracemonkey/tests/e4x/Regress/regress-301692.js +83 -0
  342. data/vendor/tracemonkey/tests/e4x/Regress/regress-308111.js +959 -0
  343. data/vendor/tracemonkey/tests/e4x/Regress/regress-309897.js +68 -0
  344. data/vendor/tracemonkey/tests/e4x/Regress/regress-311580.js +61 -0
  345. data/vendor/tracemonkey/tests/e4x/Regress/regress-313799.js +53 -0
  346. data/vendor/tracemonkey/tests/e4x/Regress/regress-318922.js +108 -0
  347. data/vendor/tracemonkey/tests/e4x/Regress/regress-319872.js +78 -0
  348. data/vendor/tracemonkey/tests/e4x/Regress/regress-321547.js +91 -0
  349. data/vendor/tracemonkey/tests/e4x/Regress/regress-322499.js +72 -0
  350. data/vendor/tracemonkey/tests/e4x/Regress/regress-323338-1.js +75 -0
  351. data/vendor/tracemonkey/tests/e4x/Regress/regress-323338-2.js +52 -0
  352. data/vendor/tracemonkey/tests/e4x/Regress/regress-325425.js +60 -0
  353. data/vendor/tracemonkey/tests/e4x/Regress/regress-327564.js +78 -0
  354. data/vendor/tracemonkey/tests/e4x/Regress/regress-327691-01.js +59 -0
  355. data/vendor/tracemonkey/tests/e4x/Regress/regress-327691-02.js +59 -0
  356. data/vendor/tracemonkey/tests/e4x/Regress/regress-327697.js +80 -0
  357. data/vendor/tracemonkey/tests/e4x/Regress/regress-328249.js +65 -0
  358. data/vendor/tracemonkey/tests/e4x/Regress/regress-329257.js +71 -0
  359. data/vendor/tracemonkey/tests/e4x/Regress/regress-331558.js +54 -0
  360. data/vendor/tracemonkey/tests/e4x/Regress/regress-331664.js +53 -0
  361. data/vendor/tracemonkey/tests/e4x/Regress/regress-344455.js +60 -0
  362. data/vendor/tracemonkey/tests/e4x/Regress/regress-347155.js +69 -0
  363. data/vendor/tracemonkey/tests/e4x/Regress/regress-350206-1.js +71 -0
  364. data/vendor/tracemonkey/tests/e4x/Regress/regress-350206.js +57 -0
  365. data/vendor/tracemonkey/tests/e4x/Regress/regress-350238.js +65 -0
  366. data/vendor/tracemonkey/tests/e4x/Regress/regress-350629.js +129 -0
  367. data/vendor/tracemonkey/tests/e4x/Regress/regress-352097.js +92 -0
  368. data/vendor/tracemonkey/tests/e4x/Regress/regress-352103.js +76 -0
  369. data/vendor/tracemonkey/tests/e4x/Regress/regress-352223.js +71 -0
  370. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-01.js +67 -0
  371. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-02.js +67 -0
  372. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-03.js +68 -0
  373. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-04.js +66 -0
  374. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-05.js +66 -0
  375. data/vendor/tracemonkey/tests/e4x/Regress/regress-354145-07.js +59 -0
  376. data/vendor/tracemonkey/tests/e4x/Regress/regress-354998.js +94 -0
  377. data/vendor/tracemonkey/tests/e4x/Regress/regress-355474-02.js +58 -0
  378. data/vendor/tracemonkey/tests/e4x/Regress/regress-355478.js +62 -0
  379. data/vendor/tracemonkey/tests/e4x/Regress/regress-355569.js +163 -0
  380. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-01.js +57 -0
  381. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-02.js +63 -0
  382. data/vendor/tracemonkey/tests/e4x/Regress/regress-356238-03.js +64 -0
  383. data/vendor/tracemonkey/tests/e4x/Regress/regress-361451.js +57 -0
  384. data/vendor/tracemonkey/tests/e4x/Regress/regress-364017.js +58 -0
  385. data/vendor/tracemonkey/tests/e4x/Regress/regress-369032.js +63 -0
  386. data/vendor/tracemonkey/tests/e4x/Regress/regress-369536.js +48 -0
  387. data/vendor/tracemonkey/tests/e4x/Regress/regress-369740.js +82 -0
  388. data/vendor/tracemonkey/tests/e4x/Regress/regress-370016.js +52 -0
  389. data/vendor/tracemonkey/tests/e4x/Regress/regress-370048-01.js +59 -0
  390. data/vendor/tracemonkey/tests/e4x/Regress/regress-370048-02.js +57 -0
  391. data/vendor/tracemonkey/tests/e4x/Regress/regress-370372.js +73 -0
  392. data/vendor/tracemonkey/tests/e4x/Regress/regress-371369.js +63 -0
  393. data/vendor/tracemonkey/tests/e4x/Regress/regress-372563.js +52 -0
  394. data/vendor/tracemonkey/tests/e4x/Regress/regress-372564.js +52 -0
  395. data/vendor/tracemonkey/tests/e4x/Regress/regress-373082.js +110 -0
  396. data/vendor/tracemonkey/tests/e4x/Regress/regress-374106.js +52 -0
  397. data/vendor/tracemonkey/tests/e4x/Regress/regress-374112.js +52 -0
  398. data/vendor/tracemonkey/tests/e4x/Regress/regress-374116.js +52 -0
  399. data/vendor/tracemonkey/tests/e4x/Regress/regress-374160.js +52 -0
  400. data/vendor/tracemonkey/tests/e4x/Regress/regress-375406.js +53 -0
  401. data/vendor/tracemonkey/tests/e4x/Regress/regress-378492.js +60 -0
  402. data/vendor/tracemonkey/tests/e4x/Regress/regress-380833.js +55 -0
  403. data/vendor/tracemonkey/tests/e4x/Regress/regress-383255.js +60 -0
  404. data/vendor/tracemonkey/tests/e4x/Regress/regress-394941.js +68 -0
  405. data/vendor/tracemonkey/tests/e4x/Regress/regress-407323.js +67 -0
  406. data/vendor/tracemonkey/tests/e4x/Regress/regress-426520.js +64 -0
  407. data/vendor/tracemonkey/tests/e4x/Regress/regress-453915.js +54 -0
  408. data/vendor/tracemonkey/tests/e4x/Regress/regress-458679-01.js +64 -0
  409. data/vendor/tracemonkey/tests/e4x/Regress/regress-458679-02.js +76 -0
  410. data/vendor/tracemonkey/tests/e4x/Regress/regress-460180.js +53 -0
  411. data/vendor/tracemonkey/tests/e4x/Regress/regress-465063.js +59 -0
  412. data/vendor/tracemonkey/tests/e4x/Regress/regress-473709.js +71 -0
  413. data/vendor/tracemonkey/tests/e4x/Regress/regress-474319.js +60 -0
  414. data/vendor/tracemonkey/tests/e4x/Regress/regress-477053.js +60 -0
  415. data/vendor/tracemonkey/tests/e4x/Regress/shell.js +1 -0
  416. data/vendor/tracemonkey/tests/e4x/Statements/12.1.js +134 -0
  417. data/vendor/tracemonkey/tests/e4x/Statements/12.2.js +104 -0
  418. data/vendor/tracemonkey/tests/e4x/Statements/12.3-01.js +76 -0
  419. data/vendor/tracemonkey/tests/e4x/Statements/jstests.list +4 -0
  420. data/vendor/tracemonkey/tests/e4x/Statements/shell.js +1 -0
  421. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.1.1.js +141 -0
  422. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.1.2.js +148 -0
  423. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.2.1.js +159 -0
  424. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.3.1.js +60 -0
  425. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.3.js +77 -0
  426. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.4.1.js +95 -0
  427. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.4.js +85 -0
  428. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.5.1.js +52 -0
  429. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.5.js +52 -0
  430. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.6.1.js +52 -0
  431. data/vendor/tracemonkey/tests/e4x/TypeConversion/10.6.js +52 -0
  432. data/vendor/tracemonkey/tests/e4x/TypeConversion/jstests.list +13 -0
  433. data/vendor/tracemonkey/tests/e4x/TypeConversion/regress-302097.js +59 -0
  434. data/vendor/tracemonkey/tests/e4x/TypeConversion/shell.js +1 -0
  435. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.1.js +304 -0
  436. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.10.js +52 -0
  437. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.11.js +52 -0
  438. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.12.js +52 -0
  439. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.13.js +52 -0
  440. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.2.js +82 -0
  441. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.3.js +213 -0
  442. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.4.js +50 -0
  443. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.5.js +53 -0
  444. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.6.js +59 -0
  445. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.7.js +53 -0
  446. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.8.js +54 -0
  447. data/vendor/tracemonkey/tests/e4x/Types/9.1.1.9.js +139 -0
  448. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.1.js +164 -0
  449. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.10.js +53 -0
  450. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.2.js +64 -0
  451. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.3.js +52 -0
  452. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.4.js +53 -0
  453. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.5.js +54 -0
  454. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.6.js +53 -0
  455. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.7.js +53 -0
  456. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.8.js +56 -0
  457. data/vendor/tracemonkey/tests/e4x/Types/9.2.1.9.js +81 -0
  458. data/vendor/tracemonkey/tests/e4x/Types/jstests.list +24 -0
  459. data/vendor/tracemonkey/tests/e4x/Types/shell.js +1 -0
  460. data/vendor/tracemonkey/tests/e4x/XML/13.4.1.js +113 -0
  461. data/vendor/tracemonkey/tests/e4x/XML/13.4.2.js +116 -0
  462. data/vendor/tracemonkey/tests/e4x/XML/13.4.3.10.js +52 -0
  463. data/vendor/tracemonkey/tests/e4x/XML/13.4.3.js +239 -0
  464. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.1.js +52 -0
  465. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.10.js +100 -0
  466. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.11.js +91 -0
  467. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.12-1.js +89 -0
  468. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.12.js +69 -0
  469. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.13.js +49 -0
  470. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.14.js +69 -0
  471. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.15.js +79 -0
  472. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.16.js +78 -0
  473. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.17.js +64 -0
  474. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.18.js +84 -0
  475. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.19.js +84 -0
  476. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.2.js +69 -0
  477. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.20.js +65 -0
  478. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.21.js +81 -0
  479. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.22.js +81 -0
  480. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.23.js +93 -0
  481. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.24.js +64 -0
  482. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.25.js +62 -0
  483. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.26.js +138 -0
  484. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.27.js +63 -0
  485. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.28.js +73 -0
  486. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.29.js +93 -0
  487. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3-01.js +72 -0
  488. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3-02.js +62 -0
  489. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.3.js +84 -0
  490. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.30.js +62 -0
  491. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.31.js +78 -0
  492. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.32-01.js +56 -0
  493. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.32.js +100 -0
  494. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.33.js +80 -0
  495. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.34.js +77 -0
  496. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.35.js +91 -0
  497. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.36.js +72 -0
  498. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.37.js +67 -0
  499. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.38.js +107 -0
  500. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.39.js +129 -0
  501. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.4.js +76 -0
  502. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.40.js +69 -0
  503. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.5.js +71 -0
  504. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.6.js +68 -0
  505. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.7.js +62 -0
  506. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.8.js +69 -0
  507. data/vendor/tracemonkey/tests/e4x/XML/13.4.4.9.js +63 -0
  508. data/vendor/tracemonkey/tests/e4x/XML/jstests.list +55 -0
  509. data/vendor/tracemonkey/tests/e4x/XML/regress-291930.js +54 -0
  510. data/vendor/tracemonkey/tests/e4x/XML/regress-324422-1.js +78 -0
  511. data/vendor/tracemonkey/tests/e4x/XML/regress-324422-2.js +72 -0
  512. data/vendor/tracemonkey/tests/e4x/XML/regress-324688.js +105 -0
  513. data/vendor/tracemonkey/tests/e4x/XML/regress-336921.js +63 -0
  514. data/vendor/tracemonkey/tests/e4x/XML/regress-376773.js +584 -0
  515. data/vendor/tracemonkey/tests/e4x/XML/shell.js +1 -0
  516. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.1.js +97 -0
  517. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.2.js +91 -0
  518. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.10.js +48 -0
  519. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.11.js +76 -0
  520. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.12.js +105 -0
  521. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.13.js +105 -0
  522. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.14.js +80 -0
  523. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.15.js +49 -0
  524. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.16.js +78 -0
  525. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.17.js +49 -0
  526. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.18.js +49 -0
  527. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.19.js +49 -0
  528. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.2.js +87 -0
  529. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.20.js +57 -0
  530. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.21.js +57 -0
  531. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.22.js +50 -0
  532. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.3.js +74 -0
  533. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.4.js +86 -0
  534. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.5.js +96 -0
  535. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.6.js +49 -0
  536. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.7.js +59 -0
  537. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.8.js +75 -0
  538. data/vendor/tracemonkey/tests/e4x/XMLList/13.5.4.9.js +84 -0
  539. data/vendor/tracemonkey/tests/e4x/XMLList/jstests.list +25 -0
  540. data/vendor/tracemonkey/tests/e4x/XMLList/regress-373072.js +61 -0
  541. data/vendor/tracemonkey/tests/e4x/XMLList/shell.js +1 -0
  542. data/vendor/tracemonkey/tests/e4x/browser.js +82 -0
  543. data/vendor/tracemonkey/tests/e4x/decompilation/decompile-xml-escapes.js +78 -0
  544. data/vendor/tracemonkey/tests/e4x/decompilation/jstests.list +19 -0
  545. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349814.js +62 -0
  546. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349815.js +56 -0
  547. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349822.js +63 -0
  548. data/vendor/tracemonkey/tests/e4x/decompilation/regress-349956.js +60 -0
  549. data/vendor/tracemonkey/tests/e4x/decompilation/regress-350226.js +55 -0
  550. data/vendor/tracemonkey/tests/e4x/decompilation/regress-350531.js +61 -0
  551. data/vendor/tracemonkey/tests/e4x/decompilation/regress-351706.js +61 -0
  552. data/vendor/tracemonkey/tests/e4x/decompilation/regress-351988.js +56 -0
  553. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352013.js +137 -0
  554. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352459.js +54 -0
  555. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352649.js +54 -0
  556. data/vendor/tracemonkey/tests/e4x/decompilation/regress-352789.js +66 -0
  557. data/vendor/tracemonkey/tests/e4x/decompilation/regress-355101.js +54 -0
  558. data/vendor/tracemonkey/tests/e4x/decompilation/regress-355474-01.js +61 -0
  559. data/vendor/tracemonkey/tests/e4x/decompilation/regress-373678.js +55 -0
  560. data/vendor/tracemonkey/tests/e4x/decompilation/regress-429249.js +64 -0
  561. data/vendor/tracemonkey/tests/e4x/decompilation/regress-461233.js +56 -0
  562. data/vendor/tracemonkey/tests/e4x/decompilation/shell.js +1 -0
  563. data/vendor/tracemonkey/tests/e4x/extensions/jstests.list +21 -0
  564. data/vendor/tracemonkey/tests/e4x/extensions/regress-305335.js +62 -0
  565. data/vendor/tracemonkey/tests/e4x/extensions/regress-312196.js +115 -0
  566. data/vendor/tracemonkey/tests/e4x/extensions/regress-313080.js +60 -0
  567. data/vendor/tracemonkey/tests/e4x/extensions/regress-321547.js +61 -0
  568. data/vendor/tracemonkey/tests/e4x/extensions/regress-327534.js +61 -0
  569. data/vendor/tracemonkey/tests/e4x/extensions/regress-327897.js +66 -0
  570. data/vendor/tracemonkey/tests/e4x/extensions/regress-337226.js +52 -0
  571. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-01.js +81 -0
  572. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-02.js +86 -0
  573. data/vendor/tracemonkey/tests/e4x/extensions/regress-352846-03.js +86 -0
  574. data/vendor/tracemonkey/tests/e4x/extensions/regress-353165.js +115 -0
  575. data/vendor/tracemonkey/tests/e4x/extensions/regress-354145-06.js +67 -0
  576. data/vendor/tracemonkey/tests/e4x/extensions/regress-354151-01.js +63 -0
  577. data/vendor/tracemonkey/tests/e4x/extensions/regress-354151-02.js +69 -0
  578. data/vendor/tracemonkey/tests/e4x/extensions/regress-374025.js +54 -0
  579. data/vendor/tracemonkey/tests/e4x/extensions/regress-374163.js +62 -0
  580. data/vendor/tracemonkey/tests/e4x/extensions/regress-410192.js +55 -0
  581. data/vendor/tracemonkey/tests/e4x/extensions/regress-450871-01.js +67 -0
  582. data/vendor/tracemonkey/tests/e4x/extensions/regress-450871-02.js +68 -0
  583. data/vendor/tracemonkey/tests/e4x/extensions/regress-462734-01.js +67 -0
  584. data/vendor/tracemonkey/tests/e4x/extensions/shell.js +1 -0
  585. data/vendor/tracemonkey/tests/e4x/jstests.list +13 -0
  586. data/vendor/tracemonkey/tests/e4x/shell.js +121 -0
  587. data/vendor/tracemonkey/tests/e4x/template.js +51 -0
  588. data/vendor/tracemonkey/tests/ecma/Array/15.4-1.js +133 -0
  589. data/vendor/tracemonkey/tests/ecma/Array/15.4-2.js +114 -0
  590. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.1.js +111 -0
  591. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.2.js +162 -0
  592. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.3.js +84 -0
  593. data/vendor/tracemonkey/tests/ecma/Array/15.4.1.js +132 -0
  594. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-1.js +112 -0
  595. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-2.js +101 -0
  596. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.1-3.js +137 -0
  597. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.2-1.js +183 -0
  598. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.2-2.js +118 -0
  599. data/vendor/tracemonkey/tests/ecma/Array/15.4.2.3.js +101 -0
  600. data/vendor/tracemonkey/tests/ecma/Array/15.4.3.1-2.js +81 -0
  601. data/vendor/tracemonkey/tests/ecma/Array/15.4.3.2.js +62 -0
  602. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.1.js +63 -0
  603. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.2.js +110 -0
  604. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.3-1.js +163 -0
  605. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.4-1.js +294 -0
  606. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.4-2.js +169 -0
  607. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-1.js +225 -0
  608. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-2.js +227 -0
  609. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.5-3.js +182 -0
  610. data/vendor/tracemonkey/tests/ecma/Array/15.4.4.js +74 -0
  611. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.1-1.js +170 -0
  612. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.1-2.js +152 -0
  613. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.2-1.js +86 -0
  614. data/vendor/tracemonkey/tests/ecma/Array/15.4.5.2-2.js +127 -0
  615. data/vendor/tracemonkey/tests/ecma/Array/jstests.list +28 -0
  616. data/vendor/tracemonkey/tests/ecma/Array/shell.js +1 -0
  617. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.1.js +96 -0
  618. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.2.js +161 -0
  619. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-1.js +72 -0
  620. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-2.js +71 -0
  621. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-3.js +71 -0
  622. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1-4.js +75 -0
  623. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.3.1.js +69 -0
  624. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4-1.js +72 -0
  625. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.1.js +62 -0
  626. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-1.js +97 -0
  627. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-2.js +73 -0
  628. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-3.js +65 -0
  629. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.2-4-n.js +69 -0
  630. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-1.js +88 -0
  631. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-2.js +67 -0
  632. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-3.js +66 -0
  633. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3-4-n.js +69 -0
  634. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.3.js +83 -0
  635. data/vendor/tracemonkey/tests/ecma/Boolean/15.6.4.js +80 -0
  636. data/vendor/tracemonkey/tests/ecma/Boolean/jstests.list +20 -0
  637. data/vendor/tracemonkey/tests/ecma/Boolean/shell.js +1 -0
  638. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.1-1.js +95 -0
  639. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.1-2.js +90 -0
  640. data/vendor/tracemonkey/tests/ecma/Date/15.9.1.13-1.js +78 -0
  641. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.1.js +174 -0
  642. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-1.js +86 -0
  643. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-2.js +89 -0
  644. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-3.js +86 -0
  645. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-4.js +82 -0
  646. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-5.js +86 -0
  647. data/vendor/tracemonkey/tests/ecma/Date/15.9.2.2-6.js +85 -0
  648. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-1.js +239 -0
  649. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-2.js +152 -0
  650. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-3.js +141 -0
  651. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-4.js +151 -0
  652. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.1-5.js +140 -0
  653. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-1.js +150 -0
  654. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-2.js +141 -0
  655. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-3.js +145 -0
  656. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-4.js +142 -0
  657. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.2-5.js +139 -0
  658. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-1.js +155 -0
  659. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-2.js +153 -0
  660. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-3.js +160 -0
  661. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-4.js +161 -0
  662. data/vendor/tracemonkey/tests/ecma/Date/15.9.3.8-5.js +161 -0
  663. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.2-1.js +81 -0
  664. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.2.js +191 -0
  665. data/vendor/tracemonkey/tests/ecma/Date/15.9.4.3.js +185 -0
  666. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.1.js +63 -0
  667. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-1.js +85 -0
  668. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-10.js +89 -0
  669. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-11.js +89 -0
  670. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-12.js +89 -0
  671. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-13.js +89 -0
  672. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-2.js +85 -0
  673. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-3.js +85 -0
  674. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-4.js +85 -0
  675. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-5.js +85 -0
  676. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-6.js +85 -0
  677. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-7.js +85 -0
  678. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-8.js +89 -0
  679. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.10-9.js +89 -0
  680. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-1.js +76 -0
  681. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-2.js +76 -0
  682. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-3.js +76 -0
  683. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-4.js +76 -0
  684. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-5.js +76 -0
  685. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-6.js +76 -0
  686. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.11-7.js +76 -0
  687. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-1.js +77 -0
  688. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-2.js +77 -0
  689. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-3.js +77 -0
  690. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-4.js +77 -0
  691. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-5.js +77 -0
  692. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-6.js +77 -0
  693. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-7.js +77 -0
  694. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.12-8.js +71 -0
  695. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-1.js +79 -0
  696. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-2.js +76 -0
  697. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-3.js +77 -0
  698. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-4.js +77 -0
  699. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-5.js +77 -0
  700. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-6.js +77 -0
  701. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-7.js +76 -0
  702. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.13-8.js +71 -0
  703. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.14.js +87 -0
  704. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.15.js +88 -0
  705. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.16.js +87 -0
  706. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.17.js +88 -0
  707. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.18.js +88 -0
  708. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.19.js +88 -0
  709. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2-1.js +151 -0
  710. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2-2-n.js +84 -0
  711. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.2.js +151 -0
  712. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.20.js +88 -0
  713. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-1.js +70 -0
  714. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-2.js +70 -0
  715. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-3.js +70 -0
  716. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-4.js +70 -0
  717. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-5.js +70 -0
  718. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-6.js +70 -0
  719. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-7.js +70 -0
  720. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.21-8.js +71 -0
  721. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-1.js +89 -0
  722. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-2.js +74 -0
  723. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-3.js +74 -0
  724. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-4.js +74 -0
  725. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-5.js +74 -0
  726. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-6.js +74 -0
  727. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-7.js +74 -0
  728. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.22-8.js +72 -0
  729. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-1.js +139 -0
  730. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-10.js +139 -0
  731. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-11.js +140 -0
  732. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-12.js +137 -0
  733. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-13.js +137 -0
  734. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-14.js +137 -0
  735. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-15.js +137 -0
  736. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-16.js +137 -0
  737. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-17.js +137 -0
  738. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-18.js +137 -0
  739. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-2.js +109 -0
  740. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-3-n.js +79 -0
  741. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-4.js +112 -0
  742. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-5.js +113 -0
  743. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-6.js +112 -0
  744. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-7.js +113 -0
  745. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-8.js +103 -0
  746. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.23-9.js +103 -0
  747. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-1.js +134 -0
  748. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-2.js +134 -0
  749. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-3.js +134 -0
  750. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-4.js +134 -0
  751. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-5.js +134 -0
  752. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-6.js +134 -0
  753. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-7.js +134 -0
  754. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.24-8.js +133 -0
  755. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.25-1.js +174 -0
  756. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.26-1.js +183 -0
  757. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.27-1.js +183 -0
  758. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.28-1.js +196 -0
  759. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.29-1.js +191 -0
  760. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.3-1-n.js +80 -0
  761. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.3-2.js +104 -0
  762. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.30-1.js +192 -0
  763. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.31-1.js +222 -0
  764. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.32-1.js +141 -0
  765. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.33-1.js +145 -0
  766. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.34-1.js +182 -0
  767. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.35-1.js +139 -0
  768. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-1.js +165 -0
  769. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-2.js +164 -0
  770. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-3.js +163 -0
  771. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-4.js +163 -0
  772. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-5.js +163 -0
  773. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-6.js +163 -0
  774. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.36-7.js +163 -0
  775. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-1.js +173 -0
  776. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-2.js +161 -0
  777. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-3.js +164 -0
  778. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-4.js +163 -0
  779. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.37-5.js +159 -0
  780. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.4-1.js +93 -0
  781. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.4-2-n.js +76 -0
  782. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.5.js +112 -0
  783. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.6.js +104 -0
  784. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.7.js +105 -0
  785. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.8.js +113 -0
  786. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.9.js +113 -0
  787. data/vendor/tracemonkey/tests/ecma/Date/15.9.5.js +83 -0
  788. data/vendor/tracemonkey/tests/ecma/Date/jstests.list +151 -0
  789. data/vendor/tracemonkey/tests/ecma/Date/shell.js +1 -0
  790. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3-1.js +107 -0
  791. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3-2.js +73 -0
  792. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.3.js +170 -0
  793. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-1.js +111 -0
  794. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-10.js +105 -0
  795. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-2.js +113 -0
  796. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-3.js +111 -0
  797. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-4.js +113 -0
  798. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-5.js +112 -0
  799. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-6.js +100 -0
  800. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-7.js +112 -0
  801. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.4-8.js +113 -0
  802. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-1.js +118 -0
  803. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-2.js +100 -0
  804. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-3.js +130 -0
  805. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.5-4.js +91 -0
  806. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.8-2.js +120 -0
  807. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.1.8-3.js +66 -0
  808. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.1.js +85 -0
  809. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.2-1.js +122 -0
  810. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.2-2.js +133 -0
  811. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.3-1.js +86 -0
  812. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/10.2.3-2.js +92 -0
  813. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/jstests.list +24 -0
  814. data/vendor/tracemonkey/tests/ecma/ExecutionContexts/shell.js +1 -0
  815. data/vendor/tracemonkey/tests/ecma/Expressions/11.1.1.js +137 -0
  816. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-1.js +270 -0
  817. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-2.js +269 -0
  818. data/vendor/tracemonkey/tests/ecma/Expressions/11.10-3.js +268 -0
  819. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-1.js +110 -0
  820. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-2-n.js +74 -0
  821. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-3.js +71 -0
  822. data/vendor/tracemonkey/tests/ecma/Expressions/11.12-4.js +71 -0
  823. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.1.js +72 -0
  824. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-1.js +231 -0
  825. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-2.js +253 -0
  826. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-3.js +300 -0
  827. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-4.js +137 -0
  828. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.2-5.js +137 -0
  829. data/vendor/tracemonkey/tests/ecma/Expressions/11.13.js +86 -0
  830. data/vendor/tracemonkey/tests/ecma/Expressions/11.14-1.js +73 -0
  831. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-1.js +272 -0
  832. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-2.js +128 -0
  833. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-3-n.js +128 -0
  834. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-4-n.js +128 -0
  835. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.1-5.js +128 -0
  836. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-1-n.js +104 -0
  837. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-1.js +100 -0
  838. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-10-n.js +102 -0
  839. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-11.js +104 -0
  840. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-2-n.js +104 -0
  841. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-3-n.js +100 -0
  842. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-4-n.js +104 -0
  843. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-5-n.js +104 -0
  844. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-6-n.js +103 -0
  845. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-7-n.js +104 -0
  846. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-8-n.js +104 -0
  847. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.2-9-n.js +104 -0
  848. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-1.js +125 -0
  849. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-2-n.js +94 -0
  850. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-3-n.js +91 -0
  851. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-4-n.js +91 -0
  852. data/vendor/tracemonkey/tests/ecma/Expressions/11.2.3-5.js +85 -0
  853. data/vendor/tracemonkey/tests/ecma/Expressions/11.3.1.js +153 -0
  854. data/vendor/tracemonkey/tests/ecma/Expressions/11.3.2.js +153 -0
  855. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.1.js +92 -0
  856. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.2.js +83 -0
  857. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.3.js +111 -0
  858. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.4.js +156 -0
  859. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.5.js +154 -0
  860. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.6.js +299 -0
  861. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.7-01.js +299 -0
  862. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.7-02.js +87 -0
  863. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.8.js +215 -0
  864. data/vendor/tracemonkey/tests/ecma/Expressions/11.4.9.js +94 -0
  865. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.1.js +115 -0
  866. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.2.js +154 -0
  867. data/vendor/tracemonkey/tests/ecma/Expressions/11.5.3.js +161 -0
  868. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-1.js +160 -0
  869. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-2.js +164 -0
  870. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.1-3.js +150 -0
  871. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.2-1.js +165 -0
  872. data/vendor/tracemonkey/tests/ecma/Expressions/11.6.3.js +115 -0
  873. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.1.js +228 -0
  874. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.2.js +246 -0
  875. data/vendor/tracemonkey/tests/ecma/Expressions/11.7.3.js +230 -0
  876. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.1.js +121 -0
  877. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.2.js +121 -0
  878. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.3.js +120 -0
  879. data/vendor/tracemonkey/tests/ecma/Expressions/11.8.4.js +121 -0
  880. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.1.js +159 -0
  881. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.2.js +159 -0
  882. data/vendor/tracemonkey/tests/ecma/Expressions/11.9.3.js +159 -0
  883. data/vendor/tracemonkey/tests/ecma/Expressions/jstests.list +69 -0
  884. data/vendor/tracemonkey/tests/ecma/Expressions/shell.js +1 -0
  885. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-1.js +136 -0
  886. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-2.js +183 -0
  887. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.1.1-3.js +99 -0
  888. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-1.js +132 -0
  889. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-2.js +107 -0
  890. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.2.1-3.js +95 -0
  891. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-2.js +70 -0
  892. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-3.js +79 -0
  893. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.1-4.js +70 -0
  894. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.3.2.js +62 -0
  895. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4-1.js +94 -0
  896. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4.1.js +61 -0
  897. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.4.js +81 -0
  898. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5-1.js +117 -0
  899. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5-2.js +90 -0
  900. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5.1.js +83 -0
  901. data/vendor/tracemonkey/tests/ecma/FunctionObjects/15.3.5.3.js +72 -0
  902. data/vendor/tracemonkey/tests/ecma/FunctionObjects/jstests.list +18 -0
  903. data/vendor/tracemonkey/tests/ecma/FunctionObjects/shell.js +1 -0
  904. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1-1-n.js +70 -0
  905. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1-2-n.js +67 -0
  906. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.1.1.js +63 -0
  907. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.1.2.js +62 -0
  908. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.1-2.js +66 -0
  909. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.2-1.js +410 -0
  910. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.2-2.js +238 -0
  911. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.3-1.js +441 -0
  912. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.3-2.js +291 -0
  913. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.4.js +205 -0
  914. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-1.js +206 -0
  915. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-2.js +183 -0
  916. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.5-3.js +207 -0
  917. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.6.js +125 -0
  918. data/vendor/tracemonkey/tests/ecma/GlobalObject/15.1.2.7.js +130 -0
  919. data/vendor/tracemonkey/tests/ecma/GlobalObject/jstests.list +16 -0
  920. data/vendor/tracemonkey/tests/ecma/GlobalObject/shell.js +1 -0
  921. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-1.js +82 -0
  922. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-2.js +73 -0
  923. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.1-3.js +89 -0
  924. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-1.js +73 -0
  925. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-2-n.js +74 -0
  926. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-3-n.js +74 -0
  927. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-4-n.js +73 -0
  928. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-5-n.js +72 -0
  929. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.2-6.js +68 -0
  930. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-1.js +92 -0
  931. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-10.js +65 -0
  932. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-11.js +66 -0
  933. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-12.js +64 -0
  934. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-13-n.js +66 -0
  935. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-2.js +65 -0
  936. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-3.js +65 -0
  937. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-4.js +65 -0
  938. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-5.js +65 -0
  939. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-6.js +65 -0
  940. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-7.js +66 -0
  941. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-8.js +65 -0
  942. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.3-9.js +65 -0
  943. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-1-n.js +71 -0
  944. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-2-n.js +71 -0
  945. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.1-3-n.js +69 -0
  946. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-1-n.js +77 -0
  947. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-10-n.js +77 -0
  948. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-11-n.js +77 -0
  949. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-12-n.js +77 -0
  950. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-13-n.js +77 -0
  951. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-14-n.js +77 -0
  952. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-15-n.js +77 -0
  953. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-16-n.js +77 -0
  954. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-2-n.js +77 -0
  955. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-3-n.js +77 -0
  956. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-4-n.js +77 -0
  957. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-5-n.js +77 -0
  958. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-6-n.js +77 -0
  959. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-7-n.js +75 -0
  960. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-8-n.js +76 -0
  961. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.2-9-n.js +77 -0
  962. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-1-n.js +71 -0
  963. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-10-n.js +71 -0
  964. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-11-n.js +71 -0
  965. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-12-n.js +71 -0
  966. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-13-n.js +71 -0
  967. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-14-n.js +103 -0
  968. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-15-n.js +97 -0
  969. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-16-n.js +88 -0
  970. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-2-n.js +71 -0
  971. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-3-n.js +71 -0
  972. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-4-n.js +102 -0
  973. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-5-n.js +71 -0
  974. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-6-n.js +71 -0
  975. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-7-n.js +103 -0
  976. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-8-n.js +71 -0
  977. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.4.3-9-n.js +104 -0
  978. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-1.js +62 -0
  979. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-10-n.js +64 -0
  980. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-2-n.js +64 -0
  981. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-3-n.js +64 -0
  982. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-4-n.js +64 -0
  983. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-5-n.js +64 -0
  984. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-6.js +61 -0
  985. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-7.js +61 -0
  986. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-8-n.js +64 -0
  987. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.5-9-n.js +64 -0
  988. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.6.js +313 -0
  989. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.1.js +64 -0
  990. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.2.js +71 -0
  991. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3-1.js +198 -0
  992. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3-2.js +93 -0
  993. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.3.js +331 -0
  994. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.7.4.js +269 -0
  995. data/vendor/tracemonkey/tests/ecma/LexicalConventions/7.8.2-n.js +63 -0
  996. data/vendor/tracemonkey/tests/ecma/LexicalConventions/jstests.list +76 -0
  997. data/vendor/tracemonkey/tests/ecma/LexicalConventions/shell.js +1 -0
  998. data/vendor/tracemonkey/tests/ecma/Math/15.8-2-n.js +82 -0
  999. data/vendor/tracemonkey/tests/ecma/Math/15.8-3-n.js +81 -0
  1000. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.1-1.js +64 -0
  1001. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.1-2.js +69 -0
  1002. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.2-1.js +64 -0
  1003. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.2-2.js +70 -0
  1004. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.3-1.js +65 -0
  1005. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.3-2.js +72 -0
  1006. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.4-1.js +65 -0
  1007. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.4-2.js +69 -0
  1008. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.5-1.js +66 -0
  1009. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.5-2.js +70 -0
  1010. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.6-1.js +65 -0
  1011. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.6-2.js +70 -0
  1012. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.7-1.js +65 -0
  1013. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.7-2.js +70 -0
  1014. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-1.js +65 -0
  1015. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-2.js +69 -0
  1016. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.8-3.js +63 -0
  1017. data/vendor/tracemonkey/tests/ecma/Math/15.8.1.js +149 -0
  1018. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.1.js +226 -0
  1019. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.10.js +153 -0
  1020. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.11.js +200 -0
  1021. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.12.js +177 -0
  1022. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.13.js +385 -0
  1023. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.14.js +79 -0
  1024. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.15.js +202 -0
  1025. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.16.js +132 -0
  1026. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.17.js +217 -0
  1027. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.18.js +165 -0
  1028. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.2.js +156 -0
  1029. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.3.js +158 -0
  1030. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.4.js +156 -0
  1031. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.5.js +244 -0
  1032. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.6.js +232 -0
  1033. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.7.js +283 -0
  1034. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.8.js +134 -0
  1035. data/vendor/tracemonkey/tests/ecma/Math/15.8.2.9.js +191 -0
  1036. data/vendor/tracemonkey/tests/ecma/Math/jstests.list +39 -0
  1037. data/vendor/tracemonkey/tests/ecma/Math/shell.js +1 -0
  1038. data/vendor/tracemonkey/tests/ecma/NativeObjects/shell.js +1 -0
  1039. data/vendor/tracemonkey/tests/ecma/Number/15.7.1.js +88 -0
  1040. data/vendor/tracemonkey/tests/ecma/Number/15.7.2.js +168 -0
  1041. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-1.js +71 -0
  1042. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-2.js +71 -0
  1043. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.1-3.js +67 -0
  1044. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-1.js +65 -0
  1045. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-2.js +70 -0
  1046. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-3.js +67 -0
  1047. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.2-4.js +64 -0
  1048. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-1.js +68 -0
  1049. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-2.js +73 -0
  1050. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-3.js +64 -0
  1051. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.3-4.js +66 -0
  1052. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-1.js +66 -0
  1053. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-2.js +71 -0
  1054. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-3.js +65 -0
  1055. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.4-4.js +66 -0
  1056. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-1.js +64 -0
  1057. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-2.js +70 -0
  1058. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-3.js +65 -0
  1059. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.5-4.js +66 -0
  1060. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-1.js +65 -0
  1061. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-2.js +69 -0
  1062. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-3.js +65 -0
  1063. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.6-4.js +66 -0
  1064. data/vendor/tracemonkey/tests/ecma/Number/15.7.3.js +69 -0
  1065. data/vendor/tracemonkey/tests/ecma/Number/15.7.4-1.js +60 -0
  1066. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.1.js +62 -0
  1067. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-1.js +111 -0
  1068. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-2-n.js +76 -0
  1069. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-3-n.js +73 -0
  1070. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.2-4.js +70 -0
  1071. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-1.js +97 -0
  1072. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-2.js +65 -0
  1073. data/vendor/tracemonkey/tests/ecma/Number/15.7.4.3-3-n.js +72 -0
  1074. data/vendor/tracemonkey/tests/ecma/Number/jstests.list +36 -0
  1075. data/vendor/tracemonkey/tests/ecma/Number/shell.js +1 -0
  1076. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.1.1.js +146 -0
  1077. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.1.2.js +81 -0
  1078. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.2.1.js +138 -0
  1079. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.2.2.js +74 -0
  1080. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3-1.js +64 -0
  1081. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-1.js +69 -0
  1082. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-2.js +70 -0
  1083. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-3.js +70 -0
  1084. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.1-4.js +70 -0
  1085. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.3.js +67 -0
  1086. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.1.js +64 -0
  1087. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.2.js +130 -0
  1088. data/vendor/tracemonkey/tests/ecma/ObjectObjects/15.2.4.3.js +117 -0
  1089. data/vendor/tracemonkey/tests/ecma/ObjectObjects/jstests.list +14 -0
  1090. data/vendor/tracemonkey/tests/ecma/ObjectObjects/shell.js +1 -0
  1091. data/vendor/tracemonkey/tests/ecma/README +1 -0
  1092. data/vendor/tracemonkey/tests/ecma/SourceText/6-1.js +128 -0
  1093. data/vendor/tracemonkey/tests/ecma/SourceText/6-2.js +131 -0
  1094. data/vendor/tracemonkey/tests/ecma/SourceText/jstests.list +3 -0
  1095. data/vendor/tracemonkey/tests/ecma/SourceText/shell.js +1 -0
  1096. data/vendor/tracemonkey/tests/ecma/Statements/12.10-1.js +151 -0
  1097. data/vendor/tracemonkey/tests/ecma/Statements/12.10.js +61 -0
  1098. data/vendor/tracemonkey/tests/ecma/Statements/12.2-1.js +74 -0
  1099. data/vendor/tracemonkey/tests/ecma/Statements/12.5-1.js +102 -0
  1100. data/vendor/tracemonkey/tests/ecma/Statements/12.5-2.js +99 -0
  1101. data/vendor/tracemonkey/tests/ecma/Statements/12.6.1-1.js +74 -0
  1102. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-1.js +75 -0
  1103. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-2.js +76 -0
  1104. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-3.js +72 -0
  1105. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-4.js +72 -0
  1106. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-5.js +73 -0
  1107. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-6.js +75 -0
  1108. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-7.js +73 -0
  1109. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-8.js +71 -0
  1110. data/vendor/tracemonkey/tests/ecma/Statements/12.6.2-9-n.js +76 -0
  1111. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-1.js +63 -0
  1112. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-10.js +115 -0
  1113. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-11.js +98 -0
  1114. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-12.js +103 -0
  1115. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-19.js +117 -0
  1116. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-2.js +63 -0
  1117. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-3.js +73 -0
  1118. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-4.js +202 -0
  1119. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-5-n.js +110 -0
  1120. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-6-n.js +109 -0
  1121. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-7-n.js +110 -0
  1122. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-8-n.js +110 -0
  1123. data/vendor/tracemonkey/tests/ecma/Statements/12.6.3-9-n.js +109 -0
  1124. data/vendor/tracemonkey/tests/ecma/Statements/12.7-1-n.js +64 -0
  1125. data/vendor/tracemonkey/tests/ecma/Statements/12.8-1-n.js +67 -0
  1126. data/vendor/tracemonkey/tests/ecma/Statements/12.9-1-n.js +63 -0
  1127. data/vendor/tracemonkey/tests/ecma/Statements/jstests.list +32 -0
  1128. data/vendor/tracemonkey/tests/ecma/Statements/shell.js +1 -0
  1129. data/vendor/tracemonkey/tests/ecma/String/15.5.1.js +134 -0
  1130. data/vendor/tracemonkey/tests/ecma/String/15.5.2.js +110 -0
  1131. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-1.js +71 -0
  1132. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-2.js +69 -0
  1133. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-3.js +66 -0
  1134. data/vendor/tracemonkey/tests/ecma/String/15.5.3.1-4.js +66 -0
  1135. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-1.js +190 -0
  1136. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-2.js +77 -0
  1137. data/vendor/tracemonkey/tests/ecma/String/15.5.3.2-3.js +121 -0
  1138. data/vendor/tracemonkey/tests/ecma/String/15.5.3.js +66 -0
  1139. data/vendor/tracemonkey/tests/ecma/String/15.5.4.1.js +63 -0
  1140. data/vendor/tracemonkey/tests/ecma/String/15.5.4.10-1.js +217 -0
  1141. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-1.js +518 -0
  1142. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-2.js +515 -0
  1143. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-3.js +514 -0
  1144. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-4.js +507 -0
  1145. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-5.js +520 -0
  1146. data/vendor/tracemonkey/tests/ecma/String/15.5.4.11-6.js +516 -0
  1147. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-1.js +520 -0
  1148. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-2.js +518 -0
  1149. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-3.js +559 -0
  1150. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-4.js +515 -0
  1151. data/vendor/tracemonkey/tests/ecma/String/15.5.4.12-5.js +515 -0
  1152. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-1.js +72 -0
  1153. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-2-n.js +73 -0
  1154. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2-3.js +83 -0
  1155. data/vendor/tracemonkey/tests/ecma/String/15.5.4.2.js +87 -0
  1156. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-1.js +72 -0
  1157. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-2.js +90 -0
  1158. data/vendor/tracemonkey/tests/ecma/String/15.5.4.3-3-n.js +72 -0
  1159. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-1.js +92 -0
  1160. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-2.js +136 -0
  1161. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-3.js +112 -0
  1162. data/vendor/tracemonkey/tests/ecma/String/15.5.4.4-4.js +124 -0
  1163. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-1.js +87 -0
  1164. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-2.js +121 -0
  1165. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-3.js +131 -0
  1166. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-4.js +75 -0
  1167. data/vendor/tracemonkey/tests/ecma/String/15.5.4.5-5.js +106 -0
  1168. data/vendor/tracemonkey/tests/ecma/String/15.5.4.6-1.js +155 -0
  1169. data/vendor/tracemonkey/tests/ecma/String/15.5.4.6-2.js +259 -0
  1170. data/vendor/tracemonkey/tests/ecma/String/15.5.4.7-1.js +219 -0
  1171. data/vendor/tracemonkey/tests/ecma/String/15.5.4.7-2.js +217 -0
  1172. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-1.js +232 -0
  1173. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-2.js +247 -0
  1174. data/vendor/tracemonkey/tests/ecma/String/15.5.4.8-3.js +204 -0
  1175. data/vendor/tracemonkey/tests/ecma/String/15.5.4.9-1.js +202 -0
  1176. data/vendor/tracemonkey/tests/ecma/String/15.5.4.js +108 -0
  1177. data/vendor/tracemonkey/tests/ecma/String/15.5.5.1.js +88 -0
  1178. data/vendor/tracemonkey/tests/ecma/String/jstests.list +50 -0
  1179. data/vendor/tracemonkey/tests/ecma/String/shell.js +1 -0
  1180. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.2.js +138 -0
  1181. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3-1.js +100 -0
  1182. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-1.js +323 -0
  1183. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-2.js +87 -0
  1184. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.1-3.js +747 -0
  1185. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.3.js +87 -0
  1186. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.4-1.js +112 -0
  1187. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.4-2.js +112 -0
  1188. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.5-2.js +173 -0
  1189. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.6.js +140 -0
  1190. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.7.js +160 -0
  1191. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.8.1.js +167 -0
  1192. data/vendor/tracemonkey/tests/ecma/TypeConversion/9.9-1.js +119 -0
  1193. data/vendor/tracemonkey/tests/ecma/TypeConversion/jstests.list +14 -0
  1194. data/vendor/tracemonkey/tests/ecma/TypeConversion/shell.js +1 -0
  1195. data/vendor/tracemonkey/tests/ecma/Types/8.1.js +75 -0
  1196. data/vendor/tracemonkey/tests/ecma/Types/8.4.js +130 -0
  1197. data/vendor/tracemonkey/tests/ecma/Types/8.6.2.1-1.js +78 -0
  1198. data/vendor/tracemonkey/tests/ecma/Types/jstests.list +4 -0
  1199. data/vendor/tracemonkey/tests/ecma/Types/shell.js +1 -0
  1200. data/vendor/tracemonkey/tests/ecma/browser.js +62 -0
  1201. data/vendor/tracemonkey/tests/ecma/extensions/10.1.4-9.js +110 -0
  1202. data/vendor/tracemonkey/tests/ecma/extensions/10.1.6.js +127 -0
  1203. data/vendor/tracemonkey/tests/ecma/extensions/10.1.8-1.js +135 -0
  1204. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-1.js +145 -0
  1205. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-2.js +136 -0
  1206. data/vendor/tracemonkey/tests/ecma/extensions/11.6.1-3.js +137 -0
  1207. data/vendor/tracemonkey/tests/ecma/extensions/11.6.2-1.js +124 -0
  1208. data/vendor/tracemonkey/tests/ecma/extensions/15-1.js +94 -0
  1209. data/vendor/tracemonkey/tests/ecma/extensions/15-2.js +77 -0
  1210. data/vendor/tracemonkey/tests/ecma/extensions/15.1.2.1-1.js +88 -0
  1211. data/vendor/tracemonkey/tests/ecma/extensions/15.2.1.1.js +82 -0
  1212. data/vendor/tracemonkey/tests/ecma/extensions/15.2.3-1.js +64 -0
  1213. data/vendor/tracemonkey/tests/ecma/extensions/15.2.4.js +66 -0
  1214. data/vendor/tracemonkey/tests/ecma/extensions/15.3.1.1-1.js +82 -0
  1215. data/vendor/tracemonkey/tests/ecma/extensions/15.3.1.1-2.js +82 -0
  1216. data/vendor/tracemonkey/tests/ecma/extensions/15.3.2.1-1.js +72 -0
  1217. data/vendor/tracemonkey/tests/ecma/extensions/15.3.2.1-2.js +72 -0
  1218. data/vendor/tracemonkey/tests/ecma/extensions/15.3.3.1-1.js +67 -0
  1219. data/vendor/tracemonkey/tests/ecma/extensions/15.4.3.js +63 -0
  1220. data/vendor/tracemonkey/tests/ecma/extensions/15.5.3.js +66 -0
  1221. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.2.js +59 -0
  1222. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.4-4.js +107 -0
  1223. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.5-6.js +94 -0
  1224. data/vendor/tracemonkey/tests/ecma/extensions/15.5.4.7-3.js +161 -0
  1225. data/vendor/tracemonkey/tests/ecma/extensions/15.6.3.1-5.js +58 -0
  1226. data/vendor/tracemonkey/tests/ecma/extensions/15.6.3.js +65 -0
  1227. data/vendor/tracemonkey/tests/ecma/extensions/15.6.4-2.js +66 -0
  1228. data/vendor/tracemonkey/tests/ecma/extensions/15.7.3.js +69 -0
  1229. data/vendor/tracemonkey/tests/ecma/extensions/15.7.4.js +90 -0
  1230. data/vendor/tracemonkey/tests/ecma/extensions/15.8-1.js +84 -0
  1231. data/vendor/tracemonkey/tests/ecma/extensions/15.9.5.js +76 -0
  1232. data/vendor/tracemonkey/tests/ecma/extensions/8.6.2.1-1.js +98 -0
  1233. data/vendor/tracemonkey/tests/ecma/extensions/9.9-1.js +102 -0
  1234. data/vendor/tracemonkey/tests/ecma/extensions/jstests.list +34 -0
  1235. data/vendor/tracemonkey/tests/ecma/extensions/shell.js +1 -0
  1236. data/vendor/tracemonkey/tests/ecma/jsref.js +632 -0
  1237. data/vendor/tracemonkey/tests/ecma/jstests.list +18 -0
  1238. data/vendor/tracemonkey/tests/ecma/shell.js +581 -0
  1239. data/vendor/tracemonkey/tests/ecma/template.js +70 -0
  1240. data/vendor/tracemonkey/tests/ecma_2/Exceptions/boolean-001.js +80 -0
  1241. data/vendor/tracemonkey/tests/ecma_2/Exceptions/boolean-002.js +84 -0
  1242. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-001.js +93 -0
  1243. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-002.js +87 -0
  1244. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-003.js +89 -0
  1245. data/vendor/tracemonkey/tests/ecma_2/Exceptions/date-004.js +83 -0
  1246. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-001.js +78 -0
  1247. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-002.js +78 -0
  1248. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-003.js +82 -0
  1249. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-004.js +78 -0
  1250. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-005.js +78 -0
  1251. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-006.js +89 -0
  1252. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-007.js +90 -0
  1253. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-008.js +77 -0
  1254. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-009.js +86 -0
  1255. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-010-n.js +61 -0
  1256. data/vendor/tracemonkey/tests/ecma_2/Exceptions/exception-011-n.js +62 -0
  1257. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-001.js +83 -0
  1258. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-002.js +93 -0
  1259. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-003.js +88 -0
  1260. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-004.js +82 -0
  1261. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-005.js +74 -0
  1262. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-006.js +79 -0
  1263. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-007.js +77 -0
  1264. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-008.js +74 -0
  1265. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-009.js +75 -0
  1266. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-010.js +76 -0
  1267. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-011.js +76 -0
  1268. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-012.js +77 -0
  1269. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-013.js +77 -0
  1270. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-014.js +79 -0
  1271. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-015.js +73 -0
  1272. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-016.js +73 -0
  1273. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-017.js +73 -0
  1274. data/vendor/tracemonkey/tests/ecma_2/Exceptions/expression-019.js +77 -0
  1275. data/vendor/tracemonkey/tests/ecma_2/Exceptions/function-001.js +86 -0
  1276. data/vendor/tracemonkey/tests/ecma_2/Exceptions/global-001.js +78 -0
  1277. data/vendor/tracemonkey/tests/ecma_2/Exceptions/global-002.js +78 -0
  1278. data/vendor/tracemonkey/tests/ecma_2/Exceptions/jstests.list +103 -0
  1279. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-001.js +85 -0
  1280. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-002.js +85 -0
  1281. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-003.js +76 -0
  1282. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-004.js +85 -0
  1283. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-005.js +85 -0
  1284. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-006.js +91 -0
  1285. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-007.js +84 -0
  1286. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-008.js +86 -0
  1287. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-009.js +86 -0
  1288. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-010.js +84 -0
  1289. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-011.js +95 -0
  1290. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-012.js +86 -0
  1291. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-013.js +86 -0
  1292. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-014.js +95 -0
  1293. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-015.js +86 -0
  1294. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-016.js +95 -0
  1295. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-017.js +87 -0
  1296. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-018.js +86 -0
  1297. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-019.js +86 -0
  1298. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-020.js +86 -0
  1299. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-021.js +95 -0
  1300. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-022.js +86 -0
  1301. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-023.js +85 -0
  1302. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-024.js +92 -0
  1303. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-025.js +92 -0
  1304. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-026.js +92 -0
  1305. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-027.js +94 -0
  1306. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-028.js +92 -0
  1307. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-029.js +92 -0
  1308. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-030.js +92 -0
  1309. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-031.js +92 -0
  1310. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-032.js +92 -0
  1311. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-033.js +92 -0
  1312. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-034.js +91 -0
  1313. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-035.js +92 -0
  1314. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-036.js +92 -0
  1315. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-037.js +92 -0
  1316. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-038.js +92 -0
  1317. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-039.js +79 -0
  1318. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-040.js +79 -0
  1319. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-041.js +81 -0
  1320. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-042.js +82 -0
  1321. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-047.js +83 -0
  1322. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-048.js +77 -0
  1323. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-049.js +82 -0
  1324. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-050.js +78 -0
  1325. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-051.js +78 -0
  1326. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-052.js +80 -0
  1327. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-053.js +78 -0
  1328. data/vendor/tracemonkey/tests/ecma_2/Exceptions/lexical-054.js +79 -0
  1329. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-001.js +86 -0
  1330. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-002.js +81 -0
  1331. data/vendor/tracemonkey/tests/ecma_2/Exceptions/number-003.js +83 -0
  1332. data/vendor/tracemonkey/tests/ecma_2/Exceptions/shell.js +1 -0
  1333. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-001.js +80 -0
  1334. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-002.js +102 -0
  1335. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-003.js +113 -0
  1336. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-004.js +85 -0
  1337. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-005.js +84 -0
  1338. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-006.js +84 -0
  1339. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-007.js +75 -0
  1340. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-008.js +75 -0
  1341. data/vendor/tracemonkey/tests/ecma_2/Exceptions/statement-009.js +74 -0
  1342. data/vendor/tracemonkey/tests/ecma_2/Exceptions/string-001.js +86 -0
  1343. data/vendor/tracemonkey/tests/ecma_2/Exceptions/string-002.js +85 -0
  1344. data/vendor/tracemonkey/tests/ecma_2/Expressions/StrictEquality-001.js +106 -0
  1345. data/vendor/tracemonkey/tests/ecma_2/Expressions/jstests.list +2 -0
  1346. data/vendor/tracemonkey/tests/ecma_2/Expressions/shell.js +1 -0
  1347. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/apply-001-n.js +65 -0
  1348. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/call-1.js +75 -0
  1349. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/jstests.list +3 -0
  1350. data/vendor/tracemonkey/tests/ecma_2/FunctionObjects/shell.js +1 -0
  1351. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/jstests.list +4 -0
  1352. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/keywords-001.js +81 -0
  1353. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/regexp-literals-001.js +77 -0
  1354. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/regexp-literals-002.js +61 -0
  1355. data/vendor/tracemonkey/tests/ecma_2/LexicalConventions/shell.js +1 -0
  1356. data/vendor/tracemonkey/tests/ecma_2/README +1 -0
  1357. data/vendor/tracemonkey/tests/ecma_2/RegExp/constructor-001.js +99 -0
  1358. data/vendor/tracemonkey/tests/ecma_2/RegExp/exec-001.js +73 -0
  1359. data/vendor/tracemonkey/tests/ecma_2/RegExp/exec-002.js +221 -0
  1360. data/vendor/tracemonkey/tests/ecma_2/RegExp/function-001.js +99 -0
  1361. data/vendor/tracemonkey/tests/ecma_2/RegExp/hex-001.js +102 -0
  1362. data/vendor/tracemonkey/tests/ecma_2/RegExp/jstests.list +15 -0
  1363. data/vendor/tracemonkey/tests/ecma_2/RegExp/multiline-001.js +101 -0
  1364. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-001.js +111 -0
  1365. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-002.js +126 -0
  1366. data/vendor/tracemonkey/tests/ecma_2/RegExp/octal-003.js +120 -0
  1367. data/vendor/tracemonkey/tests/ecma_2/RegExp/properties-001.js +124 -0
  1368. data/vendor/tracemonkey/tests/ecma_2/RegExp/properties-002.js +162 -0
  1369. data/vendor/tracemonkey/tests/ecma_2/RegExp/regexp-enumerate-001.js +121 -0
  1370. data/vendor/tracemonkey/tests/ecma_2/RegExp/regress-001.js +78 -0
  1371. data/vendor/tracemonkey/tests/ecma_2/RegExp/shell.js +1 -0
  1372. data/vendor/tracemonkey/tests/ecma_2/RegExp/unicode-001.js +92 -0
  1373. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-001.js +77 -0
  1374. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-002.js +104 -0
  1375. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-003.js +96 -0
  1376. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-004.js +100 -0
  1377. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-005.js +106 -0
  1378. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-006.js +122 -0
  1379. data/vendor/tracemonkey/tests/ecma_2/Statements/dowhile-007.js +130 -0
  1380. data/vendor/tracemonkey/tests/ecma_2/Statements/forin-001.js +330 -0
  1381. data/vendor/tracemonkey/tests/ecma_2/Statements/forin-002.js +109 -0
  1382. data/vendor/tracemonkey/tests/ecma_2/Statements/if-001.js +75 -0
  1383. data/vendor/tracemonkey/tests/ecma_2/Statements/jstests.list +31 -0
  1384. data/vendor/tracemonkey/tests/ecma_2/Statements/label-001.js +75 -0
  1385. data/vendor/tracemonkey/tests/ecma_2/Statements/label-002.js +89 -0
  1386. data/vendor/tracemonkey/tests/ecma_2/Statements/shell.js +1 -0
  1387. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-001.js +98 -0
  1388. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-002.js +96 -0
  1389. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-003.js +90 -0
  1390. data/vendor/tracemonkey/tests/ecma_2/Statements/switch-004.js +127 -0
  1391. data/vendor/tracemonkey/tests/ecma_2/Statements/try-001.js +116 -0
  1392. data/vendor/tracemonkey/tests/ecma_2/Statements/try-003.js +115 -0
  1393. data/vendor/tracemonkey/tests/ecma_2/Statements/try-004.js +87 -0
  1394. data/vendor/tracemonkey/tests/ecma_2/Statements/try-005.js +90 -0
  1395. data/vendor/tracemonkey/tests/ecma_2/Statements/try-006.js +120 -0
  1396. data/vendor/tracemonkey/tests/ecma_2/Statements/try-007.js +125 -0
  1397. data/vendor/tracemonkey/tests/ecma_2/Statements/try-008.js +92 -0
  1398. data/vendor/tracemonkey/tests/ecma_2/Statements/try-009.js +99 -0
  1399. data/vendor/tracemonkey/tests/ecma_2/Statements/try-010.js +106 -0
  1400. data/vendor/tracemonkey/tests/ecma_2/Statements/try-012.js +128 -0
  1401. data/vendor/tracemonkey/tests/ecma_2/Statements/while-001.js +75 -0
  1402. data/vendor/tracemonkey/tests/ecma_2/Statements/while-002.js +119 -0
  1403. data/vendor/tracemonkey/tests/ecma_2/Statements/while-003.js +120 -0
  1404. data/vendor/tracemonkey/tests/ecma_2/Statements/while-004.js +250 -0
  1405. data/vendor/tracemonkey/tests/ecma_2/String/jstests.list +9 -0
  1406. data/vendor/tracemonkey/tests/ecma_2/String/match-001.js +139 -0
  1407. data/vendor/tracemonkey/tests/ecma_2/String/match-002.js +207 -0
  1408. data/vendor/tracemonkey/tests/ecma_2/String/match-003.js +165 -0
  1409. data/vendor/tracemonkey/tests/ecma_2/String/match-004.js +206 -0
  1410. data/vendor/tracemonkey/tests/ecma_2/String/replace-001.js +99 -0
  1411. data/vendor/tracemonkey/tests/ecma_2/String/shell.js +1 -0
  1412. data/vendor/tracemonkey/tests/ecma_2/String/split-001.js +145 -0
  1413. data/vendor/tracemonkey/tests/ecma_2/String/split-002.js +303 -0
  1414. data/vendor/tracemonkey/tests/ecma_2/String/split-003.js +156 -0
  1415. data/vendor/tracemonkey/tests/ecma_2/browser.js +37 -0
  1416. data/vendor/tracemonkey/tests/ecma_2/extensions/constructor-001.js +74 -0
  1417. data/vendor/tracemonkey/tests/ecma_2/extensions/function-001.js +74 -0
  1418. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-001.js +144 -0
  1419. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-002.js +160 -0
  1420. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-003-n.js +121 -0
  1421. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-004-n.js +121 -0
  1422. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-005-n.js +122 -0
  1423. data/vendor/tracemonkey/tests/ecma_2/extensions/instanceof-006.js +119 -0
  1424. data/vendor/tracemonkey/tests/ecma_2/extensions/jstests.list +9 -0
  1425. data/vendor/tracemonkey/tests/ecma_2/extensions/shell.js +1 -0
  1426. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-001.js +67 -0
  1427. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-002.js +84 -0
  1428. data/vendor/tracemonkey/tests/ecma_2/instanceof/instanceof-003.js +98 -0
  1429. data/vendor/tracemonkey/tests/ecma_2/instanceof/jstests.list +5 -0
  1430. data/vendor/tracemonkey/tests/ecma_2/instanceof/regress-7635.js +88 -0
  1431. data/vendor/tracemonkey/tests/ecma_2/instanceof/shell.js +1 -0
  1432. data/vendor/tracemonkey/tests/ecma_2/jsref.js +591 -0
  1433. data/vendor/tracemonkey/tests/ecma_2/jstests.list +9 -0
  1434. data/vendor/tracemonkey/tests/ecma_2/shell.js +51 -0
  1435. data/vendor/tracemonkey/tests/ecma_2/template.js +57 -0
  1436. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.11-01.js +61 -0
  1437. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.3-1.js +88 -0
  1438. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.4.4-001.js +153 -0
  1439. data/vendor/tracemonkey/tests/ecma_3/Array/15.4.5.1-01.js +93 -0
  1440. data/vendor/tracemonkey/tests/ecma_3/Array/15.5.4.8-01.js +76 -0
  1441. data/vendor/tracemonkey/tests/ecma_3/Array/jstests.list +16 -0
  1442. data/vendor/tracemonkey/tests/ecma_3/Array/regress-101488.js +172 -0
  1443. data/vendor/tracemonkey/tests/ecma_3/Array/regress-130451.js +219 -0
  1444. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-01.js +73 -0
  1445. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-02.js +65 -0
  1446. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-03.js +73 -0
  1447. data/vendor/tracemonkey/tests/ecma_3/Array/regress-322135-04.js +71 -0
  1448. data/vendor/tracemonkey/tests/ecma_3/Array/regress-387501.js +94 -0
  1449. data/vendor/tracemonkey/tests/ecma_3/Array/regress-421325.js +67 -0
  1450. data/vendor/tracemonkey/tests/ecma_3/Array/regress-430717.js +65 -0
  1451. data/vendor/tracemonkey/tests/ecma_3/Array/regress-488989.js +68 -0
  1452. data/vendor/tracemonkey/tests/ecma_3/Array/shell.js +1 -0
  1453. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.1.2-01.js +62 -0
  1454. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.3.2-1.js +91 -0
  1455. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.4.3.js +233 -0
  1456. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.3.js +152 -0
  1457. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.4.js +185 -0
  1458. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.5-02.js +88 -0
  1459. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.5.js +144 -0
  1460. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.6.js +153 -0
  1461. data/vendor/tracemonkey/tests/ecma_3/Date/15.9.5.7.js +142 -0
  1462. data/vendor/tracemonkey/tests/ecma_3/Date/browser.js +37 -0
  1463. data/vendor/tracemonkey/tests/ecma_3/Date/jstests.list +11 -0
  1464. data/vendor/tracemonkey/tests/ecma_3/Date/regress-452786.js +66 -0
  1465. data/vendor/tracemonkey/tests/ecma_3/Date/shell.js +564 -0
  1466. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.1.1.js +137 -0
  1467. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.4.4-1.js +174 -0
  1468. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-001.js +130 -0
  1469. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-002.js +132 -0
  1470. data/vendor/tracemonkey/tests/ecma_3/Exceptions/15.11.7.6-003.js +132 -0
  1471. data/vendor/tracemonkey/tests/ecma_3/Exceptions/binding-001.js +128 -0
  1472. data/vendor/tracemonkey/tests/ecma_3/Exceptions/jstests.list +11 -0
  1473. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-181654.js +155 -0
  1474. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-181914.js +194 -0
  1475. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-58946.js +71 -0
  1476. data/vendor/tracemonkey/tests/ecma_3/Exceptions/regress-95101.js +118 -0
  1477. data/vendor/tracemonkey/tests/ecma_3/Exceptions/shell.js +1 -0
  1478. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3-1.js +201 -0
  1479. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3-2.js +70 -0
  1480. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.3.js +73 -0
  1481. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.1.4-1.js +85 -0
  1482. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/10.6.1-01.js +136 -0
  1483. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/jstests.list +8 -0
  1484. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/regress-23346.js +71 -0
  1485. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/regress-448595-01.js +91 -0
  1486. data/vendor/tracemonkey/tests/ecma_3/ExecutionContexts/shell.js +1 -0
  1487. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-01.js +76 -0
  1488. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-02.js +76 -0
  1489. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.10-03.js +76 -0
  1490. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.6.1-1.js +176 -0
  1491. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.1-01.js +76 -0
  1492. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.2-01.js +76 -0
  1493. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.7.3-01.js +76 -0
  1494. data/vendor/tracemonkey/tests/ecma_3/Expressions/11.9.6-1.js +213 -0
  1495. data/vendor/tracemonkey/tests/ecma_3/Expressions/jstests.list +9 -0
  1496. data/vendor/tracemonkey/tests/ecma_3/Expressions/shell.js +1 -0
  1497. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-001-n.js +58 -0
  1498. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-001.js +57 -0
  1499. data/vendor/tracemonkey/tests/ecma_3/FunExpr/fe-002.js +61 -0
  1500. data/vendor/tracemonkey/tests/ecma_3/FunExpr/jstests.list +5 -0
  1501. data/vendor/tracemonkey/tests/ecma_3/FunExpr/regress-528082.js +21 -0
  1502. data/vendor/tracemonkey/tests/ecma_3/FunExpr/shell.js +1 -0
  1503. data/vendor/tracemonkey/tests/ecma_3/Function/15.3.4.3-1.js +210 -0
  1504. data/vendor/tracemonkey/tests/ecma_3/Function/15.3.4.4-1.js +185 -0
  1505. data/vendor/tracemonkey/tests/ecma_3/Function/arguments-001.js +169 -0
  1506. data/vendor/tracemonkey/tests/ecma_3/Function/arguments-002.js +73 -0
  1507. data/vendor/tracemonkey/tests/ecma_3/Function/call-001.js +153 -0
  1508. data/vendor/tracemonkey/tests/ecma_3/Function/jstests.list +17 -0
  1509. data/vendor/tracemonkey/tests/ecma_3/Function/regress-131964.js +196 -0
  1510. data/vendor/tracemonkey/tests/ecma_3/Function/regress-137181.js +113 -0
  1511. data/vendor/tracemonkey/tests/ecma_3/Function/regress-193555.js +136 -0
  1512. data/vendor/tracemonkey/tests/ecma_3/Function/regress-313570.js +63 -0
  1513. data/vendor/tracemonkey/tests/ecma_3/Function/regress-49286.js +137 -0
  1514. data/vendor/tracemonkey/tests/ecma_3/Function/regress-58274.js +226 -0
  1515. data/vendor/tracemonkey/tests/ecma_3/Function/regress-85880.js +173 -0
  1516. data/vendor/tracemonkey/tests/ecma_3/Function/regress-94506.js +163 -0
  1517. data/vendor/tracemonkey/tests/ecma_3/Function/regress-97921.js +152 -0
  1518. data/vendor/tracemonkey/tests/ecma_3/Function/scope-001.js +265 -0
  1519. data/vendor/tracemonkey/tests/ecma_3/Function/scope-002.js +245 -0
  1520. data/vendor/tracemonkey/tests/ecma_3/Function/shell.js +1 -0
  1521. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/7.4-01.js +73 -0
  1522. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/7.9.1.js +157 -0
  1523. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/jstests.list +3 -0
  1524. data/vendor/tracemonkey/tests/ecma_3/LexicalConventions/shell.js +1 -0
  1525. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.2-01.js +77 -0
  1526. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.3-01.js +69 -0
  1527. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.3-02.js +53 -0
  1528. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.5-1.js +145 -0
  1529. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.5-2.js +62 -0
  1530. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.6-1.js +149 -0
  1531. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.7-1.js +154 -0
  1532. data/vendor/tracemonkey/tests/ecma_3/Number/15.7.4.7-2.js +72 -0
  1533. data/vendor/tracemonkey/tests/ecma_3/Number/jstests.list +10 -0
  1534. data/vendor/tracemonkey/tests/ecma_3/Number/regress-442242-01.js +62 -0
  1535. data/vendor/tracemonkey/tests/ecma_3/Number/shell.js +1 -0
  1536. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/jstests.list +2 -0
  1537. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/shell.js +1 -0
  1538. data/vendor/tracemonkey/tests/ecma_3/NumberFormatting/tostring-001.js +60 -0
  1539. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.1-01.js +113 -0
  1540. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.2.6-001.js +113 -0
  1541. data/vendor/tracemonkey/tests/ecma_3/Object/8.6.2.6-002.js +79 -0
  1542. data/vendor/tracemonkey/tests/ecma_3/Object/browser.js +7 -0
  1543. data/vendor/tracemonkey/tests/ecma_3/Object/class-001.js +156 -0
  1544. data/vendor/tracemonkey/tests/ecma_3/Object/class-002.js +146 -0
  1545. data/vendor/tracemonkey/tests/ecma_3/Object/class-003.js +139 -0
  1546. data/vendor/tracemonkey/tests/ecma_3/Object/class-004.js +139 -0
  1547. data/vendor/tracemonkey/tests/ecma_3/Object/class-005.js +124 -0
  1548. data/vendor/tracemonkey/tests/ecma_3/Object/jstests.list +14 -0
  1549. data/vendor/tracemonkey/tests/ecma_3/Object/regress-361274.js +66 -0
  1550. data/vendor/tracemonkey/tests/ecma_3/Object/regress-385393-07.js +67 -0
  1551. data/vendor/tracemonkey/tests/ecma_3/Object/regress-459405.js +71 -0
  1552. data/vendor/tracemonkey/tests/ecma_3/Object/regress-72773.js +97 -0
  1553. data/vendor/tracemonkey/tests/ecma_3/Object/regress-79129-001.js +80 -0
  1554. data/vendor/tracemonkey/tests/ecma_3/Object/shell.js +105 -0
  1555. data/vendor/tracemonkey/tests/ecma_3/Operators/11.13.1-001.js +152 -0
  1556. data/vendor/tracemonkey/tests/ecma_3/Operators/11.13.1-002.js +57 -0
  1557. data/vendor/tracemonkey/tests/ecma_3/Operators/11.4.1-001.js +120 -0
  1558. data/vendor/tracemonkey/tests/ecma_3/Operators/11.4.1-002.js +72 -0
  1559. data/vendor/tracemonkey/tests/ecma_3/Operators/jstests.list +6 -0
  1560. data/vendor/tracemonkey/tests/ecma_3/Operators/order-01.js +108 -0
  1561. data/vendor/tracemonkey/tests/ecma_3/Operators/shell.js +1 -0
  1562. data/vendor/tracemonkey/tests/ecma_3/README +1 -0
  1563. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.2-1.js +181 -0
  1564. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.2.12.js +63 -0
  1565. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.3.1-1.js +136 -0
  1566. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.3.1-2.js +144 -0
  1567. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-1.js +127 -0
  1568. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-2.js +133 -0
  1569. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-3.js +139 -0
  1570. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-4.js +146 -0
  1571. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-5-n.js +139 -0
  1572. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.4.1-6.js +95 -0
  1573. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.6.2-1.js +140 -0
  1574. data/vendor/tracemonkey/tests/ecma_3/RegExp/15.10.6.2-2.js +367 -0
  1575. data/vendor/tracemonkey/tests/ecma_3/RegExp/jstests.list +68 -0
  1576. data/vendor/tracemonkey/tests/ecma_3/RegExp/octal-001.js +136 -0
  1577. data/vendor/tracemonkey/tests/ecma_3/RegExp/octal-002.js +218 -0
  1578. data/vendor/tracemonkey/tests/ecma_3/RegExp/perlstress-001.js +3230 -0
  1579. data/vendor/tracemonkey/tests/ecma_3/RegExp/perlstress-002.js +1842 -0
  1580. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-100199.js +307 -0
  1581. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-105972.js +157 -0
  1582. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-119909.js +92 -0
  1583. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-122076.js +110 -0
  1584. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-123437.js +112 -0
  1585. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-165353.js +122 -0
  1586. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-169497.js +105 -0
  1587. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-169534.js +95 -0
  1588. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-187133.js +142 -0
  1589. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-188206.js +219 -0
  1590. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-191479.js +198 -0
  1591. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-202564.js +101 -0
  1592. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-209067.js +1106 -0
  1593. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-209919.js +174 -0
  1594. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-216591.js +117 -0
  1595. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-220367-001.js +104 -0
  1596. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-223273.js +279 -0
  1597. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-223535.js +133 -0
  1598. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-224676.js +226 -0
  1599. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-225289.js +176 -0
  1600. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-225343.js +125 -0
  1601. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-24712.js +59 -0
  1602. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-285219.js +51 -0
  1603. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-28686.js +57 -0
  1604. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-289669.js +88 -0
  1605. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-307456.js +54 -0
  1606. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-309840.js +58 -0
  1607. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-311414.js +101 -0
  1608. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-312351.js +50 -0
  1609. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-31316.js +96 -0
  1610. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-330684.js +53 -0
  1611. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-334158.js +58 -0
  1612. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-346090.js +63 -0
  1613. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-367888.js +62 -0
  1614. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375642.js +61 -0
  1615. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375711.js +118 -0
  1616. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-01-n.js +63 -0
  1617. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-02.js +60 -0
  1618. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-03.js +60 -0
  1619. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-375715-04.js +68 -0
  1620. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-436700.js +67 -0
  1621. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-465862.js +117 -0
  1622. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-57572.js +150 -0
  1623. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-57631.js +152 -0
  1624. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-67773.js +211 -0
  1625. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-72964.js +121 -0
  1626. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-76683.js +114 -0
  1627. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-78156.js +123 -0
  1628. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-85721.js +276 -0
  1629. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-87231.js +145 -0
  1630. data/vendor/tracemonkey/tests/ecma_3/RegExp/regress-98306.js +99 -0
  1631. data/vendor/tracemonkey/tests/ecma_3/RegExp/shell.js +266 -0
  1632. data/vendor/tracemonkey/tests/ecma_3/Regress/jstests.list +7 -0
  1633. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-385393-04.js +66 -0
  1634. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-419152.js +90 -0
  1635. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-420087.js +64 -0
  1636. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-420610.js +50 -0
  1637. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-441477-01.js +73 -0
  1638. data/vendor/tracemonkey/tests/ecma_3/Regress/regress-469937.js +60 -0
  1639. data/vendor/tracemonkey/tests/ecma_3/Regress/shell.js +1 -0
  1640. data/vendor/tracemonkey/tests/ecma_3/Statements/12.10-01.js +68 -0
  1641. data/vendor/tracemonkey/tests/ecma_3/Statements/12.6.3.js +80 -0
  1642. data/vendor/tracemonkey/tests/ecma_3/Statements/jstests.list +17 -0
  1643. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-121744.js +217 -0
  1644. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-131348.js +184 -0
  1645. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-157509.js +111 -0
  1646. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-194364.js +152 -0
  1647. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-226517.js +112 -0
  1648. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-302439.js +1368 -0
  1649. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-324650.js +5461 -0
  1650. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-444979.js +77 -0
  1651. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-001.js +139 -0
  1652. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-002.js +9097 -0
  1653. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-74474-003.js +9099 -0
  1654. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-83532-001.js +71 -0
  1655. data/vendor/tracemonkey/tests/ecma_3/Statements/regress-83532-002.js +74 -0
  1656. data/vendor/tracemonkey/tests/ecma_3/Statements/shell.js +1 -0
  1657. data/vendor/tracemonkey/tests/ecma_3/Statements/switch-001.js +143 -0
  1658. data/vendor/tracemonkey/tests/ecma_3/String/15.5.4.11.js +532 -0
  1659. data/vendor/tracemonkey/tests/ecma_3/String/15.5.4.14.js +50 -0
  1660. data/vendor/tracemonkey/tests/ecma_3/String/jstests.list +9 -0
  1661. data/vendor/tracemonkey/tests/ecma_3/String/regress-104375.js +116 -0
  1662. data/vendor/tracemonkey/tests/ecma_3/String/regress-189898.js +157 -0
  1663. data/vendor/tracemonkey/tests/ecma_3/String/regress-304376.js +68 -0
  1664. data/vendor/tracemonkey/tests/ecma_3/String/regress-313567.js +56 -0
  1665. data/vendor/tracemonkey/tests/ecma_3/String/regress-392378.js +77 -0
  1666. data/vendor/tracemonkey/tests/ecma_3/String/regress-83293.js +216 -0
  1667. data/vendor/tracemonkey/tests/ecma_3/String/shell.js +1 -0
  1668. data/vendor/tracemonkey/tests/ecma_3/Unicode/jstests.list +10 -0
  1669. data/vendor/tracemonkey/tests/ecma_3/Unicode/regress-352044-01.js +72 -0
  1670. data/vendor/tracemonkey/tests/ecma_3/Unicode/regress-352044-02-n.js +72 -0
  1671. data/vendor/tracemonkey/tests/ecma_3/Unicode/shell.js +1 -0
  1672. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-001-n.js +62 -0
  1673. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-001.js +56 -0
  1674. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-002-n.js +55 -0
  1675. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-002.js +60 -0
  1676. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-003.js +71 -0
  1677. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-004.js +65 -0
  1678. data/vendor/tracemonkey/tests/ecma_3/Unicode/uc-005.js +276 -0
  1679. data/vendor/tracemonkey/tests/ecma_3/browser.js +36 -0
  1680. data/vendor/tracemonkey/tests/ecma_3/extensions/10.1.3-2.js +162 -0
  1681. data/vendor/tracemonkey/tests/ecma_3/extensions/7.9.1.js +83 -0
  1682. data/vendor/tracemonkey/tests/ecma_3/extensions/jstests.list +15 -0
  1683. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-103087.js +178 -0
  1684. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-188206-01.js +108 -0
  1685. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-188206-02.js +158 -0
  1686. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-220367-002.js +112 -0
  1687. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-228087.js +352 -0
  1688. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-274152.js +83 -0
  1689. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-320854.js +53 -0
  1690. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-327170.js +58 -0
  1691. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-368516.js +78 -0
  1692. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-385393-03.js +63 -0
  1693. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-429248.js +67 -0
  1694. data/vendor/tracemonkey/tests/ecma_3/extensions/regress-430740.js +72 -0
  1695. data/vendor/tracemonkey/tests/ecma_3/extensions/shell.js +266 -0
  1696. data/vendor/tracemonkey/tests/ecma_3/jstests.list +18 -0
  1697. data/vendor/tracemonkey/tests/ecma_3/shell.js +40 -0
  1698. data/vendor/tracemonkey/tests/ecma_3/template.js +59 -0
  1699. data/vendor/tracemonkey/tests/ecma_3_1/Object/jstests.list +2 -0
  1700. data/vendor/tracemonkey/tests/ecma_3_1/Object/regress-444787.js +155 -0
  1701. data/vendor/tracemonkey/tests/ecma_3_1/Object/shell.js +1 -0
  1702. data/vendor/tracemonkey/tests/ecma_3_1/README +1 -0
  1703. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/jstests.list +2 -0
  1704. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/regress-305064.js +92 -0
  1705. data/vendor/tracemonkey/tests/ecma_3_1/RegExp/shell.js +1 -0
  1706. data/vendor/tracemonkey/tests/ecma_3_1/browser.js +36 -0
  1707. data/vendor/tracemonkey/tests/ecma_3_1/extensions/jstests.list +1 -0
  1708. data/vendor/tracemonkey/tests/ecma_3_1/extensions/shell.js +1 -0
  1709. data/vendor/tracemonkey/tests/ecma_3_1/jstests.list +3 -0
  1710. data/vendor/tracemonkey/tests/ecma_3_1/shell.js +47 -0
  1711. data/vendor/tracemonkey/tests/ecma_3_1/template.js +59 -0
  1712. data/vendor/tracemonkey/tests/ecma_5/Date/15.9.4.2.js +158 -0
  1713. data/vendor/tracemonkey/tests/ecma_5/Date/jstests.list +2 -0
  1714. data/vendor/tracemonkey/tests/ecma_5/Date/shell.js +1 -0
  1715. data/vendor/tracemonkey/tests/ecma_5/Object/15.2.3.14-01.js +91 -0
  1716. data/vendor/tracemonkey/tests/ecma_5/Object/15.2.3.3-01.js +341 -0
  1717. data/vendor/tracemonkey/tests/ecma_5/Object/jstests.list +3 -0
  1718. data/vendor/tracemonkey/tests/ecma_5/Object/shell.js +1 -0
  1719. data/vendor/tracemonkey/tests/ecma_5/README +1 -0
  1720. data/vendor/tracemonkey/tests/ecma_5/browser.js +36 -0
  1721. data/vendor/tracemonkey/tests/ecma_5/jstests.list +2 -0
  1722. data/vendor/tracemonkey/tests/ecma_5/shell.js +40 -0
  1723. data/vendor/tracemonkey/tests/ecma_5/template.js +59 -0
  1724. data/vendor/tracemonkey/tests/get-universe.sh +52 -0
  1725. data/vendor/tracemonkey/tests/importList.html +22 -0
  1726. data/vendor/tracemonkey/tests/importList.js +94 -0
  1727. data/vendor/tracemonkey/tests/js-test-driver-begin.js +1 -0
  1728. data/vendor/tracemonkey/tests/js-test-driver-end.js +3 -0
  1729. data/vendor/tracemonkey/tests/js-test-driver-quirks.html +23 -0
  1730. data/vendor/tracemonkey/tests/js-test-driver-standards.html +23 -0
  1731. data/vendor/tracemonkey/tests/js1_1/README +1 -0
  1732. data/vendor/tracemonkey/tests/js1_1/browser.js +37 -0
  1733. data/vendor/tracemonkey/tests/js1_1/jsref.js +167 -0
  1734. data/vendor/tracemonkey/tests/js1_1/jstests.list +1 -0
  1735. data/vendor/tracemonkey/tests/js1_1/regress/function-001.js +79 -0
  1736. data/vendor/tracemonkey/tests/js1_1/regress/jstests.list +2 -0
  1737. data/vendor/tracemonkey/tests/js1_1/regress/shell.js +1 -0
  1738. data/vendor/tracemonkey/tests/js1_1/shell.js +39 -0
  1739. data/vendor/tracemonkey/tests/js1_2/Array/array_split_1.js +86 -0
  1740. data/vendor/tracemonkey/tests/js1_2/Array/general1.js +78 -0
  1741. data/vendor/tracemonkey/tests/js1_2/Array/general2.js +93 -0
  1742. data/vendor/tracemonkey/tests/js1_2/Array/jstests.list +9 -0
  1743. data/vendor/tracemonkey/tests/js1_2/Array/shell.js +1 -0
  1744. data/vendor/tracemonkey/tests/js1_2/Array/slice.js +123 -0
  1745. data/vendor/tracemonkey/tests/js1_2/Array/splice1.js +153 -0
  1746. data/vendor/tracemonkey/tests/js1_2/Array/splice2.js +150 -0
  1747. data/vendor/tracemonkey/tests/js1_2/Array/tostring_1.js +126 -0
  1748. data/vendor/tracemonkey/tests/js1_2/Array/tostring_2.js +82 -0
  1749. data/vendor/tracemonkey/tests/js1_2/Objects/jstests.list +2 -0
  1750. data/vendor/tracemonkey/tests/js1_2/Objects/shell.js +1 -0
  1751. data/vendor/tracemonkey/tests/js1_2/Objects/toString-001.js +120 -0
  1752. data/vendor/tracemonkey/tests/js1_2/README +1 -0
  1753. data/vendor/tracemonkey/tests/js1_2/String/charCodeAt.js +72 -0
  1754. data/vendor/tracemonkey/tests/js1_2/String/concat.js +83 -0
  1755. data/vendor/tracemonkey/tests/js1_2/String/jstests.list +5 -0
  1756. data/vendor/tracemonkey/tests/js1_2/String/match.js +63 -0
  1757. data/vendor/tracemonkey/tests/js1_2/String/shell.js +1 -0
  1758. data/vendor/tracemonkey/tests/js1_2/String/slice.js +124 -0
  1759. data/vendor/tracemonkey/tests/js1_2/browser.js +37 -0
  1760. data/vendor/tracemonkey/tests/js1_2/function/Function_object.js +87 -0
  1761. data/vendor/tracemonkey/tests/js1_2/function/Number.js +85 -0
  1762. data/vendor/tracemonkey/tests/js1_2/function/String.js +73 -0
  1763. data/vendor/tracemonkey/tests/js1_2/function/definition-1.js +77 -0
  1764. data/vendor/tracemonkey/tests/js1_2/function/function-001-n.js +77 -0
  1765. data/vendor/tracemonkey/tests/js1_2/function/jstests.list +13 -0
  1766. data/vendor/tracemonkey/tests/js1_2/function/length.js +96 -0
  1767. data/vendor/tracemonkey/tests/js1_2/function/nesting-1.js +65 -0
  1768. data/vendor/tracemonkey/tests/js1_2/function/nesting.js +84 -0
  1769. data/vendor/tracemonkey/tests/js1_2/function/regexparg-1.js +105 -0
  1770. data/vendor/tracemonkey/tests/js1_2/function/regexparg-2-n.js +73 -0
  1771. data/vendor/tracemonkey/tests/js1_2/function/shell.js +1 -0
  1772. data/vendor/tracemonkey/tests/js1_2/function/tostring-1.js +145 -0
  1773. data/vendor/tracemonkey/tests/js1_2/function/tostring-2.js +188 -0
  1774. data/vendor/tracemonkey/tests/js1_2/jsref.js +228 -0
  1775. data/vendor/tracemonkey/tests/js1_2/jstests.list +9 -0
  1776. data/vendor/tracemonkey/tests/js1_2/operator/equality.js +72 -0
  1777. data/vendor/tracemonkey/tests/js1_2/operator/jstests.list +3 -0
  1778. data/vendor/tracemonkey/tests/js1_2/operator/shell.js +1 -0
  1779. data/vendor/tracemonkey/tests/js1_2/operator/strictEquality.js +93 -0
  1780. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_dollar_number.js +111 -0
  1781. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_input.js +104 -0
  1782. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_input_as_array.js +104 -0
  1783. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastIndex.js +85 -0
  1784. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastMatch.js +88 -0
  1785. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastMatch_as_array.js +88 -0
  1786. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastParen.js +102 -0
  1787. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_lastParen_as_array.js +102 -0
  1788. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_leftContext.js +92 -0
  1789. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_leftContext_as_array.js +92 -0
  1790. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_multiline.js +131 -0
  1791. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_multiline_as_array.js +132 -0
  1792. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_object.js +90 -0
  1793. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_rightContext.js +92 -0
  1794. data/vendor/tracemonkey/tests/js1_2/regexp/RegExp_rightContext_as_array.js +92 -0
  1795. data/vendor/tracemonkey/tests/js1_2/regexp/alphanumeric.js +131 -0
  1796. data/vendor/tracemonkey/tests/js1_2/regexp/asterisk.js +107 -0
  1797. data/vendor/tracemonkey/tests/js1_2/regexp/backslash.js +81 -0
  1798. data/vendor/tracemonkey/tests/js1_2/regexp/backspace.js +81 -0
  1799. data/vendor/tracemonkey/tests/js1_2/regexp/beginLine.js +83 -0
  1800. data/vendor/tracemonkey/tests/js1_2/regexp/character_class.js +110 -0
  1801. data/vendor/tracemonkey/tests/js1_2/regexp/compile.js +96 -0
  1802. data/vendor/tracemonkey/tests/js1_2/regexp/control_characters.js +74 -0
  1803. data/vendor/tracemonkey/tests/js1_2/regexp/digit.js +120 -0
  1804. data/vendor/tracemonkey/tests/js1_2/regexp/dot.js +98 -0
  1805. data/vendor/tracemonkey/tests/js1_2/regexp/endLine.js +83 -0
  1806. data/vendor/tracemonkey/tests/js1_2/regexp/everything.js +83 -0
  1807. data/vendor/tracemonkey/tests/js1_2/regexp/exec.js +79 -0
  1808. data/vendor/tracemonkey/tests/js1_2/regexp/flags.js +87 -0
  1809. data/vendor/tracemonkey/tests/js1_2/regexp/global.js +97 -0
  1810. data/vendor/tracemonkey/tests/js1_2/regexp/hexadecimal.js +109 -0
  1811. data/vendor/tracemonkey/tests/js1_2/regexp/ignoreCase.js +114 -0
  1812. data/vendor/tracemonkey/tests/js1_2/regexp/interval.js +117 -0
  1813. data/vendor/tracemonkey/tests/js1_2/regexp/jstests.list +51 -0
  1814. data/vendor/tracemonkey/tests/js1_2/regexp/octal.js +109 -0
  1815. data/vendor/tracemonkey/tests/js1_2/regexp/parentheses.js +109 -0
  1816. data/vendor/tracemonkey/tests/js1_2/regexp/plus.js +89 -0
  1817. data/vendor/tracemonkey/tests/js1_2/regexp/question_mark.js +101 -0
  1818. data/vendor/tracemonkey/tests/js1_2/regexp/regress-6359.js +86 -0
  1819. data/vendor/tracemonkey/tests/js1_2/regexp/regress-9141.js +105 -0
  1820. data/vendor/tracemonkey/tests/js1_2/regexp/shell.js +1 -0
  1821. data/vendor/tracemonkey/tests/js1_2/regexp/simple_form.js +92 -0
  1822. data/vendor/tracemonkey/tests/js1_2/regexp/source.js +90 -0
  1823. data/vendor/tracemonkey/tests/js1_2/regexp/special_characters.js +160 -0
  1824. data/vendor/tracemonkey/tests/js1_2/regexp/string_replace.js +83 -0
  1825. data/vendor/tracemonkey/tests/js1_2/regexp/string_search.js +89 -0
  1826. data/vendor/tracemonkey/tests/js1_2/regexp/string_split.js +94 -0
  1827. data/vendor/tracemonkey/tests/js1_2/regexp/test.js +89 -0
  1828. data/vendor/tracemonkey/tests/js1_2/regexp/toString.js +81 -0
  1829. data/vendor/tracemonkey/tests/js1_2/regexp/vertical_bar.js +98 -0
  1830. data/vendor/tracemonkey/tests/js1_2/regexp/whitespace.js +125 -0
  1831. data/vendor/tracemonkey/tests/js1_2/regexp/word_boundary.js +121 -0
  1832. data/vendor/tracemonkey/tests/js1_2/regress/jstests.list +3 -0
  1833. data/vendor/tracemonkey/tests/js1_2/regress/regress-144834.js +84 -0
  1834. data/vendor/tracemonkey/tests/js1_2/regress/regress-7703.js +102 -0
  1835. data/vendor/tracemonkey/tests/js1_2/regress/shell.js +1 -0
  1836. data/vendor/tracemonkey/tests/js1_2/shell.js +40 -0
  1837. data/vendor/tracemonkey/tests/js1_2/statements/break.js +164 -0
  1838. data/vendor/tracemonkey/tests/js1_2/statements/continue.js +177 -0
  1839. data/vendor/tracemonkey/tests/js1_2/statements/do_while.js +69 -0
  1840. data/vendor/tracemonkey/tests/js1_2/statements/jstests.list +6 -0
  1841. data/vendor/tracemonkey/tests/js1_2/statements/shell.js +1 -0
  1842. data/vendor/tracemonkey/tests/js1_2/statements/switch.js +130 -0
  1843. data/vendor/tracemonkey/tests/js1_2/statements/switch2.js +192 -0
  1844. data/vendor/tracemonkey/tests/js1_2/version120/boolean-001.js +77 -0
  1845. data/vendor/tracemonkey/tests/js1_2/version120/browser.js +37 -0
  1846. data/vendor/tracemonkey/tests/js1_2/version120/jstests.list +3 -0
  1847. data/vendor/tracemonkey/tests/js1_2/version120/regress-99663.js +165 -0
  1848. data/vendor/tracemonkey/tests/js1_2/version120/shell.js +42 -0
  1849. data/vendor/tracemonkey/tests/js1_3/Boolean/boolean-001.js +77 -0
  1850. data/vendor/tracemonkey/tests/js1_3/Boolean/jstests.list +2 -0
  1851. data/vendor/tracemonkey/tests/js1_3/Boolean/shell.js +1 -0
  1852. data/vendor/tracemonkey/tests/js1_3/README +1 -0
  1853. data/vendor/tracemonkey/tests/js1_3/Script/delete-001.js +83 -0
  1854. data/vendor/tracemonkey/tests/js1_3/Script/function-001-n.js +78 -0
  1855. data/vendor/tracemonkey/tests/js1_3/Script/function-002.js +79 -0
  1856. data/vendor/tracemonkey/tests/js1_3/Script/in-001.js +69 -0
  1857. data/vendor/tracemonkey/tests/js1_3/Script/jstests.list +7 -0
  1858. data/vendor/tracemonkey/tests/js1_3/Script/new-001.js +123 -0
  1859. data/vendor/tracemonkey/tests/js1_3/Script/shell.js +1 -0
  1860. data/vendor/tracemonkey/tests/js1_3/Script/switch-001.js +84 -0
  1861. data/vendor/tracemonkey/tests/js1_3/browser.js +36 -0
  1862. data/vendor/tracemonkey/tests/js1_3/extensions/jstests.list +5 -0
  1863. data/vendor/tracemonkey/tests/js1_3/extensions/proto_10.js +156 -0
  1864. data/vendor/tracemonkey/tests/js1_3/extensions/proto_2.js +125 -0
  1865. data/vendor/tracemonkey/tests/js1_3/extensions/proto_5.js +149 -0
  1866. data/vendor/tracemonkey/tests/js1_3/extensions/script-001.js +174 -0
  1867. data/vendor/tracemonkey/tests/js1_3/extensions/shell.js +1 -0
  1868. data/vendor/tracemonkey/tests/js1_3/inherit/jstests.list +11 -0
  1869. data/vendor/tracemonkey/tests/js1_3/inherit/proto_1.js +170 -0
  1870. data/vendor/tracemonkey/tests/js1_3/inherit/proto_10.js +124 -0
  1871. data/vendor/tracemonkey/tests/js1_3/inherit/proto_11.js +120 -0
  1872. data/vendor/tracemonkey/tests/js1_3/inherit/proto_12.js +146 -0
  1873. data/vendor/tracemonkey/tests/js1_3/inherit/proto_3.js +107 -0
  1874. data/vendor/tracemonkey/tests/js1_3/inherit/proto_4.js +159 -0
  1875. data/vendor/tracemonkey/tests/js1_3/inherit/proto_6.js +174 -0
  1876. data/vendor/tracemonkey/tests/js1_3/inherit/proto_7.js +129 -0
  1877. data/vendor/tracemonkey/tests/js1_3/inherit/proto_8.js +127 -0
  1878. data/vendor/tracemonkey/tests/js1_3/inherit/proto_9.js +105 -0
  1879. data/vendor/tracemonkey/tests/js1_3/inherit/shell.js +1 -0
  1880. data/vendor/tracemonkey/tests/js1_3/jsref.js +195 -0
  1881. data/vendor/tracemonkey/tests/js1_3/jstests.list +6 -0
  1882. data/vendor/tracemonkey/tests/js1_3/misc/shell.js +1 -0
  1883. data/vendor/tracemonkey/tests/js1_3/regress/delete-001.js +83 -0
  1884. data/vendor/tracemonkey/tests/js1_3/regress/function-001-n.js +78 -0
  1885. data/vendor/tracemonkey/tests/js1_3/regress/function-002.js +79 -0
  1886. data/vendor/tracemonkey/tests/js1_3/regress/in-001.js +70 -0
  1887. data/vendor/tracemonkey/tests/js1_3/regress/jstests.list +7 -0
  1888. data/vendor/tracemonkey/tests/js1_3/regress/new-001.js +123 -0
  1889. data/vendor/tracemonkey/tests/js1_3/regress/shell.js +1 -0
  1890. data/vendor/tracemonkey/tests/js1_3/regress/switch-001.js +84 -0
  1891. data/vendor/tracemonkey/tests/js1_3/shell.js +40 -0
  1892. data/vendor/tracemonkey/tests/js1_4/Eval/eval-001.js +91 -0
  1893. data/vendor/tracemonkey/tests/js1_4/Eval/eval-002.js +97 -0
  1894. data/vendor/tracemonkey/tests/js1_4/Eval/eval-003.js +101 -0
  1895. data/vendor/tracemonkey/tests/js1_4/Eval/jstests.list +5 -0
  1896. data/vendor/tracemonkey/tests/js1_4/Eval/regress-531037.js +39 -0
  1897. data/vendor/tracemonkey/tests/js1_4/Eval/shell.js +1 -0
  1898. data/vendor/tracemonkey/tests/js1_4/Functions/function-001.js +123 -0
  1899. data/vendor/tracemonkey/tests/js1_4/Functions/jstests.list +2 -0
  1900. data/vendor/tracemonkey/tests/js1_4/Functions/shell.js +1 -0
  1901. data/vendor/tracemonkey/tests/js1_4/README +1 -0
  1902. data/vendor/tracemonkey/tests/js1_4/Regress/date-001-n.js +76 -0
  1903. data/vendor/tracemonkey/tests/js1_4/Regress/function-001.js +96 -0
  1904. data/vendor/tracemonkey/tests/js1_4/Regress/function-002.js +141 -0
  1905. data/vendor/tracemonkey/tests/js1_4/Regress/function-003.js +94 -0
  1906. data/vendor/tracemonkey/tests/js1_4/Regress/function-004-n.js +71 -0
  1907. data/vendor/tracemonkey/tests/js1_4/Regress/jstests.list +8 -0
  1908. data/vendor/tracemonkey/tests/js1_4/Regress/regress-7224.js +90 -0
  1909. data/vendor/tracemonkey/tests/js1_4/Regress/shell.js +1 -0
  1910. data/vendor/tracemonkey/tests/js1_4/Regress/toString-001-n.js +71 -0
  1911. data/vendor/tracemonkey/tests/js1_4/browser.js +37 -0
  1912. data/vendor/tracemonkey/tests/js1_4/jsref.js +166 -0
  1913. data/vendor/tracemonkey/tests/js1_4/jstests.list +3 -0
  1914. data/vendor/tracemonkey/tests/js1_4/shell.js +39 -0
  1915. data/vendor/tracemonkey/tests/js1_5/Array/11.1.4.js +102 -0
  1916. data/vendor/tracemonkey/tests/js1_5/Array/array-001.js +122 -0
  1917. data/vendor/tracemonkey/tests/js1_5/Array/jstests.list +35 -0
  1918. data/vendor/tracemonkey/tests/js1_5/Array/regress-101964.js +119 -0
  1919. data/vendor/tracemonkey/tests/js1_5/Array/regress-107138.js +211 -0
  1920. data/vendor/tracemonkey/tests/js1_5/Array/regress-108440.js +110 -0
  1921. data/vendor/tracemonkey/tests/js1_5/Array/regress-154338.js +124 -0
  1922. data/vendor/tracemonkey/tests/js1_5/Array/regress-157652.js +155 -0
  1923. data/vendor/tracemonkey/tests/js1_5/Array/regress-178722.js +164 -0
  1924. data/vendor/tracemonkey/tests/js1_5/Array/regress-255555.js +66 -0
  1925. data/vendor/tracemonkey/tests/js1_5/Array/regress-299644.js +61 -0
  1926. data/vendor/tracemonkey/tests/js1_5/Array/regress-300858.js +54 -0
  1927. data/vendor/tracemonkey/tests/js1_5/Array/regress-310351.js +87 -0
  1928. data/vendor/tracemonkey/tests/js1_5/Array/regress-311515.js +53 -0
  1929. data/vendor/tracemonkey/tests/js1_5/Array/regress-313153.js +51 -0
  1930. data/vendor/tracemonkey/tests/js1_5/Array/regress-315509-01.js +61 -0
  1931. data/vendor/tracemonkey/tests/js1_5/Array/regress-330812.js +65 -0
  1932. data/vendor/tracemonkey/tests/js1_5/Array/regress-345961.js +69 -0
  1933. data/vendor/tracemonkey/tests/js1_5/Array/regress-348810.js +61 -0
  1934. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-01.js +78 -0
  1935. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-02.js +78 -0
  1936. data/vendor/tracemonkey/tests/js1_5/Array/regress-350256-03.js +88 -0
  1937. data/vendor/tracemonkey/tests/js1_5/Array/regress-360681-01.js +66 -0
  1938. data/vendor/tracemonkey/tests/js1_5/Array/regress-360681-02.js +91 -0
  1939. data/vendor/tracemonkey/tests/js1_5/Array/regress-364104.js +107 -0
  1940. data/vendor/tracemonkey/tests/js1_5/Array/regress-422286.js +67 -0
  1941. data/vendor/tracemonkey/tests/js1_5/Array/regress-424954.js +61 -0
  1942. data/vendor/tracemonkey/tests/js1_5/Array/regress-451483.js +64 -0
  1943. data/vendor/tracemonkey/tests/js1_5/Array/regress-451906.js +64 -0
  1944. data/vendor/tracemonkey/tests/js1_5/Array/regress-456845.js +87 -0
  1945. data/vendor/tracemonkey/tests/js1_5/Array/regress-465980-01.js +68 -0
  1946. data/vendor/tracemonkey/tests/js1_5/Array/regress-465980-02.js +202 -0
  1947. data/vendor/tracemonkey/tests/js1_5/Array/regress-94257.js +120 -0
  1948. data/vendor/tracemonkey/tests/js1_5/Array/regress-99120-01.js +84 -0
  1949. data/vendor/tracemonkey/tests/js1_5/Array/regress-99120-02.js +79 -0
  1950. data/vendor/tracemonkey/tests/js1_5/Array/shell.js +1 -0
  1951. data/vendor/tracemonkey/tests/js1_5/Date/jstests.list +8 -0
  1952. data/vendor/tracemonkey/tests/js1_5/Date/regress-188211.js +60 -0
  1953. data/vendor/tracemonkey/tests/js1_5/Date/regress-301738-01.js +130 -0
  1954. data/vendor/tracemonkey/tests/js1_5/Date/regress-301738-02.js +163 -0
  1955. data/vendor/tracemonkey/tests/js1_5/Date/regress-309925-01.js +48 -0
  1956. data/vendor/tracemonkey/tests/js1_5/Date/regress-309925-02.js +48 -0
  1957. data/vendor/tracemonkey/tests/js1_5/Date/regress-346027.js +63 -0
  1958. data/vendor/tracemonkey/tests/js1_5/Date/regress-346363.js +64 -0
  1959. data/vendor/tracemonkey/tests/js1_5/Date/shell.js +1 -0
  1960. data/vendor/tracemonkey/tests/js1_5/Error/jstests.list +4 -0
  1961. data/vendor/tracemonkey/tests/js1_5/Error/regress-354246.js +70 -0
  1962. data/vendor/tracemonkey/tests/js1_5/Error/regress-412324.js +50 -0
  1963. data/vendor/tracemonkey/tests/js1_5/Error/regress-465377.js +114 -0
  1964. data/vendor/tracemonkey/tests/js1_5/Error/shell.js +1 -0
  1965. data/vendor/tracemonkey/tests/js1_5/Exceptions/catchguard-002-n.js +72 -0
  1966. data/vendor/tracemonkey/tests/js1_5/Exceptions/catchguard-003-n.js +76 -0
  1967. data/vendor/tracemonkey/tests/js1_5/Exceptions/errstack-001.js +279 -0
  1968. data/vendor/tracemonkey/tests/js1_5/Exceptions/jstests.list +16 -0
  1969. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-121658.js +158 -0
  1970. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-123002.js +132 -0
  1971. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-232182.js +155 -0
  1972. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-257751.js +127 -0
  1973. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-273931.js +108 -0
  1974. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-315147.js +69 -0
  1975. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-332472.js +58 -0
  1976. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-333728.js +116 -0
  1977. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-342359.js +77 -0
  1978. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-347674.js +96 -0
  1979. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-350650-n.js +63 -0
  1980. data/vendor/tracemonkey/tests/js1_5/Exceptions/regress-350837.js +79 -0
  1981. data/vendor/tracemonkey/tests/js1_5/Exceptions/shell.js +1 -0
  1982. data/vendor/tracemonkey/tests/js1_5/Expressions/jstests.list +6 -0
  1983. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-192288.js +119 -0
  1984. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-394673.js +82 -0
  1985. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-argsub.js +125 -0
  1986. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-delelem.js +125 -0
  1987. data/vendor/tracemonkey/tests/js1_5/Expressions/regress-96526-noargsub.js +125 -0
  1988. data/vendor/tracemonkey/tests/js1_5/Expressions/shell.js +137 -0
  1989. data/vendor/tracemonkey/tests/js1_5/Function/10.1.6-01.js +62 -0
  1990. data/vendor/tracemonkey/tests/js1_5/Function/10.1.6.js +56 -0
  1991. data/vendor/tracemonkey/tests/js1_5/Function/15.3.4.4.js +74 -0
  1992. data/vendor/tracemonkey/tests/js1_5/Function/jstests.list +15 -0
  1993. data/vendor/tracemonkey/tests/js1_5/Function/regress-123371.js +53 -0
  1994. data/vendor/tracemonkey/tests/js1_5/Function/regress-178389.js +62 -0
  1995. data/vendor/tracemonkey/tests/js1_5/Function/regress-222029-001.js +160 -0
  1996. data/vendor/tracemonkey/tests/js1_5/Function/regress-222029-002.js +169 -0
  1997. data/vendor/tracemonkey/tests/js1_5/Function/regress-292215.js +71 -0
  1998. data/vendor/tracemonkey/tests/js1_5/Function/regress-338001.js +74 -0
  1999. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-01.js +70 -0
  2000. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-02.js +74 -0
  2001. data/vendor/tracemonkey/tests/js1_5/Function/regress-338121-03.js +75 -0
  2002. data/vendor/tracemonkey/tests/js1_5/Function/regress-344052.js +63 -0
  2003. data/vendor/tracemonkey/tests/js1_5/Function/regress-364023.js +73 -0
  2004. data/vendor/tracemonkey/tests/js1_5/Function/shell.js +1 -0
  2005. data/vendor/tracemonkey/tests/js1_5/GC/jstests.list +26 -0
  2006. data/vendor/tracemonkey/tests/js1_5/GC/regress-104584.js +80 -0
  2007. data/vendor/tracemonkey/tests/js1_5/GC/regress-203278-2.js +113 -0
  2008. data/vendor/tracemonkey/tests/js1_5/GC/regress-203278-3.js +76 -0
  2009. data/vendor/tracemonkey/tests/js1_5/GC/regress-278725.js +65 -0
  2010. data/vendor/tracemonkey/tests/js1_5/GC/regress-306788.js +57 -0
  2011. data/vendor/tracemonkey/tests/js1_5/GC/regress-311497.js +94 -0
  2012. data/vendor/tracemonkey/tests/js1_5/GC/regress-313276.js +73 -0
  2013. data/vendor/tracemonkey/tests/js1_5/GC/regress-313479.js +70 -0
  2014. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-01.js +66 -0
  2015. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-02.js +75 -0
  2016. data/vendor/tracemonkey/tests/js1_5/GC/regress-316885-03.js +75 -0
  2017. data/vendor/tracemonkey/tests/js1_5/GC/regress-319980-01.js +160 -0
  2018. data/vendor/tracemonkey/tests/js1_5/GC/regress-324278.js +95 -0
  2019. data/vendor/tracemonkey/tests/js1_5/GC/regress-331719.js +52 -0
  2020. data/vendor/tracemonkey/tests/js1_5/GC/regress-338653.js +74 -0
  2021. data/vendor/tracemonkey/tests/js1_5/GC/regress-341877-01.js +73 -0
  2022. data/vendor/tracemonkey/tests/js1_5/GC/regress-341877-02.js +78 -0
  2023. data/vendor/tracemonkey/tests/js1_5/GC/regress-346794.js +77 -0
  2024. data/vendor/tracemonkey/tests/js1_5/GC/regress-348532.js +83 -0
  2025. data/vendor/tracemonkey/tests/js1_5/GC/regress-352606.js +61 -0
  2026. data/vendor/tracemonkey/tests/js1_5/GC/regress-383269-01.js +94 -0
  2027. data/vendor/tracemonkey/tests/js1_5/GC/regress-383269-02.js +98 -0
  2028. data/vendor/tracemonkey/tests/js1_5/GC/regress-390078.js +69 -0
  2029. data/vendor/tracemonkey/tests/js1_5/GC/regress-418128.js +73 -0
  2030. data/vendor/tracemonkey/tests/js1_5/GC/regress-440558.js +69 -0
  2031. data/vendor/tracemonkey/tests/js1_5/GC/shell.js +1 -0
  2032. data/vendor/tracemonkey/tests/js1_5/GetSet/getset-002.js +86 -0
  2033. data/vendor/tracemonkey/tests/js1_5/GetSet/jstests.list +4 -0
  2034. data/vendor/tracemonkey/tests/js1_5/GetSet/regress-353264.js +50 -0
  2035. data/vendor/tracemonkey/tests/js1_5/GetSet/regress-375976.js +64 -0
  2036. data/vendor/tracemonkey/tests/js1_5/GetSet/shell.js +1 -0
  2037. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/jstests.list +5 -0
  2038. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/lexical-001.js +183 -0
  2039. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-177314.js +110 -0
  2040. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-343675.js +82 -0
  2041. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/regress-469940.js +71 -0
  2042. data/vendor/tracemonkey/tests/js1_5/LexicalConventions/shell.js +1 -0
  2043. data/vendor/tracemonkey/tests/js1_5/Object/jstests.list +11 -0
  2044. data/vendor/tracemonkey/tests/js1_5/Object/regress-137000.js +240 -0
  2045. data/vendor/tracemonkey/tests/js1_5/Object/regress-192105.js +183 -0
  2046. data/vendor/tracemonkey/tests/js1_5/Object/regress-308806-01.js +53 -0
  2047. data/vendor/tracemonkey/tests/js1_5/Object/regress-338709.js +107 -0
  2048. data/vendor/tracemonkey/tests/js1_5/Object/regress-362872-01.js +74 -0
  2049. data/vendor/tracemonkey/tests/js1_5/Object/regress-362872-02.js +55 -0
  2050. data/vendor/tracemonkey/tests/js1_5/Object/regress-382503.js +62 -0
  2051. data/vendor/tracemonkey/tests/js1_5/Object/regress-382532.js +70 -0
  2052. data/vendor/tracemonkey/tests/js1_5/Object/regress-465476.js +96 -0
  2053. data/vendor/tracemonkey/tests/js1_5/Object/regress-90596-003.js +312 -0
  2054. data/vendor/tracemonkey/tests/js1_5/Object/shell.js +1 -0
  2055. data/vendor/tracemonkey/tests/js1_5/README +1 -0
  2056. data/vendor/tracemonkey/tests/js1_5/Regress/jstests.list +363 -0
  2057. data/vendor/tracemonkey/tests/js1_5/Regress/regress-102725.js +99 -0
  2058. data/vendor/tracemonkey/tests/js1_5/Regress/regress-10278.js +79 -0
  2059. data/vendor/tracemonkey/tests/js1_5/Regress/regress-103602.js +168 -0
  2060. data/vendor/tracemonkey/tests/js1_5/Regress/regress-104077.js +509 -0
  2061. data/vendor/tracemonkey/tests/js1_5/Regress/regress-106244.js +71 -0
  2062. data/vendor/tracemonkey/tests/js1_5/Regress/regress-110286.js +156 -0
  2063. data/vendor/tracemonkey/tests/js1_5/Regress/regress-111557.js +10965 -0
  2064. data/vendor/tracemonkey/tests/js1_5/Regress/regress-114491.js +106 -0
  2065. data/vendor/tracemonkey/tests/js1_5/Regress/regress-114493.js +114 -0
  2066. data/vendor/tracemonkey/tests/js1_5/Regress/regress-115436.js +58 -0
  2067. data/vendor/tracemonkey/tests/js1_5/Regress/regress-116228.js +59 -0
  2068. data/vendor/tracemonkey/tests/js1_5/Regress/regress-118849.js +186 -0
  2069. data/vendor/tracemonkey/tests/js1_5/Regress/regress-119719.js +58 -0
  2070. data/vendor/tracemonkey/tests/js1_5/Regress/regress-127243.js +108 -0
  2071. data/vendor/tracemonkey/tests/js1_5/Regress/regress-127557.js +124 -0
  2072. data/vendor/tracemonkey/tests/js1_5/Regress/regress-131510-001.js +74 -0
  2073. data/vendor/tracemonkey/tests/js1_5/Regress/regress-139316.js +80 -0
  2074. data/vendor/tracemonkey/tests/js1_5/Regress/regress-140852.js +66 -0
  2075. data/vendor/tracemonkey/tests/js1_5/Regress/regress-140974.js +140 -0
  2076. data/vendor/tracemonkey/tests/js1_5/Regress/regress-146596.js +159 -0
  2077. data/vendor/tracemonkey/tests/js1_5/Regress/regress-152646.js +127 -0
  2078. data/vendor/tracemonkey/tests/js1_5/Regress/regress-155081-2.js +17554 -0
  2079. data/vendor/tracemonkey/tests/js1_5/Regress/regress-155081.js +17561 -0
  2080. data/vendor/tracemonkey/tests/js1_5/Regress/regress-156354.js +131 -0
  2081. data/vendor/tracemonkey/tests/js1_5/Regress/regress-159334.js +129 -0
  2082. data/vendor/tracemonkey/tests/js1_5/Regress/regress-162392.js +68 -0
  2083. data/vendor/tracemonkey/tests/js1_5/Regress/regress-165201.js +89 -0
  2084. data/vendor/tracemonkey/tests/js1_5/Regress/regress-167328.js +60 -0
  2085. data/vendor/tracemonkey/tests/js1_5/Regress/regress-167658.js +62 -0
  2086. data/vendor/tracemonkey/tests/js1_5/Regress/regress-168347.js +220 -0
  2087. data/vendor/tracemonkey/tests/js1_5/Regress/regress-169559.js +91 -0
  2088. data/vendor/tracemonkey/tests/js1_5/Regress/regress-170193.js +111 -0
  2089. data/vendor/tracemonkey/tests/js1_5/Regress/regress-172699.js +99 -0
  2090. data/vendor/tracemonkey/tests/js1_5/Regress/regress-173067.js +58 -0
  2091. data/vendor/tracemonkey/tests/js1_5/Regress/regress-174709.js +104 -0
  2092. data/vendor/tracemonkey/tests/js1_5/Regress/regress-176125.js +82 -0
  2093. data/vendor/tracemonkey/tests/js1_5/Regress/regress-179524.js +368 -0
  2094. data/vendor/tracemonkey/tests/js1_5/Regress/regress-185165.js +101 -0
  2095. data/vendor/tracemonkey/tests/js1_5/Regress/regress-191633.js +107 -0
  2096. data/vendor/tracemonkey/tests/js1_5/Regress/regress-191668.js +104 -0
  2097. data/vendor/tracemonkey/tests/js1_5/Regress/regress-192414.js +122 -0
  2098. data/vendor/tracemonkey/tests/js1_5/Regress/regress-193418.js +104 -0
  2099. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203278-1.js +64 -0
  2100. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203402.js +95 -0
  2101. data/vendor/tracemonkey/tests/js1_5/Regress/regress-203841.js +164 -0
  2102. data/vendor/tracemonkey/tests/js1_5/Regress/regress-204210.js +150 -0
  2103. data/vendor/tracemonkey/tests/js1_5/Regress/regress-210682.js +101 -0
  2104. data/vendor/tracemonkey/tests/js1_5/Regress/regress-211590.js +88 -0
  2105. data/vendor/tracemonkey/tests/js1_5/Regress/regress-213482.js +62 -0
  2106. data/vendor/tracemonkey/tests/js1_5/Regress/regress-214761.js +78 -0
  2107. data/vendor/tracemonkey/tests/js1_5/Regress/regress-216320.js +1040 -0
  2108. data/vendor/tracemonkey/tests/js1_5/Regress/regress-224956.js +287 -0
  2109. data/vendor/tracemonkey/tests/js1_5/Regress/regress-229006.js +65597 -0
  2110. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-1.js +81 -0
  2111. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-2.js +70 -0
  2112. data/vendor/tracemonkey/tests/js1_5/Regress/regress-230216-3.js +80 -0
  2113. data/vendor/tracemonkey/tests/js1_5/Regress/regress-233483-2.js +100 -0
  2114. data/vendor/tracemonkey/tests/js1_5/Regress/regress-233483.js +86 -0
  2115. data/vendor/tracemonkey/tests/js1_5/Regress/regress-234389.js +72 -0
  2116. data/vendor/tracemonkey/tests/js1_5/Regress/regress-238881.js +64 -0
  2117. data/vendor/tracemonkey/tests/js1_5/Regress/regress-238945.js +52 -0
  2118. data/vendor/tracemonkey/tests/js1_5/Regress/regress-240317.js +99 -0
  2119. data/vendor/tracemonkey/tests/js1_5/Regress/regress-240577.js +68 -0
  2120. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243174.js +55 -0
  2121. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243389-n.js +58 -0
  2122. data/vendor/tracemonkey/tests/js1_5/Regress/regress-243869.js +72 -0
  2123. data/vendor/tracemonkey/tests/js1_5/Regress/regress-244470.js +1113 -0
  2124. data/vendor/tracemonkey/tests/js1_5/Regress/regress-244619.js +66 -0
  2125. data/vendor/tracemonkey/tests/js1_5/Regress/regress-245113.js +81 -0
  2126. data/vendor/tracemonkey/tests/js1_5/Regress/regress-245308.js +61 -0
  2127. data/vendor/tracemonkey/tests/js1_5/Regress/regress-246911.js +64 -0
  2128. data/vendor/tracemonkey/tests/js1_5/Regress/regress-246964.js +196 -0
  2129. data/vendor/tracemonkey/tests/js1_5/Regress/regress-247179.js +53 -0
  2130. data/vendor/tracemonkey/tests/js1_5/Regress/regress-248444.js +77 -0
  2131. data/vendor/tracemonkey/tests/js1_5/Regress/regress-249211.js +63 -0
  2132. data/vendor/tracemonkey/tests/js1_5/Regress/regress-252892.js +163 -0
  2133. data/vendor/tracemonkey/tests/js1_5/Regress/regress-253150.js +123 -0
  2134. data/vendor/tracemonkey/tests/js1_5/Regress/regress-254296.js +60 -0
  2135. data/vendor/tracemonkey/tests/js1_5/Regress/regress-254974.js +72 -0
  2136. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256501.js +72 -0
  2137. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256617.js +69 -0
  2138. data/vendor/tracemonkey/tests/js1_5/Regress/regress-256798.js +70 -0
  2139. data/vendor/tracemonkey/tests/js1_5/Regress/regress-259935.js +75 -0
  2140. data/vendor/tracemonkey/tests/js1_5/Regress/regress-260541.js +55 -0
  2141. data/vendor/tracemonkey/tests/js1_5/Regress/regress-261886.js +63 -0
  2142. data/vendor/tracemonkey/tests/js1_5/Regress/regress-261887.js +70 -0
  2143. data/vendor/tracemonkey/tests/js1_5/Regress/regress-271716-n.js +60 -0
  2144. data/vendor/tracemonkey/tests/js1_5/Regress/regress-274035.js +63 -0
  2145. data/vendor/tracemonkey/tests/js1_5/Regress/regress-274888.js +73 -0
  2146. data/vendor/tracemonkey/tests/js1_5/Regress/regress-275378.js +81 -0
  2147. data/vendor/tracemonkey/tests/js1_5/Regress/regress-276103.js +60 -0
  2148. data/vendor/tracemonkey/tests/js1_5/Regress/regress-278873.js +61 -0
  2149. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-1.js +58 -0
  2150. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-2.js +74 -0
  2151. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-3.js +79 -0
  2152. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-4.js +81 -0
  2153. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769-5.js +64 -0
  2154. data/vendor/tracemonkey/tests/js1_5/Regress/regress-280769.js +73 -0
  2155. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281487.js +69 -0
  2156. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281606.js +80 -0
  2157. data/vendor/tracemonkey/tests/js1_5/Regress/regress-281930.js +54 -0
  2158. data/vendor/tracemonkey/tests/js1_5/Regress/regress-283477.js +61 -0
  2159. data/vendor/tracemonkey/tests/js1_5/Regress/regress-286216.js +63 -0
  2160. data/vendor/tracemonkey/tests/js1_5/Regress/regress-288688.js +81 -0
  2161. data/vendor/tracemonkey/tests/js1_5/Regress/regress-289094.js +61 -0
  2162. data/vendor/tracemonkey/tests/js1_5/Regress/regress-290575.js +90 -0
  2163. data/vendor/tracemonkey/tests/js1_5/Regress/regress-290656.js +65 -0
  2164. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294191.js +63 -0
  2165. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294195-01.js +58 -0
  2166. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294195-02.js +50 -0
  2167. data/vendor/tracemonkey/tests/js1_5/Regress/regress-294302.js +57 -0
  2168. data/vendor/tracemonkey/tests/js1_5/Regress/regress-295052.js +50 -0
  2169. data/vendor/tracemonkey/tests/js1_5/Regress/regress-295666.js +56 -0
  2170. data/vendor/tracemonkey/tests/js1_5/Regress/regress-299209.js +56 -0
  2171. data/vendor/tracemonkey/tests/js1_5/Regress/regress-299641.js +58 -0
  2172. data/vendor/tracemonkey/tests/js1_5/Regress/regress-303213.js +88 -0
  2173. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306633.js +68 -0
  2174. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306727.js +73 -0
  2175. data/vendor/tracemonkey/tests/js1_5/Regress/regress-306794.js +56 -0
  2176. data/vendor/tracemonkey/tests/js1_5/Regress/regress-308085.js +602 -0
  2177. data/vendor/tracemonkey/tests/js1_5/Regress/regress-308566.js +60 -0
  2178. data/vendor/tracemonkey/tests/js1_5/Regress/regress-309242.js +77 -0
  2179. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310295.js +54 -0
  2180. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310607.js +62 -0
  2181. data/vendor/tracemonkey/tests/js1_5/Regress/regress-310993.js +55 -0
  2182. data/vendor/tracemonkey/tests/js1_5/Regress/regress-311071.js +51 -0
  2183. data/vendor/tracemonkey/tests/js1_5/Regress/regress-311629.js +55 -0
  2184. data/vendor/tracemonkey/tests/js1_5/Regress/regress-312260.js +60 -0
  2185. data/vendor/tracemonkey/tests/js1_5/Regress/regress-31255.js +113 -0
  2186. data/vendor/tracemonkey/tests/js1_5/Regress/regress-312588.js +63 -0
  2187. data/vendor/tracemonkey/tests/js1_5/Regress/regress-313967-01.js +112 -0
  2188. data/vendor/tracemonkey/tests/js1_5/Regress/regress-313967-02.js +87 -0
  2189. data/vendor/tracemonkey/tests/js1_5/Regress/regress-314401.js +104 -0
  2190. data/vendor/tracemonkey/tests/js1_5/Regress/regress-315974.js +83 -0
  2191. data/vendor/tracemonkey/tests/js1_5/Regress/regress-315990.js +73 -0
  2192. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317476.js +64 -0
  2193. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317533.js +87 -0
  2194. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317714-01.js +52 -0
  2195. data/vendor/tracemonkey/tests/js1_5/Regress/regress-317714-02.js +53 -0
  2196. data/vendor/tracemonkey/tests/js1_5/Regress/regress-319384.js +61 -0
  2197. data/vendor/tracemonkey/tests/js1_5/Regress/regress-319391.js +73 -0
  2198. data/vendor/tracemonkey/tests/js1_5/Regress/regress-320032.js +60 -0
  2199. data/vendor/tracemonkey/tests/js1_5/Regress/regress-320119.js +148 -0
  2200. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321757.js +143 -0
  2201. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321874.js +241 -0
  2202. data/vendor/tracemonkey/tests/js1_5/Regress/regress-321971.js +56 -0
  2203. data/vendor/tracemonkey/tests/js1_5/Regress/regress-322430.js +70 -0
  2204. data/vendor/tracemonkey/tests/js1_5/Regress/regress-323314-1.js +73 -0
  2205. data/vendor/tracemonkey/tests/js1_5/Regress/regress-325925.js +50 -0
  2206. data/vendor/tracemonkey/tests/js1_5/Regress/regress-326453.js +52 -0
  2207. data/vendor/tracemonkey/tests/js1_5/Regress/regress-326467.js +51 -0
  2208. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328012.js +62 -0
  2209. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328664.js +64 -0
  2210. data/vendor/tracemonkey/tests/js1_5/Regress/regress-328897.js +79 -0
  2211. data/vendor/tracemonkey/tests/js1_5/Regress/regress-329383.js +116 -0
  2212. data/vendor/tracemonkey/tests/js1_5/Regress/regress-329530.js +73 -0
  2213. data/vendor/tracemonkey/tests/js1_5/Regress/regress-330352.js +67 -0
  2214. data/vendor/tracemonkey/tests/js1_5/Regress/regress-330951.js +50 -0
  2215. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-01.js +57 -0
  2216. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-02.js +61 -0
  2217. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-03.js +57 -0
  2218. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-04.js +61 -0
  2219. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-05.js +66 -0
  2220. data/vendor/tracemonkey/tests/js1_5/Regress/regress-334807-06.js +70 -0
  2221. data/vendor/tracemonkey/tests/js1_5/Regress/regress-336100.js +55 -0
  2222. data/vendor/tracemonkey/tests/js1_5/Regress/regress-338307.js +62 -0
  2223. data/vendor/tracemonkey/tests/js1_5/Regress/regress-340369.js +58 -0
  2224. data/vendor/tracemonkey/tests/js1_5/Regress/regress-341360.js +88 -0
  2225. data/vendor/tracemonkey/tests/js1_5/Regress/regress-343713.js +54 -0
  2226. data/vendor/tracemonkey/tests/js1_5/Regress/regress-343966.js +65 -0
  2227. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344711-n.js +67 -0
  2228. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344804.js +65 -0
  2229. data/vendor/tracemonkey/tests/js1_5/Regress/regress-344959.js +69 -0
  2230. data/vendor/tracemonkey/tests/js1_5/Regress/regress-346237.js +61 -0
  2231. data/vendor/tracemonkey/tests/js1_5/Regress/regress-346801.js +109 -0
  2232. data/vendor/tracemonkey/tests/js1_5/Regress/regress-347306-01.js +85 -0
  2233. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349482-01.js +62 -0
  2234. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349482-02.js +62 -0
  2235. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349592.js +61 -0
  2236. data/vendor/tracemonkey/tests/js1_5/Regress/regress-349648.js +98 -0
  2237. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350253.js +67 -0
  2238. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350268.js +107 -0
  2239. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350312.js +114 -0
  2240. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350415.js +67 -0
  2241. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350529.js +66 -0
  2242. data/vendor/tracemonkey/tests/js1_5/Regress/regress-350692.js +70 -0
  2243. data/vendor/tracemonkey/tests/js1_5/Regress/regress-351116.js +65 -0
  2244. data/vendor/tracemonkey/tests/js1_5/Regress/regress-351515.js +69 -0
  2245. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352009.js +60 -0
  2246. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352197.js +102 -0
  2247. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352208.js +77 -0
  2248. data/vendor/tracemonkey/tests/js1_5/Regress/regress-352604.js +61 -0
  2249. data/vendor/tracemonkey/tests/js1_5/Regress/regress-354924.js +64 -0
  2250. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355341.js +61 -0
  2251. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355344.js +82 -0
  2252. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355556.js +68 -0
  2253. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-01.js +61 -0
  2254. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-02.js +74 -0
  2255. data/vendor/tracemonkey/tests/js1_5/Regress/regress-355829-03.js +62 -0
  2256. data/vendor/tracemonkey/tests/js1_5/Regress/regress-356250.js +77 -0
  2257. data/vendor/tracemonkey/tests/js1_5/Regress/regress-356693.js +69 -0
  2258. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-01.js +74 -0
  2259. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-02.js +64 -0
  2260. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-03.js +74 -0
  2261. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-04.js +64 -0
  2262. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-05.js +76 -0
  2263. data/vendor/tracemonkey/tests/js1_5/Regress/regress-360969-06.js +65 -0
  2264. data/vendor/tracemonkey/tests/js1_5/Regress/regress-361467.js +65 -0
  2265. data/vendor/tracemonkey/tests/js1_5/Regress/regress-361617.js +66 -0
  2266. data/vendor/tracemonkey/tests/js1_5/Regress/regress-362583.js +77 -0
  2267. data/vendor/tracemonkey/tests/js1_5/Regress/regress-3649-n.js +65 -0
  2268. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366122.js +79 -0
  2269. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366468.js +68 -0
  2270. data/vendor/tracemonkey/tests/js1_5/Regress/regress-366601.js +71 -0
  2271. data/vendor/tracemonkey/tests/js1_5/Regress/regress-367561-01.js +70 -0
  2272. data/vendor/tracemonkey/tests/js1_5/Regress/regress-367561-03.js +69 -0
  2273. data/vendor/tracemonkey/tests/js1_5/Regress/regress-372364.js +80 -0
  2274. data/vendor/tracemonkey/tests/js1_5/Regress/regress-379245.js +72 -0
  2275. data/vendor/tracemonkey/tests/js1_5/Regress/regress-383674.js +91 -0
  2276. data/vendor/tracemonkey/tests/js1_5/Regress/regress-383682.js +67 -0
  2277. data/vendor/tracemonkey/tests/js1_5/Regress/regress-385393-06.js +61 -0
  2278. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-01.js +61 -0
  2279. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-02.js +61 -0
  2280. data/vendor/tracemonkey/tests/js1_5/Regress/regress-387951-03.js +61 -0
  2281. data/vendor/tracemonkey/tests/js1_5/Regress/regress-39309.js +110 -0
  2282. data/vendor/tracemonkey/tests/js1_5/Regress/regress-396684.js +81 -0
  2283. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398085-01.js +778 -0
  2284. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398085-02.js +761 -0
  2285. data/vendor/tracemonkey/tests/js1_5/Regress/regress-398609.js +72 -0
  2286. data/vendor/tracemonkey/tests/js1_5/Regress/regress-404755.js +83 -0
  2287. data/vendor/tracemonkey/tests/js1_5/Regress/regress-406769.js +188 -0
  2288. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407024.js +53 -0
  2289. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407323.js +75 -0
  2290. data/vendor/tracemonkey/tests/js1_5/Regress/regress-407957.js +63 -0
  2291. data/vendor/tracemonkey/tests/js1_5/Regress/regress-410852.js +71 -0
  2292. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416628.js +142 -0
  2293. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416737-01.js +61 -0
  2294. data/vendor/tracemonkey/tests/js1_5/Regress/regress-416737-02.js +66 -0
  2295. data/vendor/tracemonkey/tests/js1_5/Regress/regress-417893.js +61 -0
  2296. data/vendor/tracemonkey/tests/js1_5/Regress/regress-418504.js +86 -0
  2297. data/vendor/tracemonkey/tests/js1_5/Regress/regress-418540.js +94 -0
  2298. data/vendor/tracemonkey/tests/js1_5/Regress/regress-419018.js +80 -0
  2299. data/vendor/tracemonkey/tests/js1_5/Regress/regress-419803.js +61 -0
  2300. data/vendor/tracemonkey/tests/js1_5/Regress/regress-420919.js +70 -0
  2301. data/vendor/tracemonkey/tests/js1_5/Regress/regress-422348.js +70 -0
  2302. data/vendor/tracemonkey/tests/js1_5/Regress/regress-424311.js +61 -0
  2303. data/vendor/tracemonkey/tests/js1_5/Regress/regress-425360.js +74 -0
  2304. data/vendor/tracemonkey/tests/js1_5/Regress/regress-426827.js +67 -0
  2305. data/vendor/tracemonkey/tests/js1_5/Regress/regress-428366.js +52 -0
  2306. data/vendor/tracemonkey/tests/js1_5/Regress/regress-438415-01.js +60 -0
  2307. data/vendor/tracemonkey/tests/js1_5/Regress/regress-438415-02.js +64 -0
  2308. data/vendor/tracemonkey/tests/js1_5/Regress/regress-449627.js +147 -0
  2309. data/vendor/tracemonkey/tests/js1_5/Regress/regress-449666.js +98 -0
  2310. data/vendor/tracemonkey/tests/js1_5/Regress/regress-450369.js +345 -0
  2311. data/vendor/tracemonkey/tests/js1_5/Regress/regress-450833.js +82 -0
  2312. data/vendor/tracemonkey/tests/js1_5/Regress/regress-451884.js +68 -0
  2313. data/vendor/tracemonkey/tests/js1_5/Regress/regress-451946.js +67 -0
  2314. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452008.js +186 -0
  2315. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452170.js +64 -0
  2316. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452333.js +64 -0
  2317. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452336.js +64 -0
  2318. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452346.js +61 -0
  2319. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452495.js +54 -0
  2320. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452573-01.js +64 -0
  2321. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452573-02.js +64 -0
  2322. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452713.js +64 -0
  2323. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452724-01.js +64 -0
  2324. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452724-02.js +64 -0
  2325. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452742-01.js +84 -0
  2326. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452742-02.js +89 -0
  2327. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452853.js +64 -0
  2328. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452884-01.js +64 -0
  2329. data/vendor/tracemonkey/tests/js1_5/Regress/regress-452884-02.js +64 -0
  2330. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453024.js +78 -0
  2331. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453173.js +66 -0
  2332. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453397.js +81 -0
  2333. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453701.js +64 -0
  2334. data/vendor/tracemonkey/tests/js1_5/Regress/regress-453747.js +72 -0
  2335. data/vendor/tracemonkey/tests/js1_5/Regress/regress-454682.js +68 -0
  2336. data/vendor/tracemonkey/tests/js1_5/Regress/regress-454981.js +69 -0
  2337. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455605.js +65 -0
  2338. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455748.js +65 -0
  2339. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455758-01.js +65 -0
  2340. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455758-02.js +65 -0
  2341. data/vendor/tracemonkey/tests/js1_5/Regress/regress-455775.js +67 -0
  2342. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456470.js +73 -0
  2343. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456477-01.js +65 -0
  2344. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456477-02.js +65 -0
  2345. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456494.js +83 -0
  2346. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456540-01.js +65 -0
  2347. data/vendor/tracemonkey/tests/js1_5/Regress/regress-456540-02.js +65 -0
  2348. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457065-03.js +67 -0
  2349. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457456.js +65 -0
  2350. data/vendor/tracemonkey/tests/js1_5/Regress/regress-457778.js +65 -0
  2351. data/vendor/tracemonkey/tests/js1_5/Regress/regress-458851.js +65 -0
  2352. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459085.js +67 -0
  2353. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459628.js +69 -0
  2354. data/vendor/tracemonkey/tests/js1_5/Regress/regress-459990.js +66 -0
  2355. data/vendor/tracemonkey/tests/js1_5/Regress/regress-460024.js +74 -0
  2356. data/vendor/tracemonkey/tests/js1_5/Regress/regress-460117.js +80 -0
  2357. data/vendor/tracemonkey/tests/js1_5/Regress/regress-461307.js +66 -0
  2358. data/vendor/tracemonkey/tests/js1_5/Regress/regress-461723.js +65 -0
  2359. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462292.js +67 -0
  2360. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462879.js +67 -0
  2361. data/vendor/tracemonkey/tests/js1_5/Regress/regress-462989.js +66 -0
  2362. data/vendor/tracemonkey/tests/js1_5/Regress/regress-463259.js +62 -0
  2363. data/vendor/tracemonkey/tests/js1_5/Regress/regress-463782.js +101 -0
  2364. data/vendor/tracemonkey/tests/js1_5/Regress/regress-464334.js +69 -0
  2365. data/vendor/tracemonkey/tests/js1_5/Regress/regress-464862.js +156 -0
  2366. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465013.js +74 -0
  2367. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465132.js +78 -0
  2368. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465133.js +68 -0
  2369. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465135.js +68 -0
  2370. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465136.js +68 -0
  2371. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465137.js +68 -0
  2372. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465262.js +67 -0
  2373. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465272.js +67 -0
  2374. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465347.js +85 -0
  2375. data/vendor/tracemonkey/tests/js1_5/Regress/regress-465366.js +74 -0
  2376. data/vendor/tracemonkey/tests/js1_5/Regress/regress-466262.js +69 -0
  2377. data/vendor/tracemonkey/tests/js1_5/Regress/regress-466747.js +94 -0
  2378. data/vendor/tracemonkey/tests/js1_5/Regress/regress-469044.js +104 -0
  2379. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470061.js +78 -0
  2380. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470187-01.js +61 -0
  2381. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470187-02.js +61 -0
  2382. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470758-01.js +61 -0
  2383. data/vendor/tracemonkey/tests/js1_5/Regress/regress-470758-02.js +63 -0
  2384. data/vendor/tracemonkey/tests/js1_5/Regress/regress-475645-01.js +82 -0
  2385. data/vendor/tracemonkey/tests/js1_5/Regress/regress-475645-02.js +89 -0
  2386. data/vendor/tracemonkey/tests/js1_5/Regress/regress-476049.js +76 -0
  2387. data/vendor/tracemonkey/tests/js1_5/Regress/regress-476192.js +74 -0
  2388. data/vendor/tracemonkey/tests/js1_5/Regress/regress-477733.js +77 -0
  2389. data/vendor/tracemonkey/tests/js1_5/Regress/regress-477758.js +85 -0
  2390. data/vendor/tracemonkey/tests/js1_5/Regress/regress-478314.js +65 -0
  2391. data/vendor/tracemonkey/tests/js1_5/Regress/regress-479353.js +61 -0
  2392. data/vendor/tracemonkey/tests/js1_5/Regress/regress-480147.js +68 -0
  2393. data/vendor/tracemonkey/tests/js1_5/Regress/regress-480244.js +86 -0
  2394. data/vendor/tracemonkey/tests/js1_5/Regress/regress-481436.js +74 -0
  2395. data/vendor/tracemonkey/tests/js1_5/Regress/regress-482421.js +61 -0
  2396. data/vendor/tracemonkey/tests/js1_5/Regress/regress-483103.js +68 -0
  2397. data/vendor/tracemonkey/tests/js1_5/Regress/regress-501124.js +78 -0
  2398. data/vendor/tracemonkey/tests/js1_5/Regress/regress-504078.js +84 -0
  2399. data/vendor/tracemonkey/tests/js1_5/Regress/regress-506567.js +78 -0
  2400. data/vendor/tracemonkey/tests/js1_5/Regress/regress-57043.js +109 -0
  2401. data/vendor/tracemonkey/tests/js1_5/Regress/regress-58116.js +61 -0
  2402. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-001.js +78 -0
  2403. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-002.js +101 -0
  2404. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-003.js +105 -0
  2405. data/vendor/tracemonkey/tests/js1_5/Regress/regress-68498-004.js +133 -0
  2406. data/vendor/tracemonkey/tests/js1_5/Regress/regress-69607.js +76 -0
  2407. data/vendor/tracemonkey/tests/js1_5/Regress/regress-71107.js +80 -0
  2408. data/vendor/tracemonkey/tests/js1_5/Regress/regress-76054.js +160 -0
  2409. data/vendor/tracemonkey/tests/js1_5/Regress/regress-80981.js +3144 -0
  2410. data/vendor/tracemonkey/tests/js1_5/Regress/regress-82306.js +82 -0
  2411. data/vendor/tracemonkey/tests/js1_5/Regress/regress-89443.js +2153 -0
  2412. data/vendor/tracemonkey/tests/js1_5/Regress/regress-89474.js +85 -0
  2413. data/vendor/tracemonkey/tests/js1_5/Regress/regress-90445.js +329 -0
  2414. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96128-n.js +85 -0
  2415. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-001.js +537 -0
  2416. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-002.js +63 -0
  2417. data/vendor/tracemonkey/tests/js1_5/Regress/regress-96526-003.js +4438 -0
  2418. data/vendor/tracemonkey/tests/js1_5/Regress/regress-98901.js +3925 -0
  2419. data/vendor/tracemonkey/tests/js1_5/Regress/shell.js +1 -0
  2420. data/vendor/tracemonkey/tests/js1_5/Scope/jstests.list +18 -0
  2421. data/vendor/tracemonkey/tests/js1_5/Scope/regress-154693.js +101 -0
  2422. data/vendor/tracemonkey/tests/js1_5/Scope/regress-181834.js +183 -0
  2423. data/vendor/tracemonkey/tests/js1_5/Scope/regress-184107.js +127 -0
  2424. data/vendor/tracemonkey/tests/js1_5/Scope/regress-185485.js +163 -0
  2425. data/vendor/tracemonkey/tests/js1_5/Scope/regress-191276.js +128 -0
  2426. data/vendor/tracemonkey/tests/js1_5/Scope/regress-192226.js +125 -0
  2427. data/vendor/tracemonkey/tests/js1_5/Scope/regress-202678-001.js +136 -0
  2428. data/vendor/tracemonkey/tests/js1_5/Scope/regress-202678-002.js +137 -0
  2429. data/vendor/tracemonkey/tests/js1_5/Scope/regress-208496-001.js +174 -0
  2430. data/vendor/tracemonkey/tests/js1_5/Scope/regress-208496-002.js +166 -0
  2431. data/vendor/tracemonkey/tests/js1_5/Scope/regress-220362.js +116 -0
  2432. data/vendor/tracemonkey/tests/js1_5/Scope/regress-446026-01.js +84 -0
  2433. data/vendor/tracemonkey/tests/js1_5/Scope/regress-446026-02.js +60 -0
  2434. data/vendor/tracemonkey/tests/js1_5/Scope/regress-77578-001.js +184 -0
  2435. data/vendor/tracemonkey/tests/js1_5/Scope/scope-002.js +142 -0
  2436. data/vendor/tracemonkey/tests/js1_5/Scope/scope-003.js +143 -0
  2437. data/vendor/tracemonkey/tests/js1_5/Scope/scope-004.js +225 -0
  2438. data/vendor/tracemonkey/tests/js1_5/Scope/shell.js +1 -0
  2439. data/vendor/tracemonkey/tests/js1_5/String/jstests.list +9 -0
  2440. data/vendor/tracemonkey/tests/js1_5/String/regress-107771.js +125 -0
  2441. data/vendor/tracemonkey/tests/js1_5/String/regress-112626.js +52 -0
  2442. data/vendor/tracemonkey/tests/js1_5/String/regress-157334-01.js +90 -0
  2443. data/vendor/tracemonkey/tests/js1_5/String/regress-179068.js +159 -0
  2444. data/vendor/tracemonkey/tests/js1_5/String/regress-314890.js +84 -0
  2445. data/vendor/tracemonkey/tests/js1_5/String/regress-322772.js +84 -0
  2446. data/vendor/tracemonkey/tests/js1_5/String/regress-56940-01.js +81 -0
  2447. data/vendor/tracemonkey/tests/js1_5/String/regress-56940-02.js +81 -0
  2448. data/vendor/tracemonkey/tests/js1_5/String/shell.js +1 -0
  2449. data/vendor/tracemonkey/tests/js1_5/browser.js +37 -0
  2450. data/vendor/tracemonkey/tests/js1_5/decompilation/jstests.list +65 -0
  2451. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-344120.js +62 -0
  2452. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346892.js +62 -0
  2453. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346902.js +91 -0
  2454. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346904.js +156 -0
  2455. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-346915.js +64 -0
  2456. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349484.js +69 -0
  2457. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349489.js +69 -0
  2458. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349491.js +79 -0
  2459. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349596.js +63 -0
  2460. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349650.js +65 -0
  2461. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-349663.js +68 -0
  2462. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350242.js +69 -0
  2463. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350263.js +64 -0
  2464. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350271.js +64 -0
  2465. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350666.js +93 -0
  2466. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-350670.js +69 -0
  2467. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351104.js +65 -0
  2468. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351219.js +67 -0
  2469. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351336.js +63 -0
  2470. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351597.js +64 -0
  2471. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351625.js +64 -0
  2472. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351626.js +64 -0
  2473. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351693.js +65 -0
  2474. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351705.js +65 -0
  2475. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-351793.js +65 -0
  2476. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352013.js +93 -0
  2477. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352022.js +63 -0
  2478. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352073.js +69 -0
  2479. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352202.js +64 -0
  2480. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352312.js +69 -0
  2481. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352360.js +70 -0
  2482. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352375.js +62 -0
  2483. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352453.js +63 -0
  2484. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352649.js +63 -0
  2485. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352873-01.js +68 -0
  2486. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-352873-02.js +68 -0
  2487. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353000.js +63 -0
  2488. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353120.js +63 -0
  2489. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-353146.js +69 -0
  2490. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-354878.js +62 -0
  2491. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-354910.js +63 -0
  2492. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-355992.js +62 -0
  2493. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-356083.js +66 -0
  2494. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-356248.js +63 -0
  2495. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-371692.js +62 -0
  2496. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-373678.js +62 -0
  2497. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-375639.js +68 -0
  2498. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-375882.js +76 -0
  2499. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-376564.js +67 -0
  2500. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-383721.js +66 -0
  2501. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-406555.js +69 -0
  2502. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-437288-02.js +64 -0
  2503. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-443071-01.js +61 -0
  2504. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-456964-01.js +74 -0
  2505. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-457093-01.js +77 -0
  2506. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-457824.js +66 -0
  2507. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-01.js +65 -0
  2508. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-02.js +65 -0
  2509. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460116-03.js +65 -0
  2510. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460501.js +71 -0
  2511. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-460870.js +63 -0
  2512. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461108.js +64 -0
  2513. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461110.js +64 -0
  2514. data/vendor/tracemonkey/tests/js1_5/decompilation/regress-461111.js +64 -0
  2515. data/vendor/tracemonkey/tests/js1_5/decompilation/shell.js +2 -0
  2516. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-001-n.js +79 -0
  2517. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-001.js +83 -0
  2518. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-002.js +79 -0
  2519. data/vendor/tracemonkey/tests/js1_5/extensions/catchguard-003.js +94 -0
  2520. data/vendor/tracemonkey/tests/js1_5/extensions/getset-001.js +90 -0
  2521. data/vendor/tracemonkey/tests/js1_5/extensions/getset-003.js +211 -0
  2522. data/vendor/tracemonkey/tests/js1_5/extensions/getset-004.js +211 -0
  2523. data/vendor/tracemonkey/tests/js1_5/extensions/getset-005.js +220 -0
  2524. data/vendor/tracemonkey/tests/js1_5/extensions/getset-006.js +194 -0
  2525. data/vendor/tracemonkey/tests/js1_5/extensions/jstests.list +241 -0
  2526. data/vendor/tracemonkey/tests/js1_5/extensions/no-such-method.js +69 -0
  2527. data/vendor/tracemonkey/tests/js1_5/extensions/regress-104077.js +233 -0
  2528. data/vendor/tracemonkey/tests/js1_5/extensions/regress-164697.js +112 -0
  2529. data/vendor/tracemonkey/tests/js1_5/extensions/regress-178722.js +127 -0
  2530. data/vendor/tracemonkey/tests/js1_5/extensions/regress-192465.js +157 -0
  2531. data/vendor/tracemonkey/tests/js1_5/extensions/regress-220584.js +147 -0
  2532. data/vendor/tracemonkey/tests/js1_5/extensions/regress-225831.js +196 -0
  2533. data/vendor/tracemonkey/tests/js1_5/extensions/regress-226078.js +61 -0
  2534. data/vendor/tracemonkey/tests/js1_5/extensions/regress-226507.js +187 -0
  2535. data/vendor/tracemonkey/tests/js1_5/extensions/regress-231518.js +136 -0
  2536. data/vendor/tracemonkey/tests/js1_5/extensions/regress-237461.js +80 -0
  2537. data/vendor/tracemonkey/tests/js1_5/extensions/regress-245148.js +55 -0
  2538. data/vendor/tracemonkey/tests/js1_5/extensions/regress-245795.js +67 -0
  2539. data/vendor/tracemonkey/tests/js1_5/extensions/regress-254375.js +63 -0
  2540. data/vendor/tracemonkey/tests/js1_5/extensions/regress-255245.js +65 -0
  2541. data/vendor/tracemonkey/tests/js1_5/extensions/regress-291213.js +81 -0
  2542. data/vendor/tracemonkey/tests/js1_5/extensions/regress-300079.js +80 -0
  2543. data/vendor/tracemonkey/tests/js1_5/extensions/regress-303277.js +52 -0
  2544. data/vendor/tracemonkey/tests/js1_5/extensions/regress-304897.js +53 -0
  2545. data/vendor/tracemonkey/tests/js1_5/extensions/regress-306738.js +58 -0
  2546. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311161.js +1471 -0
  2547. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311583.js +54 -0
  2548. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311792-01.js +59 -0
  2549. data/vendor/tracemonkey/tests/js1_5/extensions/regress-311792-02.js +73 -0
  2550. data/vendor/tracemonkey/tests/js1_5/extensions/regress-312278.js +75 -0
  2551. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313500.js +62 -0
  2552. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313630.js +71 -0
  2553. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313763.js +79 -0
  2554. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313803.js +57 -0
  2555. data/vendor/tracemonkey/tests/js1_5/extensions/regress-313938.js +87 -0
  2556. data/vendor/tracemonkey/tests/js1_5/extensions/regress-314874.js +73 -0
  2557. data/vendor/tracemonkey/tests/js1_5/extensions/regress-315509-02.js +75 -0
  2558. data/vendor/tracemonkey/tests/js1_5/extensions/regress-319683.js +64 -0
  2559. data/vendor/tracemonkey/tests/js1_5/extensions/regress-322957.js +60 -0
  2560. data/vendor/tracemonkey/tests/js1_5/extensions/regress-325269.js +93 -0
  2561. data/vendor/tracemonkey/tests/js1_5/extensions/regress-327608.js +81 -0
  2562. data/vendor/tracemonkey/tests/js1_5/extensions/regress-328443.js +65 -0
  2563. data/vendor/tracemonkey/tests/js1_5/extensions/regress-328556.js +52 -0
  2564. data/vendor/tracemonkey/tests/js1_5/extensions/regress-330569.js +129 -0
  2565. data/vendor/tracemonkey/tests/js1_5/extensions/regress-333541.js +123 -0
  2566. data/vendor/tracemonkey/tests/js1_5/extensions/regress-335700.js +127 -0
  2567. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336409-1.js +82 -0
  2568. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336409-2.js +82 -0
  2569. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336410-1.js +82 -0
  2570. data/vendor/tracemonkey/tests/js1_5/extensions/regress-336410-2.js +82 -0
  2571. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-01.js +102 -0
  2572. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-02.js +103 -0
  2573. data/vendor/tracemonkey/tests/js1_5/extensions/regress-338804-03.js +62 -0
  2574. data/vendor/tracemonkey/tests/js1_5/extensions/regress-339685.js +60 -0
  2575. data/vendor/tracemonkey/tests/js1_5/extensions/regress-340199.js +82 -0
  2576. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-01.js +101 -0
  2577. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-02.js +88 -0
  2578. data/vendor/tracemonkey/tests/js1_5/extensions/regress-341956-03.js +105 -0
  2579. data/vendor/tracemonkey/tests/js1_5/extensions/regress-342960.js +87 -0
  2580. data/vendor/tracemonkey/tests/js1_5/extensions/regress-345967.js +100 -0
  2581. data/vendor/tracemonkey/tests/js1_5/extensions/regress-346494-01.js +123 -0
  2582. data/vendor/tracemonkey/tests/js1_5/extensions/regress-346494.js +141 -0
  2583. data/vendor/tracemonkey/tests/js1_5/extensions/regress-347306-02.js +84 -0
  2584. data/vendor/tracemonkey/tests/js1_5/extensions/regress-348986.js +161 -0
  2585. data/vendor/tracemonkey/tests/js1_5/extensions/regress-349616.js +69 -0
  2586. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-01.js +83 -0
  2587. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-02.js +145 -0
  2588. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350312-03.js +149 -0
  2589. data/vendor/tracemonkey/tests/js1_5/extensions/regress-350531.js +188 -0
  2590. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-01.js +72 -0
  2591. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-02.js +78 -0
  2592. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351102-06.js +67 -0
  2593. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351448.js +96 -0
  2594. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351463-01.js +287 -0
  2595. data/vendor/tracemonkey/tests/js1_5/extensions/regress-351973.js +84 -0
  2596. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352060.js +80 -0
  2597. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352094.js +79 -0
  2598. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352261.js +81 -0
  2599. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352281.js +67 -0
  2600. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352291.js +74 -0
  2601. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352372.js +98 -0
  2602. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352455.js +67 -0
  2603. data/vendor/tracemonkey/tests/js1_5/extensions/regress-352604.js +66 -0
  2604. data/vendor/tracemonkey/tests/js1_5/extensions/regress-353214.js +62 -0
  2605. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354297.js +63 -0
  2606. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-01.js +68 -0
  2607. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-02.js +77 -0
  2608. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-03.js +89 -0
  2609. data/vendor/tracemonkey/tests/js1_5/extensions/regress-354541-04.js +94 -0
  2610. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355339.js +65 -0
  2611. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355497.js +94 -0
  2612. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355622.js +67 -0
  2613. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355655.js +78 -0
  2614. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355736.js +72 -0
  2615. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355820.js +64 -0
  2616. data/vendor/tracemonkey/tests/js1_5/extensions/regress-355982.js +76 -0
  2617. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356085.js +62 -0
  2618. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356106.js +61 -0
  2619. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356378.js +69 -0
  2620. data/vendor/tracemonkey/tests/js1_5/extensions/regress-356402.js +56 -0
  2621. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-01.js +65 -0
  2622. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-02.js +54 -0
  2623. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-03.js +64 -0
  2624. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-04.js +54 -0
  2625. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-05.js +65 -0
  2626. data/vendor/tracemonkey/tests/js1_5/extensions/regress-358594-06.js +54 -0
  2627. data/vendor/tracemonkey/tests/js1_5/extensions/regress-359024.js +69 -0
  2628. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361346.js +55 -0
  2629. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361360.js +65 -0
  2630. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361552.js +60 -0
  2631. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361558.js +52 -0
  2632. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361571.js +71 -0
  2633. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361856.js +68 -0
  2634. data/vendor/tracemonkey/tests/js1_5/extensions/regress-361964.js +81 -0
  2635. data/vendor/tracemonkey/tests/js1_5/extensions/regress-363258.js +80 -0
  2636. data/vendor/tracemonkey/tests/js1_5/extensions/regress-363988.js +82 -0
  2637. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365527.js +99 -0
  2638. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365692.js +73 -0
  2639. data/vendor/tracemonkey/tests/js1_5/extensions/regress-365869.js +115 -0
  2640. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366288.js +51 -0
  2641. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366292.js +52 -0
  2642. data/vendor/tracemonkey/tests/js1_5/extensions/regress-366396.js +50 -0
  2643. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367118-01.js +74 -0
  2644. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367118-02.js +74 -0
  2645. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367119-01.js +74 -0
  2646. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367119-02.js +74 -0
  2647. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367120-01.js +74 -0
  2648. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367120-02.js +74 -0
  2649. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367121.js +97 -0
  2650. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-01.js +68 -0
  2651. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-02.js +70 -0
  2652. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-03.js +71 -0
  2653. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367501-04.js +71 -0
  2654. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367589.js +81 -0
  2655. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367630.js +77 -0
  2656. data/vendor/tracemonkey/tests/js1_5/extensions/regress-367923.js +83 -0
  2657. data/vendor/tracemonkey/tests/js1_5/extensions/regress-368859.js +70 -0
  2658. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369404.js +81 -0
  2659. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-01.js +64 -0
  2660. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-02.js +72 -0
  2661. data/vendor/tracemonkey/tests/js1_5/extensions/regress-369696-03.js +80 -0
  2662. data/vendor/tracemonkey/tests/js1_5/extensions/regress-371636.js +88 -0
  2663. data/vendor/tracemonkey/tests/js1_5/extensions/regress-372309.js +80 -0
  2664. data/vendor/tracemonkey/tests/js1_5/extensions/regress-374589.js +67 -0
  2665. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375183.js +95 -0
  2666. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375344.js +67 -0
  2667. data/vendor/tracemonkey/tests/js1_5/extensions/regress-375801.js +69 -0
  2668. data/vendor/tracemonkey/tests/js1_5/extensions/regress-376052.js +104 -0
  2669. data/vendor/tracemonkey/tests/js1_5/extensions/regress-379523.js +71 -0
  2670. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380581.js +70 -0
  2671. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380831.js +81 -0
  2672. data/vendor/tracemonkey/tests/js1_5/extensions/regress-380889.js +73 -0
  2673. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381205.js +52 -0
  2674. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381211.js +62 -0
  2675. data/vendor/tracemonkey/tests/js1_5/extensions/regress-381304.js +113 -0
  2676. data/vendor/tracemonkey/tests/js1_5/extensions/regress-382509.js +118 -0
  2677. data/vendor/tracemonkey/tests/js1_5/extensions/regress-383965.js +57 -0
  2678. data/vendor/tracemonkey/tests/js1_5/extensions/regress-384680.js +67 -0
  2679. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385134.js +67 -0
  2680. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385393-02.js +67 -0
  2681. data/vendor/tracemonkey/tests/js1_5/extensions/regress-385393-09.js +51 -0
  2682. data/vendor/tracemonkey/tests/js1_5/extensions/regress-390597.js +75 -0
  2683. data/vendor/tracemonkey/tests/js1_5/extensions/regress-394967.js +75 -0
  2684. data/vendor/tracemonkey/tests/js1_5/extensions/regress-396326.js +81 -0
  2685. data/vendor/tracemonkey/tests/js1_5/extensions/regress-406572.js +77 -0
  2686. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407019.js +70 -0
  2687. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407501.js +74 -0
  2688. data/vendor/tracemonkey/tests/js1_5/extensions/regress-407720.js +84 -0
  2689. data/vendor/tracemonkey/tests/js1_5/extensions/regress-412926.js +90 -0
  2690. data/vendor/tracemonkey/tests/js1_5/extensions/regress-414755.js +86 -0
  2691. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416354.js +80 -0
  2692. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416460.js +63 -0
  2693. data/vendor/tracemonkey/tests/js1_5/extensions/regress-416834.js +53 -0
  2694. data/vendor/tracemonkey/tests/js1_5/extensions/regress-418730.js +65 -0
  2695. data/vendor/tracemonkey/tests/js1_5/extensions/regress-420612.js +61 -0
  2696. data/vendor/tracemonkey/tests/js1_5/extensions/regress-420869-01.js +73 -0
  2697. data/vendor/tracemonkey/tests/js1_5/extensions/regress-421621.js +54 -0
  2698. data/vendor/tracemonkey/tests/js1_5/extensions/regress-422137.js +67 -0
  2699. data/vendor/tracemonkey/tests/js1_5/extensions/regress-422592.js +103 -0
  2700. data/vendor/tracemonkey/tests/js1_5/extensions/regress-424257.js +69 -0
  2701. data/vendor/tracemonkey/tests/js1_5/extensions/regress-424683-01.js +69 -0
  2702. data/vendor/tracemonkey/tests/js1_5/extensions/regress-426711.js +67 -0
  2703. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-01.js +73 -0
  2704. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-02.js +70 -0
  2705. data/vendor/tracemonkey/tests/js1_5/extensions/regress-427196-03.js +64 -0
  2706. data/vendor/tracemonkey/tests/js1_5/extensions/regress-429264.js +65 -0
  2707. data/vendor/tracemonkey/tests/js1_5/extensions/regress-431428.js +70 -0
  2708. data/vendor/tracemonkey/tests/js1_5/extensions/regress-432075.js +57 -0
  2709. data/vendor/tracemonkey/tests/js1_5/extensions/regress-434837-01.js +123 -0
  2710. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435345-01.js +132 -0
  2711. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-01.js +68 -0
  2712. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-02.js +68 -0
  2713. data/vendor/tracemonkey/tests/js1_5/extensions/regress-435497-03.js +68 -0
  2714. data/vendor/tracemonkey/tests/js1_5/extensions/regress-436741.js +68 -0
  2715. data/vendor/tracemonkey/tests/js1_5/extensions/regress-437288-01.js +61 -0
  2716. data/vendor/tracemonkey/tests/js1_5/extensions/regress-44009.js +86 -0
  2717. data/vendor/tracemonkey/tests/js1_5/extensions/regress-443569.js +74 -0
  2718. data/vendor/tracemonkey/tests/js1_5/extensions/regress-446386.js +80 -0
  2719. data/vendor/tracemonkey/tests/js1_5/extensions/regress-449657.js +92 -0
  2720. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452168.js +72 -0
  2721. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452178.js +64 -0
  2722. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452329.js +60 -0
  2723. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452338.js +64 -0
  2724. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452372.js +64 -0
  2725. data/vendor/tracemonkey/tests/js1_5/extensions/regress-452565.js +54 -0
  2726. data/vendor/tracemonkey/tests/js1_5/extensions/regress-453249.js +56 -0
  2727. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454040.js +59 -0
  2728. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454142.js +62 -0
  2729. data/vendor/tracemonkey/tests/js1_5/extensions/regress-454704.js +88 -0
  2730. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455380.js +93 -0
  2731. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455408.js +64 -0
  2732. data/vendor/tracemonkey/tests/js1_5/extensions/regress-455413.js +59 -0
  2733. data/vendor/tracemonkey/tests/js1_5/extensions/regress-459606.js +62 -0
  2734. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-02.js +64 -0
  2735. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-03.js +63 -0
  2736. data/vendor/tracemonkey/tests/js1_5/extensions/regress-462734-04.js +66 -0
  2737. data/vendor/tracemonkey/tests/js1_5/extensions/regress-465276.js +69 -0
  2738. data/vendor/tracemonkey/tests/js1_5/extensions/regress-469625.js +67 -0
  2739. data/vendor/tracemonkey/tests/js1_5/extensions/regress-469761.js +66 -0
  2740. data/vendor/tracemonkey/tests/js1_5/extensions/regress-472599.js +67 -0
  2741. data/vendor/tracemonkey/tests/js1_5/extensions/regress-472787.js +63 -0
  2742. data/vendor/tracemonkey/tests/js1_5/extensions/regress-476447.js +66 -0
  2743. data/vendor/tracemonkey/tests/js1_5/extensions/regress-479487.js +79 -0
  2744. data/vendor/tracemonkey/tests/js1_5/extensions/regress-479551.js +77 -0
  2745. data/vendor/tracemonkey/tests/js1_5/extensions/regress-480579.js +69 -0
  2746. data/vendor/tracemonkey/tests/js1_5/extensions/regress-481516.js +72 -0
  2747. data/vendor/tracemonkey/tests/js1_5/extensions/regress-488995.js +79 -0
  2748. data/vendor/tracemonkey/tests/js1_5/extensions/regress-50447-1.js +210 -0
  2749. data/vendor/tracemonkey/tests/js1_5/extensions/regress-50447.js +169 -0
  2750. data/vendor/tracemonkey/tests/js1_5/extensions/regress-90596-001.js +299 -0
  2751. data/vendor/tracemonkey/tests/js1_5/extensions/regress-90596-002.js +299 -0
  2752. data/vendor/tracemonkey/tests/js1_5/extensions/regress-96284-001.js +182 -0
  2753. data/vendor/tracemonkey/tests/js1_5/extensions/regress-96284-002.js +182 -0
  2754. data/vendor/tracemonkey/tests/js1_5/extensions/scope-001.js +117 -0
  2755. data/vendor/tracemonkey/tests/js1_5/extensions/shell.js +1 -0
  2756. data/vendor/tracemonkey/tests/js1_5/extensions/toLocaleFormat-01.js +271 -0
  2757. data/vendor/tracemonkey/tests/js1_5/extensions/toLocaleFormat-02.js +138 -0
  2758. data/vendor/tracemonkey/tests/js1_5/jstests.list +15 -0
  2759. data/vendor/tracemonkey/tests/js1_5/shell.js +41 -0
  2760. data/vendor/tracemonkey/tests/js1_5/template.js +59 -0
  2761. data/vendor/tracemonkey/tests/js1_6/Array/filter.js +86 -0
  2762. data/vendor/tracemonkey/tests/js1_6/Array/jstests.list +13 -0
  2763. data/vendor/tracemonkey/tests/js1_6/Array/regress-290592.js +695 -0
  2764. data/vendor/tracemonkey/tests/js1_6/Array/regress-304828.js +272 -0
  2765. data/vendor/tracemonkey/tests/js1_6/Array/regress-305002.js +58 -0
  2766. data/vendor/tracemonkey/tests/js1_6/Array/regress-310425-01.js +60 -0
  2767. data/vendor/tracemonkey/tests/js1_6/Array/regress-310425-02.js +50 -0
  2768. data/vendor/tracemonkey/tests/js1_6/Array/regress-320887.js +57 -0
  2769. data/vendor/tracemonkey/tests/js1_6/Array/regress-352742-01.js +73 -0
  2770. data/vendor/tracemonkey/tests/js1_6/Array/regress-352742-02.js +65 -0
  2771. data/vendor/tracemonkey/tests/js1_6/Array/regress-386030.js +98 -0
  2772. data/vendor/tracemonkey/tests/js1_6/Array/regress-415451.js +57 -0
  2773. data/vendor/tracemonkey/tests/js1_6/Array/regress-415540.js +54 -0
  2774. data/vendor/tracemonkey/tests/js1_6/Array/shell.js +1 -0
  2775. data/vendor/tracemonkey/tests/js1_6/README +1 -0
  2776. data/vendor/tracemonkey/tests/js1_6/Regress/jstests.list +16 -0
  2777. data/vendor/tracemonkey/tests/js1_6/Regress/regress-301574.js +69 -0
  2778. data/vendor/tracemonkey/tests/js1_6/Regress/regress-311157-01.js +57 -0
  2779. data/vendor/tracemonkey/tests/js1_6/Regress/regress-311157-02.js +57 -0
  2780. data/vendor/tracemonkey/tests/js1_6/Regress/regress-314887.js +53 -0
  2781. data/vendor/tracemonkey/tests/js1_6/Regress/regress-320172.js +58 -0
  2782. data/vendor/tracemonkey/tests/js1_6/Regress/regress-350417.js +69 -0
  2783. data/vendor/tracemonkey/tests/js1_6/Regress/regress-351795.js +69 -0
  2784. data/vendor/tracemonkey/tests/js1_6/Regress/regress-352271.js +67 -0
  2785. data/vendor/tracemonkey/tests/js1_6/Regress/regress-353078.js +65 -0
  2786. data/vendor/tracemonkey/tests/js1_6/Regress/regress-355002.js +70 -0
  2787. data/vendor/tracemonkey/tests/js1_6/Regress/regress-372565.js +61 -0
  2788. data/vendor/tracemonkey/tests/js1_6/Regress/regress-378492.js +65 -0
  2789. data/vendor/tracemonkey/tests/js1_6/Regress/regress-382509.js +78 -0
  2790. data/vendor/tracemonkey/tests/js1_6/Regress/regress-475469.js +68 -0
  2791. data/vendor/tracemonkey/tests/js1_6/Regress/regress-476655.js +75 -0
  2792. data/vendor/tracemonkey/tests/js1_6/Regress/shell.js +1 -0
  2793. data/vendor/tracemonkey/tests/js1_6/String/jstests.list +2 -0
  2794. data/vendor/tracemonkey/tests/js1_6/String/regress-306591.js +99 -0
  2795. data/vendor/tracemonkey/tests/js1_6/String/shell.js +1 -0
  2796. data/vendor/tracemonkey/tests/js1_6/browser.js +36 -0
  2797. data/vendor/tracemonkey/tests/js1_6/decompilation/jstests.list +4 -0
  2798. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352084.js +79 -0
  2799. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352613-01.js +73 -0
  2800. data/vendor/tracemonkey/tests/js1_6/decompilation/regress-352613-02.js +73 -0
  2801. data/vendor/tracemonkey/tests/js1_6/decompilation/shell.js +1 -0
  2802. data/vendor/tracemonkey/tests/js1_6/extensions/jstests.list +15 -0
  2803. data/vendor/tracemonkey/tests/js1_6/extensions/regress-312385-01.js +155 -0
  2804. data/vendor/tracemonkey/tests/js1_6/extensions/regress-352392.js +71 -0
  2805. data/vendor/tracemonkey/tests/js1_6/extensions/regress-385393-08.js +58 -0
  2806. data/vendor/tracemonkey/tests/js1_6/extensions/regress-414098.js +72 -0
  2807. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-01.js +54 -0
  2808. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-02.js +64 -0
  2809. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-03.js +66 -0
  2810. data/vendor/tracemonkey/tests/js1_6/extensions/regress-455464-04.js +63 -0
  2811. data/vendor/tracemonkey/tests/js1_6/extensions/regress-456826.js +159 -0
  2812. data/vendor/tracemonkey/tests/js1_6/extensions/regress-457521.js +57 -0
  2813. data/vendor/tracemonkey/tests/js1_6/extensions/regress-465443.js +74 -0
  2814. data/vendor/tracemonkey/tests/js1_6/extensions/regress-470310.js +66 -0
  2815. data/vendor/tracemonkey/tests/js1_6/extensions/regress-472508.js +59 -0
  2816. data/vendor/tracemonkey/tests/js1_6/extensions/regress-475144.js +58 -0
  2817. data/vendor/tracemonkey/tests/js1_6/extensions/shell.js +1 -0
  2818. data/vendor/tracemonkey/tests/js1_6/jstests.list +5 -0
  2819. data/vendor/tracemonkey/tests/js1_6/shell.js +47 -0
  2820. data/vendor/tracemonkey/tests/js1_6/template.js +59 -0
  2821. data/vendor/tracemonkey/tests/js1_7/GC/jstests.list +3 -0
  2822. data/vendor/tracemonkey/tests/js1_7/GC/regress-341675.js +68 -0
  2823. data/vendor/tracemonkey/tests/js1_7/GC/regress-381374.js +92 -0
  2824. data/vendor/tracemonkey/tests/js1_7/GC/shell.js +1 -0
  2825. data/vendor/tracemonkey/tests/js1_7/README +1 -0
  2826. data/vendor/tracemonkey/tests/js1_7/block/jstests.list +37 -0
  2827. data/vendor/tracemonkey/tests/js1_7/block/order-of-operation.js +185 -0
  2828. data/vendor/tracemonkey/tests/js1_7/block/regress-341939.js +58 -0
  2829. data/vendor/tracemonkey/tests/js1_7/block/regress-343765.js +129 -0
  2830. data/vendor/tracemonkey/tests/js1_7/block/regress-344139.js +125 -0
  2831. data/vendor/tracemonkey/tests/js1_7/block/regress-344262.js +73 -0
  2832. data/vendor/tracemonkey/tests/js1_7/block/regress-344370.js +61 -0
  2833. data/vendor/tracemonkey/tests/js1_7/block/regress-344601.js +70 -0
  2834. data/vendor/tracemonkey/tests/js1_7/block/regress-345542.js +63 -0
  2835. data/vendor/tracemonkey/tests/js1_7/block/regress-347559.js +110 -0
  2836. data/vendor/tracemonkey/tests/js1_7/block/regress-348685.js +80 -0
  2837. data/vendor/tracemonkey/tests/js1_7/block/regress-349283.js +63 -0
  2838. data/vendor/tracemonkey/tests/js1_7/block/regress-349298.js +71 -0
  2839. data/vendor/tracemonkey/tests/js1_7/block/regress-349507.js +69 -0
  2840. data/vendor/tracemonkey/tests/js1_7/block/regress-349653.js +63 -0
  2841. data/vendor/tracemonkey/tests/js1_7/block/regress-349962.js +60 -0
  2842. data/vendor/tracemonkey/tests/js1_7/block/regress-350279.js +69 -0
  2843. data/vendor/tracemonkey/tests/js1_7/block/regress-350730.js +71 -0
  2844. data/vendor/tracemonkey/tests/js1_7/block/regress-350793-01.js +72 -0
  2845. data/vendor/tracemonkey/tests/js1_7/block/regress-351497.js +69 -0
  2846. data/vendor/tracemonkey/tests/js1_7/block/regress-351606.js +53 -0
  2847. data/vendor/tracemonkey/tests/js1_7/block/regress-351794.js +67 -0
  2848. data/vendor/tracemonkey/tests/js1_7/block/regress-352092.js +71 -0
  2849. data/vendor/tracemonkey/tests/js1_7/block/regress-352185.js +71 -0
  2850. data/vendor/tracemonkey/tests/js1_7/block/regress-352212.js +70 -0
  2851. data/vendor/tracemonkey/tests/js1_7/block/regress-352267.js +61 -0
  2852. data/vendor/tracemonkey/tests/js1_7/block/regress-352422.js +70 -0
  2853. data/vendor/tracemonkey/tests/js1_7/block/regress-352609.js +90 -0
  2854. data/vendor/tracemonkey/tests/js1_7/block/regress-352616.js +95 -0
  2855. data/vendor/tracemonkey/tests/js1_7/block/regress-352624.js +71 -0
  2856. data/vendor/tracemonkey/tests/js1_7/block/regress-352786.js +70 -0
  2857. data/vendor/tracemonkey/tests/js1_7/block/regress-352907.js +70 -0
  2858. data/vendor/tracemonkey/tests/js1_7/block/regress-357754.js +96 -0
  2859. data/vendor/tracemonkey/tests/js1_7/block/regress-358508.js +70 -0
  2860. data/vendor/tracemonkey/tests/js1_7/block/regress-376410.js +70 -0
  2861. data/vendor/tracemonkey/tests/js1_7/block/regress-396900.js +64 -0
  2862. data/vendor/tracemonkey/tests/js1_7/block/regress-411279.js +98 -0
  2863. data/vendor/tracemonkey/tests/js1_7/block/shell.js +1 -0
  2864. data/vendor/tracemonkey/tests/js1_7/browser.js +36 -0
  2865. data/vendor/tracemonkey/tests/js1_7/decompilation/jstests.list +52 -0
  2866. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-346642-01.js +200 -0
  2867. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-348904.js +67 -0
  2868. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349493.js +64 -0
  2869. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349499.js +64 -0
  2870. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349602.js +69 -0
  2871. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349605.js +69 -0
  2872. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349633.js +69 -0
  2873. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-349634.js +64 -0
  2874. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350704.js +65 -0
  2875. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350793-02.js +68 -0
  2876. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350810.js +62 -0
  2877. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-350991.js +87 -0
  2878. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351070-01.js +102 -0
  2879. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351070-03.js +173 -0
  2880. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-351496.js +68 -0
  2881. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352008.js +66 -0
  2882. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352011.js +75 -0
  2883. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352015.js +69 -0
  2884. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352022.js +69 -0
  2885. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352025.js +63 -0
  2886. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352026.js +79 -0
  2887. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352068.js +64 -0
  2888. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352079.js +79 -0
  2889. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352198.js +64 -0
  2890. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352217.js +77 -0
  2891. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352266.js +80 -0
  2892. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352268.js +77 -0
  2893. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352269.js +63 -0
  2894. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352272.js +63 -0
  2895. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352283.js +63 -0
  2896. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352402.js +62 -0
  2897. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352415.js +62 -0
  2898. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352441.js +64 -0
  2899. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-352732.js +93 -0
  2900. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355004.js +62 -0
  2901. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355049-01.js +62 -0
  2902. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355049-02.js +62 -0
  2903. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355105.js +62 -0
  2904. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355635.js +62 -0
  2905. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-355786.js +63 -0
  2906. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-356247.js +103 -0
  2907. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-371802.js +63 -0
  2908. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-374713.js +63 -0
  2909. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-375794.js +63 -0
  2910. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-379925.js +63 -0
  2911. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-380506.js +68 -0
  2912. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-381101.js +63 -0
  2913. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-381108.js +64 -0
  2914. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-410571.js +159 -0
  2915. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-410649.js +62 -0
  2916. data/vendor/tracemonkey/tests/js1_7/decompilation/regress-429252.js +70 -0
  2917. data/vendor/tracemonkey/tests/js1_7/decompilation/shell.js +1 -0
  2918. data/vendor/tracemonkey/tests/js1_7/expressions/destructuring-scope.js +96 -0
  2919. data/vendor/tracemonkey/tests/js1_7/expressions/jstests.list +11 -0
  2920. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346203.js +61 -0
  2921. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-01.js +68 -0
  2922. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-02.js +68 -0
  2923. data/vendor/tracemonkey/tests/js1_7/expressions/regress-346645-03.js +68 -0
  2924. data/vendor/tracemonkey/tests/js1_7/expressions/regress-349624.js +61 -0
  2925. data/vendor/tracemonkey/tests/js1_7/expressions/regress-349818.js +61 -0
  2926. data/vendor/tracemonkey/tests/js1_7/expressions/regress-418051.js +67 -0
  2927. data/vendor/tracemonkey/tests/js1_7/expressions/regress-421806.js +74 -0
  2928. data/vendor/tracemonkey/tests/js1_7/expressions/regress-451340.js +60 -0
  2929. data/vendor/tracemonkey/tests/js1_7/expressions/shell.js +1 -0
  2930. data/vendor/tracemonkey/tests/js1_7/extensions/basic-Iterator.js +198 -0
  2931. data/vendor/tracemonkey/tests/js1_7/extensions/basic-for-each.js +123 -0
  2932. data/vendor/tracemonkey/tests/js1_7/extensions/basic-for-in.js +111 -0
  2933. data/vendor/tracemonkey/tests/js1_7/extensions/destructuring-order.js +185 -0
  2934. data/vendor/tracemonkey/tests/js1_7/extensions/iterator-ctor.js +136 -0
  2935. data/vendor/tracemonkey/tests/js1_7/extensions/jstests.list +65 -0
  2936. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346021.js +78 -0
  2937. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346642-02.js +68 -0
  2938. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346642-06.js +109 -0
  2939. data/vendor/tracemonkey/tests/js1_7/extensions/regress-346773.js +85 -0
  2940. data/vendor/tracemonkey/tests/js1_7/extensions/regress-349619.js +61 -0
  2941. data/vendor/tracemonkey/tests/js1_7/extensions/regress-350312.js +113 -0
  2942. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351070-02.js +102 -0
  2943. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-03.js +77 -0
  2944. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-04.js +67 -0
  2945. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-05.js +67 -0
  2946. data/vendor/tracemonkey/tests/js1_7/extensions/regress-351102-07.js +76 -0
  2947. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352797-01.js +68 -0
  2948. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352885-01.js +62 -0
  2949. data/vendor/tracemonkey/tests/js1_7/extensions/regress-352885-02.js +99 -0
  2950. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353214-01.js +79 -0
  2951. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353214-02.js +63 -0
  2952. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353249.js +67 -0
  2953. data/vendor/tracemonkey/tests/js1_7/extensions/regress-353454.js +70 -0
  2954. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354499-01.js +79 -0
  2955. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354499-02.js +82 -0
  2956. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354945-01.js +63 -0
  2957. data/vendor/tracemonkey/tests/js1_7/extensions/regress-354945-02.js +71 -0
  2958. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-01.js +70 -0
  2959. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-02.js +70 -0
  2960. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355052-03.js +76 -0
  2961. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355145.js +66 -0
  2962. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355410.js +73 -0
  2963. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355512.js +71 -0
  2964. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355578.js +78 -0
  2965. data/vendor/tracemonkey/tests/js1_7/extensions/regress-355583.js +72 -0
  2966. data/vendor/tracemonkey/tests/js1_7/extensions/regress-363040-01.js +98 -0
  2967. data/vendor/tracemonkey/tests/js1_7/extensions/regress-363040-02.js +97 -0
  2968. data/vendor/tracemonkey/tests/js1_7/extensions/regress-366668-01.js +64 -0
  2969. data/vendor/tracemonkey/tests/js1_7/extensions/regress-366668-02.js +64 -0
  2970. data/vendor/tracemonkey/tests/js1_7/extensions/regress-367629.js +66 -0
  2971. data/vendor/tracemonkey/tests/js1_7/extensions/regress-368213.js +50 -0
  2972. data/vendor/tracemonkey/tests/js1_7/extensions/regress-368224.js +61 -0
  2973. data/vendor/tracemonkey/tests/js1_7/extensions/regress-372364.js +69 -0
  2974. data/vendor/tracemonkey/tests/js1_7/extensions/regress-379482.js +64 -0
  2975. data/vendor/tracemonkey/tests/js1_7/extensions/regress-379566.js +78 -0
  2976. data/vendor/tracemonkey/tests/js1_7/extensions/regress-380933.js +75 -0
  2977. data/vendor/tracemonkey/tests/js1_7/extensions/regress-381301.js +63 -0
  2978. data/vendor/tracemonkey/tests/js1_7/extensions/regress-381303.js +68 -0
  2979. data/vendor/tracemonkey/tests/js1_7/extensions/regress-387955-01.js +73 -0
  2980. data/vendor/tracemonkey/tests/js1_7/extensions/regress-387955-02.js +75 -0
  2981. data/vendor/tracemonkey/tests/js1_7/extensions/regress-392308.js +80 -0
  2982. data/vendor/tracemonkey/tests/js1_7/extensions/regress-396326.js +70 -0
  2983. data/vendor/tracemonkey/tests/js1_7/extensions/regress-429266.js +73 -0
  2984. data/vendor/tracemonkey/tests/js1_7/extensions/regress-453955.js +64 -0
  2985. data/vendor/tracemonkey/tests/js1_7/extensions/regress-455982-01.js +59 -0
  2986. data/vendor/tracemonkey/tests/js1_7/extensions/regress-455982-02.js +59 -0
  2987. data/vendor/tracemonkey/tests/js1_7/extensions/regress-458679.js +85 -0
  2988. data/vendor/tracemonkey/tests/js1_7/extensions/regress-469234.js +65 -0
  2989. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470176.js +71 -0
  2990. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470300-01.js +65 -0
  2991. data/vendor/tracemonkey/tests/js1_7/extensions/regress-470300-02.js +65 -0
  2992. data/vendor/tracemonkey/tests/js1_7/extensions/regress-474771-01.js +67 -0
  2993. data/vendor/tracemonkey/tests/js1_7/extensions/regress-474771-02.js +55 -0
  2994. data/vendor/tracemonkey/tests/js1_7/extensions/regress-477048.js +67 -0
  2995. data/vendor/tracemonkey/tests/js1_7/extensions/shell.js +1 -0
  2996. data/vendor/tracemonkey/tests/js1_7/geniter/326466-01.js +78 -0
  2997. data/vendor/tracemonkey/tests/js1_7/geniter/builtin-Iterator-function.js +122 -0
  2998. data/vendor/tracemonkey/tests/js1_7/geniter/evens.js +58 -0
  2999. data/vendor/tracemonkey/tests/js1_7/geniter/fibonacci-matrix-generator.js +97 -0
  3000. data/vendor/tracemonkey/tests/js1_7/geniter/iterator-toString.js +76 -0
  3001. data/vendor/tracemonkey/tests/js1_7/geniter/jstests.list +49 -0
  3002. data/vendor/tracemonkey/tests/js1_7/geniter/message-value-passing.js +121 -0
  3003. data/vendor/tracemonkey/tests/js1_7/geniter/multiple-close.js +98 -0
  3004. data/vendor/tracemonkey/tests/js1_7/geniter/nested-yield.js +91 -0
  3005. data/vendor/tracemonkey/tests/js1_7/geniter/pi-generator.js +92 -0
  3006. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345736.js +80 -0
  3007. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345855.js +126 -0
  3008. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345879-01.js +66 -0
  3009. data/vendor/tracemonkey/tests/js1_7/geniter/regress-345879-02.js +67 -0
  3010. data/vendor/tracemonkey/tests/js1_7/geniter/regress-347593.js +88 -0
  3011. data/vendor/tracemonkey/tests/js1_7/geniter/regress-347739.js +81 -0
  3012. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-01.js +84 -0
  3013. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-02.js +94 -0
  3014. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-03.js +75 -0
  3015. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-04.js +75 -0
  3016. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349012-05.js +77 -0
  3017. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-01.js +75 -0
  3018. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-02.js +62 -0
  3019. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349023-03.js +62 -0
  3020. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349331.js +127 -0
  3021. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349362.js +62 -0
  3022. data/vendor/tracemonkey/tests/js1_7/geniter/regress-349851.js +69 -0
  3023. data/vendor/tracemonkey/tests/js1_7/geniter/regress-350621.js +96 -0
  3024. data/vendor/tracemonkey/tests/js1_7/geniter/regress-350809.js +69 -0
  3025. data/vendor/tracemonkey/tests/js1_7/geniter/regress-351120.js +69 -0
  3026. data/vendor/tracemonkey/tests/js1_7/geniter/regress-351514.js +69 -0
  3027. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352197.js +69 -0
  3028. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352605.js +68 -0
  3029. data/vendor/tracemonkey/tests/js1_7/geniter/regress-352876.js +75 -0
  3030. data/vendor/tracemonkey/tests/js1_7/geniter/regress-355834.js +63 -0
  3031. data/vendor/tracemonkey/tests/js1_7/geniter/regress-359062.js +74 -0
  3032. data/vendor/tracemonkey/tests/js1_7/geniter/regress-366941.js +114 -0
  3033. data/vendor/tracemonkey/tests/js1_7/geniter/regress-382335.js +69 -0
  3034. data/vendor/tracemonkey/tests/js1_7/geniter/regress-387871.js +75 -0
  3035. data/vendor/tracemonkey/tests/js1_7/geniter/regress-390918.js +80 -0
  3036. data/vendor/tracemonkey/tests/js1_7/geniter/regress-392310.js +82 -0
  3037. data/vendor/tracemonkey/tests/js1_7/geniter/regress-466206.js +71 -0
  3038. data/vendor/tracemonkey/tests/js1_7/geniter/send-no-rhs.js +90 -0
  3039. data/vendor/tracemonkey/tests/js1_7/geniter/sequential-yields.js +105 -0
  3040. data/vendor/tracemonkey/tests/js1_7/geniter/shell.js +1 -0
  3041. data/vendor/tracemonkey/tests/js1_7/geniter/simple-fib.js +88 -0
  3042. data/vendor/tracemonkey/tests/js1_7/geniter/throw-after-close.js +123 -0
  3043. data/vendor/tracemonkey/tests/js1_7/geniter/throw-forever.js +118 -0
  3044. data/vendor/tracemonkey/tests/js1_7/geniter/unreachable-yield.js +90 -0
  3045. data/vendor/tracemonkey/tests/js1_7/geniter/yield-undefined.js +96 -0
  3046. data/vendor/tracemonkey/tests/js1_7/iterable/jstests.list +15 -0
  3047. data/vendor/tracemonkey/tests/js1_7/iterable/regress-340526-01.js +61 -0
  3048. data/vendor/tracemonkey/tests/js1_7/iterable/regress-340526-02.js +75 -0
  3049. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341496.js +52 -0
  3050. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341499.js +66 -0
  3051. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341510.js +62 -0
  3052. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341815.js +126 -0
  3053. data/vendor/tracemonkey/tests/js1_7/iterable/regress-341821.js +115 -0
  3054. data/vendor/tracemonkey/tests/js1_7/iterable/regress-354750-01.js +75 -0
  3055. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355025.js +61 -0
  3056. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355075-01.js +71 -0
  3057. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355075-02.js +71 -0
  3058. data/vendor/tracemonkey/tests/js1_7/iterable/regress-355090.js +70 -0
  3059. data/vendor/tracemonkey/tests/js1_7/iterable/regress-412467.js +69 -0
  3060. data/vendor/tracemonkey/tests/js1_7/iterable/regress-415922.js +82 -0
  3061. data/vendor/tracemonkey/tests/js1_7/iterable/shell.js +1 -0
  3062. data/vendor/tracemonkey/tests/js1_7/jstests.list +10 -0
  3063. data/vendor/tracemonkey/tests/js1_7/lexical/jstests.list +5 -0
  3064. data/vendor/tracemonkey/tests/js1_7/lexical/regress-336376-01.js +441 -0
  3065. data/vendor/tracemonkey/tests/js1_7/lexical/regress-346642-03.js +169 -0
  3066. data/vendor/tracemonkey/tests/js1_7/lexical/regress-346642-04.js +70 -0
  3067. data/vendor/tracemonkey/tests/js1_7/lexical/regress-351515.js +130 -0
  3068. data/vendor/tracemonkey/tests/js1_7/lexical/shell.js +1 -0
  3069. data/vendor/tracemonkey/tests/js1_7/regexp/jstests.list +2 -0
  3070. data/vendor/tracemonkey/tests/js1_7/regexp/shell.js +1 -0
  3071. data/vendor/tracemonkey/tests/js1_7/regexp/yflag.js +111 -0
  3072. data/vendor/tracemonkey/tests/js1_7/regress/jstests.list +67 -0
  3073. data/vendor/tracemonkey/tests/js1_7/regress/regress-350387.js +70 -0
  3074. data/vendor/tracemonkey/tests/js1_7/regress/regress-351503-01.js +118 -0
  3075. data/vendor/tracemonkey/tests/js1_7/regress/regress-351503-02.js +123 -0
  3076. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-01.js +67 -0
  3077. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-02.js +67 -0
  3078. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-03.js +67 -0
  3079. data/vendor/tracemonkey/tests/js1_7/regress/regress-352640-04.js +67 -0
  3080. data/vendor/tracemonkey/tests/js1_7/regress/regress-352797-02.js +70 -0
  3081. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-01.js +70 -0
  3082. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-02.js +69 -0
  3083. data/vendor/tracemonkey/tests/js1_7/regress/regress-352870-03.js +71 -0
  3084. data/vendor/tracemonkey/tests/js1_7/regress/regress-353079.js +62 -0
  3085. data/vendor/tracemonkey/tests/js1_7/regress/regress-355023.js +64 -0
  3086. data/vendor/tracemonkey/tests/js1_7/regress/regress-355832-01.js +63 -0
  3087. data/vendor/tracemonkey/tests/js1_7/regress/regress-355832-02.js +63 -0
  3088. data/vendor/tracemonkey/tests/js1_7/regress/regress-361566.js +60 -0
  3089. data/vendor/tracemonkey/tests/js1_7/regress/regress-363040-01.js +128 -0
  3090. data/vendor/tracemonkey/tests/js1_7/regress/regress-363040-02.js +100 -0
  3091. data/vendor/tracemonkey/tests/js1_7/regress/regress-369666-01.js +92 -0
  3092. data/vendor/tracemonkey/tests/js1_7/regress/regress-369666-02.js +96 -0
  3093. data/vendor/tracemonkey/tests/js1_7/regress/regress-372331.js +88 -0
  3094. data/vendor/tracemonkey/tests/js1_7/regress/regress-373827-01.js +61 -0
  3095. data/vendor/tracemonkey/tests/js1_7/regress/regress-373827-02.js +67 -0
  3096. data/vendor/tracemonkey/tests/js1_7/regress/regress-373828.js +68 -0
  3097. data/vendor/tracemonkey/tests/js1_7/regress/regress-375695.js +60 -0
  3098. data/vendor/tracemonkey/tests/js1_7/regress/regress-379442.js +61 -0
  3099. data/vendor/tracemonkey/tests/js1_7/regress/regress-379483.js +61 -0
  3100. data/vendor/tracemonkey/tests/js1_7/regress/regress-385133-01.js +71 -0
  3101. data/vendor/tracemonkey/tests/js1_7/regress/regress-385133-02.js +69 -0
  3102. data/vendor/tracemonkey/tests/js1_7/regress/regress-385393-05.js +77 -0
  3103. data/vendor/tracemonkey/tests/js1_7/regress/regress-387951.js +61 -0
  3104. data/vendor/tracemonkey/tests/js1_7/regress/regress-406477.js +81 -0
  3105. data/vendor/tracemonkey/tests/js1_7/regress/regress-407727-01.js +50 -0
  3106. data/vendor/tracemonkey/tests/js1_7/regress/regress-407727-02.js +52 -0
  3107. data/vendor/tracemonkey/tests/js1_7/regress/regress-407957.js +63 -0
  3108. data/vendor/tracemonkey/tests/js1_7/regress/regress-410649.js +75 -0
  3109. data/vendor/tracemonkey/tests/js1_7/regress/regress-414553.js +55 -0
  3110. data/vendor/tracemonkey/tests/js1_7/regress/regress-416601.js +70 -0
  3111. data/vendor/tracemonkey/tests/js1_7/regress/regress-416705.js +73 -0
  3112. data/vendor/tracemonkey/tests/js1_7/regress/regress-418641.js +113 -0
  3113. data/vendor/tracemonkey/tests/js1_7/regress/regress-419803.js +64 -0
  3114. data/vendor/tracemonkey/tests/js1_7/regress/regress-420399.js +69 -0
  3115. data/vendor/tracemonkey/tests/js1_7/regress/regress-428706.js +61 -0
  3116. data/vendor/tracemonkey/tests/js1_7/regress/regress-428708.js +61 -0
  3117. data/vendor/tracemonkey/tests/js1_7/regress/regress-452703.js +54 -0
  3118. data/vendor/tracemonkey/tests/js1_7/regress/regress-452960.js +66 -0
  3119. data/vendor/tracemonkey/tests/js1_7/regress/regress-453049.js +64 -0
  3120. data/vendor/tracemonkey/tests/js1_7/regress/regress-453051.js +64 -0
  3121. data/vendor/tracemonkey/tests/js1_7/regress/regress-453411.js +65 -0
  3122. data/vendor/tracemonkey/tests/js1_7/regress/regress-461235.js +65 -0
  3123. data/vendor/tracemonkey/tests/js1_7/regress/regress-461945.js +65 -0
  3124. data/vendor/tracemonkey/tests/js1_7/regress/regress-462071.js +65 -0
  3125. data/vendor/tracemonkey/tests/js1_7/regress/regress-462282.js +65 -0
  3126. data/vendor/tracemonkey/tests/js1_7/regress/regress-462388.js +65 -0
  3127. data/vendor/tracemonkey/tests/js1_7/regress/regress-462407.js +54 -0
  3128. data/vendor/tracemonkey/tests/js1_7/regress/regress-464403.js +68 -0
  3129. data/vendor/tracemonkey/tests/js1_7/regress/regress-465236.js +63 -0
  3130. data/vendor/tracemonkey/tests/js1_7/regress/regress-465424.js +65 -0
  3131. data/vendor/tracemonkey/tests/js1_7/regress/regress-465484.js +63 -0
  3132. data/vendor/tracemonkey/tests/js1_7/regress/regress-469239-01.js +71 -0
  3133. data/vendor/tracemonkey/tests/js1_7/regress/regress-469239-02.js +71 -0
  3134. data/vendor/tracemonkey/tests/js1_7/regress/regress-470223.js +73 -0
  3135. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-01.js +61 -0
  3136. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-02.js +66 -0
  3137. data/vendor/tracemonkey/tests/js1_7/regress/regress-470388-03.js +65 -0
  3138. data/vendor/tracemonkey/tests/js1_7/regress/regress-474771.js +79 -0
  3139. data/vendor/tracemonkey/tests/js1_7/regress/shell.js +1 -0
  3140. data/vendor/tracemonkey/tests/js1_7/shell.js +47 -0
  3141. data/vendor/tracemonkey/tests/js1_7/template.js +59 -0
  3142. data/vendor/tracemonkey/tests/js1_8/README +1 -0
  3143. data/vendor/tracemonkey/tests/js1_8/browser.js +36 -0
  3144. data/vendor/tracemonkey/tests/js1_8/decompilation/jstests.list +12 -0
  3145. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-260106.js +64 -0
  3146. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-346749.js +62 -0
  3147. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381372.js +63 -0
  3148. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381504.js +78 -0
  3149. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381963-01.js +63 -0
  3150. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-381963-02.js +65 -0
  3151. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-382981.js +67 -0
  3152. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-443074.js +63 -0
  3153. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-460504.js +63 -0
  3154. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-461233.js +64 -0
  3155. data/vendor/tracemonkey/tests/js1_8/decompilation/regress-469625-01.js +66 -0
  3156. data/vendor/tracemonkey/tests/js1_8/decompilation/shell.js +1 -0
  3157. data/vendor/tracemonkey/tests/js1_8/extensions/dekker.js +98 -0
  3158. data/vendor/tracemonkey/tests/js1_8/extensions/for-in.js +85 -0
  3159. data/vendor/tracemonkey/tests/js1_8/extensions/jstests.list +41 -0
  3160. data/vendor/tracemonkey/tests/js1_8/extensions/lamport.js +126 -0
  3161. data/vendor/tracemonkey/tests/js1_8/extensions/peterson.js +89 -0
  3162. data/vendor/tracemonkey/tests/js1_8/extensions/regress-353116.js +112 -0
  3163. data/vendor/tracemonkey/tests/js1_8/extensions/regress-378789.js +67 -0
  3164. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-01.js +67 -0
  3165. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-10.js +67 -0
  3166. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385393-11.js +68 -0
  3167. data/vendor/tracemonkey/tests/js1_8/extensions/regress-385729.js +88 -0
  3168. data/vendor/tracemonkey/tests/js1_8/extensions/regress-394709.js +84 -0
  3169. data/vendor/tracemonkey/tests/js1_8/extensions/regress-415721.js +74 -0
  3170. data/vendor/tracemonkey/tests/js1_8/extensions/regress-417131.js +108 -0
  3171. data/vendor/tracemonkey/tests/js1_8/extensions/regress-417817.js +87 -0
  3172. data/vendor/tracemonkey/tests/js1_8/extensions/regress-419091.js +79 -0
  3173. data/vendor/tracemonkey/tests/js1_8/extensions/regress-422269.js +83 -0
  3174. data/vendor/tracemonkey/tests/js1_8/extensions/regress-445818.js +73 -0
  3175. data/vendor/tracemonkey/tests/js1_8/extensions/regress-446169-01.js +82 -0
  3176. data/vendor/tracemonkey/tests/js1_8/extensions/regress-446169-02.js +80 -0
  3177. data/vendor/tracemonkey/tests/js1_8/extensions/regress-452476.js +62 -0
  3178. data/vendor/tracemonkey/tests/js1_8/extensions/regress-452913.js +51 -0
  3179. data/vendor/tracemonkey/tests/js1_8/extensions/regress-454744.js +71 -0
  3180. data/vendor/tracemonkey/tests/js1_8/extensions/regress-455973.js +62 -0
  3181. data/vendor/tracemonkey/tests/js1_8/extensions/regress-465337.js +65 -0
  3182. data/vendor/tracemonkey/tests/js1_8/extensions/regress-465453.js +77 -0
  3183. data/vendor/tracemonkey/tests/js1_8/extensions/regress-469625.js +75 -0
  3184. data/vendor/tracemonkey/tests/js1_8/extensions/regress-471197.js +79 -0
  3185. data/vendor/tracemonkey/tests/js1_8/extensions/regress-472450-03.js +67 -0
  3186. data/vendor/tracemonkey/tests/js1_8/extensions/regress-472450-04.js +69 -0
  3187. data/vendor/tracemonkey/tests/js1_8/extensions/regress-473040.js +56 -0
  3188. data/vendor/tracemonkey/tests/js1_8/extensions/regress-475971.js +90 -0
  3189. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476414-01.js +99 -0
  3190. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476414-02.js +100 -0
  3191. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476427.js +69 -0
  3192. data/vendor/tracemonkey/tests/js1_8/extensions/regress-476869.js +79 -0
  3193. data/vendor/tracemonkey/tests/js1_8/extensions/regress-479252.js +73 -0
  3194. data/vendor/tracemonkey/tests/js1_8/extensions/regress-479381.js +81 -0
  3195. data/vendor/tracemonkey/tests/js1_8/extensions/regress-481989.js +54 -0
  3196. data/vendor/tracemonkey/tests/js1_8/extensions/regress-482263.js +57 -0
  3197. data/vendor/tracemonkey/tests/js1_8/extensions/shell.js +1 -0
  3198. data/vendor/tracemonkey/tests/js1_8/extensions/simple-tree.js +82 -0
  3199. data/vendor/tracemonkey/tests/js1_8/genexps/jstests.list +10 -0
  3200. data/vendor/tracemonkey/tests/js1_8/genexps/regress-347739.js +84 -0
  3201. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349012-01.js +87 -0
  3202. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349326.js +181 -0
  3203. data/vendor/tracemonkey/tests/js1_8/genexps/regress-349331.js +126 -0
  3204. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-01.js +234 -0
  3205. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-02.js +63 -0
  3206. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-03.js +195 -0
  3207. data/vendor/tracemonkey/tests/js1_8/genexps/regress-380237-04.js +329 -0
  3208. data/vendor/tracemonkey/tests/js1_8/genexps/regress-384991.js +92 -0
  3209. data/vendor/tracemonkey/tests/js1_8/genexps/shell.js +1 -0
  3210. data/vendor/tracemonkey/tests/js1_8/jstests.list +4 -0
  3211. data/vendor/tracemonkey/tests/js1_8/regress/jstests.list +85 -0
  3212. data/vendor/tracemonkey/tests/js1_8/regress/regress-366941.js +105 -0
  3213. data/vendor/tracemonkey/tests/js1_8/regress/regress-384412.js +231 -0
  3214. data/vendor/tracemonkey/tests/js1_8/regress/regress-384758.js +69 -0
  3215. data/vendor/tracemonkey/tests/js1_8/regress/regress-404734.js +64 -0
  3216. data/vendor/tracemonkey/tests/js1_8/regress/regress-427798.js +91 -0
  3217. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-01.js +61 -0
  3218. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-02.js +66 -0
  3219. data/vendor/tracemonkey/tests/js1_8/regress/regress-433279-03.js +66 -0
  3220. data/vendor/tracemonkey/tests/js1_8/regress/regress-442333-01.js +70 -0
  3221. data/vendor/tracemonkey/tests/js1_8/regress/regress-452491.js +64 -0
  3222. data/vendor/tracemonkey/tests/js1_8/regress/regress-453492.js +61 -0
  3223. data/vendor/tracemonkey/tests/js1_8/regress/regress-455981-01.js +69 -0
  3224. data/vendor/tracemonkey/tests/js1_8/regress/regress-455981-02.js +69 -0
  3225. data/vendor/tracemonkey/tests/js1_8/regress/regress-457065-01.js +67 -0
  3226. data/vendor/tracemonkey/tests/js1_8/regress/regress-457065-02.js +65 -0
  3227. data/vendor/tracemonkey/tests/js1_8/regress/regress-458076.js +65 -0
  3228. data/vendor/tracemonkey/tests/js1_8/regress/regress-459185.js +67 -0
  3229. data/vendor/tracemonkey/tests/js1_8/regress/regress-459186.js +67 -0
  3230. data/vendor/tracemonkey/tests/js1_8/regress/regress-459389.js +153 -0
  3231. data/vendor/tracemonkey/tests/js1_8/regress/regress-461930.js +66 -0
  3232. data/vendor/tracemonkey/tests/js1_8/regress/regress-461932.js +66 -0
  3233. data/vendor/tracemonkey/tests/js1_8/regress/regress-463334-01.js +66 -0
  3234. data/vendor/tracemonkey/tests/js1_8/regress/regress-463334-02.js +68 -0
  3235. data/vendor/tracemonkey/tests/js1_8/regress/regress-463783.js +68 -0
  3236. data/vendor/tracemonkey/tests/js1_8/regress/regress-464092-01.js +61 -0
  3237. data/vendor/tracemonkey/tests/js1_8/regress/regress-464092-02.js +68 -0
  3238. data/vendor/tracemonkey/tests/js1_8/regress/regress-464096.js +67 -0
  3239. data/vendor/tracemonkey/tests/js1_8/regress/regress-464418.js +80 -0
  3240. data/vendor/tracemonkey/tests/js1_8/regress/regress-464978.js +65 -0
  3241. data/vendor/tracemonkey/tests/js1_8/regress/regress-465220.js +78 -0
  3242. data/vendor/tracemonkey/tests/js1_8/regress/regress-465234.js +68 -0
  3243. data/vendor/tracemonkey/tests/js1_8/regress/regress-465239.js +68 -0
  3244. data/vendor/tracemonkey/tests/js1_8/regress/regress-465241.js +68 -0
  3245. data/vendor/tracemonkey/tests/js1_8/regress/regress-465249.js +65 -0
  3246. data/vendor/tracemonkey/tests/js1_8/regress/regress-465261.js +69 -0
  3247. data/vendor/tracemonkey/tests/js1_8/regress/regress-465308.js +66 -0
  3248. data/vendor/tracemonkey/tests/js1_8/regress/regress-465454.js +66 -0
  3249. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-01.js +67 -0
  3250. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-02.js +65 -0
  3251. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-03.js +65 -0
  3252. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-04.js +65 -0
  3253. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-05.js +65 -0
  3254. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-06.js +65 -0
  3255. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-07.js +74 -0
  3256. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-08.js +65 -0
  3257. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-09.js +65 -0
  3258. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-10.js +65 -0
  3259. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-11.js +65 -0
  3260. data/vendor/tracemonkey/tests/js1_8/regress/regress-465460-12.js +65 -0
  3261. data/vendor/tracemonkey/tests/js1_8/regress/regress-465483.js +65 -0
  3262. data/vendor/tracemonkey/tests/js1_8/regress/regress-465567-01.js +64 -0
  3263. data/vendor/tracemonkey/tests/js1_8/regress/regress-465567-02.js +60 -0
  3264. data/vendor/tracemonkey/tests/js1_8/regress/regress-465688.js +63 -0
  3265. data/vendor/tracemonkey/tests/js1_8/regress/regress-466128.js +66 -0
  3266. data/vendor/tracemonkey/tests/js1_8/regress/regress-466787.js +68 -0
  3267. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-01.js +61 -0
  3268. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-02.js +67 -0
  3269. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-03.js +80 -0
  3270. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-04.js +75 -0
  3271. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-05.js +64 -0
  3272. data/vendor/tracemonkey/tests/js1_8/regress/regress-467495-06.js +77 -0
  3273. data/vendor/tracemonkey/tests/js1_8/regress/regress-468711.js +65 -0
  3274. data/vendor/tracemonkey/tests/js1_8/regress/regress-469625-02.js +66 -0
  3275. data/vendor/tracemonkey/tests/js1_8/regress/regress-469625-03.js +73 -0
  3276. data/vendor/tracemonkey/tests/js1_8/regress/regress-471373.js +78 -0
  3277. data/vendor/tracemonkey/tests/js1_8/regress/regress-471660.js +72 -0
  3278. data/vendor/tracemonkey/tests/js1_8/regress/regress-472450-01.js +66 -0
  3279. data/vendor/tracemonkey/tests/js1_8/regress/regress-472450-02.js +66 -0
  3280. data/vendor/tracemonkey/tests/js1_8/regress/regress-472528-01.js +74 -0
  3281. data/vendor/tracemonkey/tests/js1_8/regress/regress-472528-02.js +74 -0
  3282. data/vendor/tracemonkey/tests/js1_8/regress/regress-472703.js +73 -0
  3283. data/vendor/tracemonkey/tests/js1_8/regress/regress-474769.js +70 -0
  3284. data/vendor/tracemonkey/tests/js1_8/regress/regress-474771.js +73 -0
  3285. data/vendor/tracemonkey/tests/js1_8/regress/regress-474935.js +75 -0
  3286. data/vendor/tracemonkey/tests/js1_8/regress/regress-476655.js +74 -0
  3287. data/vendor/tracemonkey/tests/js1_8/regress/regress-477234.js +79 -0
  3288. data/vendor/tracemonkey/tests/js1_8/regress/regress-477581.js +68 -0
  3289. data/vendor/tracemonkey/tests/js1_8/regress/regress-478205.js +65 -0
  3290. data/vendor/tracemonkey/tests/js1_8/regress/regress-479353.js +56 -0
  3291. data/vendor/tracemonkey/tests/js1_8/regress/regress-479740.js +71 -0
  3292. data/vendor/tracemonkey/tests/js1_8/regress/regress-481800.js +65 -0
  3293. data/vendor/tracemonkey/tests/js1_8/regress/regress-483749.js +60 -0
  3294. data/vendor/tracemonkey/tests/js1_8/regress/regress-499524.js +48 -0
  3295. data/vendor/tracemonkey/tests/js1_8/regress/regress-532491.js +71 -0
  3296. data/vendor/tracemonkey/tests/js1_8/regress/shell.js +1 -0
  3297. data/vendor/tracemonkey/tests/js1_8/shell.js +47 -0
  3298. data/vendor/tracemonkey/tests/js1_8/template.js +59 -0
  3299. data/vendor/tracemonkey/tests/js1_8_1/JSON/jstests.list +3 -0
  3300. data/vendor/tracemonkey/tests/js1_8_1/JSON/regress-458959.js +65 -0
  3301. data/vendor/tracemonkey/tests/js1_8_1/JSON/regress-459293.js +56 -0
  3302. data/vendor/tracemonkey/tests/js1_8_1/JSON/shell.js +1 -0
  3303. data/vendor/tracemonkey/tests/js1_8_1/README +1 -0
  3304. data/vendor/tracemonkey/tests/js1_8_1/String/jstests.list +2 -0
  3305. data/vendor/tracemonkey/tests/js1_8_1/String/regress-305064.js +177 -0
  3306. data/vendor/tracemonkey/tests/js1_8_1/String/shell.js +1 -0
  3307. data/vendor/tracemonkey/tests/js1_8_1/browser.js +36 -0
  3308. data/vendor/tracemonkey/tests/js1_8_1/decompilation/jstests.list +21 -0
  3309. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-346642-01.js +200 -0
  3310. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-349605.js +69 -0
  3311. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-349634.js +64 -0
  3312. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-350991.js +87 -0
  3313. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351070-01.js +102 -0
  3314. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351336.js +63 -0
  3315. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-351626.js +64 -0
  3316. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352011.js +75 -0
  3317. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352022.js +69 -0
  3318. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352026.js +79 -0
  3319. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-352609.js +90 -0
  3320. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-353249.js +67 -0
  3321. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-354878.js +62 -0
  3322. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-371802.js +63 -0
  3323. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-373678-01.js +62 -0
  3324. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-380237-03.js +195 -0
  3325. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-380237-04.js +334 -0
  3326. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-443074.js +63 -0
  3327. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-466905-03.js +87 -0
  3328. data/vendor/tracemonkey/tests/js1_8_1/decompilation/regress-530537.js +41 -0
  3329. data/vendor/tracemonkey/tests/js1_8_1/decompilation/shell.js +1 -0
  3330. data/vendor/tracemonkey/tests/js1_8_1/extensions/jstests.list +13 -0
  3331. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-352281.js +67 -0
  3332. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-353214-02.js +63 -0
  3333. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-437288-01.js +69 -0
  3334. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-162.js +59 -0
  3335. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-193.js +66 -0
  3336. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-196.js +76 -0
  3337. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-452498-224.js +63 -0
  3338. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-466905-04.js +82 -0
  3339. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-466905-05.js +77 -0
  3340. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-477158.js +66 -0
  3341. data/vendor/tracemonkey/tests/js1_8_1/extensions/regress-477187.js +73 -0
  3342. data/vendor/tracemonkey/tests/js1_8_1/extensions/shell.js +1 -0
  3343. data/vendor/tracemonkey/tests/js1_8_1/extensions/strict-warning.js +29 -0
  3344. data/vendor/tracemonkey/tests/js1_8_1/jstests.list +6 -0
  3345. data/vendor/tracemonkey/tests/js1_8_1/regress/jstests.list +82 -0
  3346. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-420399.js +69 -0
  3347. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-006.js +78 -0
  3348. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-027.js +71 -0
  3349. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-030.js +64 -0
  3350. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-038.js +63 -0
  3351. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-039.js +68 -0
  3352. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-040.js +70 -0
  3353. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-050.js +77 -0
  3354. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-051.js +79 -0
  3355. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-052-a.js +72 -0
  3356. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-052.js +82 -0
  3357. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-053.js +111 -0
  3358. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-054.js +73 -0
  3359. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-058.js +64 -0
  3360. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-062.js +77 -0
  3361. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-063.js +68 -0
  3362. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-068.js +129 -0
  3363. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-071.js +64 -0
  3364. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-072.js +64 -0
  3365. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-073.js +71 -0
  3366. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-074.js +67 -0
  3367. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-075.js +65 -0
  3368. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-076.js +64 -0
  3369. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-077.js +67 -0
  3370. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-079.js +65 -0
  3371. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-082.js +190 -0
  3372. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-091.js +65 -0
  3373. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-092.js +73 -0
  3374. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-098.js +73 -0
  3375. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-099-a.js +72 -0
  3376. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-099.js +87 -0
  3377. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-101.js +64 -0
  3378. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-102.js +120 -0
  3379. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-103.js +64 -0
  3380. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-104.js +64 -0
  3381. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-107.js +67 -0
  3382. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-108.js +66 -0
  3383. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-110.js +82 -0
  3384. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-111.js +68 -0
  3385. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-112.js +72 -0
  3386. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-114-a.js +76 -0
  3387. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-114.js +83 -0
  3388. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-116.js +66 -0
  3389. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-117.js +171 -0
  3390. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-118.js +66 -0
  3391. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-119.js +93 -0
  3392. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-121.js +66 -0
  3393. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-123.js +92 -0
  3394. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-129.js +83 -0
  3395. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-130.js +90 -0
  3396. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-131.js +82 -0
  3397. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-135-a.js +68 -0
  3398. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-135.js +120 -0
  3399. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-138.js +77 -0
  3400. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-139.js +74 -0
  3401. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-155.js +67 -0
  3402. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-160.js +72 -0
  3403. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-168-1.js +66 -0
  3404. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-168-2.js +64 -0
  3405. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-176.js +64 -0
  3406. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-178.js +64 -0
  3407. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-181.js +64 -0
  3408. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-184.js +64 -0
  3409. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-185.js +70 -0
  3410. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-187.js +70 -0
  3411. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-191.js +80 -0
  3412. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-452498-192.js +62 -0
  3413. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-466905-01.js +63 -0
  3414. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-466905-02.js +62 -0
  3415. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-01.js +76 -0
  3416. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-02.js +78 -0
  3417. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-03.js +81 -0
  3418. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-04.js +77 -0
  3419. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-479430-05.js +76 -0
  3420. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-495773.js +77 -0
  3421. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-495907.js +69 -0
  3422. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-496922.js +73 -0
  3423. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507053.js +81 -0
  3424. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507295.js +76 -0
  3425. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-507424.js +68 -0
  3426. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-509354.js +41 -0
  3427. data/vendor/tracemonkey/tests/js1_8_1/regress/regress-515885.js +6 -0
  3428. data/vendor/tracemonkey/tests/js1_8_1/regress/shell.js +1 -0
  3429. data/vendor/tracemonkey/tests/js1_8_1/shell.js +47 -0
  3430. data/vendor/tracemonkey/tests/js1_8_1/template.js +59 -0
  3431. data/vendor/tracemonkey/tests/js1_8_1/trace/jstests.list +23 -0
  3432. data/vendor/tracemonkey/tests/js1_8_1/trace/math-trace-tests.js +734 -0
  3433. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451673.js +116 -0
  3434. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451974-01.js +87 -0
  3435. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-451974-02.js +98 -0
  3436. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-452498-01.js +106 -0
  3437. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-458838.js +96 -0
  3438. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-01.js +108 -0
  3439. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-02.js +108 -0
  3440. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-03.js +108 -0
  3441. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-04.js +108 -0
  3442. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-05.js +108 -0
  3443. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-06.js +108 -0
  3444. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-07.js +108 -0
  3445. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-08.js +108 -0
  3446. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-09.js +108 -0
  3447. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-10.js +108 -0
  3448. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-11.js +108 -0
  3449. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-462459-12.js +108 -0
  3450. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-469927.js +79 -0
  3451. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-470739.js +81 -0
  3452. data/vendor/tracemonkey/tests/js1_8_1/trace/regress-471635.js +89 -0
  3453. data/vendor/tracemonkey/tests/js1_8_1/trace/shell.js +1 -0
  3454. data/vendor/tracemonkey/{trace-test.js → tests/js1_8_1/trace/trace-test.js} +1261 -1454
  3455. data/vendor/tracemonkey/tests/jsDriver.pl +1537 -0
  3456. data/vendor/tracemonkey/tests/jsreftest.html +19 -0
  3457. data/vendor/tracemonkey/tests/jstests.list +15 -0
  3458. data/vendor/tracemonkey/tests/known-failures.pl +720 -0
  3459. data/vendor/tracemonkey/tests/menufoot.html +8 -0
  3460. data/vendor/tracemonkey/tests/menuhead.html +58 -0
  3461. data/vendor/tracemonkey/tests/menuhead.js +761 -0
  3462. data/vendor/tracemonkey/tests/mkhtml.pl +84 -0
  3463. data/vendor/tracemonkey/tests/mklistpage.pl +443 -0
  3464. data/vendor/tracemonkey/tests/most.tests +892 -0
  3465. data/vendor/tracemonkey/tests/pattern-expander.pl +181 -0
  3466. data/vendor/tracemonkey/tests/pattern-extracter.pl +227 -0
  3467. data/vendor/tracemonkey/tests/performance-1.8.0.tests +19 -0
  3468. data/vendor/tracemonkey/tests/performance-1.8.1.tests +19 -0
  3469. data/vendor/tracemonkey/tests/performance-1.9.0.tests +19 -0
  3470. data/vendor/tracemonkey/tests/performance-1.9.1.tests +19 -0
  3471. data/vendor/tracemonkey/tests/performance-1.9.2.tests +19 -0
  3472. data/vendor/tracemonkey/tests/performance.tests +18 -0
  3473. data/vendor/tracemonkey/tests/post-process-logs.pl +602 -0
  3474. data/vendor/tracemonkey/tests/process-logs.sh +203 -0
  3475. data/vendor/tracemonkey/tests/remove-fixed-failures.sh +82 -0
  3476. data/vendor/tracemonkey/tests/runRhinoTests.pl +447 -0
  3477. data/vendor/tracemonkey/tests/runtests.pl +495 -0
  3478. data/vendor/tracemonkey/tests/runtests.sh +262 -0
  3479. data/vendor/tracemonkey/tests/runtests2.pl +3 -0
  3480. data/vendor/tracemonkey/tests/shell.js +928 -0
  3481. data/vendor/tracemonkey/tests/slow-n-1.8.1-browser.tests +62 -0
  3482. data/vendor/tracemonkey/tests/slow-n-1.8.1.tests +35 -0
  3483. data/vendor/tracemonkey/tests/slow-n-1.9.0-browser.tests +51 -0
  3484. data/vendor/tracemonkey/tests/slow-n-1.9.0.tests +21 -0
  3485. data/vendor/tracemonkey/tests/slow-n-1.9.1-browser.tests +49 -0
  3486. data/vendor/tracemonkey/tests/slow-n-1.9.1.tests +25 -0
  3487. data/vendor/tracemonkey/tests/slow-n-1.9.2-browser.tests +50 -0
  3488. data/vendor/tracemonkey/tests/slow-n-1.9.2.tests +24 -0
  3489. data/vendor/tracemonkey/tests/slow-n.tests +30 -0
  3490. data/vendor/tracemonkey/tests/spidermonkey-gc.tests +28 -0
  3491. data/vendor/tracemonkey/tests/spidermonkey-n-1.8.0.tests +95 -0
  3492. data/vendor/tracemonkey/tests/spidermonkey-n-1.8.1.tests +95 -0
  3493. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.0.tests +99 -0
  3494. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.1.tests +152 -0
  3495. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.2.tests +152 -0
  3496. data/vendor/tracemonkey/tests/spidermonkey-n-1.9.3.tests +152 -0
  3497. data/vendor/tracemonkey/tests/spidermonkey-n.tests +90 -0
  3498. data/vendor/tracemonkey/tests/template.js +73 -0
  3499. data/vendor/tracemonkey/tests/test.sh +531 -0
  3500. data/vendor/tracemonkey/tests/user.js +33 -0
  3501. data/vendor/tracemonkey/tests/userhookeach.js +198 -0
  3502. data/vendor/tracemonkey/trace-test/README +70 -0
  3503. data/vendor/tracemonkey/trace-test/lib/andTestHelper.js +9 -0
  3504. data/vendor/tracemonkey/{mandelbrot-results.js → trace-test/lib/mandelbrot-results.js} +0 -0
  3505. data/vendor/tracemonkey/trace-test/lib/orTestHelper.js +9 -0
  3506. data/vendor/tracemonkey/trace-test/lib/prolog.js +37 -0
  3507. data/vendor/tracemonkey/trace-test/lib/range.js +18 -0
  3508. data/vendor/tracemonkey/trace-test/progressbar.py +35 -0
  3509. data/vendor/tracemonkey/trace-test/tests/basic/FPQuadCmp.js +6 -0
  3510. data/vendor/tracemonkey/trace-test/tests/basic/argumentsPassedToBuiltin.js +14 -0
  3511. data/vendor/tracemonkey/trace-test/tests/basic/arith.js +11 -0
  3512. data/vendor/tracemonkey/trace-test/tests/basic/arityMismatchExtraArg.js +13 -0
  3513. data/vendor/tracemonkey/trace-test/tests/basic/arityMismatchMissingArg.js +8 -0
  3514. data/vendor/tracemonkey/trace-test/tests/basic/bitwiseAnd.js +10 -0
  3515. data/vendor/tracemonkey/trace-test/tests/basic/bitwiseGlobal.js +8 -0
  3516. data/vendor/tracemonkey/trace-test/tests/basic/bug464403.js +7 -0
  3517. data/vendor/tracemonkey/trace-test/tests/basic/bug465902.js +13 -0
  3518. data/vendor/tracemonkey/trace-test/tests/basic/bug504587-1.js +13 -0
  3519. data/vendor/tracemonkey/trace-test/tests/basic/bug507180.js +69 -0
  3520. data/vendor/tracemonkey/trace-test/tests/basic/bug509639.js +3 -0
  3521. data/vendor/tracemonkey/trace-test/tests/basic/bug509982.js +15 -0
  3522. data/vendor/tracemonkey/trace-test/tests/basic/bug510434.js +2 -0
  3523. data/vendor/tracemonkey/trace-test/tests/basic/bug510437-2.js +13 -0
  3524. data/vendor/tracemonkey/trace-test/tests/basic/bug510437.js +12 -0
  3525. data/vendor/tracemonkey/trace-test/tests/basic/bug510642.js +14 -0
  3526. data/vendor/tracemonkey/trace-test/tests/basic/bug510655.js +15 -0
  3527. data/vendor/tracemonkey/trace-test/tests/basic/bug511214.js +18 -0
  3528. data/vendor/tracemonkey/trace-test/tests/basic/bug511241.js +15 -0
  3529. data/vendor/tracemonkey/trace-test/tests/basic/bug513038.js +16 -0
  3530. data/vendor/tracemonkey/trace-test/tests/basic/bug516009.js +20 -0
  3531. data/vendor/tracemonkey/trace-test/tests/basic/bug517721.js +8 -0
  3532. data/vendor/tracemonkey/trace-test/tests/basic/bug525028.js +16 -0
  3533. data/vendor/tracemonkey/trace-test/tests/basic/bug531037.js +22 -0
  3534. data/vendor/tracemonkey/trace-test/tests/basic/bug531513.js +23 -0
  3535. data/vendor/tracemonkey/trace-test/tests/basic/bug532568-2.js +20 -0
  3536. data/vendor/tracemonkey/trace-test/tests/basic/bug532568.js +19 -0
  3537. data/vendor/tracemonkey/trace-test/tests/basic/bug532823.js +23 -0
  3538. data/vendor/tracemonkey/trace-test/tests/basic/bug535760.js +13 -0
  3539. data/vendor/tracemonkey/trace-test/tests/basic/bug539553-2.js +7 -0
  3540. data/vendor/tracemonkey/trace-test/tests/basic/bug539553-3.js +11 -0
  3541. data/vendor/tracemonkey/trace-test/tests/basic/bug539553.js +11 -0
  3542. data/vendor/tracemonkey/trace-test/tests/basic/call.js +28 -0
  3543. data/vendor/tracemonkey/{call.js → trace-test/tests/basic/call2.js} +1 -1
  3544. data/vendor/tracemonkey/trace-test/tests/basic/createMandelSet.js +242 -0
  3545. data/vendor/tracemonkey/trace-test/tests/basic/deep2.js +11 -0
  3546. data/vendor/tracemonkey/trace-test/tests/basic/deepForInLoop.js +12 -0
  3547. data/vendor/tracemonkey/trace-test/tests/basic/dependentStrings.js +11 -0
  3548. data/vendor/tracemonkey/trace-test/tests/basic/doMath.js +60 -0
  3549. data/vendor/tracemonkey/trace-test/tests/basic/equalInt.js +29 -0
  3550. data/vendor/tracemonkey/trace-test/tests/basic/fannkuch.js +17 -0
  3551. data/vendor/tracemonkey/trace-test/tests/basic/forVarInWith.js +12 -0
  3552. data/vendor/tracemonkey/trace-test/tests/basic/getelem.js +30 -0
  3553. data/vendor/tracemonkey/trace-test/tests/basic/getprop.js +16 -0
  3554. data/vendor/tracemonkey/trace-test/tests/basic/globalGet.js +6 -0
  3555. data/vendor/tracemonkey/trace-test/tests/basic/globalSet.js +4 -0
  3556. data/vendor/tracemonkey/trace-test/tests/basic/ifInsideLoop.js +12 -0
  3557. data/vendor/tracemonkey/trace-test/tests/basic/inArrayTest.js +9 -0
  3558. data/vendor/tracemonkey/trace-test/tests/basic/inObjectTest.js +13 -0
  3559. data/vendor/tracemonkey/trace-test/tests/basic/innerLoopIntOuterDouble.js +11 -0
  3560. data/vendor/tracemonkey/trace-test/tests/basic/inner_double_outer_int.js +10 -0
  3561. data/vendor/tracemonkey/trace-test/tests/basic/jitstatsArchFlags.js +14 -0
  3562. data/vendor/tracemonkey/trace-test/tests/basic/joinTest.js +15 -0
  3563. data/vendor/tracemonkey/trace-test/tests/basic/matchInLoop.js +8 -0
  3564. data/vendor/tracemonkey/{math-trace-tests.js → trace-test/tests/basic/math-trace-tests.js} +25 -12
  3565. data/vendor/tracemonkey/trace-test/tests/basic/merge_type_maps.js +9 -0
  3566. data/vendor/tracemonkey/trace-test/tests/basic/missingArgTest.js +12 -0
  3567. data/vendor/tracemonkey/trace-test/tests/basic/missingArgTest2.js +26 -0
  3568. data/vendor/tracemonkey/trace-test/tests/basic/mod.js +14 -0
  3569. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-del.js +28 -0
  3570. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-eval-del.js +10 -0
  3571. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive-inferflags.js +18 -0
  3572. data/vendor/tracemonkey/trace-test/tests/basic/name-inactive.js +20 -0
  3573. data/vendor/tracemonkey/trace-test/tests/basic/name.js +9 -0
  3574. data/vendor/tracemonkey/trace-test/tests/basic/nestedExit2.js +17 -0
  3575. data/vendor/tracemonkey/trace-test/tests/basic/nestedExitLoop.js +14 -0
  3576. data/vendor/tracemonkey/trace-test/tests/basic/newArrayTest.js +8 -0
  3577. data/vendor/tracemonkey/trace-test/tests/basic/newTest.js +14 -0
  3578. data/vendor/tracemonkey/trace-test/tests/basic/nonEmptyStack1.js +13 -0
  3579. data/vendor/tracemonkey/trace-test/tests/basic/nonEmptyStack2.js +10 -0
  3580. data/vendor/tracemonkey/trace-test/tests/basic/orNaNTest1.js +3 -0
  3581. data/vendor/tracemonkey/trace-test/tests/basic/orNaNTest2.js +3 -0
  3582. data/vendor/tracemonkey/trace-test/tests/basic/outerline.js +15 -0
  3583. data/vendor/tracemonkey/trace-test/tests/basic/parseIntTests.js +21 -0
  3584. data/vendor/tracemonkey/trace-test/tests/basic/parsingNumbers.js +23 -0
  3585. data/vendor/tracemonkey/trace-test/tests/basic/putargsNoReturn.js +6 -0
  3586. data/vendor/tracemonkey/trace-test/tests/basic/putargsReturn.js +7 -0
  3587. data/vendor/tracemonkey/trace-test/tests/basic/regexpLastIndex.js +13 -0
  3588. data/vendor/tracemonkey/trace-test/tests/basic/setArgumentsLength.js +14 -0
  3589. data/vendor/tracemonkey/trace-test/tests/basic/setArgumentsLength2.js +12 -0
  3590. data/vendor/tracemonkey/trace-test/tests/basic/setCall.js +26 -0
  3591. data/vendor/tracemonkey/trace-test/tests/basic/setCallEvalMiddle.js +17 -0
  3592. data/vendor/tracemonkey/trace-test/tests/basic/setCallEvalMiddle2.js +18 -0
  3593. data/vendor/tracemonkey/trace-test/tests/basic/setCallGlobal.js +14 -0
  3594. data/vendor/tracemonkey/trace-test/tests/basic/setelem.js +12 -0
  3595. data/vendor/tracemonkey/trace-test/tests/basic/setprop.js +10 -0
  3596. data/vendor/tracemonkey/trace-test/tests/basic/shapelessCalleeTest.js +67 -0
  3597. data/vendor/tracemonkey/trace-test/tests/basic/stringConvert.js +18 -0
  3598. data/vendor/tracemonkey/trace-test/tests/basic/stringSplitIntoArrayTest.js +9 -0
  3599. data/vendor/tracemonkey/trace-test/tests/basic/stringSplitTest.js +9 -0
  3600. data/vendor/tracemonkey/trace-test/tests/basic/strings.js +21 -0
  3601. data/vendor/tracemonkey/trace-test/tests/basic/testAbortedImacroDecompilation.js +7 -0
  3602. data/vendor/tracemonkey/trace-test/tests/basic/testAddAnyInconvertibleObject.js +33 -0
  3603. data/vendor/tracemonkey/trace-test/tests/basic/testAddInconvertibleObjectAny.js +39 -0
  3604. data/vendor/tracemonkey/trace-test/tests/basic/testAddInconvertibleObjectInconvertibleObject.js +38 -0
  3605. data/vendor/tracemonkey/trace-test/tests/basic/testAddNull.js +13 -0
  3606. data/vendor/tracemonkey/trace-test/tests/basic/testAddUndefined.js +5 -0
  3607. data/vendor/tracemonkey/trace-test/tests/basic/testApply.js +7 -0
  3608. data/vendor/tracemonkey/trace-test/tests/basic/testApplyCall.js +42 -0
  3609. data/vendor/tracemonkey/trace-test/tests/basic/testApplyUnbox.js +11 -0
  3610. data/vendor/tracemonkey/trace-test/tests/basic/testArrayComp1.js +6 -0
  3611. data/vendor/tracemonkey/trace-test/tests/basic/testArrayComp2.js +7 -0
  3612. data/vendor/tracemonkey/trace-test/tests/basic/testArrayDensityChange.js +17 -0
  3613. data/vendor/tracemonkey/trace-test/tests/basic/testArrayNaNIndex.js +7 -0
  3614. data/vendor/tracemonkey/trace-test/tests/basic/testArrayNamedProp.js +5 -0
  3615. data/vendor/tracemonkey/trace-test/tests/basic/testArrayPushPop.js +11 -0
  3616. data/vendor/tracemonkey/trace-test/tests/basic/testAtomize.js +10 -0
  3617. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrAnyInconvertibleObject.js +33 -0
  3618. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrInconvertibleObjectAny.js +33 -0
  3619. data/vendor/tracemonkey/trace-test/tests/basic/testBitOrInconvertibleObjectInconvertibleObject.js +38 -0
  3620. data/vendor/tracemonkey/trace-test/tests/basic/testBitwise.js +12 -0
  3621. data/vendor/tracemonkey/trace-test/tests/basic/testBoxDoubleWithDoubleSizedInt.js +10 -0
  3622. data/vendor/tracemonkey/trace-test/tests/basic/testBranchCse.js +7 -0
  3623. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingLoop.js +11 -0
  3624. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableLoop.js +11 -0
  3625. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableLoopCounter.js +11 -0
  3626. data/vendor/tracemonkey/trace-test/tests/basic/testBranchingUnstableObject.js +13 -0
  3627. data/vendor/tracemonkey/trace-test/tests/basic/testBreak.js +6 -0
  3628. data/vendor/tracemonkey/trace-test/tests/basic/testBug458838.js +18 -0
  3629. data/vendor/tracemonkey/trace-test/tests/basic/testBug462388.js +6 -0
  3630. data/vendor/tracemonkey/trace-test/tests/basic/testBug462407.js +6 -0
  3631. data/vendor/tracemonkey/trace-test/tests/basic/testBug463490.js +18 -0
  3632. data/vendor/tracemonkey/trace-test/tests/basic/testBug465261.js +7 -0
  3633. data/vendor/tracemonkey/trace-test/tests/basic/testBug465272.js +6 -0
  3634. data/vendor/tracemonkey/trace-test/tests/basic/testBug465483.js +7 -0
  3635. data/vendor/tracemonkey/trace-test/tests/basic/testBug465688.js +6 -0
  3636. data/vendor/tracemonkey/trace-test/tests/basic/testBug466128.js +9 -0
  3637. data/vendor/tracemonkey/trace-test/tests/basic/testBug466262.js +11 -0
  3638. data/vendor/tracemonkey/trace-test/tests/basic/testBug474769.js +10 -0
  3639. data/vendor/tracemonkey/trace-test/tests/basic/testBug501690.js +14 -0
  3640. data/vendor/tracemonkey/trace-test/tests/basic/testBug502914.js +19 -0
  3641. data/vendor/tracemonkey/trace-test/tests/basic/testBug504520.js +11 -0
  3642. data/vendor/tracemonkey/trace-test/tests/basic/testBug504520Harder.js +32 -0
  3643. data/vendor/tracemonkey/trace-test/tests/basic/testBug507425.js +14 -0
  3644. data/vendor/tracemonkey/trace-test/tests/basic/testBug532363.js +2 -0
  3645. data/vendor/tracemonkey/trace-test/tests/basic/testCallElem.js +17 -0
  3646. data/vendor/tracemonkey/trace-test/tests/basic/testCallPick.js +18 -0
  3647. data/vendor/tracemonkey/trace-test/tests/basic/testCallProtoMethod.js +14 -0
  3648. data/vendor/tracemonkey/trace-test/tests/basic/testCaseAbort.js +19 -0
  3649. data/vendor/tracemonkey/trace-test/tests/basic/testCaseTypeMismatchBadness.js +22 -0
  3650. data/vendor/tracemonkey/trace-test/tests/basic/testChangingObjectWithLength.js +37 -0
  3651. data/vendor/tracemonkey/trace-test/tests/basic/testClosingRecursion.js +13 -0
  3652. data/vendor/tracemonkey/trace-test/tests/basic/testClosureIncrSideExit.js +17 -0
  3653. data/vendor/tracemonkey/trace-test/tests/basic/testClosures.js +18 -0
  3654. data/vendor/tracemonkey/trace-test/tests/basic/testComparisons.js +988 -0
  3655. data/vendor/tracemonkey/trace-test/tests/basic/testConstIf.js +6 -0
  3656. data/vendor/tracemonkey/trace-test/tests/basic/testConstSwitch.js +13 -0
  3657. data/vendor/tracemonkey/trace-test/tests/basic/testConstSwitch2.js +6 -0
  3658. data/vendor/tracemonkey/trace-test/tests/basic/testConstantBooleanExpr.js +6 -0
  3659. data/vendor/tracemonkey/trace-test/tests/basic/testConstructorBail.js +4 -0
  3660. data/vendor/tracemonkey/trace-test/tests/basic/testContinue.js +11 -0
  3661. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel.js +16 -0
  3662. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel2.js +7 -0
  3663. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel3.js +6 -0
  3664. data/vendor/tracemonkey/trace-test/tests/basic/testContinueWithLabel4.js +25 -0
  3665. data/vendor/tracemonkey/trace-test/tests/basic/testConvertibleObjectEqUndefined.js +33 -0
  3666. data/vendor/tracemonkey/trace-test/tests/basic/testCustomIterator.js +26 -0
  3667. data/vendor/tracemonkey/trace-test/tests/basic/testDateNow.js +15 -0
  3668. data/vendor/tracemonkey/trace-test/tests/basic/testDecayingInnerLoop.js +9 -0
  3669. data/vendor/tracemonkey/trace-test/tests/basic/testDeepBail1.js +6 -0
  3670. data/vendor/tracemonkey/trace-test/tests/basic/testDeepBailFromHasInstance.js +12 -0
  3671. data/vendor/tracemonkey/trace-test/tests/basic/testDeepPropertyShadowing.js +17 -0
  3672. data/vendor/tracemonkey/trace-test/tests/basic/testDenseArrayProp.js +12 -0
  3673. data/vendor/tracemonkey/trace-test/tests/basic/testDestructuring.js +9 -0
  3674. data/vendor/tracemonkey/trace-test/tests/basic/testDifferingArgc.js +18 -0
  3675. data/vendor/tracemonkey/trace-test/tests/basic/testDivOverflow.js +6 -0
  3676. data/vendor/tracemonkey/trace-test/tests/basic/testDivision.js +10 -0
  3677. data/vendor/tracemonkey/trace-test/tests/basic/testDivisionFloat.js +10 -0
  3678. data/vendor/tracemonkey/trace-test/tests/basic/testDivisionWithNegative1.js +6 -0
  3679. data/vendor/tracemonkey/trace-test/tests/basic/testDoubleComparison.js +16 -0
  3680. data/vendor/tracemonkey/trace-test/tests/basic/testDoubleToStr.js +9 -0
  3681. data/vendor/tracemonkey/trace-test/tests/basic/testEliminatedGuardWithinAnchor.js +12 -0
  3682. data/vendor/tracemonkey/trace-test/tests/basic/testEqFalseEmptyString.js +6 -0
  3683. data/vendor/tracemonkey/trace-test/tests/basic/testFewerGlobalsInInnerTree.js +14 -0
  3684. data/vendor/tracemonkey/trace-test/tests/basic/testFloatArrayIndex.js +9 -0
  3685. data/vendor/tracemonkey/trace-test/tests/basic/testForEach.js +11 -0
  3686. data/vendor/tracemonkey/trace-test/tests/basic/testForInLoopChangeIteratorType.js +11 -0
  3687. data/vendor/tracemonkey/trace-test/tests/basic/testFunctionIdentityChange.js +21 -0
  3688. data/vendor/tracemonkey/trace-test/tests/basic/testGCWhileRecording.js +12 -0
  3689. data/vendor/tracemonkey/trace-test/tests/basic/testGeneratorDeepBail.js +11 -0
  3690. data/vendor/tracemonkey/trace-test/tests/basic/testGetCallObj.js +11 -0
  3691. data/vendor/tracemonkey/trace-test/tests/basic/testGetThis.js +7 -0
  3692. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalMultitrees1.js +11 -0
  3693. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalProtoAccess.js +5 -0
  3694. data/vendor/tracemonkey/trace-test/tests/basic/testGlobalShapeChangeAfterDeepBail.js +15 -0
  3695. data/vendor/tracemonkey/trace-test/tests/basic/testGrowDenseArray.js +7 -0
  3696. data/vendor/tracemonkey/trace-test/tests/basic/testHOTLOOPCorrectness.js +14 -0
  3697. data/vendor/tracemonkey/trace-test/tests/basic/testHOTLOOPSize.js +4 -0
  3698. data/vendor/tracemonkey/trace-test/tests/basic/testHeavy.js +14 -0
  3699. data/vendor/tracemonkey/trace-test/tests/basic/testHeavy2.js +20 -0
  3700. data/vendor/tracemonkey/trace-test/tests/basic/testHolePushing.js +13 -0
  3701. data/vendor/tracemonkey/trace-test/tests/basic/testINITELEM.js +8 -0
  3702. data/vendor/tracemonkey/trace-test/tests/basic/testIn.js +19 -0
  3703. data/vendor/tracemonkey/trace-test/tests/basic/testIncDec.js +19 -0
  3704. data/vendor/tracemonkey/trace-test/tests/basic/testInitelemWithFloatIndex.js +3 -0
  3705. data/vendor/tracemonkey/trace-test/tests/basic/testInitelemWithSetter.js +3 -0
  3706. data/vendor/tracemonkey/trace-test/tests/basic/testInnerMissingArgs.js +21 -0
  3707. data/vendor/tracemonkey/trace-test/tests/basic/testInnerSwitchBreak.js +24 -0
  3708. data/vendor/tracemonkey/trace-test/tests/basic/testInt32ToId.js +39 -0
  3709. data/vendor/tracemonkey/trace-test/tests/basic/testIntFloor.js +8 -0
  3710. data/vendor/tracemonkey/trace-test/tests/basic/testIntOverflow.js +15 -0
  3711. data/vendor/tracemonkey/trace-test/tests/basic/testIntUnderflow.js +15 -0
  3712. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentery8.js +6 -0
  3713. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry.js +6 -0
  3714. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry2.js +11 -0
  3715. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry3.js +7 -0
  3716. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry4.js +6 -0
  3717. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry5.js +9 -0
  3718. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry6.js +7 -0
  3719. data/vendor/tracemonkey/trace-test/tests/basic/testInterpreterReentry7.js +11 -0
  3720. data/vendor/tracemonkey/trace-test/tests/basic/testInvalidCharCodeAt.js +12 -0
  3721. data/vendor/tracemonkey/trace-test/tests/basic/testInvertNullAfterNegateNull.js +7 -0
  3722. data/vendor/tracemonkey/trace-test/tests/basic/testLambdaCtor.js +14 -0
  3723. data/vendor/tracemonkey/trace-test/tests/basic/testLambdaInitedVar.js +8 -0
  3724. data/vendor/tracemonkey/trace-test/tests/basic/testLengthInString.js +12 -0
  3725. data/vendor/tracemonkey/trace-test/tests/basic/testLengthOnNonNativeProto.js +20 -0
  3726. data/vendor/tracemonkey/trace-test/tests/basic/testLetWithUnstableGlobal.js +11 -0
  3727. data/vendor/tracemonkey/trace-test/tests/basic/testLirBufOOM.js +34 -0
  3728. data/vendor/tracemonkey/trace-test/tests/basic/testLogicalNotNaN.js +8 -0
  3729. data/vendor/tracemonkey/trace-test/tests/basic/testLongNumToString.js +7 -0
  3730. data/vendor/tracemonkey/trace-test/tests/basic/testLoopWithUndefined1.js +12 -0
  3731. data/vendor/tracemonkey/trace-test/tests/basic/testLoopWithUndefined2.js +20 -0
  3732. data/vendor/tracemonkey/trace-test/tests/basic/testLoopingAccumulator.js +21 -0
  3733. data/vendor/tracemonkey/trace-test/tests/basic/testMatchAsCondition.js +8 -0
  3734. data/vendor/tracemonkey/trace-test/tests/basic/testMatchStringObject.js +8 -0
  3735. data/vendor/tracemonkey/trace-test/tests/basic/testMethodInit.js +15 -0
  3736. data/vendor/tracemonkey/trace-test/tests/basic/testMethodInitSafety.js +14 -0
  3737. data/vendor/tracemonkey/trace-test/tests/basic/testMethodSet.js +18 -0
  3738. data/vendor/tracemonkey/trace-test/tests/basic/testModuloWithNegative1.js +11 -0
  3739. data/vendor/tracemonkey/trace-test/tests/basic/testModuloWithNegative2.js +7 -0
  3740. data/vendor/tracemonkey/trace-test/tests/basic/testMoreArgcThanNargs.js +14 -0
  3741. data/vendor/tracemonkey/trace-test/tests/basic/testMoreClosures.js +14 -0
  3742. data/vendor/tracemonkey/trace-test/tests/basic/testMulOverflow.js +6 -0
  3743. data/vendor/tracemonkey/trace-test/tests/basic/testMultipleArgumentsObjects.js +12 -0
  3744. data/vendor/tracemonkey/trace-test/tests/basic/testNEWINIT.js +8 -0
  3745. data/vendor/tracemonkey/trace-test/tests/basic/testNEWINIT_DOUBLE.js +6 -0
  3746. data/vendor/tracemonkey/trace-test/tests/basic/testNativeArgsRooting.js +14 -0
  3747. data/vendor/tracemonkey/trace-test/tests/basic/testNativeLog.js +8 -0
  3748. data/vendor/tracemonkey/trace-test/tests/basic/testNativeMax.js +20 -0
  3749. data/vendor/tracemonkey/trace-test/tests/basic/testNativeSetter.js +14 -0
  3750. data/vendor/tracemonkey/trace-test/tests/basic/testNegZero1.js +9 -0
  3751. data/vendor/tracemonkey/trace-test/tests/basic/testNegativeArrayLength.js +10 -0
  3752. data/vendor/tracemonkey/trace-test/tests/basic/testNegativeGETELEMIndex.js +6 -0
  3753. data/vendor/tracemonkey/trace-test/tests/basic/testNestedClosures.js +23 -0
  3754. data/vendor/tracemonkey/trace-test/tests/basic/testNestedDeepBail.js +19 -0
  3755. data/vendor/tracemonkey/trace-test/tests/basic/testNestedEscapingLambdas.js +31 -0
  3756. data/vendor/tracemonkey/trace-test/tests/basic/testNestedExitStackOuter.js +29 -0
  3757. data/vendor/tracemonkey/trace-test/tests/basic/testNestedForIn.js +9 -0
  3758. data/vendor/tracemonkey/trace-test/tests/basic/testNewArrayCount.js +11 -0
  3759. data/vendor/tracemonkey/trace-test/tests/basic/testNewArrayCount2.js +7 -0
  3760. data/vendor/tracemonkey/trace-test/tests/basic/testNewDate.js +17 -0
  3761. data/vendor/tracemonkey/trace-test/tests/basic/testNewString.js +27 -0
  3762. data/vendor/tracemonkey/trace-test/tests/basic/testNewWithNonNativeProto.js +14 -0
  3763. data/vendor/tracemonkey/trace-test/tests/basic/testNonStubGetter.js +7 -0
  3764. data/vendor/tracemonkey/trace-test/tests/basic/testNot.js +8 -0
  3765. data/vendor/tracemonkey/trace-test/tests/basic/testNullCallee.js +16 -0
  3766. data/vendor/tracemonkey/trace-test/tests/basic/testNullRelCmp.js +6 -0
  3767. data/vendor/tracemonkey/trace-test/tests/basic/testNullToString.js +18 -0
  3768. data/vendor/tracemonkey/trace-test/tests/basic/testNumToString.js +18 -0
  3769. data/vendor/tracemonkey/trace-test/tests/basic/testNumberToString.js +6 -0
  3770. data/vendor/tracemonkey/trace-test/tests/basic/testObjectLength.js +15 -0
  3771. data/vendor/tracemonkey/trace-test/tests/basic/testObjectOrderedCmp.js +7 -0
  3772. data/vendor/tracemonkey/trace-test/tests/basic/testObjectOrderedCmp2.js +7 -0
  3773. data/vendor/tracemonkey/trace-test/tests/basic/testObjectToNumber.js +8 -0
  3774. data/vendor/tracemonkey/trace-test/tests/basic/testObjectToString.js +8 -0
  3775. data/vendor/tracemonkey/trace-test/tests/basic/testObjectVsPrototype.js +12 -0
  3776. data/vendor/tracemonkey/trace-test/tests/basic/testOwnPropertyWithInOperator.js +12 -0
  3777. data/vendor/tracemonkey/trace-test/tests/basic/testPrimitiveConstructorPrototype.js +7 -0
  3778. data/vendor/tracemonkey/trace-test/tests/basic/testPropagatedFunArgs.js +34 -0
  3779. data/vendor/tracemonkey/trace-test/tests/basic/testRUNLOOPCorrectness.js +15 -0
  3780. data/vendor/tracemonkey/trace-test/tests/basic/testReallyDeepNestedExit.js +38 -0
  3781. data/vendor/tracemonkey/trace-test/tests/basic/testRebranding.js +10 -0
  3782. data/vendor/tracemonkey/trace-test/tests/basic/testRebranding2.js +21 -0
  3783. data/vendor/tracemonkey/trace-test/tests/basic/testRegExpTest.js +10 -0
  3784. data/vendor/tracemonkey/trace-test/tests/basic/testRegexpGet.js +8 -0
  3785. data/vendor/tracemonkey/trace-test/tests/basic/testReplace2.js +7 -0
  3786. data/vendor/tracemonkey/trace-test/tests/basic/testResumeOp.js +8 -0
  3787. data/vendor/tracemonkey/trace-test/tests/basic/testReverseArgTypes.js +5 -0
  3788. data/vendor/tracemonkey/trace-test/tests/basic/testSetPropNeitherMissNorHit.js +5 -0
  3789. data/vendor/tracemonkey/trace-test/tests/basic/testSetPropertyFail.js +22 -0
  3790. data/vendor/tracemonkey/trace-test/tests/basic/testSetProtoRegeneratesObjectShape.js +24 -0
  3791. data/vendor/tracemonkey/trace-test/tests/basic/testSetelemWithFloatIndex.js +4 -0
  3792. data/vendor/tracemonkey/trace-test/tests/basic/testShiftLeft.js +38 -0
  3793. data/vendor/tracemonkey/trace-test/tests/basic/testShiftRightArithmetic.js +35 -0
  3794. data/vendor/tracemonkey/trace-test/tests/basic/testShiftRightLogical.js +38 -0
  3795. data/vendor/tracemonkey/trace-test/tests/basic/testSideExitInConstructor.js +39 -0
  3796. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayLength.js +15 -0
  3797. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPop.js +12 -0
  3798. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPopMultiFrame.js +24 -0
  3799. data/vendor/tracemonkey/trace-test/tests/basic/testSlowArrayPopNestedTrees.js +36 -0
  3800. data/vendor/tracemonkey/trace-test/tests/basic/testSlowNativeBail.js +10 -0
  3801. data/vendor/tracemonkey/trace-test/tests/basic/testSlowNativeCtor.js +7 -0
  3802. data/vendor/tracemonkey/trace-test/tests/basic/testStrict.js +11 -0
  3803. data/vendor/tracemonkey/trace-test/tests/basic/testString.js +18 -0
  3804. data/vendor/tracemonkey/trace-test/tests/basic/testStringConstructorWithExtraArg.js +6 -0
  3805. data/vendor/tracemonkey/trace-test/tests/basic/testStringLengthNoTinyId.js +64 -0
  3806. data/vendor/tracemonkey/trace-test/tests/basic/testStringObjectLength.js +7 -0
  3807. data/vendor/tracemonkey/trace-test/tests/basic/testStringResolve.js +9 -0
  3808. data/vendor/tracemonkey/trace-test/tests/basic/testStringToInt32.js +6 -0
  3809. data/vendor/tracemonkey/trace-test/tests/basic/testStringify.js +20 -0
  3810. data/vendor/tracemonkey/trace-test/tests/basic/testSubstring.js +7 -0
  3811. data/vendor/tracemonkey/trace-test/tests/basic/testSwitch.js +25 -0
  3812. data/vendor/tracemonkey/trace-test/tests/basic/testSwitchString.js +28 -0
  3813. data/vendor/tracemonkey/trace-test/tests/basic/testSwitchUndefined.js +15 -0
  3814. data/vendor/tracemonkey/trace-test/tests/basic/testTableSwitch1.js +22 -0
  3815. data/vendor/tracemonkey/trace-test/tests/basic/testTableSwitch2.js +27 -0
  3816. data/vendor/tracemonkey/trace-test/tests/basic/testThinForEach.js +10 -0
  3817. data/vendor/tracemonkey/trace-test/tests/basic/testThinLoopDemote.js +20 -0
  3818. data/vendor/tracemonkey/trace-test/tests/basic/testThrowingObjectEqUndefined.js +18 -0
  3819. data/vendor/tracemonkey/trace-test/tests/basic/testToStringBeforeValueOf.js +13 -0
  3820. data/vendor/tracemonkey/trace-test/tests/basic/testToUpperToLower.js +9 -0
  3821. data/vendor/tracemonkey/trace-test/tests/basic/testTrueShiftTrue.js +16 -0
  3822. data/vendor/tracemonkey/trace-test/tests/basic/testTypeUnstableForIn.js +10 -0
  3823. data/vendor/tracemonkey/trace-test/tests/basic/testTypeofHole.js +8 -0
  3824. data/vendor/tracemonkey/trace-test/tests/basic/testUnaryImacros.js +26 -0
  3825. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedBooleanCmp.js +24 -0
  3826. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedCmp.js +6 -0
  3827. data/vendor/tracemonkey/trace-test/tests/basic/testUndefinedPropertyAccess.js +15 -0
  3828. data/vendor/tracemonkey/trace-test/tests/basic/testUndemotableBinaryOp.js +6 -0
  3829. data/vendor/tracemonkey/trace-test/tests/basic/testUndemoteLateGlobalSlots.js +11 -0
  3830. data/vendor/tracemonkey/trace-test/tests/basic/testWeirdDateParse.js +46 -0
  3831. data/vendor/tracemonkey/trace-test/tests/basic/testWhileObjectOrNull.js +18 -0
  3832. data/vendor/tracemonkey/trace-test/tests/basic/test_JSOP_ARGCNT.js +27 -0
  3833. data/vendor/tracemonkey/trace-test/tests/basic/test_JSOP_ARGSUB.js +27 -0
  3834. data/vendor/tracemonkey/trace-test/tests/basic/testif.js +11 -0
  3835. data/vendor/tracemonkey/trace-test/tests/basic/testincops.js +24 -0
  3836. data/vendor/tracemonkey/trace-test/tests/basic/trees.js +10 -0
  3837. data/vendor/tracemonkey/trace-test/tests/basic/truthies.js +29 -0
  3838. data/vendor/tracemonkey/trace-test/tests/basic/typeofTest.js +8 -0
  3839. data/vendor/tracemonkey/trace-test/tests/basic/unboxint.js +8 -0
  3840. data/vendor/tracemonkey/trace-test/tests/basic/xprop.js +8 -0
  3841. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-3d-morph.js +5 -1
  3842. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-3d-raytrace.js +1 -3
  3843. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-binary-trees.js +1 -1
  3844. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-fannkuch.js +1 -1
  3845. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-nbody.js +1 -1
  3846. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-access-nsieve.js +1 -1
  3847. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-3bit-bits-in-byte.js +1 -1
  3848. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-bits-in-byte.js +1 -1
  3849. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-bitwise-and.js +1 -1
  3850. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-bitops-nsieve-bits.js +1 -1
  3851. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-controlflow-recursive.js +1 -1
  3852. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-date-format-tofte.js +1 -1
  3853. data/vendor/tracemonkey/trace-test/tests/sunspider/check-date-format-xparb.js +422 -0
  3854. data/vendor/tracemonkey/{correct → trace-test/tests/sunspider}/check-mont.js +1 -1
  3855. data/vendor/tracemonkey/trace-test/trace-test.py +330 -0
  3856. data/vendor/tracemonkey/tracevis/README +50 -0
  3857. data/vendor/tracemonkey/tracevis/acts.py +64 -0
  3858. data/vendor/tracemonkey/tracevis/binlog.py +140 -0
  3859. data/vendor/tracemonkey/tracevis/config.py +5 -0
  3860. data/vendor/tracemonkey/tracevis/tree.py +282 -0
  3861. data/vendor/tracemonkey/tracevis/vis.py +233 -0
  3862. data/vendor/tracemonkey/{config/revdepth-nt.pl → vprof/manifest.mk} +8 -17
  3863. data/vendor/tracemonkey/vprof/testVprofMT.c +125 -0
  3864. data/vendor/tracemonkey/vprof/vprof.h +10 -12
  3865. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +2 -2
  3866. data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +43 -22
  3867. data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +0 -0
  3868. data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +12 -1
  3869. data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +49 -3
  3870. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +10 -20
  3871. data/vendor/tracemonkey/xpconnect/shell/Makefile.in +2 -1
  3872. data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +120 -40
  3873. data/vendor/tracemonkey/xpconnect/src/Makefile.in +10 -7
  3874. data/vendor/tracemonkey/xpconnect/src/XPCChromeObjectWrapper.cpp +769 -0
  3875. data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +25 -19
  3876. data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +4 -0
  3877. data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +4 -5
  3878. data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +2 -10
  3879. data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +7 -12
  3880. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +0 -198
  3881. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +16 -9
  3882. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +1 -1
  3883. data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +143 -269
  3884. data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +9 -1
  3885. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +3 -2
  3886. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +19 -4
  3887. data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +44 -48
  3888. data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +6 -3
  3889. data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +325 -202
  3890. data/vendor/tracemonkey/xpconnect/src/qsgen.py +67 -71
  3891. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +0 -0
  3892. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +0 -0
  3893. data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +82 -13
  3894. data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +36 -28
  3895. data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +139 -44
  3896. data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +7 -0
  3897. data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +13 -7
  3898. data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +0 -1
  3899. data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +27 -10
  3900. data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +47 -35
  3901. data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +48 -67
  3902. data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +35 -0
  3903. data/vendor/tracemonkey/xpconnect/src/xpclog.h +55 -0
  3904. data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +322 -75
  3905. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +142 -114
  3906. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +25 -49
  3907. data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +14 -7
  3908. data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +6 -6
  3909. data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +10 -3
  3910. data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +9 -8
  3911. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +15 -14
  3912. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +109 -111
  3913. data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +498 -118
  3914. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +5 -6
  3915. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +188 -25
  3916. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +6 -3
  3917. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +46 -27
  3918. data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +118 -115
  3919. data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +2 -0
  3920. data/vendor/tracemonkey/xpconnect/tests/chrome/bug503926.xul +28 -0
  3921. data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug503926.xul +43 -0
  3922. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1 -61
  3923. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +1 -2
  3924. data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +3 -0
  3925. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +1 -1
  3926. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +1 -1
  3927. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +1 -1
  3928. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +1 -1
  3929. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +1 -1
  3930. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +1 -1
  3931. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +1 -1
  3932. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +1 -1
  3933. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +1 -1
  3934. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug502959.html +38 -0
  3935. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug503926.html +30 -0
  3936. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_cows.html +179 -0
  3937. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +9 -0
  3938. data/vendor/tracemonkey/xpconnect/tests/unit/test_iterate.js +54 -0
  3939. data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +0 -0
  3940. data/vendor/tracemonkey/xpconnect/tests/unit/test_xpcomutils.js +135 -0
  3941. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +1 -1
  3942. data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +1 -1
  3943. metadata +3711 -35
  3944. data/vendor/tracemonkey/build/autoconf/update-makefile.sh +0 -118
  3945. data/vendor/tracemonkey/correct.sh +0 -23
  3946. data/vendor/tracemonkey/correct/check-date-format-xparb.js +0 -421
  3947. data/vendor/tracemonkey/if.js +0 -13
  3948. data/vendor/tracemonkey/js3240.rc +0 -79
  3949. data/vendor/tracemonkey/jsOS240.def +0 -654
  3950. data/vendor/tracemonkey/math-partial-sums.js +0 -32
  3951. data/vendor/tracemonkey/md5.js +0 -289
  3952. data/vendor/tracemonkey/nanojit/NativeThumb.cpp +0 -1322
  3953. data/vendor/tracemonkey/nanojit/NativeThumb.h +0 -525
  3954. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +0 -306
@@ -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