johnson 2.0.0.pre1 → 2.0.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. data/CHANGELOG.rdoc +12 -0
  2. data/Manifest.txt +4 -285
  3. data/Rakefile +13 -20
  4. data/ext/tracemonkey/global.cc +4 -1
  5. data/ext/tracemonkey/js.cc +30 -33
  6. data/ext/tracemonkey/runtime.cc +96 -6
  7. data/ext/tracemonkey/split_global.cc +0 -5
  8. data/ext/tracemonkey/tracemonkey.h +2 -2
  9. data/lib/johnson.rb +2 -2
  10. data/lib/johnson/runtime.rb +25 -15
  11. data/lib/johnson/tracemonkey/runtime.rb +6 -3
  12. data/vendor/tracemonkey/config/system-headers +1 -3
  13. data/vendor/tracemonkey/jscntxt.h +5 -2
  14. data/vendor/tracemonkey/jsdbgapi.cpp +9 -1
  15. data/vendor/tracemonkey/jsdbgapi.h +4 -0
  16. data/vendor/tracemonkey/tests/ecma/NativeObjects/browser.js +0 -0
  17. data/vendor/tracemonkey/tests/ecma/NativeObjects/jstests.list +0 -0
  18. data/vendor/tracemonkey/tests/ecma_3_1/Object/jstests.list +1 -1
  19. data/vendor/tracemonkey/tests/js1_3/misc/browser.js +0 -0
  20. data/vendor/tracemonkey/tests/js1_3/misc/jstests.list +0 -0
  21. data/vendor/tracemonkey/tests/js1_5/Regress/jstests.list +4 -4
  22. data/vendor/tracemonkey/tests/js1_5/Scope/jstests.list +1 -1
  23. data/vendor/tracemonkey/tests/js1_5/decompilation/jstests.list +2 -2
  24. data/vendor/tracemonkey/tests/js1_7/decompilation/jstests.list +1 -1
  25. data/vendor/tracemonkey/tests/shell.js +2 -1
  26. metadata +51 -309
  27. data/ext/spidermonkey/context.c +0 -116
  28. data/ext/spidermonkey/context.h +0 -19
  29. data/ext/spidermonkey/conversions.c +0 -361
  30. data/ext/spidermonkey/conversions.h +0 -31
  31. data/ext/spidermonkey/debugger.c +0 -234
  32. data/ext/spidermonkey/debugger.h +0 -10
  33. data/ext/spidermonkey/extconf.rb +0 -32
  34. data/ext/spidermonkey/extensions.c +0 -37
  35. data/ext/spidermonkey/extensions.h +0 -12
  36. data/ext/spidermonkey/global.c +0 -40
  37. data/ext/spidermonkey/global.h +0 -11
  38. data/ext/spidermonkey/idhash.c +0 -16
  39. data/ext/spidermonkey/idhash.h +0 -8
  40. data/ext/spidermonkey/immutable_node.c +0 -1153
  41. data/ext/spidermonkey/immutable_node.c.erb +0 -523
  42. data/ext/spidermonkey/immutable_node.h +0 -22
  43. data/ext/spidermonkey/jroot.h +0 -197
  44. data/ext/spidermonkey/js_land_proxy.c +0 -620
  45. data/ext/spidermonkey/js_land_proxy.h +0 -20
  46. data/ext/spidermonkey/ruby_land_proxy.c +0 -618
  47. data/ext/spidermonkey/ruby_land_proxy.h +0 -38
  48. data/ext/spidermonkey/runtime.c +0 -396
  49. data/ext/spidermonkey/runtime.h +0 -27
  50. data/ext/spidermonkey/spidermonkey.c +0 -22
  51. data/ext/spidermonkey/spidermonkey.h +0 -29
  52. data/lib/johnson/spidermonkey.rb +0 -12
  53. data/lib/johnson/spidermonkey/context.rb +0 -10
  54. data/lib/johnson/spidermonkey/debugger.rb +0 -67
  55. data/lib/johnson/spidermonkey/immutable_node.rb +0 -282
  56. data/lib/johnson/spidermonkey/js_land_proxy.rb +0 -64
  57. data/lib/johnson/spidermonkey/mutable_tree_visitor.rb +0 -242
  58. data/lib/johnson/spidermonkey/ruby_land_proxy.rb +0 -17
  59. data/lib/johnson/spidermonkey/runtime.rb +0 -74
  60. data/test/johnson/spidermonkey/context_test.rb +0 -21
  61. data/test/johnson/spidermonkey/immutable_node_test.rb +0 -34
  62. data/test/johnson/spidermonkey/js_land_proxy_test.rb +0 -273
  63. data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +0 -274
  64. data/test/johnson/spidermonkey/runtime_test.rb +0 -41
  65. data/vendor/spidermonkey/.cvsignore +0 -9
  66. data/vendor/spidermonkey/Makefile.in +0 -449
  67. data/vendor/spidermonkey/Makefile.ref +0 -365
  68. data/vendor/spidermonkey/README.html +0 -820
  69. data/vendor/spidermonkey/SpiderMonkey.rsp +0 -12
  70. data/vendor/spidermonkey/Y.js +0 -19
  71. data/vendor/spidermonkey/build.mk +0 -43
  72. data/vendor/spidermonkey/config.mk +0 -192
  73. data/vendor/spidermonkey/config/AIX4.1.mk +0 -65
  74. data/vendor/spidermonkey/config/AIX4.2.mk +0 -64
  75. data/vendor/spidermonkey/config/AIX4.3.mk +0 -65
  76. data/vendor/spidermonkey/config/Darwin.mk +0 -83
  77. data/vendor/spidermonkey/config/Darwin1.3.mk +0 -81
  78. data/vendor/spidermonkey/config/Darwin1.4.mk +0 -41
  79. data/vendor/spidermonkey/config/Darwin5.2.mk +0 -81
  80. data/vendor/spidermonkey/config/Darwin5.3.mk +0 -81
  81. data/vendor/spidermonkey/config/HP-UXB.10.10.mk +0 -77
  82. data/vendor/spidermonkey/config/HP-UXB.10.20.mk +0 -77
  83. data/vendor/spidermonkey/config/HP-UXB.11.00.mk +0 -80
  84. data/vendor/spidermonkey/config/IRIX.mk +0 -87
  85. data/vendor/spidermonkey/config/IRIX5.3.mk +0 -44
  86. data/vendor/spidermonkey/config/IRIX6.1.mk +0 -44
  87. data/vendor/spidermonkey/config/IRIX6.2.mk +0 -44
  88. data/vendor/spidermonkey/config/IRIX6.3.mk +0 -44
  89. data/vendor/spidermonkey/config/IRIX6.5.mk +0 -44
  90. data/vendor/spidermonkey/config/Linux_All.mk +0 -103
  91. data/vendor/spidermonkey/config/Mac_OS10.0.mk +0 -82
  92. data/vendor/spidermonkey/config/OSF1V4.0.mk +0 -72
  93. data/vendor/spidermonkey/config/OSF1V5.0.mk +0 -69
  94. data/vendor/spidermonkey/config/SunOS4.1.4.mk +0 -101
  95. data/vendor/spidermonkey/config/SunOS5.10.mk +0 -50
  96. data/vendor/spidermonkey/config/SunOS5.3.mk +0 -91
  97. data/vendor/spidermonkey/config/SunOS5.4.mk +0 -92
  98. data/vendor/spidermonkey/config/SunOS5.5.1.mk +0 -44
  99. data/vendor/spidermonkey/config/SunOS5.5.mk +0 -87
  100. data/vendor/spidermonkey/config/SunOS5.6.mk +0 -89
  101. data/vendor/spidermonkey/config/SunOS5.7.mk +0 -44
  102. data/vendor/spidermonkey/config/SunOS5.8.mk +0 -44
  103. data/vendor/spidermonkey/config/SunOS5.9.mk +0 -44
  104. data/vendor/spidermonkey/config/WINNT4.0.mk +0 -117
  105. data/vendor/spidermonkey/config/WINNT5.0.mk +0 -117
  106. data/vendor/spidermonkey/config/WINNT5.1.mk +0 -117
  107. data/vendor/spidermonkey/config/WINNT5.2.mk +0 -117
  108. data/vendor/spidermonkey/config/WINNT6.0.mk +0 -117
  109. data/vendor/spidermonkey/config/dgux.mk +0 -64
  110. data/vendor/spidermonkey/editline/Makefile.ref +0 -144
  111. data/vendor/spidermonkey/editline/README +0 -83
  112. data/vendor/spidermonkey/editline/editline.3 +0 -175
  113. data/vendor/spidermonkey/editline/editline.c +0 -1369
  114. data/vendor/spidermonkey/editline/editline.h +0 -135
  115. data/vendor/spidermonkey/editline/sysunix.c +0 -182
  116. data/vendor/spidermonkey/editline/unix.h +0 -82
  117. data/vendor/spidermonkey/fdlibm/.cvsignore +0 -7
  118. data/vendor/spidermonkey/fdlibm/Makefile.in +0 -127
  119. data/vendor/spidermonkey/fdlibm/Makefile.ref +0 -192
  120. data/vendor/spidermonkey/fdlibm/e_acos.c +0 -147
  121. data/vendor/spidermonkey/fdlibm/e_acosh.c +0 -105
  122. data/vendor/spidermonkey/fdlibm/e_asin.c +0 -156
  123. data/vendor/spidermonkey/fdlibm/e_atan2.c +0 -165
  124. data/vendor/spidermonkey/fdlibm/e_atanh.c +0 -110
  125. data/vendor/spidermonkey/fdlibm/e_cosh.c +0 -133
  126. data/vendor/spidermonkey/fdlibm/e_exp.c +0 -202
  127. data/vendor/spidermonkey/fdlibm/e_fmod.c +0 -184
  128. data/vendor/spidermonkey/fdlibm/e_gamma.c +0 -71
  129. data/vendor/spidermonkey/fdlibm/e_gamma_r.c +0 -70
  130. data/vendor/spidermonkey/fdlibm/e_hypot.c +0 -173
  131. data/vendor/spidermonkey/fdlibm/e_j0.c +0 -524
  132. data/vendor/spidermonkey/fdlibm/e_j1.c +0 -523
  133. data/vendor/spidermonkey/fdlibm/e_jn.c +0 -315
  134. data/vendor/spidermonkey/fdlibm/e_lgamma.c +0 -71
  135. data/vendor/spidermonkey/fdlibm/e_lgamma_r.c +0 -347
  136. data/vendor/spidermonkey/fdlibm/e_log.c +0 -184
  137. data/vendor/spidermonkey/fdlibm/e_log10.c +0 -134
  138. data/vendor/spidermonkey/fdlibm/e_pow.c +0 -386
  139. data/vendor/spidermonkey/fdlibm/e_rem_pio2.c +0 -222
  140. data/vendor/spidermonkey/fdlibm/e_remainder.c +0 -120
  141. data/vendor/spidermonkey/fdlibm/e_scalb.c +0 -89
  142. data/vendor/spidermonkey/fdlibm/e_sinh.c +0 -122
  143. data/vendor/spidermonkey/fdlibm/e_sqrt.c +0 -497
  144. data/vendor/spidermonkey/fdlibm/fdlibm.h +0 -273
  145. data/vendor/spidermonkey/fdlibm/fdlibm.mak +0 -1453
  146. data/vendor/spidermonkey/fdlibm/fdlibm.mdp +0 -0
  147. data/vendor/spidermonkey/fdlibm/k_cos.c +0 -135
  148. data/vendor/spidermonkey/fdlibm/k_rem_pio2.c +0 -354
  149. data/vendor/spidermonkey/fdlibm/k_sin.c +0 -114
  150. data/vendor/spidermonkey/fdlibm/k_standard.c +0 -785
  151. data/vendor/spidermonkey/fdlibm/k_tan.c +0 -170
  152. data/vendor/spidermonkey/fdlibm/s_asinh.c +0 -101
  153. data/vendor/spidermonkey/fdlibm/s_atan.c +0 -175
  154. data/vendor/spidermonkey/fdlibm/s_cbrt.c +0 -133
  155. data/vendor/spidermonkey/fdlibm/s_ceil.c +0 -120
  156. data/vendor/spidermonkey/fdlibm/s_copysign.c +0 -72
  157. data/vendor/spidermonkey/fdlibm/s_cos.c +0 -118
  158. data/vendor/spidermonkey/fdlibm/s_erf.c +0 -356
  159. data/vendor/spidermonkey/fdlibm/s_expm1.c +0 -267
  160. data/vendor/spidermonkey/fdlibm/s_fabs.c +0 -70
  161. data/vendor/spidermonkey/fdlibm/s_finite.c +0 -71
  162. data/vendor/spidermonkey/fdlibm/s_floor.c +0 -121
  163. data/vendor/spidermonkey/fdlibm/s_frexp.c +0 -99
  164. data/vendor/spidermonkey/fdlibm/s_ilogb.c +0 -85
  165. data/vendor/spidermonkey/fdlibm/s_isnan.c +0 -74
  166. data/vendor/spidermonkey/fdlibm/s_ldexp.c +0 -66
  167. data/vendor/spidermonkey/fdlibm/s_lib_version.c +0 -73
  168. data/vendor/spidermonkey/fdlibm/s_log1p.c +0 -211
  169. data/vendor/spidermonkey/fdlibm/s_logb.c +0 -79
  170. data/vendor/spidermonkey/fdlibm/s_matherr.c +0 -64
  171. data/vendor/spidermonkey/fdlibm/s_modf.c +0 -132
  172. data/vendor/spidermonkey/fdlibm/s_nextafter.c +0 -124
  173. data/vendor/spidermonkey/fdlibm/s_rint.c +0 -131
  174. data/vendor/spidermonkey/fdlibm/s_scalbn.c +0 -107
  175. data/vendor/spidermonkey/fdlibm/s_signgam.c +0 -40
  176. data/vendor/spidermonkey/fdlibm/s_significand.c +0 -68
  177. data/vendor/spidermonkey/fdlibm/s_sin.c +0 -118
  178. data/vendor/spidermonkey/fdlibm/s_tan.c +0 -112
  179. data/vendor/spidermonkey/fdlibm/s_tanh.c +0 -122
  180. data/vendor/spidermonkey/fdlibm/w_acos.c +0 -78
  181. data/vendor/spidermonkey/fdlibm/w_acosh.c +0 -78
  182. data/vendor/spidermonkey/fdlibm/w_asin.c +0 -80
  183. data/vendor/spidermonkey/fdlibm/w_atan2.c +0 -79
  184. data/vendor/spidermonkey/fdlibm/w_atanh.c +0 -81
  185. data/vendor/spidermonkey/fdlibm/w_cosh.c +0 -77
  186. data/vendor/spidermonkey/fdlibm/w_exp.c +0 -88
  187. data/vendor/spidermonkey/fdlibm/w_fmod.c +0 -78
  188. data/vendor/spidermonkey/fdlibm/w_gamma.c +0 -85
  189. data/vendor/spidermonkey/fdlibm/w_gamma_r.c +0 -81
  190. data/vendor/spidermonkey/fdlibm/w_hypot.c +0 -78
  191. data/vendor/spidermonkey/fdlibm/w_j0.c +0 -105
  192. data/vendor/spidermonkey/fdlibm/w_j1.c +0 -106
  193. data/vendor/spidermonkey/fdlibm/w_jn.c +0 -128
  194. data/vendor/spidermonkey/fdlibm/w_lgamma.c +0 -85
  195. data/vendor/spidermonkey/fdlibm/w_lgamma_r.c +0 -81
  196. data/vendor/spidermonkey/fdlibm/w_log.c +0 -78
  197. data/vendor/spidermonkey/fdlibm/w_log10.c +0 -81
  198. data/vendor/spidermonkey/fdlibm/w_pow.c +0 -99
  199. data/vendor/spidermonkey/fdlibm/w_remainder.c +0 -77
  200. data/vendor/spidermonkey/fdlibm/w_scalb.c +0 -95
  201. data/vendor/spidermonkey/fdlibm/w_sinh.c +0 -77
  202. data/vendor/spidermonkey/fdlibm/w_sqrt.c +0 -77
  203. data/vendor/spidermonkey/javascript-trace.d +0 -73
  204. data/vendor/spidermonkey/js.c +0 -3951
  205. data/vendor/spidermonkey/js.mdp +0 -0
  206. data/vendor/spidermonkey/js.msg +0 -308
  207. data/vendor/spidermonkey/js.pkg +0 -2
  208. data/vendor/spidermonkey/js3240.rc +0 -79
  209. data/vendor/spidermonkey/jsOS240.def +0 -654
  210. data/vendor/spidermonkey/jsapi.c +0 -5836
  211. data/vendor/spidermonkey/jsapi.h +0 -2624
  212. data/vendor/spidermonkey/jsarena.c +0 -450
  213. data/vendor/spidermonkey/jsarena.h +0 -318
  214. data/vendor/spidermonkey/jsarray.c +0 -2996
  215. data/vendor/spidermonkey/jsarray.h +0 -127
  216. data/vendor/spidermonkey/jsatom.c +0 -1045
  217. data/vendor/spidermonkey/jsatom.h +0 -442
  218. data/vendor/spidermonkey/jsbit.h +0 -253
  219. data/vendor/spidermonkey/jsbool.c +0 -176
  220. data/vendor/spidermonkey/jsbool.h +0 -73
  221. data/vendor/spidermonkey/jsclist.h +0 -139
  222. data/vendor/spidermonkey/jscntxt.c +0 -1348
  223. data/vendor/spidermonkey/jscntxt.h +0 -1120
  224. data/vendor/spidermonkey/jscompat.h +0 -57
  225. data/vendor/spidermonkey/jsconfig.h +0 -248
  226. data/vendor/spidermonkey/jsconfig.mk +0 -181
  227. data/vendor/spidermonkey/jscpucfg.c +0 -396
  228. data/vendor/spidermonkey/jscpucfg.h +0 -212
  229. data/vendor/spidermonkey/jsdate.c +0 -2390
  230. data/vendor/spidermonkey/jsdate.h +0 -124
  231. data/vendor/spidermonkey/jsdbgapi.c +0 -1802
  232. data/vendor/spidermonkey/jsdbgapi.h +0 -464
  233. data/vendor/spidermonkey/jsdhash.c +0 -868
  234. data/vendor/spidermonkey/jsdhash.h +0 -592
  235. data/vendor/spidermonkey/jsdtoa.c +0 -3167
  236. data/vendor/spidermonkey/jsdtoa.h +0 -130
  237. data/vendor/spidermonkey/jsdtracef.c +0 -317
  238. data/vendor/spidermonkey/jsdtracef.h +0 -77
  239. data/vendor/spidermonkey/jsemit.c +0 -6909
  240. data/vendor/spidermonkey/jsemit.h +0 -741
  241. data/vendor/spidermonkey/jsexn.c +0 -1371
  242. data/vendor/spidermonkey/jsexn.h +0 -96
  243. data/vendor/spidermonkey/jsfile.c +0 -2736
  244. data/vendor/spidermonkey/jsfile.h +0 -56
  245. data/vendor/spidermonkey/jsfile.msg +0 -90
  246. data/vendor/spidermonkey/jsfun.c +0 -2634
  247. data/vendor/spidermonkey/jsfun.h +0 -254
  248. data/vendor/spidermonkey/jsgc.c +0 -3562
  249. data/vendor/spidermonkey/jsgc.h +0 -403
  250. data/vendor/spidermonkey/jshash.c +0 -476
  251. data/vendor/spidermonkey/jshash.h +0 -151
  252. data/vendor/spidermonkey/jsify.pl +0 -485
  253. data/vendor/spidermonkey/jsinterp.c +0 -7007
  254. data/vendor/spidermonkey/jsinterp.h +0 -525
  255. data/vendor/spidermonkey/jsinvoke.c +0 -43
  256. data/vendor/spidermonkey/jsiter.c +0 -1067
  257. data/vendor/spidermonkey/jsiter.h +0 -122
  258. data/vendor/spidermonkey/jskeyword.tbl +0 -124
  259. data/vendor/spidermonkey/jskwgen.c +0 -460
  260. data/vendor/spidermonkey/jslibmath.h +0 -266
  261. data/vendor/spidermonkey/jslock.c +0 -1309
  262. data/vendor/spidermonkey/jslock.h +0 -313
  263. data/vendor/spidermonkey/jslocko.asm +0 -60
  264. data/vendor/spidermonkey/jslog2.c +0 -94
  265. data/vendor/spidermonkey/jslong.c +0 -264
  266. data/vendor/spidermonkey/jslong.h +0 -412
  267. data/vendor/spidermonkey/jsmath.c +0 -567
  268. data/vendor/spidermonkey/jsmath.h +0 -57
  269. data/vendor/spidermonkey/jsnum.c +0 -1239
  270. data/vendor/spidermonkey/jsnum.h +0 -283
  271. data/vendor/spidermonkey/jsobj.c +0 -5282
  272. data/vendor/spidermonkey/jsobj.h +0 -709
  273. data/vendor/spidermonkey/jsopcode.c +0 -5245
  274. data/vendor/spidermonkey/jsopcode.h +0 -394
  275. data/vendor/spidermonkey/jsopcode.tbl +0 -523
  276. data/vendor/spidermonkey/jsotypes.h +0 -202
  277. data/vendor/spidermonkey/jsparse.c +0 -6704
  278. data/vendor/spidermonkey/jsparse.h +0 -511
  279. data/vendor/spidermonkey/jsprf.c +0 -1264
  280. data/vendor/spidermonkey/jsprf.h +0 -150
  281. data/vendor/spidermonkey/jsproto.tbl +0 -128
  282. data/vendor/spidermonkey/jsprvtd.h +0 -267
  283. data/vendor/spidermonkey/jspubtd.h +0 -744
  284. data/vendor/spidermonkey/jsregexp.c +0 -4364
  285. data/vendor/spidermonkey/jsregexp.h +0 -183
  286. data/vendor/spidermonkey/jsreops.tbl +0 -145
  287. data/vendor/spidermonkey/jsscan.c +0 -2012
  288. data/vendor/spidermonkey/jsscan.h +0 -387
  289. data/vendor/spidermonkey/jsscope.c +0 -1957
  290. data/vendor/spidermonkey/jsscope.h +0 -418
  291. data/vendor/spidermonkey/jsscript.c +0 -1832
  292. data/vendor/spidermonkey/jsscript.h +0 -287
  293. data/vendor/spidermonkey/jsshell.msg +0 -50
  294. data/vendor/spidermonkey/jsstddef.h +0 -83
  295. data/vendor/spidermonkey/jsstr.c +0 -5005
  296. data/vendor/spidermonkey/jsstr.h +0 -641
  297. data/vendor/spidermonkey/jstypes.h +0 -475
  298. data/vendor/spidermonkey/jsutil.c +0 -345
  299. data/vendor/spidermonkey/jsutil.h +0 -157
  300. data/vendor/spidermonkey/jsxdrapi.c +0 -800
  301. data/vendor/spidermonkey/jsxdrapi.h +0 -218
  302. data/vendor/spidermonkey/jsxml.c +0 -8476
  303. data/vendor/spidermonkey/jsxml.h +0 -349
  304. data/vendor/spidermonkey/lock_SunOS.s +0 -119
  305. data/vendor/spidermonkey/perfect.js +0 -39
  306. data/vendor/spidermonkey/plify_jsdhash.sed +0 -36
  307. data/vendor/spidermonkey/prmjtime.c +0 -846
  308. data/vendor/spidermonkey/prmjtime.h +0 -103
  309. data/vendor/spidermonkey/resource.h +0 -15
  310. data/vendor/spidermonkey/rules.mk +0 -197
  311. data/vendor/spidermonkey/win32.order +0 -384
@@ -1,3 +1,15 @@
1
+ === 2.0.0.pre2 / 2010-02-23
2
+
3
+ * Raise NoMemoryError as appropriate; acccept a size parameter or env variable for runtime size
4
+ * pull latest 1.9.2 SM
5
+ * Allow ruby code to create new gobal objects and add preliminary seal support
6
+ * Clear parent and prototype on new globals
7
+ * Cooperate with StackDeck's new backtrace-manipulating ways.
8
+ * remove thread ref to context (allows collection)
9
+ * Bump Hoe and Rake Compiler deps. Automatically grab submodules.
10
+ * Remove the old spidermonkey extension.
11
+ * Fix include guard for base TM header [Quin Hoxie]
12
+
1
13
  === 2.0.0.pre1 / 2010-02-11
2
14
 
3
15
  * Split global fix; covers all known issues
@@ -4,31 +4,6 @@ Manifest.txt
4
4
  README.rdoc
5
5
  Rakefile
6
6
  bin/johnson
7
- ext/spidermonkey/context.c
8
- ext/spidermonkey/context.h
9
- ext/spidermonkey/conversions.c
10
- ext/spidermonkey/conversions.h
11
- ext/spidermonkey/debugger.c
12
- ext/spidermonkey/debugger.h
13
- ext/spidermonkey/extconf.rb
14
- ext/spidermonkey/extensions.c
15
- ext/spidermonkey/extensions.h
16
- ext/spidermonkey/global.c
17
- ext/spidermonkey/global.h
18
- ext/spidermonkey/idhash.c
19
- ext/spidermonkey/idhash.h
20
- ext/spidermonkey/immutable_node.c
21
- ext/spidermonkey/immutable_node.c.erb
22
- ext/spidermonkey/immutable_node.h
23
- ext/spidermonkey/jroot.h
24
- ext/spidermonkey/js_land_proxy.c
25
- ext/spidermonkey/js_land_proxy.h
26
- ext/spidermonkey/ruby_land_proxy.c
27
- ext/spidermonkey/ruby_land_proxy.h
28
- ext/spidermonkey/runtime.c
29
- ext/spidermonkey/runtime.h
30
- ext/spidermonkey/spidermonkey.c
31
- ext/spidermonkey/spidermonkey.h
32
7
  ext/tracemonkey/context.cc
33
8
  ext/tracemonkey/context.h
34
9
  ext/tracemonkey/conversions.cc
@@ -76,14 +51,6 @@ lib/johnson/parser.rb
76
51
  lib/johnson/parser/syntax_error.rb
77
52
  lib/johnson/ruby_land_proxy.rb
78
53
  lib/johnson/runtime.rb
79
- lib/johnson/spidermonkey.rb
80
- lib/johnson/spidermonkey/context.rb
81
- lib/johnson/spidermonkey/debugger.rb
82
- lib/johnson/spidermonkey/immutable_node.rb
83
- lib/johnson/spidermonkey/js_land_proxy.rb
84
- lib/johnson/spidermonkey/mutable_tree_visitor.rb
85
- lib/johnson/spidermonkey/ruby_land_proxy.rb
86
- lib/johnson/spidermonkey/runtime.rb
87
54
  lib/johnson/tracemonkey.rb
88
55
  lib/johnson/tracemonkey/context.rb
89
56
  lib/johnson/tracemonkey/debugger.rb
@@ -153,11 +120,6 @@ test/johnson/generic/version_test.rb
153
120
  test/johnson/generic/visitors/dot_visitor_test.rb
154
121
  test/johnson/generic/visitors/enumerating_visitor_test.rb
155
122
  test/johnson/generic/visitors/helper.rb
156
- test/johnson/spidermonkey/context_test.rb
157
- test/johnson/spidermonkey/immutable_node_test.rb
158
- test/johnson/spidermonkey/js_land_proxy_test.rb
159
- test/johnson/spidermonkey/ruby_land_proxy_test.rb
160
- test/johnson/spidermonkey/runtime_test.rb
161
123
  test/johnson/tracemonkey/context_test.rb
162
124
  test/johnson/tracemonkey/immutable_node_test.rb
163
125
  test/johnson/tracemonkey/js_land_proxy_test.rb
@@ -165,253 +127,6 @@ test/johnson/tracemonkey/ruby_land_proxy_test.rb
165
127
  test/johnson/tracemonkey/runtime_test.rb
166
128
  test/johnson/tracemonkey/split_global_test.html
167
129
  test/johnson/tracemonkey/split_global_test.rb
168
- vendor/spidermonkey/.cvsignore
169
- vendor/spidermonkey/Makefile.in
170
- vendor/spidermonkey/Makefile.ref
171
- vendor/spidermonkey/README.html
172
- vendor/spidermonkey/SpiderMonkey.rsp
173
- vendor/spidermonkey/Y.js
174
- vendor/spidermonkey/build.mk
175
- vendor/spidermonkey/config.mk
176
- vendor/spidermonkey/config/AIX4.1.mk
177
- vendor/spidermonkey/config/AIX4.2.mk
178
- vendor/spidermonkey/config/AIX4.3.mk
179
- vendor/spidermonkey/config/Darwin.mk
180
- vendor/spidermonkey/config/Darwin1.3.mk
181
- vendor/spidermonkey/config/Darwin1.4.mk
182
- vendor/spidermonkey/config/Darwin5.2.mk
183
- vendor/spidermonkey/config/Darwin5.3.mk
184
- vendor/spidermonkey/config/HP-UXB.10.10.mk
185
- vendor/spidermonkey/config/HP-UXB.10.20.mk
186
- vendor/spidermonkey/config/HP-UXB.11.00.mk
187
- vendor/spidermonkey/config/IRIX.mk
188
- vendor/spidermonkey/config/IRIX5.3.mk
189
- vendor/spidermonkey/config/IRIX6.1.mk
190
- vendor/spidermonkey/config/IRIX6.2.mk
191
- vendor/spidermonkey/config/IRIX6.3.mk
192
- vendor/spidermonkey/config/IRIX6.5.mk
193
- vendor/spidermonkey/config/Linux_All.mk
194
- vendor/spidermonkey/config/Mac_OS10.0.mk
195
- vendor/spidermonkey/config/OSF1V4.0.mk
196
- vendor/spidermonkey/config/OSF1V5.0.mk
197
- vendor/spidermonkey/config/SunOS4.1.4.mk
198
- vendor/spidermonkey/config/SunOS5.10.mk
199
- vendor/spidermonkey/config/SunOS5.3.mk
200
- vendor/spidermonkey/config/SunOS5.4.mk
201
- vendor/spidermonkey/config/SunOS5.5.1.mk
202
- vendor/spidermonkey/config/SunOS5.5.mk
203
- vendor/spidermonkey/config/SunOS5.6.mk
204
- vendor/spidermonkey/config/SunOS5.7.mk
205
- vendor/spidermonkey/config/SunOS5.8.mk
206
- vendor/spidermonkey/config/SunOS5.9.mk
207
- vendor/spidermonkey/config/WINNT4.0.mk
208
- vendor/spidermonkey/config/WINNT5.0.mk
209
- vendor/spidermonkey/config/WINNT5.1.mk
210
- vendor/spidermonkey/config/WINNT5.2.mk
211
- vendor/spidermonkey/config/WINNT6.0.mk
212
- vendor/spidermonkey/config/dgux.mk
213
- vendor/spidermonkey/editline/Makefile.ref
214
- vendor/spidermonkey/editline/README
215
- vendor/spidermonkey/editline/editline.3
216
- vendor/spidermonkey/editline/editline.c
217
- vendor/spidermonkey/editline/editline.h
218
- vendor/spidermonkey/editline/sysunix.c
219
- vendor/spidermonkey/editline/unix.h
220
- vendor/spidermonkey/fdlibm/.cvsignore
221
- vendor/spidermonkey/fdlibm/Makefile.in
222
- vendor/spidermonkey/fdlibm/Makefile.ref
223
- vendor/spidermonkey/fdlibm/e_acos.c
224
- vendor/spidermonkey/fdlibm/e_acosh.c
225
- vendor/spidermonkey/fdlibm/e_asin.c
226
- vendor/spidermonkey/fdlibm/e_atan2.c
227
- vendor/spidermonkey/fdlibm/e_atanh.c
228
- vendor/spidermonkey/fdlibm/e_cosh.c
229
- vendor/spidermonkey/fdlibm/e_exp.c
230
- vendor/spidermonkey/fdlibm/e_fmod.c
231
- vendor/spidermonkey/fdlibm/e_gamma.c
232
- vendor/spidermonkey/fdlibm/e_gamma_r.c
233
- vendor/spidermonkey/fdlibm/e_hypot.c
234
- vendor/spidermonkey/fdlibm/e_j0.c
235
- vendor/spidermonkey/fdlibm/e_j1.c
236
- vendor/spidermonkey/fdlibm/e_jn.c
237
- vendor/spidermonkey/fdlibm/e_lgamma.c
238
- vendor/spidermonkey/fdlibm/e_lgamma_r.c
239
- vendor/spidermonkey/fdlibm/e_log.c
240
- vendor/spidermonkey/fdlibm/e_log10.c
241
- vendor/spidermonkey/fdlibm/e_pow.c
242
- vendor/spidermonkey/fdlibm/e_rem_pio2.c
243
- vendor/spidermonkey/fdlibm/e_remainder.c
244
- vendor/spidermonkey/fdlibm/e_scalb.c
245
- vendor/spidermonkey/fdlibm/e_sinh.c
246
- vendor/spidermonkey/fdlibm/e_sqrt.c
247
- vendor/spidermonkey/fdlibm/fdlibm.h
248
- vendor/spidermonkey/fdlibm/fdlibm.mak
249
- vendor/spidermonkey/fdlibm/fdlibm.mdp
250
- vendor/spidermonkey/fdlibm/k_cos.c
251
- vendor/spidermonkey/fdlibm/k_rem_pio2.c
252
- vendor/spidermonkey/fdlibm/k_sin.c
253
- vendor/spidermonkey/fdlibm/k_standard.c
254
- vendor/spidermonkey/fdlibm/k_tan.c
255
- vendor/spidermonkey/fdlibm/s_asinh.c
256
- vendor/spidermonkey/fdlibm/s_atan.c
257
- vendor/spidermonkey/fdlibm/s_cbrt.c
258
- vendor/spidermonkey/fdlibm/s_ceil.c
259
- vendor/spidermonkey/fdlibm/s_copysign.c
260
- vendor/spidermonkey/fdlibm/s_cos.c
261
- vendor/spidermonkey/fdlibm/s_erf.c
262
- vendor/spidermonkey/fdlibm/s_expm1.c
263
- vendor/spidermonkey/fdlibm/s_fabs.c
264
- vendor/spidermonkey/fdlibm/s_finite.c
265
- vendor/spidermonkey/fdlibm/s_floor.c
266
- vendor/spidermonkey/fdlibm/s_frexp.c
267
- vendor/spidermonkey/fdlibm/s_ilogb.c
268
- vendor/spidermonkey/fdlibm/s_isnan.c
269
- vendor/spidermonkey/fdlibm/s_ldexp.c
270
- vendor/spidermonkey/fdlibm/s_lib_version.c
271
- vendor/spidermonkey/fdlibm/s_log1p.c
272
- vendor/spidermonkey/fdlibm/s_logb.c
273
- vendor/spidermonkey/fdlibm/s_matherr.c
274
- vendor/spidermonkey/fdlibm/s_modf.c
275
- vendor/spidermonkey/fdlibm/s_nextafter.c
276
- vendor/spidermonkey/fdlibm/s_rint.c
277
- vendor/spidermonkey/fdlibm/s_scalbn.c
278
- vendor/spidermonkey/fdlibm/s_signgam.c
279
- vendor/spidermonkey/fdlibm/s_significand.c
280
- vendor/spidermonkey/fdlibm/s_sin.c
281
- vendor/spidermonkey/fdlibm/s_tan.c
282
- vendor/spidermonkey/fdlibm/s_tanh.c
283
- vendor/spidermonkey/fdlibm/w_acos.c
284
- vendor/spidermonkey/fdlibm/w_acosh.c
285
- vendor/spidermonkey/fdlibm/w_asin.c
286
- vendor/spidermonkey/fdlibm/w_atan2.c
287
- vendor/spidermonkey/fdlibm/w_atanh.c
288
- vendor/spidermonkey/fdlibm/w_cosh.c
289
- vendor/spidermonkey/fdlibm/w_exp.c
290
- vendor/spidermonkey/fdlibm/w_fmod.c
291
- vendor/spidermonkey/fdlibm/w_gamma.c
292
- vendor/spidermonkey/fdlibm/w_gamma_r.c
293
- vendor/spidermonkey/fdlibm/w_hypot.c
294
- vendor/spidermonkey/fdlibm/w_j0.c
295
- vendor/spidermonkey/fdlibm/w_j1.c
296
- vendor/spidermonkey/fdlibm/w_jn.c
297
- vendor/spidermonkey/fdlibm/w_lgamma.c
298
- vendor/spidermonkey/fdlibm/w_lgamma_r.c
299
- vendor/spidermonkey/fdlibm/w_log.c
300
- vendor/spidermonkey/fdlibm/w_log10.c
301
- vendor/spidermonkey/fdlibm/w_pow.c
302
- vendor/spidermonkey/fdlibm/w_remainder.c
303
- vendor/spidermonkey/fdlibm/w_scalb.c
304
- vendor/spidermonkey/fdlibm/w_sinh.c
305
- vendor/spidermonkey/fdlibm/w_sqrt.c
306
- vendor/spidermonkey/javascript-trace.d
307
- vendor/spidermonkey/js.c
308
- vendor/spidermonkey/js.mdp
309
- vendor/spidermonkey/js.msg
310
- vendor/spidermonkey/js.pkg
311
- vendor/spidermonkey/js3240.rc
312
- vendor/spidermonkey/jsOS240.def
313
- vendor/spidermonkey/jsapi.c
314
- vendor/spidermonkey/jsapi.h
315
- vendor/spidermonkey/jsarena.c
316
- vendor/spidermonkey/jsarena.h
317
- vendor/spidermonkey/jsarray.c
318
- vendor/spidermonkey/jsarray.h
319
- vendor/spidermonkey/jsatom.c
320
- vendor/spidermonkey/jsatom.h
321
- vendor/spidermonkey/jsbit.h
322
- vendor/spidermonkey/jsbool.c
323
- vendor/spidermonkey/jsbool.h
324
- vendor/spidermonkey/jsclist.h
325
- vendor/spidermonkey/jscntxt.c
326
- vendor/spidermonkey/jscntxt.h
327
- vendor/spidermonkey/jscompat.h
328
- vendor/spidermonkey/jsconfig.h
329
- vendor/spidermonkey/jsconfig.mk
330
- vendor/spidermonkey/jscpucfg.c
331
- vendor/spidermonkey/jscpucfg.h
332
- vendor/spidermonkey/jsdate.c
333
- vendor/spidermonkey/jsdate.h
334
- vendor/spidermonkey/jsdbgapi.c
335
- vendor/spidermonkey/jsdbgapi.h
336
- vendor/spidermonkey/jsdhash.c
337
- vendor/spidermonkey/jsdhash.h
338
- vendor/spidermonkey/jsdtoa.c
339
- vendor/spidermonkey/jsdtoa.h
340
- vendor/spidermonkey/jsdtracef.c
341
- vendor/spidermonkey/jsdtracef.h
342
- vendor/spidermonkey/jsemit.c
343
- vendor/spidermonkey/jsemit.h
344
- vendor/spidermonkey/jsexn.c
345
- vendor/spidermonkey/jsexn.h
346
- vendor/spidermonkey/jsfile.c
347
- vendor/spidermonkey/jsfile.h
348
- vendor/spidermonkey/jsfile.msg
349
- vendor/spidermonkey/jsfun.c
350
- vendor/spidermonkey/jsfun.h
351
- vendor/spidermonkey/jsgc.c
352
- vendor/spidermonkey/jsgc.h
353
- vendor/spidermonkey/jshash.c
354
- vendor/spidermonkey/jshash.h
355
- vendor/spidermonkey/jsify.pl
356
- vendor/spidermonkey/jsinterp.c
357
- vendor/spidermonkey/jsinterp.h
358
- vendor/spidermonkey/jsinvoke.c
359
- vendor/spidermonkey/jsiter.c
360
- vendor/spidermonkey/jsiter.h
361
- vendor/spidermonkey/jskeyword.tbl
362
- vendor/spidermonkey/jskwgen.c
363
- vendor/spidermonkey/jslibmath.h
364
- vendor/spidermonkey/jslock.c
365
- vendor/spidermonkey/jslock.h
366
- vendor/spidermonkey/jslocko.asm
367
- vendor/spidermonkey/jslog2.c
368
- vendor/spidermonkey/jslong.c
369
- vendor/spidermonkey/jslong.h
370
- vendor/spidermonkey/jsmath.c
371
- vendor/spidermonkey/jsmath.h
372
- vendor/spidermonkey/jsnum.c
373
- vendor/spidermonkey/jsnum.h
374
- vendor/spidermonkey/jsobj.c
375
- vendor/spidermonkey/jsobj.h
376
- vendor/spidermonkey/jsopcode.c
377
- vendor/spidermonkey/jsopcode.h
378
- vendor/spidermonkey/jsopcode.tbl
379
- vendor/spidermonkey/jsotypes.h
380
- vendor/spidermonkey/jsparse.c
381
- vendor/spidermonkey/jsparse.h
382
- vendor/spidermonkey/jsprf.c
383
- vendor/spidermonkey/jsprf.h
384
- vendor/spidermonkey/jsproto.tbl
385
- vendor/spidermonkey/jsprvtd.h
386
- vendor/spidermonkey/jspubtd.h
387
- vendor/spidermonkey/jsregexp.c
388
- vendor/spidermonkey/jsregexp.h
389
- vendor/spidermonkey/jsreops.tbl
390
- vendor/spidermonkey/jsscan.c
391
- vendor/spidermonkey/jsscan.h
392
- vendor/spidermonkey/jsscope.c
393
- vendor/spidermonkey/jsscope.h
394
- vendor/spidermonkey/jsscript.c
395
- vendor/spidermonkey/jsscript.h
396
- vendor/spidermonkey/jsshell.msg
397
- vendor/spidermonkey/jsstddef.h
398
- vendor/spidermonkey/jsstr.c
399
- vendor/spidermonkey/jsstr.h
400
- vendor/spidermonkey/jstypes.h
401
- vendor/spidermonkey/jsutil.c
402
- vendor/spidermonkey/jsutil.h
403
- vendor/spidermonkey/jsxdrapi.c
404
- vendor/spidermonkey/jsxdrapi.h
405
- vendor/spidermonkey/jsxml.c
406
- vendor/spidermonkey/jsxml.h
407
- vendor/spidermonkey/lock_SunOS.s
408
- vendor/spidermonkey/perfect.js
409
- vendor/spidermonkey/plify_jsdhash.sed
410
- vendor/spidermonkey/prmjtime.c
411
- vendor/spidermonkey/prmjtime.h
412
- vendor/spidermonkey/resource.h
413
- vendor/spidermonkey/rules.mk
414
- vendor/spidermonkey/win32.order
415
130
  vendor/tracemonkey/Makefile.in
416
131
  vendor/tracemonkey/Makefile.ref
417
132
  vendor/tracemonkey/README.html
@@ -1622,6 +1337,8 @@ vendor/tracemonkey/tests/ecma/Math/15.8.2.8.js
1622
1337
  vendor/tracemonkey/tests/ecma/Math/15.8.2.9.js
1623
1338
  vendor/tracemonkey/tests/ecma/Math/jstests.list
1624
1339
  vendor/tracemonkey/tests/ecma/Math/shell.js
1340
+ vendor/tracemonkey/tests/ecma/NativeObjects/browser.js
1341
+ vendor/tracemonkey/tests/ecma/NativeObjects/jstests.list
1625
1342
  vendor/tracemonkey/tests/ecma/NativeObjects/shell.js
1626
1343
  vendor/tracemonkey/tests/ecma/Number/15.7.1.js
1627
1344
  vendor/tracemonkey/tests/ecma/Number/15.7.2.js
@@ -2466,6 +2183,8 @@ vendor/tracemonkey/tests/js1_3/inherit/proto_9.js
2466
2183
  vendor/tracemonkey/tests/js1_3/inherit/shell.js
2467
2184
  vendor/tracemonkey/tests/js1_3/jsref.js
2468
2185
  vendor/tracemonkey/tests/js1_3/jstests.list
2186
+ vendor/tracemonkey/tests/js1_3/misc/browser.js
2187
+ vendor/tracemonkey/tests/js1_3/misc/jstests.list
2469
2188
  vendor/tracemonkey/tests/js1_3/misc/shell.js
2470
2189
  vendor/tracemonkey/tests/js1_3/regress/delete-001.js
2471
2190
  vendor/tracemonkey/tests/js1_3/regress/function-001-n.js
data/Rakefile CHANGED
@@ -1,17 +1,16 @@
1
1
  require "rubygems"
2
2
 
3
- gem "hoe", "~> 2.3"
3
+ gem "hoe", "~> 2.5"
4
4
  require "hoe"
5
5
 
6
- gem "rake-compiler", "~> 0.6"
6
+ gem "rake-compiler", "~> 0.7"
7
7
  require "rake/extensiontask"
8
8
 
9
9
  FILTER = ENV['FILTER'] || ENV['TESTOPTS']
10
10
 
11
- INTERPRETERS = [ "spidermonkey", "tracemonkey" ]
11
+ INTERPRETERS = [ "tracemonkey" ]
12
12
 
13
13
  SUFFIXES = {}
14
- SUFFIXES[ "spidermonkey" ] = "c"
15
14
  SUFFIXES[ "tracemonkey" ] = "cc"
16
15
 
17
16
  generated_nodes = []
@@ -24,7 +23,8 @@ INTERPRETERS.each do |interpreter|
24
23
 
25
24
  generated_node = "ext/#{interpreter}/immutable_node.#{suffix}"
26
25
 
27
- file generated_node => "ext/#{interpreter}/immutable_node.#{suffix}.erb" do |t|
26
+ file generated_node => ["ext/#{interpreter}/immutable_node.#{suffix}.erb",
27
+ "vendor/#{interpreter}/.git"] do |t|
28
28
  template = ERB.new(File.open(t.prerequisites.first, "rb") { |x| x.read })
29
29
  jsops = jsops interpreter
30
30
  tokens = tokens interpreter
@@ -50,20 +50,17 @@ Hoe.spec "johnson" do
50
50
  self.extra_rdoc_files = FileList["*.rdoc"]
51
51
  self.history_file = "CHANGELOG.rdoc"
52
52
  self.readme_file = "README.rdoc"
53
- self.spec_extras[:extensions] = %w(ext/spidermonkey/extconf.rb
54
- ext/tracemonkey/extconf.rb)
53
+ self.spec_extras[:extensions] = %w(ext/tracemonkey/extconf.rb)
55
54
 
56
- extra_deps << ["stackdeck", "~> 0.1"]
55
+ extra_deps << ["stackdeck", "~> 0.2"]
57
56
  extra_dev_deps << ["rake-compiler", "~> 0.6"]
58
57
 
59
58
  clean_globs << "ext/**/Makefile"
60
59
  clean_globs << "ext/**/*.{o,so,dylib,bundle,a,log}"
61
60
  clean_globs << "vendor/**/*.{o,so,dylib,bundle,a,log}"
62
- clean_globs << "ext/spidermonkey/immutable_node.c"
63
61
  clean_globs << "ext/tracemonkey/immutable_node.cc"
64
62
  clean_globs << "lib/johnson/**/*.{bundle,so}"
65
63
  clean_globs << "tmp"
66
- clean_globs << "vendor/spidermonkey/**/*.OBJ"
67
64
 
68
65
  clean_globs << "vendor/tracemonkey/**/.deps"
69
66
  clean_globs << "vendor/tracemonkey/dist"
@@ -96,26 +93,22 @@ Hoe.spec "johnson" do
96
93
  clean_globs << "vendor/tracemonkey/{lirasm,shell,tests}/Makefile"
97
94
  clean_globs << "vendor/tracemonkey/unallmakefiles"
98
95
 
99
- Rake::ExtensionTask.new "spidermonkey", spec do |ext|
100
- ext.lib_dir = "lib/johnson/spidermonkey"
101
- ext.source_pattern = "*.{c,h}"
102
- end
103
-
104
96
  Rake::ExtensionTask.new "tracemonkey", spec do |ext|
105
97
  ext.lib_dir = "lib/johnson/tracemonkey"
106
98
  ext.source_pattern = "*.{cc,h}"
107
99
  end
108
100
  end
109
101
 
110
- task(:test).clear
102
+ file "vendor/tracemonkey/.git" do
103
+ sh "git submodule update --init"
104
+ end
105
+
106
+ task :compile => "vendor/tracemonkey/.git"
111
107
 
108
+ task(:test).clear
112
109
  task :test => :compile
113
110
 
114
111
  task :clean do
115
- Dir.chdir "vendor/spidermonkey" do
116
- sh "make clean -f Makefile.ref" unless Dir["**/libjs.a"].empty?
117
- end
118
-
119
112
  Dir.chdir "vendor/tracemonkey" do
120
113
  sh "make clean -f Makefile.ref" unless Dir["**/libjs.a"].empty?
121
114
  end
@@ -36,5 +36,8 @@ static JSClass OurGlobalClass = {
36
36
 
37
37
  JSObject* johnson_create_global_object(JSContext* context)
38
38
  {
39
- return JS_NewObject(context, &OurGlobalClass, NULL, NULL);
39
+ JSObject* obj = JS_NewObject(context, &OurGlobalClass, NULL, NULL);
40
+ JS_SetParent(context, obj, NULL);
41
+ JS_SetPrototype(context, obj, NULL);
42
+ return obj;
40
43
  }
@@ -70,6 +70,9 @@ split_create_inner(JSContext *cx, JSObject *outer);
70
70
  static ComplexObject *
71
71
  split_get_private(JSContext *cx, JSObject *obj);
72
72
 
73
+ int trace_split = 0;
74
+ int trace_mark = 0;
75
+
73
76
  static JSBool
74
77
  split_addProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
75
78
  {
@@ -85,6 +88,14 @@ split_addProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
85
88
 
86
89
  /* Patched. See https://bugzilla.mozilla.org/show_bug.cgi?id=542864 */
87
90
 
91
+ /*
92
+ JSString* s = JS_ValueToString(cx, id);
93
+ char* c = JS_GetStringBytes(s);
94
+ if(strcmp(c,"Document")==0){
95
+ fprintf(stderr,"%s\n",c );
96
+ }
97
+ */
98
+
88
99
  JSPropertyOp setter = 0;
89
100
  JSPropertyOp getter = 0;
90
101
  uintN attrs = 0;
@@ -92,15 +103,11 @@ split_addProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
92
103
 
93
104
  JS_GetPropertyAttrsGetterAndSetterById(cx, obj, id, &attrs, &found, &getter, &setter);
94
105
 
95
- if (attrs&(JSPROP_GETTER|JSPROP_SETTER)) {
96
- asId = id;
97
- } else {
98
- if (!JS_ValueToId(cx, *vp, &asId)) {
99
- return JS_FALSE;
100
- }
106
+ if (!JS_ValueToId(cx, *vp, &asId)) {
107
+ return JS_FALSE;
101
108
  }
102
109
 
103
- return JS_DefinePropertyById(cx, cpx->inner, asId, *vp, getter, setter, attrs | JSPROP_ENUMERATE);
110
+ return JS_DefinePropertyById(cx, cpx->inner, id, asId, getter, setter, attrs | JSPROP_ENUMERATE);
104
111
  }
105
112
  return JS_TRUE;
106
113
  }
@@ -271,6 +278,7 @@ split_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags,
271
278
  static void
272
279
  split_finalize(JSContext *cx, JSObject *obj)
273
280
  {
281
+ if (trace_split) fprintf(stderr,"finalize 0x%08x\n", obj);
274
282
  JS_free(cx, JS_GetPrivate(cx, obj));
275
283
  }
276
284
 
@@ -281,7 +289,16 @@ split_mark(JSContext *cx, JSObject *obj, void *arg)
281
289
 
282
290
  cpx = (ComplexObject *) JS_GetPrivate(cx, obj);
283
291
 
292
+ if (trace_mark) fprintf(stderr,"mark 0x%08x %s\n", obj, cpx->isInner ? "" : "outer");
293
+
294
+ /*
295
+ if (!cpx->isInner) {
296
+ fprintf(stderr,"mark %016x\n", obj);
297
+ }
298
+ */
299
+
284
300
  if (!cpx->isInner && cpx->inner) {
301
+ // if (trace_mark) fprintf(stderr,"mark inner 0x%08x\n", cpx->inner);
285
302
  /* Mark the inner object. */
286
303
  JS_MarkGCThing(cx, cpx->inner, "ComplexObject.inner", arg);
287
304
  }
@@ -357,7 +374,6 @@ static JSExtendedClass split_global_class = {
357
374
  NULL, NULL, NULL, NULL, NULL
358
375
  };
359
376
 
360
- #if 1
361
377
  static JSBool
362
378
  split_equality(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
363
379
  {
@@ -378,31 +394,6 @@ split_equality(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
378
394
  *bp = (cpx == ourCpx);
379
395
  return JS_TRUE;
380
396
  }
381
- #else
382
- static JSBool
383
- split_equality(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
384
- {
385
- *bp = JS_FALSE;
386
- if (JSVAL_IS_PRIMITIVE(v))
387
- return JS_TRUE;
388
-
389
- JSObject *obj2 = JSVAL_TO_OBJECT(v);
390
- if (JS_GET_CLASS(cx, obj2) != &split_global_class.base)
391
- return JS_TRUE;
392
-
393
- ComplexObject *cpx = (ComplexObject *) JS_GetPrivate(cx, obj2);
394
- ComplexObject *ourCpx = (ComplexObject *) JS_GetPrivate(cx, obj);
395
-
396
- if( cpx == ourCpx ) {
397
- *bp = JS_TRUE;
398
- } else if ( cpx->inner ) {
399
- *bp = ( cpx->inner == obj && ourCpx->outer == obj2);
400
- } else {
401
- *bp = ( cpx->outer == obj && ourCpx->inner == obj2);
402
- }
403
- return JS_TRUE;
404
- }
405
- #endif
406
397
 
407
398
  JSObject *
408
399
  split_create_outer(JSContext *cx)
@@ -429,6 +420,8 @@ split_create_outer(JSContext *cx)
429
420
  return NULL;
430
421
  }
431
422
 
423
+ if (trace_split) fprintf(stderr,"outer 0x%08x\n", obj);
424
+
432
425
  return obj;
433
426
  }
434
427
 
@@ -453,11 +446,15 @@ split_create_inner(JSContext *cx, JSObject *outer)
453
446
  JS_free(cx, cpx);
454
447
  return NULL;
455
448
  }
449
+
450
+ JS_SetPrototype(cx,obj,NULL);
456
451
 
457
452
  outercpx = (ComplexObject *) JS_GetPrivate(cx, outer);
458
453
  outercpx->inner = obj;
459
454
  outercpx->frozen = JS_FALSE;
460
455
 
456
+ if (trace_split) fprintf(stderr,"inner 0x%08x 0x%08x\n", outer, obj);
457
+
461
458
  return obj;
462
459
  }
463
460