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,345 +0,0 @@
1
- /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
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
- * IBM Corp.
26
- *
27
- * Alternatively, the contents of this file may be used under the terms of
28
- * either of the GNU General Public License Version 2 or later (the "GPL"),
29
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30
- * in which case the provisions of the GPL or the LGPL are applicable instead
31
- * of those above. If you wish to allow use of your version of this file only
32
- * under the terms of either the GPL or the LGPL, and not to allow others to
33
- * use your version of this file under the terms of the MPL, indicate your
34
- * decision by deleting the provisions above and replace them with the notice
35
- * and other provisions required by the GPL or the LGPL. If you do not delete
36
- * the provisions above, a recipient may use your version of this file under
37
- * the terms of any one of the MPL, the GPL or the LGPL.
38
- *
39
- * ***** END LICENSE BLOCK ***** */
40
-
41
- /*
42
- * PR assertion checker.
43
- */
44
- #include "jsstddef.h"
45
- #include <stdio.h>
46
- #include <stdlib.h>
47
- #include "jstypes.h"
48
- #include "jsutil.h"
49
-
50
- #ifdef WIN32
51
- # include <windows.h>
52
- #endif
53
-
54
- JS_PUBLIC_API(void) JS_Assert(const char *s, const char *file, JSIntn ln)
55
- {
56
- fprintf(stderr, "Assertion failure: %s, at %s:%d\n", s, file, ln);
57
- #if defined(WIN32)
58
- DebugBreak();
59
- exit(3);
60
- #elif defined(XP_OS2) || (defined(__GNUC__) && defined(__i386))
61
- asm("int $3");
62
- #endif
63
- abort();
64
- }
65
-
66
- #ifdef JS_BASIC_STATS
67
-
68
- #include <math.h>
69
- #include <string.h>
70
- #include "jscompat.h"
71
- #include "jsbit.h"
72
-
73
- /*
74
- * Histogram bins count occurrences of values <= the bin label, as follows:
75
- *
76
- * linear: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 or more
77
- * 2**x: 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 or more
78
- * 10**x: 0, 1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9 or more
79
- *
80
- * We wish to count occurrences of 0 and 1 values separately, always.
81
- */
82
- static uint32
83
- BinToVal(uintN logscale, uintN bin)
84
- {
85
- JS_ASSERT(bin <= 10);
86
- if (bin <= 1 || logscale == 0)
87
- return bin;
88
- --bin;
89
- if (logscale == 2)
90
- return JS_BIT(bin);
91
- JS_ASSERT(logscale == 10);
92
- return (uint32) pow(10, (double) bin);
93
- }
94
-
95
- static uintN
96
- ValToBin(uintN logscale, uint32 val)
97
- {
98
- uintN bin;
99
-
100
- if (val <= 1)
101
- return val;
102
- bin = (logscale == 10)
103
- ? (uintN) ceil(log10((double) val))
104
- : (logscale == 2)
105
- ? (uintN) JS_CeilingLog2(val)
106
- : val;
107
- return JS_MIN(bin, 10);
108
- }
109
-
110
- void
111
- JS_BasicStatsAccum(JSBasicStats *bs, uint32 val)
112
- {
113
- uintN oldscale, newscale, bin;
114
- double mean;
115
-
116
- ++bs->num;
117
- if (bs->max < val)
118
- bs->max = val;
119
- bs->sum += val;
120
- bs->sqsum += (double)val * val;
121
-
122
- oldscale = bs->logscale;
123
- if (oldscale != 10) {
124
- mean = bs->sum / bs->num;
125
- if (bs->max > 16 && mean > 8) {
126
- newscale = (bs->max > 1e6 && mean > 1000) ? 10 : 2;
127
- if (newscale != oldscale) {
128
- uint32 newhist[11], newbin;
129
-
130
- memset(newhist, 0, sizeof newhist);
131
- for (bin = 0; bin <= 10; bin++) {
132
- newbin = ValToBin(newscale, BinToVal(oldscale, bin));
133
- newhist[newbin] += bs->hist[bin];
134
- }
135
- memcpy(bs->hist, newhist, sizeof bs->hist);
136
- bs->logscale = newscale;
137
- }
138
- }
139
- }
140
-
141
- bin = ValToBin(bs->logscale, val);
142
- ++bs->hist[bin];
143
- }
144
-
145
- double
146
- JS_MeanAndStdDev(uint32 num, double sum, double sqsum, double *sigma)
147
- {
148
- double var;
149
-
150
- if (num == 0 || sum == 0) {
151
- *sigma = 0;
152
- return 0;
153
- }
154
-
155
- var = num * sqsum - sum * sum;
156
- if (var < 0 || num == 1)
157
- var = 0;
158
- else
159
- var /= (double)num * (num - 1);
160
-
161
- /* Windows says sqrt(0.0) is "-1.#J" (?!) so we must test. */
162
- *sigma = (var != 0) ? sqrt(var) : 0;
163
- return sum / num;
164
- }
165
-
166
- void
167
- JS_DumpBasicStats(JSBasicStats *bs, const char *title, FILE *fp)
168
- {
169
- double mean, sigma;
170
-
171
- mean = JS_MeanAndStdDevBS(bs, &sigma);
172
- fprintf(fp, "\nmean %s %g, std. deviation %g, max %lu\n",
173
- title, mean, sigma, (unsigned long) bs->max);
174
- JS_DumpHistogram(bs, fp);
175
- }
176
-
177
- void
178
- JS_DumpHistogram(JSBasicStats *bs, FILE *fp)
179
- {
180
- uintN bin;
181
- uint32 cnt, max, prev, val, i;
182
- double sum, mean;
183
-
184
- for (bin = 0, max = 0, sum = 0; bin <= 10; bin++) {
185
- cnt = bs->hist[bin];
186
- if (max < cnt)
187
- max = cnt;
188
- sum += cnt;
189
- }
190
- mean = sum / cnt;
191
- for (bin = 0, prev = 0; bin <= 10; bin++, prev = val) {
192
- val = BinToVal(bs->logscale, bin);
193
- cnt = bs->hist[bin];
194
- if (prev + 1 >= val)
195
- fprintf(fp, " [%6u]", val);
196
- else
197
- fprintf(fp, "[%6u, %6u]", prev + 1, val);
198
- fprintf(fp, "%s %8u ", (bin == 10) ? "+" : ":", cnt);
199
- if (cnt != 0) {
200
- if (max > 1e6 && mean > 1e3)
201
- cnt = (uint32) ceil(log10((double) cnt));
202
- else if (max > 16 && mean > 8)
203
- cnt = JS_CeilingLog2(cnt);
204
- for (i = 0; i < cnt; i++)
205
- putc('*', fp);
206
- }
207
- putc('\n', fp);
208
- }
209
- }
210
-
211
- #endif /* JS_BASIC_STATS */
212
-
213
- #if defined DEBUG_notme && defined XP_UNIX
214
-
215
- #define __USE_GNU 1
216
- #include <dlfcn.h>
217
- #include <string.h>
218
- #include "jshash.h"
219
- #include "jsprf.h"
220
-
221
- JSCallsite js_calltree_root = {0, NULL, NULL, 0, NULL, NULL, NULL, NULL};
222
-
223
- static JSCallsite *
224
- CallTree(void **bp)
225
- {
226
- void **bpup, **bpdown, *pc;
227
- JSCallsite *parent, *site, **csp;
228
- Dl_info info;
229
- int ok, offset;
230
- const char *symbol;
231
- char *method;
232
-
233
- /* Reverse the stack frame list to avoid recursion. */
234
- bpup = NULL;
235
- for (;;) {
236
- bpdown = (void**) bp[0];
237
- bp[0] = (void*) bpup;
238
- if ((void**) bpdown[0] < bpdown)
239
- break;
240
- bpup = bp;
241
- bp = bpdown;
242
- }
243
-
244
- /* Reverse the stack again, finding and building a path in the tree. */
245
- parent = &js_calltree_root;
246
- do {
247
- bpup = (void**) bp[0];
248
- bp[0] = (void*) bpdown;
249
- pc = bp[1];
250
-
251
- csp = &parent->kids;
252
- while ((site = *csp) != NULL) {
253
- if (site->pc == pc) {
254
- /* Put the most recently used site at the front of siblings. */
255
- *csp = site->siblings;
256
- site->siblings = parent->kids;
257
- parent->kids = site;
258
-
259
- /* Site already built -- go up the stack. */
260
- goto upward;
261
- }
262
- csp = &site->siblings;
263
- }
264
-
265
- /* Check for recursion: see if pc is on our ancestor line. */
266
- for (site = parent; site; site = site->parent) {
267
- if (site->pc == pc)
268
- goto upward;
269
- }
270
-
271
- /*
272
- * Not in tree at all: let's find our symbolic callsite info.
273
- * XXX static syms are masked by nearest lower global
274
- */
275
- info.dli_fname = info.dli_sname = NULL;
276
- ok = dladdr(pc, &info);
277
- if (ok < 0) {
278
- fprintf(stderr, "dladdr failed!\n");
279
- return NULL;
280
- }
281
-
282
- /* XXXbe sub 0x08040000? or something, see dbaron bug with tenthumbs comment */
283
- symbol = info.dli_sname;
284
- offset = (char*)pc - (char*)info.dli_fbase;
285
- method = symbol
286
- ? strdup(symbol)
287
- : JS_smprintf("%s+%X",
288
- info.dli_fname ? info.dli_fname : "main",
289
- offset);
290
- if (!method)
291
- return NULL;
292
-
293
- /* Create a new callsite record. */
294
- site = (JSCallsite *) malloc(sizeof(JSCallsite));
295
- if (!site)
296
- return NULL;
297
-
298
- /* Insert the new site into the tree. */
299
- site->pc = pc;
300
- site->name = method;
301
- site->library = info.dli_fname;
302
- site->offset = offset;
303
- site->parent = parent;
304
- site->siblings = parent->kids;
305
- parent->kids = site;
306
- site->kids = NULL;
307
-
308
- upward:
309
- parent = site;
310
- bpdown = bp;
311
- bp = bpup;
312
- } while (bp);
313
-
314
- return site;
315
- }
316
-
317
- JSCallsite *
318
- JS_Backtrace(int skip)
319
- {
320
- void **bp, **bpdown;
321
-
322
- /* Stack walking code adapted from Kipp's "leaky". */
323
- #if defined(__i386)
324
- __asm__( "movl %%ebp, %0" : "=g"(bp));
325
- #elif defined(__x86_64__)
326
- __asm__( "movq %%rbp, %0" : "=g"(bp));
327
- #else
328
- /*
329
- * It would be nice if this worked uniformly, but at least on i386 and
330
- * x86_64, it stopped working with gcc 4.1, because it points to the
331
- * end of the saved registers instead of the start.
332
- */
333
- bp = (void**) __builtin_frame_address(0);
334
- #endif
335
- while (--skip >= 0) {
336
- bpdown = (void**) *bp++;
337
- if (bpdown < bp)
338
- break;
339
- bp = bpdown;
340
- }
341
-
342
- return CallTree(bp);
343
- }
344
-
345
- #endif /* DEBUG_notme && XP_UNIX */
@@ -1,157 +0,0 @@
1
- /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
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
- /*
41
- * PR assertion checker.
42
- */
43
-
44
- #ifndef jsutil_h___
45
- #define jsutil_h___
46
-
47
- JS_BEGIN_EXTERN_C
48
-
49
- #ifdef DEBUG
50
-
51
- extern JS_PUBLIC_API(void)
52
- JS_Assert(const char *s, const char *file, JSIntn ln);
53
-
54
- #define JS_ASSERT(expr) \
55
- ((expr) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
56
-
57
- #define JS_ASSERT_IF(cond, expr) \
58
- ((!(cond) || (expr)) ? (void)0 : JS_Assert(#expr, __FILE__, __LINE__))
59
-
60
- #define JS_NOT_REACHED(reason) \
61
- JS_Assert(reason, __FILE__, __LINE__)
62
-
63
- #else
64
-
65
- #define JS_ASSERT(expr) ((void) 0)
66
- #define JS_ASSERT_IF(cond,expr) ((void) 0)
67
- #define JS_NOT_REACHED(reason)
68
-
69
- #endif /* defined(DEBUG) */
70
-
71
- /*
72
- * Compile-time assert. "condition" must be a constant expression.
73
- * The macro can be used only in places where an "extern" declaration is
74
- * allowed.
75
- */
76
- #define JS_STATIC_ASSERT(condition) \
77
- extern void js_static_assert(int arg[(condition) ? 1 : -1])
78
-
79
- /*
80
- * Abort the process in a non-graceful manner. This will cause a core file,
81
- * call to the debugger or other moral equivalent as well as causing the
82
- * entire process to stop.
83
- */
84
- extern JS_PUBLIC_API(void) JS_Abort(void);
85
-
86
- #if 0
87
- # define JS_BASIC_STATS 1
88
- # define JS_SCOPE_DEPTH_METER 1
89
- #endif
90
-
91
- #if defined DEBUG && !defined JS_BASIC_STATS
92
- # define JS_BASIC_STATS 1
93
- #endif
94
-
95
- #ifdef JS_BASIC_STATS
96
-
97
- #include <stdio.h>
98
-
99
- typedef struct JSBasicStats {
100
- uint32 num;
101
- uint32 max;
102
- double sum;
103
- double sqsum;
104
- uint32 logscale; /* logarithmic scale: 0 (linear), 2, 10 */
105
- uint32 hist[11];
106
- } JSBasicStats;
107
-
108
- #define JS_INIT_STATIC_BASIC_STATS {0,0,0,0,0,{0,0,0,0,0,0,0,0,0,0,0}}
109
- #define JS_BASIC_STATS_INIT(bs) memset((bs), 0, sizeof(JSBasicStats))
110
-
111
- #define JS_BASIC_STATS_ACCUM(bs,val) \
112
- JS_BasicStatsAccum(bs, val)
113
-
114
- #define JS_MeanAndStdDevBS(bs,sigma) \
115
- JS_MeanAndStdDev((bs)->num, (bs)->sum, (bs)->sqsum, sigma)
116
-
117
- extern void
118
- JS_BasicStatsAccum(JSBasicStats *bs, uint32 val);
119
-
120
- extern double
121
- JS_MeanAndStdDev(uint32 num, double sum, double sqsum, double *sigma);
122
-
123
- extern void
124
- JS_DumpBasicStats(JSBasicStats *bs, const char *title, FILE *fp);
125
-
126
- extern void
127
- JS_DumpHistogram(JSBasicStats *bs, FILE *fp);
128
-
129
- #else
130
-
131
- #define JS_BASIC_STATS_ACCUM(bs,val) /* nothing */
132
-
133
- #endif /* JS_BASIC_STATS */
134
-
135
-
136
- #ifdef XP_UNIX
137
-
138
- typedef struct JSCallsite JSCallsite;
139
-
140
- struct JSCallsite {
141
- uint32 pc;
142
- char *name;
143
- const char *library;
144
- int offset;
145
- JSCallsite *parent;
146
- JSCallsite *siblings;
147
- JSCallsite *kids;
148
- void *handy;
149
- };
150
-
151
- extern JSCallsite *JS_Backtrace(int skip);
152
-
153
- #endif
154
-
155
- JS_END_EXTERN_C
156
-
157
- #endif /* jsutil_h___ */