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,22 +0,0 @@
1
- #include "spidermonkey.h"
2
- #include "context.h"
3
- #include "ruby_land_proxy.h"
4
- #include "debugger.h"
5
- #include "immutable_node.h"
6
-
7
- void Init_spidermonkey()
8
- {
9
- JS_SetCStringsAreUTF8();
10
-
11
- VALUE johnson = rb_const_get(rb_mKernel, rb_intern("Johnson"));
12
- VALUE spidermonkey = rb_define_module_under(johnson, "SpiderMonkey");
13
-
14
- init_Johnson_SpiderMonkey_Context(spidermonkey);
15
- init_Johnson_SpiderMonkey_Proxy(spidermonkey);
16
- init_Johnson_SpiderMonkey_Debugger(spidermonkey);
17
- init_Johnson_SpiderMonkey_Immutable_Node(spidermonkey);
18
- init_Johnson_SpiderMonkey_Runtime(spidermonkey);
19
-
20
- rb_define_const(spidermonkey, "VERSION",
21
- rb_obj_freeze(rb_str_new2(JS_GetImplementationVersion())));
22
- }
@@ -1,29 +0,0 @@
1
- #ifndef JOHNSON_SPIDERMONKEY_H
2
- #define JOHNSON_SPIDERMONKEY_H
3
-
4
- #include <assert.h>
5
- #include <stdarg.h>
6
- #include <stdbool.h>
7
- #include <ruby.h>
8
-
9
- #include "jsapi.h"
10
- #include "jshash.h"
11
- #include "jsregexp.h"
12
-
13
- #include "jroot.h"
14
-
15
- #ifndef StringValueLen
16
- #define StringValueLen(v) (RSTRING(v)->len)
17
- #endif
18
-
19
- #ifndef UNUSED
20
- # if defined(__GNUC__)
21
- # define MAYBE_UNUSED(name) name __attribute__((unused))
22
- # define UNUSED(name) MAYBE_UNUSED(UNUSED_ ## name)
23
- # else
24
- # define MAYBE_UNUSED(name) name
25
- # define UNUSED(name) name
26
- # endif
27
- #endif
28
-
29
- #endif
@@ -1,12 +0,0 @@
1
-
2
- # the native SpiderMonkey extension
3
- require "johnson/spidermonkey/spidermonkey"
4
-
5
- # the SpiderMonkey bits written in Ruby
6
- require "johnson/spidermonkey/runtime"
7
- require "johnson/spidermonkey/context"
8
- require "johnson/spidermonkey/js_land_proxy"
9
- require "johnson/spidermonkey/ruby_land_proxy"
10
- require "johnson/spidermonkey/mutable_tree_visitor"
11
- require "johnson/spidermonkey/debugger"
12
- require "johnson/spidermonkey/immutable_node"
@@ -1,10 +0,0 @@
1
- module Johnson #:nodoc:
2
- module SpiderMonkey #:nodoc:
3
- class Context # native
4
- def initialize(runtime, options={})
5
- @runtime = runtime
6
- initialize_native(runtime, options)
7
- end
8
- end
9
- end
10
- end
@@ -1,67 +0,0 @@
1
- module Johnson #:nodoc:
2
- module SpiderMonkey #:nodoc:
3
- class Debugger # native
4
- JSTRAP_ERROR = 0
5
- JSTRAP_CONTINUE = 1
6
- JSTRAP_RETURN = 2
7
- JSTRAP_THROW = 3
8
- JSTRAP_LIMIT = 4
9
- attr_accessor :logger
10
- def initialize(logger)
11
- @logger = logger
12
- end
13
-
14
- def interrupt_handler(context, script, bytecode)
15
- line_num = line_number(context, script, bytecode)
16
- f_name = file_name(context, script)
17
- logger.debug("interrupt_handler #{f_name} #{line_num}")
18
- JSTRAP_CONTINUE
19
- end
20
-
21
- def new_script_hook(filename, linenum)
22
- logger.debug("new_script_hook: #{filename} #{linenum}")
23
- end
24
-
25
- def destroy_script_hook
26
- logger.debug("destroy_script_hook")
27
- end
28
-
29
- def debugger_handler(context, script, bytecode)
30
- line_num = line_number(context, script, bytecode)
31
- f_name = file_name(context, script)
32
- logger.debug("debugger_handler: #{bytecode}")
33
- JSTRAP_CONTINUE
34
- end
35
-
36
- def source_handler(filename, line_number, str)
37
- logger.debug("source_handler: #{filename}(#{line_number}): #{str}")
38
- end
39
-
40
- # +call_hook+ is called before and after script execution. +before+
41
- # is +true+ if before, +false+ otherwise.
42
- def execute_hook(context, stack_frame, before, ok)
43
- logger.debug("execute_hook: #{before} #{ok}")
44
- end
45
-
46
- # +call_hook+ is called before and after a function call. +before+
47
- # is +true+ if before, +false+ otherwise.
48
- def call_hook(before, ok)
49
- logger.debug("call_hook: #{before} #{ok}")
50
- end
51
-
52
- def object_hook(is_new)
53
- logger.debug("object_hook: #{is_new}")
54
- end
55
-
56
- # This hook can change the control
57
- def throw_hook(bytecode)
58
- logger.debug("throw_hook: #{bytecode}")
59
- JSTRAP_CONTINUE
60
- end
61
-
62
- def debug_error_hook(message)
63
- logger.debug("debug_error_hook: #{message}")
64
- end
65
- end
66
- end
67
- end
@@ -1,282 +0,0 @@
1
- module Johnson #:nodoc:
2
- module SpiderMonkey #:nodoc:
3
- class ImmutableNode
4
- def accept(visitor)
5
- case pn_arity
6
- when :pn_list
7
- handle_list(visitor)
8
- when :pn_name
9
- if pn_expr
10
- m = {
11
- :tok_colon => :visit_Label,
12
- :tok_name => :visit_AssignExpr,
13
- :tok_dot => :visit_DotAccessor,
14
- :tok_lexicalscope => :visit_LexicalScope
15
- }[pn_type]
16
- raise "Unknown type #{pn_type}" unless m
17
- visitor.send(m, self)
18
- else
19
- visitor.visit_Name(self)
20
- end
21
- when :pn_binary
22
- handle_binary(visitor)
23
- when :pn_unary
24
- handle_unary(visitor)
25
- when :pn_nullary
26
- handle_nullary(visitor)
27
- when :pn_func
28
- visitor.visit_Function(self)
29
- when :pn_ternary
30
- m = {
31
- :tok_hook => :visit_Ternary,
32
- :tok_if => :visit_If,
33
- :tok_try => :visit_Try,
34
- :tok_catch => :visit_Catch,
35
- }[pn_type]
36
- raise "Unknown ternary #{pn_type}" unless m
37
- visitor.send(m, self)
38
- else
39
- raise "unkown arity: #{pn_arity}"
40
- end
41
- end
42
-
43
- def to_mutable_tree
44
- MutableTreeVisitor.new.accept(self)
45
- end
46
-
47
- def to_sexp
48
- to_mutable_tree.to_sexp
49
- end
50
-
51
- private
52
- def handle_unary(visitor)
53
- case pn_type
54
- when :tok_throw
55
- visitor.visit_Throw(self)
56
- when :tok_delete
57
- visitor.visit_Delete(self)
58
- when :tok_return
59
- visitor.visit_Return(self)
60
- when :tok_unaryop
61
- m = {
62
- :jsop_void => :visit_Void,
63
- :jsop_typeof => :visit_Typeof,
64
- :jsop_pos => :visit_UnaryPositive,
65
- :jsop_neg => :visit_UnaryNegative,
66
- :jsop_bitnot => :visit_BitwiseNot,
67
- :jsop_not => :visit_Not,
68
- }[pn_op]
69
- raise "Unknown tok_unaryop type: #{pn_op}" unless m
70
- visitor.send(m, self)
71
- when :tok_rp
72
- visitor.visit_Parenthesis(self)
73
- when :tok_inc
74
- m = {
75
- :jsop_nameinc => :visit_PostfixIncrement,
76
- :jsop_propinc => :visit_PostfixIncrement,
77
- :jsop_eleminc => :visit_PostfixIncrement,
78
- :jsop_incname => :visit_PrefixIncrement,
79
- :jsop_incprop => :visit_PrefixIncrement,
80
- :jsop_incelem => :visit_PrefixIncrement,
81
- }[pn_op]
82
- raise "Unknown increment type: #{pn_op}" unless m
83
- visitor.send(m, self)
84
- when :tok_dec
85
- m = {
86
- :jsop_namedec => :visit_PostfixDecrement,
87
- :jsop_propdec => :visit_PostfixDecrement,
88
- :jsop_elemdec => :visit_PostfixDecrement,
89
- :jsop_decname => :visit_PrefixDecrement,
90
- :jsop_decprop => :visit_PrefixDecrement,
91
- :jsop_decelem => :visit_PrefixDecrement,
92
- }[pn_op]
93
- raise "Unknown decrement type: #{pn_op}" unless m
94
- visitor.send(m, self)
95
- when :tok_semi
96
- pn_kid.accept(visitor) if pn_kid
97
- else
98
- raise "unknown unary: #{pn_type}"
99
- end
100
- end
101
-
102
- def handle_list(visitor)
103
- case pn_type
104
- when :tok_shop
105
- handle_shiftop(visitor)
106
- when :tok_divop
107
- handle_divop(visitor)
108
- when :tok_eqop
109
- handle_eqop(visitor)
110
- when :tok_relop
111
- handle_relop(visitor)
112
- else
113
- m = {
114
- :tok_lc => :visit_SourceElements,
115
- :tok_var => :visit_VarStatement,
116
- :tok_let => :visit_LetStatement,
117
- :tok_comma => :visit_Comma,
118
- :tok_rc => :visit_ObjectLiteral,
119
- :tok_rb => :visit_ArrayLiteral,
120
- :tok_new => :visit_New,
121
- :tok_lp => :visit_FunctionCall,
122
- :tok_import => :visit_Import,
123
- :tok_export => :visit_Export,
124
- :tok_plus => :visit_OpAdd,
125
- :tok_or => :visit_Or,
126
- :tok_minus => :visit_OpSubtract,
127
- :tok_and => :visit_And,
128
- :tok_bitand => :visit_OpBitAnd,
129
- :tok_bitor => :visit_OpBitOr,
130
- :tok_bitxor => :visit_OpBitXor,
131
- :tok_star => :visit_OpMultiply,
132
- :tok_instanceof => :visit_InstanceOf,
133
- }[pn_type]
134
- raise "Unknown type: #{pn_type} at (#{line}, #{index})" unless m
135
- visitor.send(m, self)
136
- end
137
- end
138
-
139
- OP_TO_METHOD = {
140
- :jsop_null => :visit_Null,
141
- :jsop_true => :visit_True,
142
- :jsop_false => :visit_False,
143
- :jsop_this => :visit_This,
144
- }
145
- def handle_nullary(visitor)
146
- case pn_type
147
- when :tok_number
148
- visitor.visit_Number(self)
149
- when :tok_string
150
- visitor.visit_String(self)
151
- when :tok_regexp
152
- visitor.visit_Regexp(self)
153
- when :tok_name
154
- visitor.visit_Name(self)
155
- when :tok_comma
156
- visitor.visit_Null(self)
157
- when :tok_continue
158
- visitor.visit_Continue(self)
159
- when :tok_break
160
- visitor.visit_Break(self)
161
- when :tok_primary
162
- sym = OP_TO_METHOD[pn_op]
163
- raise "Unknown op #{pn_op}" unless sym
164
- visitor.send(sym, self)
165
- else
166
- raise "Unknown nullary type: #{pn_type}"
167
- end
168
- end
169
-
170
- def handle_binary(visitor)
171
- case pn_type
172
- when :tok_assign
173
- m = {
174
- :jsop_add => :visit_OpAddEqual,
175
- :jsop_sub => :visit_OpSubtractEqual,
176
- :jsop_nop => :visit_OpEqual,
177
- :jsop_mul => :visit_OpMultiplyEqual,
178
- :jsop_div => :visit_OpDivideEqual,
179
- :jsop_lsh => :visit_OpLShiftEqual,
180
- :jsop_rsh => :visit_OpRShiftEqual,
181
- :jsop_ursh => :visit_OpURShiftEqual,
182
- :jsop_bitand => :visit_OpBitAndEqual,
183
- :jsop_bitxor => :visit_OpBitXorEqual,
184
- :jsop_bitor => :visit_OpBitOrEqual,
185
- :jsop_mod => :visit_OpModEqual,
186
- }[pn_op]
187
- raise "Unknown assign op #{pn_op}" unless m
188
- visitor.send(m, self)
189
- when :tok_divop
190
- handle_divop(visitor)
191
- when :tok_shop
192
- handle_shiftop(visitor)
193
- when :tok_eqop
194
- handle_eqop(visitor)
195
- when :tok_colon
196
- m = {
197
- :jsop_getter => :visit_GetterProperty,
198
- :jsop_setter => :visit_SetterProperty,
199
- :jsop_nop => :visit_Property
200
- }[pn_op]
201
- raise "Unknown assign op #{pn_op}" unless m
202
- visitor.send(m, self)
203
- when :tok_relop
204
- handle_relop(visitor)
205
- when :tok_for
206
- if pn_left.pn_type == :tok_in
207
- visitor.visit_ForIn(self)
208
- else
209
- visitor.visit_For(self)
210
- end
211
- else
212
- m = {
213
- :tok_while => :visit_While,
214
- :tok_with => :visit_With,
215
- :tok_default => :visit_Default,
216
- :tok_case => :visit_Case,
217
- :tok_switch => :visit_Switch,
218
- :tok_do => :visit_DoWhile,
219
- :tok_instanceof => :visit_InstanceOf,
220
- :tok_in => :visit_In,
221
- :tok_and => :visit_And,
222
- :tok_or => :visit_Or,
223
- :tok_star => :visit_OpMultiply,
224
- :tok_lb => :visit_BracketAccess,
225
- :tok_minus => :visit_OpSubtract,
226
- :tok_plus => :visit_OpAdd,
227
- :tok_bitor => :visit_OpBitOr,
228
- :tok_bitxor => :visit_OpBitXor,
229
- :tok_bitand => :visit_OpBitAnd,
230
- }[pn_type]
231
- raise "Unknown binary type: #{pn_type}" unless m
232
- visitor.send(m, self)
233
- end
234
- end
235
-
236
- def handle_shiftop(visitor)
237
- m = {
238
- :jsop_ursh => :visit_OpURShift,
239
- :jsop_rsh => :visit_OpRShift,
240
- :jsop_lsh => :visit_OpLShift,
241
- }[pn_op]
242
- raise "Unknown shift op #{pn_op} at (#{line}, #{index})" unless m
243
- visitor.send(m, self)
244
- end
245
-
246
- def handle_divop(visitor)
247
- m = {
248
- :jsop_div => :visit_OpDivide,
249
- :jsop_mod => :visit_OpMod,
250
- }[pn_op]
251
- raise "Unknown assign op #{pn_op} at (#{line}, #{index})" unless m
252
- visitor.send(m, self)
253
- end
254
-
255
- def handle_eqop(visitor)
256
- m = {
257
- :jsop_strictne => :visit_StrictNotEqual,
258
- :jsop_stricteq => :visit_StrictEqual,
259
- :jsop_ne => :visit_NotEqual,
260
- :jsop_eq => :visit_Equal,
261
- }[pn_op]
262
- raise "Unknown equal op #{pn_op} at (#{line}, #{index})" unless m
263
- visitor.send(m, self)
264
- end
265
-
266
- def handle_relop(visitor)
267
- m = {
268
- :jsop_ge => :visit_GreaterThanOrEqual,
269
- :jsop_le => :visit_LessThanOrEqual,
270
- :jsop_gt => :visit_GreaterThan,
271
- :jsop_lt => :visit_LessThan,
272
- }[pn_op]
273
- raise "Unknown relop #{pn_op} at (#{line}, #{index})" unless m
274
- visitor.send(m, self)
275
- end
276
-
277
- def raise_parse_error(message, file_name, line_number)
278
- raise Johnson::Parser::SyntaxError.new(message, file_name, line_number)
279
- end
280
- end
281
- end
282
- end
@@ -1,64 +0,0 @@
1
- # FIXME: This definition should probably be somewhere else
2
- class Array
3
- def js_property?(name)
4
- name == :length
5
- end
6
- def js_properties
7
- (0...size).to_a
8
- end
9
- end
10
-
11
- module Johnson
12
- module SpiderMonkey
13
- module JSLandProxy #:nodoc:
14
- def self.send_with_possible_block(target, symbol, args)
15
- block = args.pop if args.last.is_a?(RubyLandProxy) && args.last.function?
16
- target.__send__(symbol, *args, &block)
17
- end
18
-
19
- def self.treat_all_properties_as_methods(target)
20
- def target.js_property?(name); true; end
21
- end
22
-
23
- def self.js_property?(target, name)
24
- # FIXME: that rescue is gross; handles, e.g., "name?"
25
- (target.send(:instance_variable_defined?, "@#{name}") rescue false) ||
26
- (target.respond_to?(:js_property?) && target.__send__(:js_property?, name))
27
- end
28
-
29
- def self.autovivified(target, attribute)
30
- target.send(:__johnson_js_properties)[attribute]
31
- end
32
-
33
- def self.autovivified?(target, attribute)
34
- target.respond_to?(:__johnson_js_properties) &&
35
- target.send(:__johnson_js_properties).key?(attribute)
36
- end
37
-
38
- def self.autovivify(target, attribute, value)
39
- (class << target; self; end).instance_eval do
40
- unless target.respond_to?(:__johnson_js_properties)
41
- define_method(:__johnson_js_properties) do
42
- @__johnson_js_properties ||= {}
43
- end
44
- end
45
-
46
- define_method(:"#{attribute}=") do |arg|
47
- send(:__johnson_js_properties)[attribute] = arg
48
- end
49
-
50
- define_method(:"#{attribute}") do |*args|
51
- js_prop = send(:__johnson_js_properties)[attribute]
52
- if js_prop.is_a?(RubyLandProxy) && js_prop.function?
53
- js_prop.call_using(self, *args)
54
- else
55
- js_prop
56
- end
57
- end
58
- end
59
-
60
- target.send(:"#{attribute}=", value)
61
- end
62
- end
63
- end
64
- end