johnson 2.0.0.pre1 → 2.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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,274 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
2
-
3
- module Johnson
4
- module SpiderMonkey
5
- class RubyLandProxyTest < Johnson::TestCase
6
- def setup
7
- @runtime = Johnson::Runtime.new(Johnson::SpiderMonkey::Runtime)
8
- end
9
-
10
- def test_constructing_a_proxy_directly_asplodes
11
- assert_raise(Johnson::Error) { Johnson::SpiderMonkey::RubyLandProxy.new }
12
- end
13
-
14
- def test_objects_get_wrapped_as_proxies
15
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, @runtime.evaluate("x = {}"))
16
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, @runtime.evaluate("new Object()"))
17
- end
18
-
19
- def test_proxies_get_unwrapped_when_roundtripping
20
- proxy = @runtime.evaluate("x = {}")
21
- @runtime["y"] = proxy
22
- assert(@runtime.evaluate("x === y"))
23
- end
24
-
25
- def test_reponds_to?
26
- proxy = @runtime.evaluate("x = {}")
27
- assert ! proxy.respond_to?(:foo)
28
- assert ! proxy.respond_to?("foo")
29
- end
30
-
31
- def test_array_indexable
32
- proxy = @runtime.evaluate("var x = [1,2,3]; x")
33
- assert_equal(1, proxy[0])
34
- assert_equal(1, proxy['0'])
35
-
36
- proxy[0] = 10
37
- assert_js_equal(10, 'x[0]')
38
- end
39
-
40
- def test_hash_indexable
41
- proxy = @runtime.evaluate("var x = { 0: 1, 1: 2, 2: 3 }; x")
42
- assert_equal(1, proxy[0])
43
- assert_equal(1, proxy['0'])
44
-
45
- proxy[0] = 10
46
- assert_js_equal(10, 'x[0]')
47
- end
48
-
49
- def test_functions_get_wrapped_as_proxies
50
- f = @runtime.evaluate("function() {}")
51
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
52
- assert(f.function?)
53
- end
54
-
55
- def test_function?
56
- f = @runtime.evaluate("function() {}")
57
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
58
- assert(f.function?)
59
-
60
- f = @runtime.evaluate("new Object()")
61
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, f)
62
- assert(!f.function?)
63
- end
64
-
65
- def test_calling_non_functions_complains
66
- o = @runtime.evaluate("new Object()")
67
- assert_equal(false, o.respond_to?(:call))
68
- assert_raise(NoMethodError) { o.call }
69
- end
70
-
71
- def test_functions_can_be_called
72
- f = @runtime.evaluate("function() { return 42; }")
73
- assert_equal(42, f.call)
74
- end
75
-
76
- def test_functions_can_be_called_with_args
77
- f = @runtime.evaluate("function(x) { return x * 2; }")
78
- assert_equal(84, f.call(42))
79
- end
80
-
81
- def test_functions_can_be_used_as_procs
82
- f = @runtime.evaluate("function(x) { return x * 2; }")
83
- a = [1, 2, 3]
84
-
85
- assert_equal([2, 4, 6], a.collect(&f))
86
- end
87
-
88
- def test_function_proxies_are_called_with_a_global_this
89
- f = @runtime.evaluate("x = 42; function() { return this.x; }")
90
- assert_equal(42, f.call)
91
- end
92
-
93
- def test_can_be_indexed_by_string
94
- proxy = @runtime.evaluate("x = { foo: 42 }")
95
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, proxy)
96
-
97
- assert_equal(42, proxy["foo"])
98
-
99
- proxy["foo"] = 99
100
- proxy["bar"] = 42
101
-
102
- assert_js_equal(99, "x.foo")
103
- assert_equal(99, proxy["foo"])
104
- assert_equal(42, proxy["bar"])
105
- end
106
-
107
- def test_can_be_indexed_by_symbol
108
- proxy = @runtime.evaluate("x = { foo: 42 }")
109
- assert_kind_of(Johnson::SpiderMonkey::RubyLandProxy, proxy)
110
-
111
- assert_equal(42, proxy[:foo])
112
-
113
- proxy[:foo] = 99
114
- proxy[:bar] = 42
115
-
116
- assert_js_equal(99, "x.foo")
117
- assert_equal(99, proxy[:foo])
118
- assert_equal(42, proxy[:bar])
119
- end
120
-
121
- def test_multilevel_indexing_works
122
- proxy = @runtime.evaluate("x = { foo: { bar: 42 , baz: function() { return 42 } } }")
123
- assert_equal(42, proxy["foo"]["bar"])
124
- assert_equal(42, proxy["foo"]["baz"].call)
125
- end
126
-
127
- def test_respond_to_works
128
- proxy = @runtime.evaluate("x = { foo: 42 }")
129
- assert(!proxy.respond_to?(:bar))
130
- assert(proxy.respond_to?(:foo))
131
- end
132
-
133
- def test_respond_to_always_returns_true_for_assignment
134
- proxy = @runtime.evaluate("x = {}")
135
- assert(proxy.respond_to?(:bar=))
136
- end
137
-
138
- def test_accessor
139
- proxy = @runtime.evaluate("x = { foo: 42 }")
140
- assert_equal(42, proxy.foo)
141
- end
142
-
143
- def test_mutator
144
- proxy = @runtime.evaluate("x = {}")
145
- proxy.foo = 42
146
-
147
- assert_js_equal(42, "x.foo")
148
- assert_equal(42, proxy.foo)
149
- end
150
-
151
- def test_method_with_no_arguments
152
- proxy = @runtime.evaluate("x = { foo: function() { return 42 } }")
153
- assert_equal(42, proxy.foo)
154
- end
155
-
156
- def test_method_with_one_argument
157
- proxy = @runtime.evaluate("f = { f: function(x) { return x * 2 } }")
158
- assert_equal(84, proxy.f(42))
159
- end
160
-
161
- def test_method_with_multiple_arguments
162
- proxy = @runtime.evaluate("x = { add: function(x, y) { return x + y } }")
163
- assert_equal(42, proxy.add(40, 2))
164
- end
165
-
166
- def test_supports_each_on_arrays
167
- proxy = @runtime.evaluate("[1, 2, 3]")
168
- values = []
169
-
170
- proxy.each { |n| values << n }
171
- assert_equal([1, 2, 3], values)
172
- end
173
-
174
- def test_supports_each_on_things_that_arent_arrays
175
- proxy = @runtime.evaluate("x = { foo: 'fooval', bar: 'barval' }; x[0] = 42; x")
176
- values = {}
177
-
178
- proxy.each { |k, v| values[k] = v }
179
- assert_equal({ 'foo' => 'fooval', 'bar' => 'barval', 0 => 42 }, values)
180
- end
181
-
182
- def test_each_passes_an_exception
183
- proxy = @runtime.evaluate("x = { foo: 'fooval', bar: 'barval' }; x[0] = 42; x")
184
- values = {}
185
-
186
- assert_raise(RuntimeError) do
187
- proxy.each do |k, v|
188
- values[k] = v
189
- raise "splat" if values.keys.size == 2
190
- end
191
- end
192
- assert_equal({ 'foo' => 'fooval', 'bar' => 'barval' }, values)
193
- end
194
-
195
- def test_is_enumerable
196
- proxy = @runtime.evaluate("[1, 2, 3]")
197
- assert_kind_of(Enumerable, proxy)
198
-
199
- assert_equal([2, 4, 6], proxy.collect { |n| n * 2 })
200
- end
201
-
202
- def test_has_a_length
203
- proxy = @runtime.evaluate("[1, 2, 3]")
204
- assert_equal(3, proxy.length)
205
- end
206
-
207
- def test_length_is_aliased_as_size
208
- proxy = @runtime.evaluate("[1, 2, 3]")
209
- assert_equal(3, proxy.size)
210
- end
211
-
212
- def test_length_for_arrays_ignores_non_numeric_properties
213
- proxy = @runtime.evaluate("x = [1, 2, 3]; x['foo'] = 'bar'; x")
214
- assert_equal(3, proxy.length)
215
- end
216
-
217
- def test_length_for_objects_includes_all_properties
218
- proxy = @runtime.evaluate("x = { foo: 'foo', bar: 'bar', 0: 42 }")
219
- assert_equal(3, proxy.length)
220
- end
221
-
222
- def test_raises_in_js
223
- original = RuntimeError.new("an exception")
224
- @runtime["foo"] = lambda { raise original }
225
- raised = @runtime.evaluate "x = null; try { foo(); } catch(ex) { x = ex; }; x"
226
- assert_kind_of RuntimeError, raised
227
- assert_equal original, raised
228
- assert_equal "an exception", raised.message
229
- end
230
-
231
- def test_uncaught_exceptions_have_decent_stack_trace
232
- @runtime["foo"] = lambda { raise RuntimeError.new("an exception") }
233
- line_number = __LINE__ - 1 # reference to previous line
234
- begin
235
- @runtime.evaluate "foo()", "myfile", 7
236
- rescue RuntimeError => e
237
- assert_equal "an exception", e.message
238
- first_js_frame = e.stack_deck.detect {|q| q.language == 'JavaScript' }
239
- assert_equal "myfile:7", "#{first_js_frame.filename}:#{first_js_frame.lineno}"
240
- assert_match %r/#{__FILE__}:#{line_number}\b/, e.stack_deck[0].to_s
241
- else
242
- flunk "exception was not raised"
243
- end
244
- end
245
-
246
- def test_array_multiple_assignment
247
- a = @runtime.evaluate("[1,2,3]")
248
- x, y, z = a
249
-
250
- assert_equal(1, x)
251
- assert_equal(2, y)
252
- assert_equal(3, z)
253
- end
254
-
255
- # FIXME: If you uncomment this test, we get this error:
256
- #
257
- # JS API usage error: the address passed to JS_AddNamedRoot currently holds an
258
- # invalid jsval. This is usually caused by a missing call to JS_RemoveRoot.
259
- # The root's name is "ruby_land_proxy.c[210]:native_call: proxy_value".
260
- # Assertion failure: root_points_to_gcArenaList, at jsgc.c:2618
261
- #
262
- # WTF?
263
- #
264
- # -Aaron
265
- #
266
- #def test_throwing_in_js_goes_to_ruby
267
- # func = @runtime.evaluate('function () { throw "foo"; }')
268
- # assert_raise(Johnson::Error) {
269
- # func.call
270
- # }
271
- #end
272
- end
273
- end
274
- end
@@ -1,41 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "/../../helper"))
2
-
3
- module Johnson
4
- module SpiderMonkey
5
- class RuntimeTest < Johnson::TestCase
6
- def setup
7
- @runtime = Johnson::SpiderMonkey::Runtime.new
8
- end
9
-
10
- def test_can_create_more_than_one_without_barfing
11
- assert_nothing_raised {
12
- Johnson::SpiderMonkey::Runtime.new
13
- }
14
- end
15
-
16
- def test_default_is_no_debugger
17
- assert_equal false, @runtime.debugger?
18
- end
19
-
20
- def test_only_accepts_real_debugger_instance
21
- assert_raises(TypeError) {
22
- @runtime.debugger = 17
23
- }
24
- assert_raises(TypeError) {
25
- @runtime.debugger = "Yes please!"
26
- }
27
- assert_raises(TypeError) {
28
- @runtime.debugger = Object.new
29
- }
30
- assert_raises(TypeError) {
31
- @runtime.debugger = @runtime
32
- }
33
- end
34
-
35
- def test_reports_a_debugger_is_registered
36
- @runtime.debugger = Johnson::SpiderMonkey::Debugger.new(nil)
37
- assert @runtime.debugger?
38
- end
39
- end
40
- end
41
- end
@@ -1,9 +0,0 @@
1
- *.pdb
2
- *.ncb
3
- *.opt
4
- *.plg
5
- Debug
6
- Release
7
- Makefile
8
- jscpucfg
9
- jsautocfg.h
@@ -1,449 +0,0 @@
1
- # -*- Mode: makefile -*-
2
- #
3
- # ***** BEGIN LICENSE BLOCK *****
4
- # Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
- #
6
- # The contents of this file are subject to the Mozilla Public License Version
7
- # 1.1 (the "License"); you may not use this file except in compliance with
8
- # the License. You may obtain a copy of the License at
9
- # http://www.mozilla.org/MPL/
10
- #
11
- # Software distributed under the License is distributed on an "AS IS" basis,
12
- # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
- # for the specific language governing rights and limitations under the
14
- # License.
15
- #
16
- # The Original Code is Mozilla Communicator client code, released
17
- # March 31, 1998.
18
- #
19
- # The Initial Developer of the Original Code is
20
- # Netscape Communications Corporation.
21
- # Portions created by the Initial Developer are Copyright (C) 1998
22
- # the Initial Developer. All Rights Reserved.
23
- #
24
- # Contributor(s):
25
- #
26
- # Alternatively, the contents of this file may be used under the terms of
27
- # either of the GNU General Public License Version 2 or later (the "GPL"),
28
- # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
- # in which case the provisions of the GPL or the LGPL are applicable instead
30
- # of those above. If you wish to allow use of your version of this file only
31
- # under the terms of either the GPL or the LGPL, and not to allow others to
32
- # use your version of this file under the terms of the MPL, indicate your
33
- # decision by deleting the provisions above and replace them with the notice
34
- # and other provisions required by the GPL or the LGPL. If you do not delete
35
- # the provisions above, a recipient may use your version of this file under
36
- # the terms of any one of the MPL, the GPL or the LGPL.
37
- #
38
- # ***** END LICENSE BLOCK *****
39
-
40
- DEPTH = ../..
41
- topsrcdir = @top_srcdir@
42
- srcdir = @srcdir@
43
- VPATH = @srcdir@
44
-
45
- include $(DEPTH)/config/autoconf.mk
46
-
47
- MODULE = js
48
- LIBRARY_NAME = mozjs
49
- LIB_IS_C_ONLY = 1
50
- GRE_MODULE = 1
51
-
52
- ifdef GNU_CC
53
- ifdef INTEL_CC
54
- # icc gets special optimize flags
55
- ifdef MOZ_PROFILE_GENERATE
56
- MODULE_OPTIMIZE_FLAGS = -O0
57
- else
58
- MODULE_OPTIMIZE_FLAGS = -O2 -ip
59
- #XXX: do we want different INTERP_OPTIMIZER flags here?
60
- endif
61
- else
62
- MODULE_OPTIMIZE_FLAGS = -Os -fstrict-aliasing $(MOZ_OPTIMIZE_SIZE_TWEAK)
63
- # Special optimization flags for jsinterp.c
64
- INTERP_OPTIMIZER = -O3 -fstrict-aliasing
65
- endif
66
- else
67
- ifeq ($(OS_ARCH),SunOS)
68
- MODULE_OPTIMIZE_FLAGS = -xO4
69
- endif
70
- ifeq ($(OS_ARCH),WINNT)
71
- MODULE_OPTIMIZE_FLAGS = -O2 -GL
72
- endif
73
- endif
74
-
75
- ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
76
- LIBRARY_NAME = js$(MOZ_BITS)$(VERSION_NUMBER)
77
- RESFILE = js$(MOZ_BITS)40.res
78
- endif
79
-
80
- PACKAGE_FILE = js.pkg
81
-
82
- # JavaScript must be built shared, even for static builds, as it is used by
83
- # other modules which are always built shared. Failure to do so results in
84
- # the js code getting copied into xpinstall and jsd as well as mozilla-bin,
85
- # and then the static data cells used for locking no longer work.
86
-
87
- ifndef JS_STATIC_BUILD
88
- FORCE_SHARED_LIB = 1
89
- endif
90
-
91
- CSRCS = \
92
- jsapi.c \
93
- jsarena.c \
94
- jsarray.c \
95
- jsatom.c \
96
- jsbool.c \
97
- jscntxt.c \
98
- jsdate.c \
99
- jsdbgapi.c \
100
- jsdhash.c \
101
- jsdtoa.c \
102
- jsemit.c \
103
- jsexn.c \
104
- jsfun.c \
105
- jsgc.c \
106
- jshash.c \
107
- jsinterp.c \
108
- jsinvoke.c \
109
- jsiter.c \
110
- jslock.c \
111
- jslog2.c \
112
- jslong.c \
113
- jsmath.c \
114
- jsnum.c \
115
- jsobj.c \
116
- jsopcode.c \
117
- jsparse.c \
118
- jsprf.c \
119
- jsregexp.c \
120
- jsscan.c \
121
- jsscope.c \
122
- jsscript.c \
123
- jsstr.c \
124
- jsutil.c \
125
- jsxdrapi.c \
126
- jsxml.c \
127
- prmjtime.c \
128
- $(NULL)
129
-
130
- ifdef HAVE_DTRACE
131
- CSRCS += \
132
- jsdtracef.c
133
- endif
134
-
135
- EXPORTS = \
136
- jsautocfg.h \
137
- jsautokw.h \
138
- js.msg \
139
- jsapi.h \
140
- jsarray.h \
141
- jsarena.h \
142
- jsatom.h \
143
- jsbit.h \
144
- jsbool.h \
145
- jsclist.h \
146
- jscntxt.h \
147
- jscompat.h \
148
- jsconfig.h \
149
- jsdate.h \
150
- jsdbgapi.h \
151
- jsdhash.h \
152
- jsdtoa.h \
153
- jsemit.h \
154
- jsfun.h \
155
- jsgc.h \
156
- jshash.h \
157
- jsinterp.h \
158
- jsiter.h \
159
- jslock.h \
160
- jslong.h \
161
- jsmath.h \
162
- jsnum.h \
163
- jsobj.h \
164
- jsopcode.tbl \
165
- jsopcode.h \
166
- jsotypes.h \
167
- jsparse.h \
168
- jsprf.h \
169
- jsproto.tbl \
170
- jsprvtd.h \
171
- jspubtd.h \
172
- jsregexp.h \
173
- jsscan.h \
174
- jsscope.h \
175
- jsscript.h \
176
- jsstddef.h \
177
- jsstr.h \
178
- jstypes.h \
179
- jsutil.h \
180
- jsxdrapi.h \
181
- jsxml.h \
182
- $(NULL)
183
-
184
- ifdef HAVE_DTRACE
185
- EXPORTS += \
186
- jsdtracef.h \
187
- javascript-trace.h \
188
- $(NULL)
189
- endif
190
-
191
- ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
192
- EXPORTS += jscpucfg.h
193
- endif
194
-
195
- JS_SAFE_ARENA = 1
196
-
197
- DASH_R = -r
198
-
199
- ifneq (,$(filter OS2 WINCE WINNT,$(OS_ARCH)))
200
- SDK_LIBRARY = $(IMPORT_LIBRARY)
201
- else
202
- SDK_LIBRARY = $(SHARED_LIBRARY)
203
- endif
204
-
205
- include $(topsrcdir)/config/config.mk
206
-
207
- EXTRA_DSO_LDOPTS += $(NSPR_LIBS)
208
-
209
- ifdef MOZ_MEMORY
210
- ifeq ($(OS_ARCH),SunOS)
211
- EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DIST)/lib)
212
- endif
213
- endif
214
-
215
- # When using gcc the assembly is inlined in the C-file (see jslock.c)
216
- ifeq ($(OS_ARCH),SunOS)
217
- ifneq (86,$(findstring 86,$(OS_TEST)))
218
- ifndef GNU_CC
219
- ASFILES = lock_$(OS_ARCH).s
220
- endif
221
- endif
222
- endif
223
-
224
- ifndef BUILD_OPT
225
- MOCHAFILE = 1
226
- endif
227
-
228
- ifndef NSBUILDROOT
229
- JSJAVA_STUBHEADERS = \
230
- -I$(topsrcdir)/sun-java/include/_gen \
231
- -I$(topsrcdir)/sun-java/netscape/javascript/_jri \
232
- -I$(topsrcdir)/sun-java/netscape/security/_jri
233
- else
234
- JSJAVA_STUBHEADERS = -I$(JRI_GEN_DIR) -I$(JDK_GEN_DIR)
235
- endif
236
-
237
- JSJAVA_CFLAGS = \
238
- -I$(topsrcdir)/sun-java/md-include \
239
- -I$(topsrcdir)/sun-java/include \
240
- $(JSJAVA_STUBHEADERS)
241
-
242
- # Define keyword generator before rules.mk, see bug 323979 comment 50
243
-
244
- HOST_SIMPLE_PROGRAMS += host_jskwgen$(HOST_BIN_SUFFIX)
245
- GARBAGE += jsautokw.h host_jskwgen$(HOST_BIN_SUFFIX)
246
-
247
- ifdef HAVE_DTRACE
248
- ifneq ($(OS_ARCH),Darwin)
249
- DTRACE_PROBE_OBJ = $(LIBRARY_NAME)-dtrace.$(OBJ_SUFFIX)
250
- endif
251
- MOZILLA_DTRACE_SRC = $(srcdir)/javascript-trace.d
252
- endif
253
-
254
- include $(topsrcdir)/config/rules.mk
255
-
256
- DEFINES += -DEXPORT_JS_API
257
-
258
- INCLUDES += -I$(srcdir)
259
-
260
- # MSVC '-Gy' cc flag and '/OPT:REF' linker flag cause JS_GetArgument and
261
- # JS_GetLocalVariable to be folded to the same address by the linker,
262
- # leading to a crash on startup. See bug 151066. So, in optimized builds,
263
- # add the /OPT:NOICF flag, which turns off 'identical COMDAT folding'.
264
- #
265
- # N.B.: 'identical COMDAT folding' that folds functions whose addresses
266
- # are taken violates the ISO C and C++ standards.
267
- ifndef MOZ_DEBUG
268
- ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
269
- LDFLAGS += -OPT:NOICF
270
- endif
271
- endif
272
-
273
- GARBAGE += jscpucfg.o jsautocfg.h jsautocfg.tmp jscpucfg
274
-
275
- ifneq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
276
- TARGETS += jscpucfg$(HOST_BIN_SUFFIX)
277
- endif
278
-
279
- ifdef JS_SAFE_ARENA
280
- DEFINES += -DJS_USE_SAFE_ARENA
281
- endif
282
-
283
- ifdef JS_THREADSAFE
284
- DEFINES += -DJS_THREADSAFE
285
- endif
286
-
287
- ifdef JS_NO_THIN_LOCKS
288
- DEFINES += -DJS_USE_ONLY_NSPR_LOCKS
289
- endif
290
-
291
- ifdef JS_VERSION
292
- DEFINES += -DJS_VERSION=$(JS_VERSION)
293
- endif
294
-
295
- ifneq ($(findstring -L,$(NSPR_LIBS)),)
296
- NSPR_STATIC_PATH = $(subst -L,,$(findstring -L,$(NSPR_LIBS)))
297
- else
298
- NSPR_STATIC_PATH = $(DIST)/lib
299
- endif
300
-
301
- ifdef MOZ_SHARK
302
- DEFINES += -DMOZ_SHARK
303
- CFLAGS += -F/System/Library/PrivateFrameworks
304
- LDFLAGS += -F/System/Library/PrivateFrameworks -framework CHUD
305
- endif
306
-
307
- LDFLAGS += $(pathsubst -l%,$(NSPR_STATIC_PATH)/%.a,$(NSPR_LIBS))
308
-
309
- # BeOS and HP-UX do not require the extra linking of "-lm"
310
- ifeq (,$(filter BeOS HP-UX WINNT WINCE OpenVMS,$(OS_ARCH)))
311
- LDFLAGS += -lm
312
- endif
313
-
314
- # Prevent floating point errors caused by VC++ optimizations
315
- ifeq ($(OS_ARCH)_$(GNU_CC),WINNT_)
316
- ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))
317
- CFLAGS += -Op
318
- else
319
- CFLAGS += -fp:precise
320
- endif
321
- endif # WINNT
322
-
323
- ifeq ($(OS_ARCH),FreeBSD)
324
- LDFLAGS += -pthread
325
- endif
326
- ifeq ($(OS_ARCH),IRIX)
327
- ifdef USE_N32
328
- DASH_R += -n32
329
- endif
330
- endif
331
- ifeq ($(OS_ARCH),Linux)
332
- LDFLAGS += -ldl
333
- endif
334
- ifeq ($(OS_ARCH),OSF1)
335
- LDFLAGS += -lc_r
336
- endif
337
- ifeq ($(OS_ARCH),SunOS)
338
- ifeq ($(TARGET_CPU),sparc)
339
-
340
- ifdef JS_ULTRASPARC_OPTS
341
- DEFINES += -DULTRA_SPARC
342
- ifdef GNU_CC
343
- CFLAGS += -Wa,-xarch=v8plus,-DULTRA_SPARC,-P,-L,-D_ASM,-D__STDC__=0
344
- CXXFLAGS += -Wa,-xarch=v8plus,-DULTRA_SPARC,-P,-L,-D_ASM,-D__STDC__=0,-K,PIC
345
- else
346
- ASFLAGS += -xarch=v8plus -DULTRA_SPARC -P -L -D_ASM -D__STDC__=0 -K PIC
347
- endif # GNU_CC
348
- endif # JS_ULTRASPARC_OPTS
349
-
350
- endif
351
- ifeq ($(OS_RELEASE),4.1)
352
- LDFLAGS += -ldl -lnsl
353
- else
354
- LDFLAGS += -lposix4 -ldl -lnsl -lsocket
355
- endif
356
- endif
357
-
358
- # Allow building jsinterp.c with special optimization flags
359
- ifdef INTERP_OPTIMIZER
360
- jsinterp.$(OBJ_SUFFIX): MODULE_OPTIMIZE_FLAGS=$(INTERP_OPTIMIZER)
361
- endif
362
-
363
- ifeq ($(OS_ARCH),IRIX)
364
- ifndef GNU_CC
365
- _COMPILE_CFLAGS = $(patsubst -O%,-O1,$(COMPILE_CFLAGS))
366
- jsapi.o jsxdrapi.o jsarena.o jsarray.o jsatom.o jsemit.o jsfun.o jsinterp.o jsregexp.o jsparse.o jsopcode.o jsscript.o: %.o: %.c Makefile.in
367
- $(REPORT_BUILD)
368
- @$(MAKE_DEPS_AUTO_CC)
369
- $(CC) -o $@ -c $(_COMPILE_CFLAGS) $<
370
- endif
371
- endif
372
-
373
- # An AIX Optimization bug causes PR_dtoa() & JS_dtoa to produce wrong result.
374
- # This suppresses optimization for this single compilation unit.
375
- ifeq ($(OS_ARCH),AIX)
376
- jsatom.o: jsatom.c Makefile.in
377
- $(REPORT_BUILD)
378
- @$(MAKE_DEPS_AUTO_CC)
379
- $(CC) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
380
- jsdtoa.o: jsdtoa.c Makefile.in
381
- $(REPORT_BUILD)
382
- @$(MAKE_DEPS_AUTO_CC)
383
- $(CC) -o $@ -c $(filter-out $(MOZ_OPTIMIZE_FLAGS), $(COMPILE_CFLAGS)) $<
384
- endif
385
-
386
- jsopcode.h jsopcode.c: jsopcode.tbl
387
-
388
- ifeq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH)))
389
- jsautocfg.h:
390
- touch $@
391
- else
392
- ifeq ($(OS_ARCH),WINCE)
393
- jsautocfg.h:
394
- touch $@
395
- else
396
- jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
397
- @rm -f $@ jsautocfg.tmp
398
- ./jscpucfg > jsautocfg.tmp
399
- mv jsautocfg.tmp $@
400
- endif
401
- endif
402
-
403
- # jscpucfg is a strange target
404
- # Needs to be built with the host compiler but needs to include
405
- # the mdcpucfg for the target so it needs the appropriate target defines
406
- ifdef HOST_NSPR_MDCPUCFG
407
- HOST_CC := $(HOST_CC) -DMDCPUCFG=$(TARGET_NSPR_MDCPUCFG)
408
- HOST_CFLAGS := $(patsubst -DXP_%,,$(HOST_CFLAGS))
409
- endif
410
-
411
- ifdef CROSS_COMPILE
412
- # jscpucfg needs to know when it's supposed to produce a config for the target
413
- JSCPUCFG_DEFINES = $(ACDEFINES)
414
- endif
415
-
416
- ifeq ($(OS_ARCH),QNX)
417
- ifneq ($(OS_TARGET),NTO)
418
- # QNX's compiler apparently can't build a binary directly from a source file.
419
- jscpucfg.o: jscpucfg.c Makefile.in
420
- $(HOST_CC) $(HOST_CFLAGS) -c $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) -o $@ $<
421
-
422
- jscpucfg: jscpucfg.o
423
- $(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) -o $@ $<
424
- endif
425
- else
426
- ifeq ($(OS_ARCH),WINCE)
427
- jscpucfg$(HOST_BIN_SUFFIX):
428
- echo no need to build jscpucfg $<
429
- else
430
- jscpucfg$(HOST_BIN_SUFFIX): jscpucfg.c Makefile.in
431
- $(HOST_CC) $(HOST_CFLAGS) $(JSCPUCFG_DEFINES) $(DEFINES) $(NSPR_CFLAGS) $(OUTOPTION)$@ $<
432
- endif
433
- endif
434
-
435
- # Extra dependancies and rules for keyword switch code
436
- jsscan.$(OBJ_SUFFIX): jsautokw.h jskeyword.tbl
437
-
438
- host_jskwgen.$(OBJ_SUFFIX): jsconfig.h jskeyword.tbl
439
-
440
- jsautokw.h: host_jskwgen$(HOST_BIN_SUFFIX)
441
- ./host_jskwgen$(HOST_BIN_SUFFIX) $@
442
-
443
- ifdef HAVE_DTRACE
444
- javascript-trace.h: $(srcdir)/javascript-trace.d
445
- dtrace -h -s $(srcdir)/javascript-trace.d -o javascript-trace.h.in
446
- sed 's/if _DTRACE_VERSION/ifdef INCLUDE_MOZILLA_DTRACE/' \
447
- javascript-trace.h.in > javascript-trace.h
448
- endif
449
-