johnson 1.2.0 → 2.0.0.pre0

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 (782) hide show
  1. data/CHANGELOG.rdoc +8 -0
  2. data/Manifest.txt +762 -48
  3. data/README.rdoc +2 -1
  4. data/Rakefile +90 -18
  5. data/ext/spidermonkey/conversions.c +9 -2
  6. data/ext/spidermonkey/ruby_land_proxy.c +1 -1
  7. data/ext/spidermonkey/runtime.h +1 -1
  8. data/ext/tracemonkey/context.cc +125 -0
  9. data/ext/tracemonkey/context.h +19 -0
  10. data/ext/tracemonkey/conversions.cc +365 -0
  11. data/ext/tracemonkey/conversions.h +32 -0
  12. data/ext/tracemonkey/debugger.cc +234 -0
  13. data/ext/tracemonkey/debugger.h +10 -0
  14. data/ext/tracemonkey/extconf.rb +37 -0
  15. data/ext/tracemonkey/extensions.cc +37 -0
  16. data/ext/tracemonkey/extensions.h +12 -0
  17. data/ext/tracemonkey/global.cc +40 -0
  18. data/ext/tracemonkey/global.h +11 -0
  19. data/ext/tracemonkey/idhash.cc +16 -0
  20. data/ext/tracemonkey/idhash.h +8 -0
  21. data/ext/tracemonkey/immutable_node.cc +1199 -0
  22. data/ext/tracemonkey/immutable_node.cc.erb +559 -0
  23. data/ext/tracemonkey/immutable_node.h +22 -0
  24. data/ext/tracemonkey/jroot.h +215 -0
  25. data/ext/tracemonkey/js_land_proxy.cc +620 -0
  26. data/ext/tracemonkey/js_land_proxy.h +20 -0
  27. data/ext/tracemonkey/ruby_land_proxy.cc +618 -0
  28. data/ext/tracemonkey/ruby_land_proxy.h +38 -0
  29. data/ext/tracemonkey/runtime.cc +454 -0
  30. data/ext/tracemonkey/runtime.h +27 -0
  31. data/ext/tracemonkey/split_global.cc +392 -0
  32. data/ext/tracemonkey/split_global.h +11 -0
  33. data/ext/tracemonkey/tracemonkey.cc +23 -0
  34. data/ext/tracemonkey/tracemonkey.h +32 -0
  35. data/lib/johnson.rb +12 -4
  36. data/lib/johnson/error.rb +5 -0
  37. data/lib/johnson/js/prelude.js +16 -1
  38. data/lib/johnson/parser.rb +2 -1
  39. data/lib/johnson/runtime.rb +87 -26
  40. data/lib/johnson/spidermonkey/runtime.rb +7 -16
  41. data/lib/johnson/tracemonkey.rb +13 -0
  42. data/lib/johnson/tracemonkey/context.rb +10 -0
  43. data/lib/johnson/tracemonkey/debugger.rb +67 -0
  44. data/lib/johnson/tracemonkey/immutable_node.rb +282 -0
  45. data/lib/johnson/tracemonkey/js_land_proxy.rb +64 -0
  46. data/lib/johnson/tracemonkey/mutable_tree_visitor.rb +242 -0
  47. data/lib/johnson/tracemonkey/ruby_land_proxy.rb +17 -0
  48. data/lib/johnson/tracemonkey/runtime.rb +80 -0
  49. data/test/{johnson_test.rb → generic/johnson_test.rb} +1 -1
  50. data/test/{parser_test.rb → generic/parser_test.rb} +1 -1
  51. data/test/helper.rb +23 -4
  52. data/test/johnson/{browser_test.rb → generic/browser_test.rb} +1 -1
  53. data/test/johnson/{conversions → generic/conversions}/array_test.rb +1 -1
  54. data/test/johnson/{conversions → generic/conversions}/boolean_test.rb +1 -1
  55. data/test/johnson/{conversions → generic/conversions}/callable_test.rb +1 -1
  56. data/test/johnson/{conversions → generic/conversions}/file_test.rb +1 -1
  57. data/test/johnson/generic/conversions/helper.rb +1 -0
  58. data/test/johnson/{conversions → generic/conversions}/nil_test.rb +1 -1
  59. data/test/johnson/{conversions → generic/conversions}/number_test.rb +1 -1
  60. data/test/johnson/{conversions → generic/conversions}/regexp_test.rb +1 -1
  61. data/test/johnson/{conversions → generic/conversions}/string_test.rb +1 -1
  62. data/test/johnson/{conversions → generic/conversions}/struct_test.rb +1 -1
  63. data/test/johnson/{conversions → generic/conversions}/symbol_test.rb +1 -1
  64. data/test/johnson/{conversions → generic/conversions}/thread_test.rb +1 -1
  65. data/test/johnson/{custom_conversions_test.rb → generic/custom_conversions_test.rb} +1 -1
  66. data/test/johnson/generic/default_test.rb +12 -0
  67. data/test/johnson/{error_test.rb → generic/error_test.rb} +1 -1
  68. data/test/johnson/{extensions_test.rb → generic/extensions_test.rb} +1 -1
  69. data/test/johnson/generic/helper.rb +1 -0
  70. data/test/johnson/{nodes → generic/nodes}/array_literal_test.rb +1 -1
  71. data/test/johnson/{nodes → generic/nodes}/array_node_test.rb +1 -1
  72. data/test/johnson/{nodes → generic/nodes}/binary_node_test.rb +1 -1
  73. data/test/johnson/{nodes → generic/nodes}/bracket_access_test.rb +1 -1
  74. data/test/johnson/{nodes → generic/nodes}/delete_test.rb +1 -1
  75. data/test/johnson/{nodes → generic/nodes}/do_while_test.rb +1 -1
  76. data/test/johnson/{nodes → generic/nodes}/dot_accessor_test.rb +1 -1
  77. data/test/johnson/generic/nodes/export_test.rb +11 -0
  78. data/test/johnson/{nodes → generic/nodes}/for_test.rb +1 -1
  79. data/test/johnson/{nodes → generic/nodes}/function_test.rb +1 -1
  80. data/test/johnson/generic/nodes/helper.rb +1 -0
  81. data/test/johnson/{nodes → generic/nodes}/if_test.rb +16 -6
  82. data/test/johnson/generic/nodes/import_test.rb +15 -0
  83. data/test/johnson/{nodes → generic/nodes}/label_test.rb +1 -1
  84. data/test/johnson/{nodes → generic/nodes}/let_test.rb +1 -1
  85. data/test/johnson/{nodes → generic/nodes}/object_literal_test.rb +1 -1
  86. data/test/johnson/{nodes → generic/nodes}/return_test.rb +1 -1
  87. data/test/johnson/{nodes → generic/nodes}/semi_test.rb +1 -1
  88. data/test/johnson/{nodes → generic/nodes}/switch_test.rb +1 -1
  89. data/test/johnson/{nodes → generic/nodes}/ternary_test.rb +1 -1
  90. data/test/johnson/{nodes → generic/nodes}/throw_test.rb +1 -1
  91. data/test/johnson/{nodes → generic/nodes}/try_node_test.rb +36 -6
  92. data/test/johnson/{nodes → generic/nodes}/typeof_test.rb +1 -1
  93. data/test/johnson/{nodes → generic/nodes}/unary_node_test.rb +1 -1
  94. data/test/johnson/{nodes → generic/nodes}/void_test.rb +1 -1
  95. data/test/johnson/{nodes → generic/nodes}/while_test.rb +1 -1
  96. data/test/johnson/{nodes → generic/nodes}/with_test.rb +1 -1
  97. data/test/johnson/{prelude_test.rb → generic/prelude_test.rb} +1 -1
  98. data/test/johnson/{runtime_test.rb → generic/runtime_test.rb} +3 -6
  99. data/test/johnson/generic/version_test.rb +13 -0
  100. data/test/johnson/{visitors → generic/visitors}/dot_visitor_test.rb +1 -1
  101. data/test/johnson/{visitors → generic/visitors}/enumerating_visitor_test.rb +1 -1
  102. data/test/johnson/generic/visitors/helper.rb +1 -0
  103. data/test/johnson/spidermonkey/js_land_proxy_test.rb +1 -5
  104. data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +11 -7
  105. data/test/johnson/tracemonkey/context_test.rb +21 -0
  106. data/test/johnson/tracemonkey/immutable_node_test.rb +34 -0
  107. data/test/johnson/tracemonkey/js_land_proxy_test.rb +273 -0
  108. data/test/johnson/tracemonkey/ruby_land_proxy_test.rb +274 -0
  109. data/test/johnson/tracemonkey/runtime_test.rb +41 -0
  110. data/test/johnson/tracemonkey/split_global_test.rb +32 -0
  111. data/vendor/spidermonkey/js.pkg +2 -0
  112. data/vendor/tracemonkey/Makefile.in +668 -0
  113. data/vendor/tracemonkey/Makefile.ref +483 -0
  114. data/vendor/tracemonkey/README.html +54 -0
  115. data/vendor/tracemonkey/SpiderMonkey.rsp +11 -0
  116. data/vendor/tracemonkey/Y.js +19 -0
  117. data/vendor/tracemonkey/aclocal.m4 +9 -0
  118. data/vendor/tracemonkey/bench.sh +5 -0
  119. data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +202 -0
  120. data/vendor/tracemonkey/build/autoconf/altoptions.m4 +154 -0
  121. data/vendor/tracemonkey/build/autoconf/config.guess +1537 -0
  122. data/vendor/tracemonkey/build/autoconf/config.sub +1595 -0
  123. data/vendor/tracemonkey/build/autoconf/install-sh +119 -0
  124. data/vendor/tracemonkey/build/autoconf/make-makefile +315 -0
  125. data/vendor/tracemonkey/build/autoconf/match-dir.sh +101 -0
  126. data/vendor/tracemonkey/build/autoconf/moznbytetype.m4 +136 -0
  127. data/vendor/tracemonkey/build/autoconf/nspr.m4 +82 -0
  128. data/vendor/tracemonkey/build/autoconf/pkg.m4 +59 -0
  129. data/vendor/tracemonkey/build/autoconf/update-makefile.sh +118 -0
  130. data/vendor/tracemonkey/build/cygwin-wrapper +75 -0
  131. data/vendor/tracemonkey/build/hcc +111 -0
  132. data/vendor/tracemonkey/build/hcpp +155 -0
  133. data/vendor/tracemonkey/build/unix/mddepend.pl +165 -0
  134. data/vendor/tracemonkey/build/unix/uniq.pl +63 -0
  135. data/vendor/tracemonkey/build/win32/pgomerge.py +40 -0
  136. data/vendor/tracemonkey/builtins.tbl +91 -0
  137. data/vendor/tracemonkey/call.js +13 -0
  138. data/vendor/tracemonkey/config.mk +206 -0
  139. data/vendor/tracemonkey/config/Makefile.in +106 -0
  140. data/vendor/tracemonkey/config/Moz/Milestone.pm +232 -0
  141. data/vendor/tracemonkey/config/autoconf.mk.in +362 -0
  142. data/vendor/tracemonkey/config/check-sync-dirs.py +103 -0
  143. data/vendor/tracemonkey/config/check-sync-exceptions +7 -0
  144. data/vendor/tracemonkey/config/config.mk +881 -0
  145. data/vendor/tracemonkey/config/fastcwd.pl +66 -0
  146. data/vendor/tracemonkey/config/gcc_hidden.h +2 -0
  147. data/vendor/tracemonkey/config/insure.mk +53 -0
  148. data/vendor/tracemonkey/config/make-system-wrappers.pl +59 -0
  149. data/vendor/tracemonkey/config/milestone.pl +112 -0
  150. data/vendor/tracemonkey/config/milestone.txt +13 -0
  151. data/vendor/tracemonkey/config/mkdepend/Makefile.in +84 -0
  152. data/vendor/tracemonkey/config/mkdepend/cppsetup.c +233 -0
  153. data/vendor/tracemonkey/config/mkdepend/def.h +184 -0
  154. data/vendor/tracemonkey/config/mkdepend/ifparser.c +551 -0
  155. data/vendor/tracemonkey/config/mkdepend/ifparser.h +83 -0
  156. data/vendor/tracemonkey/config/mkdepend/imakemdep.h +733 -0
  157. data/vendor/tracemonkey/config/mkdepend/include.c +337 -0
  158. data/vendor/tracemonkey/config/mkdepend/main.c +860 -0
  159. data/vendor/tracemonkey/config/mkdepend/mkdepend.man +382 -0
  160. data/vendor/tracemonkey/config/mkdepend/parse.c +686 -0
  161. data/vendor/tracemonkey/config/mkdepend/pr.c +124 -0
  162. data/vendor/tracemonkey/config/nfspwd.pl +50 -0
  163. data/vendor/tracemonkey/config/nsinstall.c +481 -0
  164. data/vendor/tracemonkey/config/nsinstall.py +155 -0
  165. data/vendor/tracemonkey/config/pathsub.c +247 -0
  166. data/vendor/tracemonkey/config/pathsub.h +74 -0
  167. data/vendor/tracemonkey/config/preprocessor.pl +671 -0
  168. data/vendor/tracemonkey/config/revdepth-nt.pl +48 -0
  169. data/vendor/tracemonkey/config/revdepth.pl +51 -0
  170. data/vendor/tracemonkey/config/rules.mk +2310 -0
  171. data/vendor/tracemonkey/config/static-checking-config.mk +21 -0
  172. data/vendor/tracemonkey/config/static-checking.js +92 -0
  173. data/vendor/tracemonkey/config/string-format.js +61 -0
  174. data/vendor/tracemonkey/config/system-headers +1035 -0
  175. data/vendor/tracemonkey/config/version.mk +85 -0
  176. data/vendor/tracemonkey/config/version_win.pl +442 -0
  177. data/vendor/tracemonkey/configure +14183 -0
  178. data/vendor/tracemonkey/configure.in +5363 -0
  179. data/vendor/tracemonkey/correct.sh +23 -0
  180. data/vendor/tracemonkey/correct/check-3d-morph.js +55 -0
  181. data/vendor/tracemonkey/correct/check-3d-raytrace.js +445 -0
  182. data/vendor/tracemonkey/correct/check-access-binary-trees.js +52 -0
  183. data/vendor/tracemonkey/correct/check-access-fannkuch.js +66 -0
  184. data/vendor/tracemonkey/correct/check-access-nbody.js +171 -0
  185. data/vendor/tracemonkey/correct/check-access-nsieve.js +40 -0
  186. data/vendor/tracemonkey/correct/check-bitops-3bit-bits-in-byte.js +35 -0
  187. data/vendor/tracemonkey/correct/check-bitops-bits-in-byte.js +24 -0
  188. data/vendor/tracemonkey/correct/check-bitops-bitwise-and.js +29 -0
  189. data/vendor/tracemonkey/correct/check-bitops-nsieve-bits.js +40 -0
  190. data/vendor/tracemonkey/correct/check-controlflow-recursive.js +27 -0
  191. data/vendor/tracemonkey/correct/check-date-format-tofte.js +302 -0
  192. data/vendor/tracemonkey/correct/check-date-format-xparb.js +421 -0
  193. data/vendor/tracemonkey/correct/check-mont.js +119 -0
  194. data/vendor/tracemonkey/dtoa.c +3335 -0
  195. data/vendor/tracemonkey/editline/Makefile.in +55 -0
  196. data/vendor/tracemonkey/editline/Makefile.ref +143 -0
  197. data/vendor/tracemonkey/editline/README +83 -0
  198. data/vendor/tracemonkey/editline/editline.3 +175 -0
  199. data/vendor/tracemonkey/editline/editline.c +1371 -0
  200. data/vendor/tracemonkey/editline/editline.h +135 -0
  201. data/vendor/tracemonkey/editline/sysunix.c +182 -0
  202. data/vendor/tracemonkey/editline/unix.h +82 -0
  203. data/vendor/tracemonkey/if.js +13 -0
  204. data/vendor/tracemonkey/imacro_asm.js.in +396 -0
  205. data/vendor/tracemonkey/imacros.c.out +1034 -0
  206. data/vendor/tracemonkey/imacros.jsasm +770 -0
  207. data/vendor/tracemonkey/javascript-trace.d +73 -0
  208. data/vendor/tracemonkey/jitstats.tbl +55 -0
  209. data/vendor/tracemonkey/js-config.h.in +82 -0
  210. data/vendor/tracemonkey/js-config.in +111 -0
  211. data/vendor/tracemonkey/js.mdp +0 -0
  212. data/vendor/tracemonkey/js.msg +312 -0
  213. data/vendor/tracemonkey/js3240.rc +79 -0
  214. data/vendor/tracemonkey/jsOS240.def +654 -0
  215. data/vendor/tracemonkey/jsapi.cpp +6005 -0
  216. data/vendor/tracemonkey/jsapi.h +2727 -0
  217. data/vendor/tracemonkey/jsarena.cpp +450 -0
  218. data/vendor/tracemonkey/jsarena.h +318 -0
  219. data/vendor/tracemonkey/jsarray.cpp +3664 -0
  220. data/vendor/tracemonkey/jsarray.h +238 -0
  221. data/vendor/tracemonkey/jsatom.cpp +1244 -0
  222. data/vendor/tracemonkey/jsatom.h +493 -0
  223. data/vendor/tracemonkey/jsbit.h +249 -0
  224. data/vendor/tracemonkey/jsbool.cpp +184 -0
  225. data/vendor/tracemonkey/jsbool.h +88 -0
  226. data/vendor/tracemonkey/jsbuiltins.cpp +415 -0
  227. data/vendor/tracemonkey/jsbuiltins.h +456 -0
  228. data/vendor/tracemonkey/jsclist.h +139 -0
  229. data/vendor/tracemonkey/jscntxt.cpp +1816 -0
  230. data/vendor/tracemonkey/jscntxt.h +1541 -0
  231. data/vendor/tracemonkey/jscompat.h +57 -0
  232. data/vendor/tracemonkey/jsconfig.mk +181 -0
  233. data/vendor/tracemonkey/jscpucfg.cpp +194 -0
  234. data/vendor/tracemonkey/jscpucfg.h +91 -0
  235. data/vendor/tracemonkey/jsdate.cpp +2465 -0
  236. data/vendor/tracemonkey/jsdate.h +129 -0
  237. data/vendor/tracemonkey/jsdbgapi.cpp +2017 -0
  238. data/vendor/tracemonkey/jsdbgapi.h +500 -0
  239. data/vendor/tracemonkey/jsdhash.cpp +876 -0
  240. data/vendor/tracemonkey/jsdhash.h +588 -0
  241. data/vendor/tracemonkey/jsdtoa.cpp +572 -0
  242. data/vendor/tracemonkey/jsdtoa.h +131 -0
  243. data/vendor/tracemonkey/jsdtracef.c +318 -0
  244. data/vendor/tracemonkey/jsdtracef.h +81 -0
  245. data/vendor/tracemonkey/jsemit.cpp +7292 -0
  246. data/vendor/tracemonkey/jsemit.h +802 -0
  247. data/vendor/tracemonkey/jsexn.cpp +1337 -0
  248. data/vendor/tracemonkey/jsexn.h +96 -0
  249. data/vendor/tracemonkey/jsfile.cpp +2747 -0
  250. data/vendor/tracemonkey/jsfile.h +56 -0
  251. data/vendor/tracemonkey/jsfile.msg +90 -0
  252. data/vendor/tracemonkey/jsfun.cpp +3089 -0
  253. data/vendor/tracemonkey/jsfun.h +366 -0
  254. data/vendor/tracemonkey/jsgc.cpp +3816 -0
  255. data/vendor/tracemonkey/jsgc.h +429 -0
  256. data/vendor/tracemonkey/jshash.cpp +477 -0
  257. data/vendor/tracemonkey/jshash.h +151 -0
  258. data/vendor/tracemonkey/jsify.pl +483 -0
  259. data/vendor/tracemonkey/jsinterp.cpp +7441 -0
  260. data/vendor/tracemonkey/jsinterp.h +666 -0
  261. data/vendor/tracemonkey/jsinvoke.cpp +42 -0
  262. data/vendor/tracemonkey/jsiter.cpp +1040 -0
  263. data/vendor/tracemonkey/jsiter.h +140 -0
  264. data/vendor/tracemonkey/jskeyword.tbl +124 -0
  265. data/vendor/tracemonkey/jskwgen.cpp +460 -0
  266. data/vendor/tracemonkey/jslibmath.h +69 -0
  267. data/vendor/tracemonkey/jslock.cpp +1512 -0
  268. data/vendor/tracemonkey/jslock.h +325 -0
  269. data/vendor/tracemonkey/jslocko.asm +60 -0
  270. data/vendor/tracemonkey/jslog2.cpp +111 -0
  271. data/vendor/tracemonkey/jslong.h +167 -0
  272. data/vendor/tracemonkey/jsmath.cpp +806 -0
  273. data/vendor/tracemonkey/jsmath.h +63 -0
  274. data/vendor/tracemonkey/jsnum.cpp +1374 -0
  275. data/vendor/tracemonkey/jsnum.h +280 -0
  276. data/vendor/tracemonkey/jsobj.cpp +6165 -0
  277. data/vendor/tracemonkey/jsobj.h +870 -0
  278. data/vendor/tracemonkey/json.cpp +1338 -0
  279. data/vendor/tracemonkey/json.h +108 -0
  280. data/vendor/tracemonkey/jsopcode.cpp +5484 -0
  281. data/vendor/tracemonkey/jsopcode.h +434 -0
  282. data/vendor/tracemonkey/jsopcode.tbl +591 -0
  283. data/vendor/tracemonkey/jsoplengen.cpp +121 -0
  284. data/vendor/tracemonkey/jsotypes.h +202 -0
  285. data/vendor/tracemonkey/jsparse.cpp +9257 -0
  286. data/vendor/tracemonkey/jsparse.h +900 -0
  287. data/vendor/tracemonkey/jsprf.cpp +1262 -0
  288. data/vendor/tracemonkey/jsprf.h +150 -0
  289. data/vendor/tracemonkey/jsproto.tbl +117 -0
  290. data/vendor/tracemonkey/jsprvtd.h +366 -0
  291. data/vendor/tracemonkey/jspubtd.h +585 -0
  292. data/vendor/tracemonkey/jsregexp.cpp +5051 -0
  293. data/vendor/tracemonkey/jsregexp.h +199 -0
  294. data/vendor/tracemonkey/jsreops.tbl +145 -0
  295. data/vendor/tracemonkey/jsscan.cpp +2040 -0
  296. data/vendor/tracemonkey/jsscan.h +467 -0
  297. data/vendor/tracemonkey/jsscope.cpp +1966 -0
  298. data/vendor/tracemonkey/jsscope.h +487 -0
  299. data/vendor/tracemonkey/jsscript.cpp +1932 -0
  300. data/vendor/tracemonkey/jsscript.h +345 -0
  301. data/vendor/tracemonkey/jsshell.msg +54 -0
  302. data/vendor/tracemonkey/jsstack.js +167 -0
  303. data/vendor/tracemonkey/jsstaticcheck.h +69 -0
  304. data/vendor/tracemonkey/jsstddef.h +87 -0
  305. data/vendor/tracemonkey/jsstdint.h +96 -0
  306. data/vendor/tracemonkey/jsstr.cpp +5277 -0
  307. data/vendor/tracemonkey/jsstr.h +702 -0
  308. data/vendor/tracemonkey/jstracer.cpp +10991 -0
  309. data/vendor/tracemonkey/jstracer.h +794 -0
  310. data/vendor/tracemonkey/jstypes.h +481 -0
  311. data/vendor/tracemonkey/jsutil.cpp +361 -0
  312. data/vendor/tracemonkey/jsutil.h +178 -0
  313. data/vendor/tracemonkey/jsversion.h +243 -0
  314. data/vendor/tracemonkey/jswince.asm +44 -0
  315. data/vendor/tracemonkey/jsxdrapi.cpp +800 -0
  316. data/vendor/tracemonkey/jsxdrapi.h +220 -0
  317. data/vendor/tracemonkey/jsxml.cpp +8327 -0
  318. data/vendor/tracemonkey/jsxml.h +305 -0
  319. data/vendor/tracemonkey/liveconnect/LiveConnect.dsp +157 -0
  320. data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsp +120 -0
  321. data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsw +44 -0
  322. data/vendor/tracemonkey/liveconnect/Makefile.in +105 -0
  323. data/vendor/tracemonkey/liveconnect/Makefile.ref +169 -0
  324. data/vendor/tracemonkey/liveconnect/README.html +712 -0
  325. data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  326. data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  327. data/vendor/tracemonkey/liveconnect/classes/Makefile.in +89 -0
  328. data/vendor/tracemonkey/liveconnect/classes/Makefile.ref +57 -0
  329. data/vendor/tracemonkey/liveconnect/classes/netscape/Makefile.ref +47 -0
  330. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  331. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  332. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  333. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  334. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  335. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  336. data/vendor/tracemonkey/liveconnect/config/AIX4.1.mk +45 -0
  337. data/vendor/tracemonkey/liveconnect/config/AIX4.2.mk +45 -0
  338. data/vendor/tracemonkey/liveconnect/config/AIX4.3.mk +50 -0
  339. data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.10.mk +43 -0
  340. data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.20.mk +43 -0
  341. data/vendor/tracemonkey/liveconnect/config/HP-UXB.11.00.mk +43 -0
  342. data/vendor/tracemonkey/liveconnect/config/IRIX6.2.mk +43 -0
  343. data/vendor/tracemonkey/liveconnect/config/IRIX6.3.mk +43 -0
  344. data/vendor/tracemonkey/liveconnect/config/IRIX6.5.mk +43 -0
  345. data/vendor/tracemonkey/liveconnect/config/Linux_All.mk +73 -0
  346. data/vendor/tracemonkey/liveconnect/config/OSF1V4.0.mk +65 -0
  347. data/vendor/tracemonkey/liveconnect/config/OSF1V5.0.mk +62 -0
  348. data/vendor/tracemonkey/liveconnect/config/SunOS5.5.1.mk +55 -0
  349. data/vendor/tracemonkey/liveconnect/config/SunOS5.6.mk +39 -0
  350. data/vendor/tracemonkey/liveconnect/config/SunOS5.7.mk +39 -0
  351. data/vendor/tracemonkey/liveconnect/config/SunOS5.8.mk +39 -0
  352. data/vendor/tracemonkey/liveconnect/config/WINNT4.0.mk +53 -0
  353. data/vendor/tracemonkey/liveconnect/jsj.c +886 -0
  354. data/vendor/tracemonkey/liveconnect/jsj.msg +98 -0
  355. data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +1377 -0
  356. data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +474 -0
  357. data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +737 -0
  358. data/vendor/tracemonkey/liveconnect/jsj_JavaMember.c +191 -0
  359. data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +1079 -0
  360. data/vendor/tracemonkey/liveconnect/jsj_JavaPackage.c +569 -0
  361. data/vendor/tracemonkey/liveconnect/jsj_array.c +207 -0
  362. data/vendor/tracemonkey/liveconnect/jsj_class.c +770 -0
  363. data/vendor/tracemonkey/liveconnect/jsj_convert.c +902 -0
  364. data/vendor/tracemonkey/liveconnect/jsj_field.c +421 -0
  365. data/vendor/tracemonkey/liveconnect/jsj_hash.c +488 -0
  366. data/vendor/tracemonkey/liveconnect/jsj_hash.h +161 -0
  367. data/vendor/tracemonkey/liveconnect/jsj_method.c +1825 -0
  368. data/vendor/tracemonkey/liveconnect/jsj_nodl.c +1 -0
  369. data/vendor/tracemonkey/liveconnect/jsj_private.h +677 -0
  370. data/vendor/tracemonkey/liveconnect/jsj_simpleapi.c +219 -0
  371. data/vendor/tracemonkey/liveconnect/jsj_utils.c +513 -0
  372. data/vendor/tracemonkey/liveconnect/jsjava.h +316 -0
  373. data/vendor/tracemonkey/liveconnect/netscape_javascript_JSObject.h +155 -0
  374. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +785 -0
  375. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.h +197 -0
  376. data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.cpp +118 -0
  377. data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.h +76 -0
  378. data/vendor/tracemonkey/liveconnect/nsILiveconnect.h +197 -0
  379. data/vendor/tracemonkey/liveconnect/nsISecureLiveconnect.h +94 -0
  380. data/vendor/tracemonkey/liveconnect/nsISecurityContext.h +136 -0
  381. data/vendor/tracemonkey/lock_SunOS.s +119 -0
  382. data/vendor/tracemonkey/mandelbrot-results.js +3 -0
  383. data/vendor/tracemonkey/math-partial-sums.js +32 -0
  384. data/vendor/tracemonkey/math-trace-tests.js +507 -0
  385. data/vendor/tracemonkey/md5.js +289 -0
  386. data/vendor/tracemonkey/nanojit/Assembler.cpp +1984 -0
  387. data/vendor/tracemonkey/nanojit/Assembler.h +375 -0
  388. data/vendor/tracemonkey/nanojit/Fragmento.cpp +651 -0
  389. data/vendor/tracemonkey/nanojit/Fragmento.h +237 -0
  390. data/vendor/tracemonkey/nanojit/LIR.cpp +2314 -0
  391. data/vendor/tracemonkey/nanojit/LIR.h +879 -0
  392. data/vendor/tracemonkey/nanojit/LIRopcode.tbl +252 -0
  393. data/vendor/tracemonkey/nanojit/Native.h +127 -0
  394. data/vendor/tracemonkey/nanojit/NativeARM.cpp +1742 -0
  395. data/vendor/tracemonkey/nanojit/NativeARM.h +844 -0
  396. data/vendor/tracemonkey/nanojit/NativeSparc.cpp +1130 -0
  397. data/vendor/tracemonkey/nanojit/NativeSparc.h +948 -0
  398. data/vendor/tracemonkey/nanojit/NativeThumb.cpp +1322 -0
  399. data/vendor/tracemonkey/nanojit/NativeThumb.h +525 -0
  400. data/vendor/tracemonkey/nanojit/Nativei386.cpp +1748 -0
  401. data/vendor/tracemonkey/nanojit/Nativei386.h +857 -0
  402. data/vendor/tracemonkey/nanojit/RegAlloc.cpp +183 -0
  403. data/vendor/tracemonkey/nanojit/RegAlloc.h +95 -0
  404. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +306 -0
  405. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.h +88 -0
  406. data/vendor/tracemonkey/nanojit/avmplus.cpp +56 -0
  407. data/vendor/tracemonkey/nanojit/avmplus.h +1016 -0
  408. data/vendor/tracemonkey/nanojit/nanojit.h +253 -0
  409. data/vendor/tracemonkey/perfect.js +39 -0
  410. data/vendor/tracemonkey/plify_jsdhash.sed +35 -0
  411. data/vendor/tracemonkey/prmjtime.cpp +869 -0
  412. data/vendor/tracemonkey/prmjtime.h +103 -0
  413. data/vendor/tracemonkey/ref-config/AIX4.1.mk +65 -0
  414. data/vendor/tracemonkey/ref-config/AIX4.2.mk +64 -0
  415. data/vendor/tracemonkey/ref-config/AIX4.3.mk +65 -0
  416. data/vendor/tracemonkey/ref-config/Darwin.mk +85 -0
  417. data/vendor/tracemonkey/ref-config/Darwin1.3.mk +81 -0
  418. data/vendor/tracemonkey/ref-config/Darwin1.4.mk +41 -0
  419. data/vendor/tracemonkey/ref-config/Darwin5.2.mk +81 -0
  420. data/vendor/tracemonkey/ref-config/Darwin5.3.mk +81 -0
  421. data/vendor/tracemonkey/ref-config/Darwin64.mk +72 -0
  422. data/vendor/tracemonkey/ref-config/HP-UXB.10.10.mk +77 -0
  423. data/vendor/tracemonkey/ref-config/HP-UXB.10.20.mk +77 -0
  424. data/vendor/tracemonkey/ref-config/HP-UXB.11.00.mk +80 -0
  425. data/vendor/tracemonkey/ref-config/IRIX.mk +87 -0
  426. data/vendor/tracemonkey/ref-config/IRIX5.3.mk +44 -0
  427. data/vendor/tracemonkey/ref-config/IRIX6.1.mk +44 -0
  428. data/vendor/tracemonkey/ref-config/IRIX6.2.mk +44 -0
  429. data/vendor/tracemonkey/ref-config/IRIX6.3.mk +44 -0
  430. data/vendor/tracemonkey/ref-config/IRIX6.5.mk +44 -0
  431. data/vendor/tracemonkey/ref-config/Linux_All.mk +105 -0
  432. data/vendor/tracemonkey/ref-config/Mac_OS10.0.mk +82 -0
  433. data/vendor/tracemonkey/ref-config/OSF1V4.0.mk +72 -0
  434. data/vendor/tracemonkey/ref-config/OSF1V5.0.mk +69 -0
  435. data/vendor/tracemonkey/ref-config/SunOS4.1.4.mk +101 -0
  436. data/vendor/tracemonkey/ref-config/SunOS5.10.mk +50 -0
  437. data/vendor/tracemonkey/ref-config/SunOS5.3.mk +91 -0
  438. data/vendor/tracemonkey/ref-config/SunOS5.4.mk +92 -0
  439. data/vendor/tracemonkey/ref-config/SunOS5.5.1.mk +44 -0
  440. data/vendor/tracemonkey/ref-config/SunOS5.5.mk +87 -0
  441. data/vendor/tracemonkey/ref-config/SunOS5.6.mk +89 -0
  442. data/vendor/tracemonkey/ref-config/SunOS5.7.mk +44 -0
  443. data/vendor/tracemonkey/ref-config/SunOS5.8.mk +44 -0
  444. data/vendor/tracemonkey/ref-config/SunOS5.9.mk +44 -0
  445. data/vendor/tracemonkey/ref-config/WINNT4.0.mk +118 -0
  446. data/vendor/tracemonkey/ref-config/WINNT5.0.mk +118 -0
  447. data/vendor/tracemonkey/ref-config/WINNT5.1.mk +118 -0
  448. data/vendor/tracemonkey/ref-config/WINNT5.2.mk +118 -0
  449. data/vendor/tracemonkey/ref-config/WINNT6.0.mk +118 -0
  450. data/vendor/tracemonkey/ref-config/dgux.mk +64 -0
  451. data/vendor/tracemonkey/resource.h +15 -0
  452. data/vendor/tracemonkey/rules.mk +206 -0
  453. data/vendor/tracemonkey/shell/Makefile.in +72 -0
  454. data/vendor/tracemonkey/shell/js.cpp +4719 -0
  455. data/vendor/tracemonkey/t/3d-cube.js +337 -0
  456. data/vendor/tracemonkey/t/3d-morph.js +54 -0
  457. data/vendor/tracemonkey/t/3d-raytrace.js +441 -0
  458. data/vendor/tracemonkey/t/access-binary-trees.js +50 -0
  459. data/vendor/tracemonkey/t/access-fannkuch.js +66 -0
  460. data/vendor/tracemonkey/t/access-nbody.js +169 -0
  461. data/vendor/tracemonkey/t/access-nsieve.js +38 -0
  462. data/vendor/tracemonkey/t/bitops-3bit-bits-in-byte.js +32 -0
  463. data/vendor/tracemonkey/t/bitops-bits-in-byte.js +21 -0
  464. data/vendor/tracemonkey/t/bitops-bitwise-and.js +28 -0
  465. data/vendor/tracemonkey/t/bitops-nsieve-bits.js +32 -0
  466. data/vendor/tracemonkey/t/controlflow-recursive.js +25 -0
  467. data/vendor/tracemonkey/t/crypto-aes.js +422 -0
  468. data/vendor/tracemonkey/t/crypto-md5.js +286 -0
  469. data/vendor/tracemonkey/t/crypto-sha1.js +224 -0
  470. data/vendor/tracemonkey/t/date-format-tofte.js +299 -0
  471. data/vendor/tracemonkey/t/date-format-xparb.js +417 -0
  472. data/vendor/tracemonkey/t/math-cordic.js +95 -0
  473. data/vendor/tracemonkey/t/math-partial-sums.js +33 -0
  474. data/vendor/tracemonkey/t/math-spectral-norm.js +51 -0
  475. data/vendor/tracemonkey/t/regexp-dna.js +1712 -0
  476. data/vendor/tracemonkey/t/string-base64.js +135 -0
  477. data/vendor/tracemonkey/t/string-fasta.js +85 -0
  478. data/vendor/tracemonkey/t/string-tagcloud.js +265 -0
  479. data/vendor/tracemonkey/t/string-unpack-code.js +68 -0
  480. data/vendor/tracemonkey/t/string-validate-input.js +89 -0
  481. data/vendor/tracemonkey/time.sh +13 -0
  482. data/vendor/tracemonkey/trace-test.js +5564 -0
  483. data/vendor/tracemonkey/v8/base.js +187 -0
  484. data/vendor/tracemonkey/v8/crypto.js +1689 -0
  485. data/vendor/tracemonkey/v8/deltablue.js +880 -0
  486. data/vendor/tracemonkey/v8/earley-boyer.js +4682 -0
  487. data/vendor/tracemonkey/v8/raytrace.js +3418 -0
  488. data/vendor/tracemonkey/v8/richards.js +539 -0
  489. data/vendor/tracemonkey/v8/run-crypto.js +44 -0
  490. data/vendor/tracemonkey/v8/run-deltablue.js +44 -0
  491. data/vendor/tracemonkey/v8/run-earley-boyer.js +44 -0
  492. data/vendor/tracemonkey/v8/run-raytrace.js +44 -0
  493. data/vendor/tracemonkey/v8/run-richards.js +44 -0
  494. data/vendor/tracemonkey/v8/run.js +49 -0
  495. data/vendor/tracemonkey/vprof/readme.txt +93 -0
  496. data/vendor/tracemonkey/vprof/vprof.cpp +360 -0
  497. data/vendor/tracemonkey/vprof/vprof.h +245 -0
  498. data/vendor/tracemonkey/xpconnect/Makefile.in +67 -0
  499. data/vendor/tracemonkey/xpconnect/crashtests/117307-1.html +20 -0
  500. data/vendor/tracemonkey/xpconnect/crashtests/193710.html +11 -0
  501. data/vendor/tracemonkey/xpconnect/crashtests/290162-1.html +5 -0
  502. data/vendor/tracemonkey/xpconnect/crashtests/326615-1.html +16 -0
  503. data/vendor/tracemonkey/xpconnect/crashtests/328553-1.html +13 -0
  504. data/vendor/tracemonkey/xpconnect/crashtests/346258-1.html +12 -0
  505. data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame1.xhtml +16 -0
  506. data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame2.xhtml +15 -0
  507. data/vendor/tracemonkey/xpconnect/crashtests/346512-1.xhtml +30 -0
  508. data/vendor/tracemonkey/xpconnect/crashtests/382133-1.html +3 -0
  509. data/vendor/tracemonkey/xpconnect/crashtests/386680-1.html +22 -0
  510. data/vendor/tracemonkey/xpconnect/crashtests/394810-1.html +4 -0
  511. data/vendor/tracemonkey/xpconnect/crashtests/400349-1.html +20 -0
  512. data/vendor/tracemonkey/xpconnect/crashtests/403356-1.html +13 -0
  513. data/vendor/tracemonkey/xpconnect/crashtests/418139-1.svg +22 -0
  514. data/vendor/tracemonkey/xpconnect/crashtests/420513-1.html +11 -0
  515. data/vendor/tracemonkey/xpconnect/crashtests/453935-1.html +37 -0
  516. data/vendor/tracemonkey/xpconnect/crashtests/462926.html +12 -0
  517. data/vendor/tracemonkey/xpconnect/crashtests/468552-1.html +18 -0
  518. data/vendor/tracemonkey/xpconnect/crashtests/471366-1.html +12 -0
  519. data/vendor/tracemonkey/xpconnect/crashtests/475185-1.html +13 -0
  520. data/vendor/tracemonkey/xpconnect/crashtests/475291-1.html +14 -0
  521. data/vendor/tracemonkey/xpconnect/crashtests/503286-1.html +23 -0
  522. data/vendor/tracemonkey/xpconnect/crashtests/crashtests.list +21 -0
  523. data/vendor/tracemonkey/xpconnect/idl/Makefile.in +78 -0
  524. data/vendor/tracemonkey/xpconnect/idl/XPCIDispatch.idl +51 -0
  525. data/vendor/tracemonkey/xpconnect/idl/mozIJSSubScriptLoader.idl +64 -0
  526. data/vendor/tracemonkey/xpconnect/idl/nsIActiveXSecurityPolicy.idl +67 -0
  527. data/vendor/tracemonkey/xpconnect/idl/nsIDispatchSupport.idl +119 -0
  528. data/vendor/tracemonkey/xpconnect/idl/nsIJSContextStack.idl +85 -0
  529. data/vendor/tracemonkey/xpconnect/idl/nsIJSRuntimeService.idl +51 -0
  530. data/vendor/tracemonkey/xpconnect/idl/nsIScriptError.idl +102 -0
  531. data/vendor/tracemonkey/xpconnect/idl/nsIScriptableInterfaces.idl +67 -0
  532. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptNotify.idl +66 -0
  533. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +183 -0
  534. data/vendor/tracemonkey/xpconnect/idl/nsIXPCSecurityManager.idl +114 -0
  535. data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +819 -0
  536. data/vendor/tracemonkey/xpconnect/idl/xpcIJSModuleLoader.idl +95 -0
  537. data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +49 -0
  538. data/vendor/tracemonkey/xpconnect/idl/xpccomponents.idl +254 -0
  539. data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +66 -0
  540. data/vendor/tracemonkey/xpconnect/idl/xpcjsid.idl +83 -0
  541. data/vendor/tracemonkey/xpconnect/loader/ISO8601DateUtils.jsm +176 -0
  542. data/vendor/tracemonkey/xpconnect/loader/Makefile.in +63 -0
  543. data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +267 -0
  544. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +1717 -0
  545. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.h +172 -0
  546. data/vendor/tracemonkey/xpconnect/loader/mozJSLoaderConstructors.h +101 -0
  547. data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.cpp +360 -0
  548. data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.h +66 -0
  549. data/vendor/tracemonkey/xpconnect/public/Makefile.in +54 -0
  550. data/vendor/tracemonkey/xpconnect/public/nsAXPCNativeCallContext.h +89 -0
  551. data/vendor/tracemonkey/xpconnect/public/nsAutoJSValHolder.h +168 -0
  552. data/vendor/tracemonkey/xpconnect/public/xpc_map_end.h +327 -0
  553. data/vendor/tracemonkey/xpconnect/sample/Makefile.in +71 -0
  554. data/vendor/tracemonkey/xpconnect/sample/README +39 -0
  555. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.cpp +337 -0
  556. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.idl +82 -0
  557. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.js +21 -0
  558. data/vendor/tracemonkey/xpconnect/shell/Makefile.in +106 -0
  559. data/vendor/tracemonkey/xpconnect/shell/jsshell.msg +50 -0
  560. data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +1817 -0
  561. data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.h +43 -0
  562. data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.mm +54 -0
  563. data/vendor/tracemonkey/xpconnect/src/Makefile.in +228 -0
  564. data/vendor/tracemonkey/xpconnect/src/README +3 -0
  565. data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +1186 -0
  566. data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +593 -0
  567. data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +667 -0
  568. data/vendor/tracemonkey/xpconnect/src/XPCDispInterface.cpp +383 -0
  569. data/vendor/tracemonkey/xpconnect/src/XPCDispObject.cpp +516 -0
  570. data/vendor/tracemonkey/xpconnect/src/XPCDispParamPropJSClass.cpp +223 -0
  571. data/vendor/tracemonkey/xpconnect/src/XPCDispParams.cpp +103 -0
  572. data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +1401 -0
  573. data/vendor/tracemonkey/xpconnect/src/XPCDispTearOff.cpp +547 -0
  574. data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +471 -0
  575. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchClassInfo.cpp +139 -0
  576. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +362 -0
  577. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +1350 -0
  578. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +88 -0
  579. data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +1148 -0
  580. data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +718 -0
  581. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +850 -0
  582. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +394 -0
  583. data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +568 -0
  584. data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +348 -0
  585. data/vendor/tracemonkey/xpconnect/src/nsScriptError.cpp +201 -0
  586. data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +2609 -0
  587. data/vendor/tracemonkey/xpconnect/src/qsgen.py +1487 -0
  588. data/vendor/tracemonkey/xpconnect/src/xpc.msg +217 -0
  589. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +148 -0
  590. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +56 -0
  591. data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +579 -0
  592. data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +4144 -0
  593. data/vendor/tracemonkey/xpconnect/src/xpccontext.cpp +115 -0
  594. data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +2298 -0
  595. data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +481 -0
  596. data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +502 -0
  597. data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +114 -0
  598. data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +772 -0
  599. data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +1025 -0
  600. data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +1342 -0
  601. data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +128 -0
  602. data/vendor/tracemonkey/xpconnect/src/xpclog.h +101 -0
  603. data/vendor/tracemonkey/xpconnect/src/xpcmaps.cpp +761 -0
  604. data/vendor/tracemonkey/xpconnect/src/xpcmaps.h +713 -0
  605. data/vendor/tracemonkey/xpconnect/src/xpcmodule.cpp +136 -0
  606. data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +4138 -0
  607. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +1128 -0
  608. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +480 -0
  609. data/vendor/tracemonkey/xpconnect/src/xpcruntimesvc.cpp +179 -0
  610. data/vendor/tracemonkey/xpconnect/src/xpcstack.cpp +342 -0
  611. data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +139 -0
  612. data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +599 -0
  613. data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +399 -0
  614. data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +850 -0
  615. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +670 -0
  616. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +2015 -0
  617. data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +3482 -0
  618. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +945 -0
  619. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +2003 -0
  620. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +302 -0
  621. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +991 -0
  622. data/vendor/tracemonkey/xpconnect/tests/Makefile.in +75 -0
  623. data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +785 -0
  624. data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +51 -0
  625. data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug500931.xul +43 -0
  626. data/vendor/tracemonkey/xpconnect/tests/components/Makefile.in +85 -0
  627. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_array.cpp +388 -0
  628. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_attributes.cpp +305 -0
  629. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_calljs.cpp +135 -0
  630. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_child.cpp +225 -0
  631. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_const.cpp +76 -0
  632. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_domstring.cpp +118 -0
  633. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_echo.cpp +616 -0
  634. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_in.cpp +204 -0
  635. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_inout.cpp +171 -0
  636. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_module.cpp +77 -0
  637. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_multiple.cpp +554 -0
  638. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_noisy.cpp +154 -0
  639. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_out.cpp +335 -0
  640. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_overloaded.cpp +250 -0
  641. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_private.h +192 -0
  642. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_string.cpp +185 -0
  643. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_variant.cpp +355 -0
  644. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.cpp +12 -0
  645. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.h +28 -0
  646. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCDispUtilities.h +28 -0
  647. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.cpp +86 -0
  648. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.def +9 -0
  649. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsp +318 -0
  650. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsw +29 -0
  651. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.idl +454 -0
  652. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.rc +145 -0
  653. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.cpp +44 -0
  654. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.h +56 -0
  655. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.rgs +23 -0
  656. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.cpp +221 -0
  657. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.h +53 -0
  658. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.rgs +23 -0
  659. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.cpp +699 -0
  660. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.h +138 -0
  661. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.rgs +23 -0
  662. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.cpp +23 -0
  663. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.h +41 -0
  664. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.rgs +23 -0
  665. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.cpp +256 -0
  666. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.h +88 -0
  667. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.rgs +23 -0
  668. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.cpp +23 -0
  669. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.h +43 -0
  670. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.rgs +23 -0
  671. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.cpp +29 -0
  672. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.h +45 -0
  673. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.rgs +23 -0
  674. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.cpp +177 -0
  675. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.h +50 -0
  676. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.rgs +23 -0
  677. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/resource.h +36 -0
  678. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Arrays/XPCIDispatchArrayTests.js +54 -0
  679. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Attributes/XPCIDispatchAttributeTests.js +150 -0
  680. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCIDispatchInstantiations.js +122 -0
  681. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCStress.js +58 -0
  682. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Methods/XPCIDispatchMethodTests.js +376 -0
  683. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/shell.js +377 -0
  684. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/General/XPCIDispatchTestWrappedJS.js +76 -0
  685. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/shell.js +377 -0
  686. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/exectests.cmd +1 -0
  687. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1288 -0
  688. data/vendor/tracemonkey/xpconnect/tests/idl/Makefile.in +61 -0
  689. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest.idl +312 -0
  690. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest2.idl +51 -0
  691. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_attributes.idl +67 -0
  692. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_calljs.idl +59 -0
  693. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_const.idl +61 -0
  694. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_domstring.idl +59 -0
  695. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_in.idl +88 -0
  696. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_inout.idl +86 -0
  697. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_multiple.idl +77 -0
  698. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_out.idl +142 -0
  699. data/vendor/tracemonkey/xpconnect/tests/js/checkid.js +82 -0
  700. data/vendor/tracemonkey/xpconnect/tests/js/evaluate.js +311 -0
  701. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-2.js +153 -0
  702. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-3.js +194 -0
  703. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-4.js +297 -0
  704. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-5.js +343 -0
  705. data/vendor/tracemonkey/xpconnect/tests/js/exceptions.js +230 -0
  706. data/vendor/tracemonkey/xpconnect/tests/js/javascript.js +96 -0
  707. data/vendor/tracemonkey/xpconnect/tests/js/multiple-2.js +151 -0
  708. data/vendor/tracemonkey/xpconnect/tests/js/multiple-3.js +148 -0
  709. data/vendor/tracemonkey/xpconnect/tests/js/multiple-4.js +152 -0
  710. data/vendor/tracemonkey/xpconnect/tests/js/multiple.js +137 -0
  711. data/vendor/tracemonkey/xpconnect/tests/js/notscriptable.js +104 -0
  712. data/vendor/tracemonkey/xpconnect/tests/js/old/simpletest.js +36 -0
  713. data/vendor/tracemonkey/xpconnect/tests/js/old/speed.js +60 -0
  714. data/vendor/tracemonkey/xpconnect/tests/js/old/testxpc.js +464 -0
  715. data/vendor/tracemonkey/xpconnect/tests/js/old/threads.js +74 -0
  716. data/vendor/tracemonkey/xpconnect/tests/js/old/try.js +27 -0
  717. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_array.js +308 -0
  718. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_callcontext.js +68 -0
  719. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_echo.js +636 -0
  720. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_and_sort.js +28 -0
  721. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_constants.js +15 -0
  722. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_create.js +200 -0
  723. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_exceptions.js +167 -0
  724. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_ids.js +135 -0
  725. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +36 -0
  726. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_overloaded.js +14 -0
  727. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_primitives.js +141 -0
  728. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_propertybag.js +36 -0
  729. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant.js +339 -0
  730. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant_array.js +30 -0
  731. data/vendor/tracemonkey/xpconnect/tests/js/readonlyattributes.js +74 -0
  732. data/vendor/tracemonkey/xpconnect/tests/js/readwriteattributes.js +101 -0
  733. data/vendor/tracemonkey/xpconnect/tests/js/scriptable.js +120 -0
  734. data/vendor/tracemonkey/xpconnect/tests/js/testin.js +203 -0
  735. data/vendor/tracemonkey/xpconnect/tests/js/xpcfun.js +234 -0
  736. data/vendor/tracemonkey/xpconnect/tests/js/xpctest_primitives.js +200 -0
  737. data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +66 -0
  738. data/vendor/tracemonkey/xpconnect/tests/mochitest/bug500931_helper.html +7 -0
  739. data/vendor/tracemonkey/xpconnect/tests/mochitest/inner.html +7 -0
  740. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug361111.xul +29 -0
  741. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug384632.html +32 -0
  742. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +65 -0
  743. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +46 -0
  744. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +43 -0
  745. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +41 -0
  746. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +49 -0
  747. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +31 -0
  748. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +42 -0
  749. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +66 -0
  750. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +100 -0
  751. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484459.html +36 -0
  752. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug500691.html +28 -0
  753. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +116 -0
  754. data/vendor/tracemonkey/xpconnect/tests/unit/bogus_element_type.jsm +1 -0
  755. data/vendor/tracemonkey/xpconnect/tests/unit/bogus_exports_type.jsm +1 -0
  756. data/vendor/tracemonkey/xpconnect/tests/unit/bug451678_subscript.js +2 -0
  757. data/vendor/tracemonkey/xpconnect/tests/unit/component_import.js +144 -0
  758. data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importA.jsm +44 -0
  759. data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importB.jsm +45 -0
  760. data/vendor/tracemonkey/xpconnect/tests/unit/syntax_error.jsm +1 -0
  761. data/vendor/tracemonkey/xpconnect/tests/unit/test_bogus_files.js +88 -0
  762. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug408412.js +51 -0
  763. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug451678.js +52 -0
  764. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug_442086.js +68 -0
  765. data/vendor/tracemonkey/xpconnect/tests/unit/test_import.js +127 -0
  766. data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +63 -0
  767. data/vendor/tracemonkey/xpconnect/tests/unit/test_recursive_import.js +62 -0
  768. data/vendor/tracemonkey/xpconnect/tools/Makefile.in +49 -0
  769. data/vendor/tracemonkey/xpconnect/tools/idl/Makefile.in +53 -0
  770. data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsCompiler.idl +60 -0
  771. data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsProfiler.idl +57 -0
  772. data/vendor/tracemonkey/xpconnect/tools/js/CompileJSFiles.js +28 -0
  773. data/vendor/tracemonkey/xpconnect/tools/js/ListJSFiles.js +18 -0
  774. data/vendor/tracemonkey/xpconnect/tools/src/Makefile.in +76 -0
  775. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +161 -0
  776. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsModule.cpp +65 -0
  777. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsProfiler.cpp +370 -0
  778. data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +236 -0
  779. metadata +782 -107
  780. data/test/johnson/nodes/export_test.rb +0 -9
  781. data/test/johnson/nodes/import_test.rb +0 -13
  782. data/test/johnson/version_test.rb +0 -13
@@ -0,0 +1,382 @@
1
+ .\" $Xorg: mkdepend.man,v 1.5 2001/02/09 02:03:16 xorgcvs Exp $
2
+ .\" Copyright (c) 1993, 1994, 1998 The Open Group
3
+ .\"
4
+ .\" Permission to use, copy, modify, distribute, and sell this software and its
5
+ .\" documentation for any purpose is hereby granted without fee, provided that
6
+ .\" the above copyright notice appear in all copies and that both that
7
+ .\" copyright notice and this permission notice appear in supporting
8
+ .\" documentation.
9
+ .\"
10
+ .\" The above copyright notice and this permission notice shall be included in
11
+ .\" all copies or substantial portions of the Software.
12
+ .\"
13
+ .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ .\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ .\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ .\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17
+ .\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
18
+ .\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ .\" SOFTWARE.
20
+ .\"
21
+ .\" Except as contained in this notice, the name of The Open Group shall not
22
+ .\" be used in advertising or otherwise to promote the sale, use or other
23
+ .\" dealing in this Software without prior written authorization from The
24
+ .\" Open Group.
25
+ .\"
26
+ .\" $XFree86: xc/config/makedepend/mkdepend.man,v 1.7 2002/12/14 02:39:45 dawes Exp $
27
+ .\"
28
+ .TH MAKEDEPEND 1 __xorgversion__
29
+ .UC 4
30
+ .SH NAME
31
+ makedepend \- create dependencies in makefiles
32
+ .SH SYNOPSIS
33
+ .B makedepend
34
+ [
35
+ .BI \-D name\fB=\fPdef
36
+ ] [
37
+ .BI \-D name
38
+ ] [
39
+ .BI \-I includedir
40
+ ] [
41
+ .BI \-Y includedir
42
+ ] [
43
+ .B \-a
44
+ ] [
45
+ .BI \-f makefile
46
+ ] [
47
+ .BI \-include \ file
48
+ ] [
49
+ .BI \-o objsuffix
50
+ ] [
51
+ .BI \-p objprefix
52
+ ] [
53
+ .BI \-s string
54
+ ] [
55
+ .BI \-w width
56
+ ] [
57
+ .B \-v
58
+ ] [
59
+ .B \-m
60
+ ] [
61
+ \-\^\-
62
+ .I otheroptions
63
+ \-\^\-
64
+ ]
65
+ .I sourcefile
66
+ \&.\|.\|.
67
+ .br
68
+ .SH DESCRIPTION
69
+ The
70
+ .B makedepend
71
+ program reads each
72
+ .I sourcefile
73
+ in sequence and parses it like a C-preprocessor,
74
+ processing all
75
+ .I #include,
76
+ .I #define,
77
+ .I #undef,
78
+ .I #ifdef,
79
+ .I #ifndef,
80
+ .I #endif,
81
+ .I #if,
82
+ .I #elif
83
+ and
84
+ .I #else
85
+ directives so that it can correctly tell which
86
+ .I #include,
87
+ directives would be used in a compilation.
88
+ Any
89
+ .I #include,
90
+ directives can reference files having other
91
+ .I #include
92
+ directives, and parsing will occur in these files as well.
93
+ .PP
94
+ Every file that a
95
+ .I sourcefile
96
+ includes,
97
+ directly or indirectly,
98
+ is what
99
+ .B makedepend
100
+ calls a \fIdependency.\fP
101
+ These dependencies are then written to a
102
+ .I makefile
103
+ in such a way that
104
+ .B make(1)
105
+ will know which object files must be recompiled when a dependency has changed.
106
+ .PP
107
+ By default,
108
+ .B makedepend
109
+ places its output in the file named
110
+ .I makefile
111
+ if it exists, otherwise
112
+ .I Makefile.
113
+ An alternate makefile may be specified with the
114
+ .B \-f
115
+ option.
116
+ It first searches the makefile for
117
+ the line
118
+ .sp
119
+ \& # DO NOT DELETE THIS LINE \-\^\- make depend depends on it.
120
+ .sp
121
+ or one provided with the
122
+ .B \-s
123
+ option,
124
+ as a delimiter for the dependency output.
125
+ If it finds it, it will delete everything
126
+ following this to the end of the makefile
127
+ and put the output after this line.
128
+ If it doesn't find it, the program
129
+ will append the string to the end of the makefile
130
+ and place the output following that.
131
+ For each
132
+ .I sourcefile
133
+ appearing on the command line,
134
+ .B makedepend
135
+ puts lines in the makefile of the form
136
+ .sp
137
+ sourcefile.o:\0dfile .\|.\|.
138
+ .sp
139
+ Where \fIsourcefile.o\fP is the name from the command
140
+ line with its suffix replaced with ``.o'',
141
+ and \fIdfile\fP is a dependency discovered in a
142
+ .I #include
143
+ directive while parsing
144
+ .I sourcefile
145
+ or one of the files it included.
146
+ .SH EXAMPLE
147
+ Normally,
148
+ .B makedepend
149
+ will be used in a makefile target so that typing ``make depend'' will
150
+ bring the dependencies up to date for the makefile.
151
+ For example,
152
+ .nf
153
+ SRCS\0=\0file1.c\0file2.c\0.\|.\|.
154
+ CFLAGS\0=\0\-O\0\-DHACK\0\-I\^.\^.\^/foobar\0\-xyz
155
+ depend:
156
+ makedepend\0\-\^\-\0$(CFLAGS)\0\-\^\-\0$(SRCS)
157
+ .fi
158
+ .SH OPTIONS
159
+ The program
160
+ will ignore any option that it does not understand so that you may use
161
+ the same arguments that you would for
162
+ .B cc(1).
163
+ .TP 5
164
+ .B \-D\fIname\fP=\fIdef\fP \fRor\fP \-D\fIname\fP
165
+ Define.
166
+ This places a definition for
167
+ .I name
168
+ in
169
+ .B makedepend's
170
+ symbol table.
171
+ Without
172
+ .I =def\|
173
+ the symbol becomes defined as ``1''.
174
+ .TP 5
175
+ .B \-I\fIincludedir\fP
176
+ Include directory.
177
+ This option tells
178
+ .B makedepend
179
+ to prepend
180
+ .I includedir
181
+ to its list of directories to search when it encounters
182
+ a
183
+ .I #include
184
+ directive.
185
+ By default,
186
+ .B makedepend
187
+ only searches the standard include directories (usually /usr/include
188
+ and possibly a compiler-dependent directory).
189
+ .TP 5
190
+ .B \-Y\fIincludedir\fP
191
+ Replace all of the standard include directories with the single specified
192
+ include directory; you can omit the
193
+ .I includedir
194
+ to simply prevent searching the standard include directories.
195
+ .TP 5
196
+ .B \-a
197
+ Append the dependencies to the end of the file instead of replacing them.
198
+ .TP 5
199
+ .B \-f\fImakefile\fP
200
+ Filename.
201
+ This allows you to specify an alternate makefile in which
202
+ .B makedepend
203
+ can place its output.
204
+ Specifying ``\-'' as the file name (i.e., \fB\-f\-\fP) sends the
205
+ output to standard output instead of modifying an existing file.
206
+ .TP 5
207
+ .B \-include \fIfile\fP
208
+ Process file as input, and include all the resulting output
209
+ before processing the regular input file. This has the same
210
+ affect as if the specified file is an include statement that
211
+ appears before the very first line of the regular input file.
212
+ .TP 5
213
+ .B \-o\fIobjsuffix\fP
214
+ Object file suffix.
215
+ Some systems may have object files whose suffix is something other
216
+ than ``.o''.
217
+ This option allows you to specify another suffix, such as
218
+ ``.b'' with
219
+ .I \-o.b
220
+ or ``:obj''
221
+ with
222
+ .I \-o:obj
223
+ and so forth.
224
+ .TP 5
225
+ .B \-p\fIobjprefix\fP
226
+ Object file prefix.
227
+ The prefix is prepended to the name of the object file. This is
228
+ usually used to designate a different directory for the object file.
229
+ The default is the empty string.
230
+ .TP 5
231
+ .B \-s\fIstring\fP
232
+ Starting string delimiter.
233
+ This option permits you to specify
234
+ a different string for
235
+ .B makedepend
236
+ to look for in the makefile.
237
+ .TP 5
238
+ .B \-w\fIwidth\fP
239
+ Line width.
240
+ Normally,
241
+ .B makedepend
242
+ will ensure that every output line that it writes will be no wider than
243
+ 78 characters for the sake of readability.
244
+ This option enables you to change this width.
245
+ .TP 5
246
+ .B \-v
247
+ Verbose operation.
248
+ This option causes
249
+ .B makedepend
250
+ to emit the list of files included by each input file.
251
+ .TP 5
252
+ .B \-m
253
+ Warn about multiple inclusion.
254
+ This option causes
255
+ .B makedepend
256
+ to produce a warning if any input file includes another file more than
257
+ once. In previous versions of
258
+ .B makedepend
259
+ this was the default behavior; the default has been changed to better
260
+ match the behavior of the C compiler, which does not consider multiple
261
+ inclusion to be an error. This option is provided for backward
262
+ compatibility, and to aid in debugging problems related to multiple
263
+ inclusion.
264
+ .TP 5
265
+ .B "\-\^\- \fIoptions\fP \-\^\-"
266
+ If
267
+ .B makedepend
268
+ encounters a double hyphen (\-\^\-) in the argument list,
269
+ then any unrecognized argument following it
270
+ will be silently ignored; a second double hyphen terminates this
271
+ special treatment.
272
+ In this way,
273
+ .B makedepend
274
+ can be made to safely ignore esoteric compiler arguments that might
275
+ normally be found in a CFLAGS
276
+ .B make
277
+ macro (see the
278
+ .B EXAMPLE
279
+ section above).
280
+ All options that
281
+ .B makedepend
282
+ recognizes and appear between the pair of double hyphens
283
+ are processed normally.
284
+ .SH ALGORITHM
285
+ The approach used in this program enables it to run an order of magnitude
286
+ faster than any other ``dependency generator'' I have ever seen.
287
+ Central to this performance are two assumptions:
288
+ that all files compiled by a single
289
+ makefile will be compiled with roughly the same
290
+ .I \-I
291
+ and
292
+ .I \-D
293
+ options;
294
+ and that most files in a single directory will include largely the
295
+ same files.
296
+ .PP
297
+ Given these assumptions,
298
+ .B makedepend
299
+ expects to be called once for each makefile, with
300
+ all source files that are maintained by the
301
+ makefile appearing on the command line.
302
+ It parses each source and include
303
+ file exactly once, maintaining an internal symbol table
304
+ for each.
305
+ Thus, the first file on the command line will take an amount of time
306
+ proportional to the amount of time that a normal C preprocessor takes.
307
+ But on subsequent files, if it encounters an include file
308
+ that it has already parsed, it does not parse it again.
309
+ .PP
310
+ For example,
311
+ imagine you are compiling two files,
312
+ .I file1.c
313
+ and
314
+ .I file2.c,
315
+ they each include the header file
316
+ .I header.h,
317
+ and the file
318
+ .I header.h
319
+ in turn includes the files
320
+ .I def1.h
321
+ and
322
+ .I def2.h.
323
+ When you run the command
324
+ .sp
325
+ makedepend\0file1.c\0file2.c
326
+ .sp
327
+ .B makedepend
328
+ will parse
329
+ .I file1.c
330
+ and consequently,
331
+ .I header.h
332
+ and then
333
+ .I def1.h
334
+ and
335
+ .I def2.h.
336
+ It then decides that the dependencies for this file are
337
+ .sp
338
+ file1.o:\0header.h\0def1.h\0def2.h
339
+ .sp
340
+ But when the program parses
341
+ .I file2.c
342
+ and discovers that it, too, includes
343
+ .I header.h,
344
+ it does not parse the file,
345
+ but simply adds
346
+ .I header.h,
347
+ .I def1.h
348
+ and
349
+ .I def2.h
350
+ to the list of dependencies for
351
+ .I file2.o.
352
+ .SH "SEE ALSO"
353
+ cc(1), make(1)
354
+ .SH BUGS
355
+ .B makedepend
356
+ parses, but does not currently evaluate, the SVR4 #predicate(token-list)
357
+ preprocessor expression; such expressions are simply assumed to be true.
358
+ This may cause the wrong
359
+ .I #include
360
+ directives to be evaluated.
361
+ .PP
362
+ Imagine you are parsing two files,
363
+ say
364
+ .I file1.c
365
+ and
366
+ .I file2.c,
367
+ each includes the file
368
+ .I def.h.
369
+ The list of files that
370
+ .I def.h
371
+ includes might truly be different when
372
+ .I def.h
373
+ is included by
374
+ .I file1.c
375
+ than when it is included by
376
+ .I file2.c.
377
+ But once
378
+ .B makedepend
379
+ arrives at a list of dependencies for a file,
380
+ it is cast in concrete.
381
+ .SH AUTHOR
382
+ Todd Brunhoff, Tektronix, Inc. and MIT Project Athena
@@ -0,0 +1,686 @@
1
+ /* $Xorg: parse.c,v 1.6 2001/02/09 02:03:16 xorgcvs Exp $ */
2
+ /*
3
+
4
+ Copyright (c) 1993, 1994, 1998 The Open Group
5
+
6
+ Permission to use, copy, modify, distribute, and sell this software and its
7
+ documentation for any purpose is hereby granted without fee, provided that
8
+ the above copyright notice appear in all copies and that both that
9
+ copyright notice and this permission notice appear in supporting
10
+ documentation.
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
19
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ Except as contained in this notice, the name of The Open Group shall not be
23
+ used in advertising or otherwise to promote the sale, use or other dealings
24
+ in this Software without prior written authorization from The Open Group.
25
+
26
+ */
27
+ /* $XFree86: xc/config/makedepend/parse.c,v 1.12 2002/02/26 05:09:10 tsi Exp $ */
28
+
29
+ #include "def.h"
30
+
31
+ extern char *directives[];
32
+ extern struct inclist inclist[ MAXFILES ],
33
+ *inclistnext,
34
+ maininclist;
35
+ extern char *includedirs[ ],
36
+ **includedirsnext;
37
+
38
+ static int deftype (char *line, struct filepointer *filep,
39
+ struct inclist *file_red, struct inclist *file,
40
+ int parse_it);
41
+ static int zero_value(char *filename, char *exp, struct filepointer *filep,
42
+ struct inclist *file_red);
43
+ static int merge2defines(struct inclist *file1, struct inclist *file2);
44
+
45
+ static int
46
+ gobble(struct filepointer *filep, struct inclist *file,
47
+ struct inclist *file_red)
48
+ {
49
+ char *line;
50
+ int type;
51
+
52
+ while ((line = getnextline(filep))) {
53
+ switch(type = deftype(line, filep, file_red, file, FALSE)) {
54
+ case IF:
55
+ case IFFALSE:
56
+ case IFGUESSFALSE:
57
+ case IFDEF:
58
+ case IFNDEF:
59
+ type = gobble(filep, file, file_red);
60
+ while ((type == ELIF) || (type == ELIFFALSE) ||
61
+ (type == ELIFGUESSFALSE))
62
+ type = gobble(filep, file, file_red);
63
+ if (type == ELSE)
64
+ (void)gobble(filep, file, file_red);
65
+ break;
66
+ case ELSE:
67
+ case ENDIF:
68
+ debug(0,("%s, line %d: #%s\n",
69
+ file->i_file, filep->f_line,
70
+ directives[type]));
71
+ return(type);
72
+ case DEFINE:
73
+ case UNDEF:
74
+ case INCLUDE:
75
+ case INCLUDEDOT:
76
+ case PRAGMA:
77
+ case ERROR:
78
+ case IDENT:
79
+ case SCCS:
80
+ case EJECT:
81
+ case WARNING:
82
+ case INCLUDENEXT:
83
+ case INCLUDENEXTDOT:
84
+ break;
85
+ case ELIF:
86
+ case ELIFFALSE:
87
+ case ELIFGUESSFALSE:
88
+ return(type);
89
+ case -1:
90
+ warning("%s", file_red->i_file);
91
+ if (file_red != file)
92
+ warning1(" (reading %s)", file->i_file);
93
+ warning1(", line %d: unknown directive == \"%s\"\n",
94
+ filep->f_line, line);
95
+ break;
96
+ }
97
+ }
98
+ return(-1);
99
+ }
100
+
101
+ /*
102
+ * Decide what type of # directive this line is.
103
+ */
104
+ static int
105
+ deftype (char *line, struct filepointer *filep,
106
+ struct inclist *file_red, struct inclist *file, int parse_it)
107
+ {
108
+ register char *p;
109
+ char *directive, savechar, *q;
110
+ register int ret;
111
+
112
+ /*
113
+ * Parse the directive...
114
+ */
115
+ directive=line+1;
116
+ while (*directive == ' ' || *directive == '\t')
117
+ directive++;
118
+
119
+ p = directive;
120
+ while ((*p == '_') || (*p >= 'a' && *p <= 'z'))
121
+ p++;
122
+ savechar = *p;
123
+ *p = '\0';
124
+ ret = match(directive, directives);
125
+ *p = savechar;
126
+
127
+ /* If we don't recognize this compiler directive or we happen to just
128
+ * be gobbling up text while waiting for an #endif or #elif or #else
129
+ * in the case of an #elif we must check the zero_value and return an
130
+ * ELIF or an ELIFFALSE.
131
+ */
132
+
133
+ if (ret == ELIF && !parse_it)
134
+ {
135
+ while (*p == ' ' || *p == '\t')
136
+ p++;
137
+ /*
138
+ * parse an expression.
139
+ */
140
+ debug(0,("%s, line %d: #elif %s ",
141
+ file->i_file, filep->f_line, p));
142
+ ret = zero_value(file->i_file, p, filep, file_red);
143
+ if (ret != IF)
144
+ {
145
+ debug(0,("false...\n"));
146
+ if (ret == IFFALSE)
147
+ return(ELIFFALSE);
148
+ else
149
+ return(ELIFGUESSFALSE);
150
+ }
151
+ else
152
+ {
153
+ debug(0,("true...\n"));
154
+ return(ELIF);
155
+ }
156
+ }
157
+
158
+ if (ret < 0 || ! parse_it)
159
+ return(ret);
160
+
161
+ /*
162
+ * now decide how to parse the directive, and do it.
163
+ */
164
+ while (*p == ' ' || *p == '\t')
165
+ p++;
166
+ q = p + strlen(p);
167
+ do {
168
+ q--;
169
+ } while (*q == ' ' || *q == '\t');
170
+ q[1] = '\0';
171
+ switch (ret) {
172
+ case IF:
173
+ /*
174
+ * parse an expression.
175
+ */
176
+ ret = zero_value(file->i_file, p, filep, file_red);
177
+ debug(0,("%s, line %d: %s #if %s\n",
178
+ file->i_file, filep->f_line, ret?"false":"true", p));
179
+ break;
180
+ case IFDEF:
181
+ case IFNDEF:
182
+ debug(0,("%s, line %d: #%s %s\n",
183
+ file->i_file, filep->f_line, directives[ret], p));
184
+ case UNDEF:
185
+ /*
186
+ * separate the name of a single symbol.
187
+ */
188
+ while (isalnum(*p) || *p == '_')
189
+ *line++ = *p++;
190
+ *line = '\0';
191
+ break;
192
+ case INCLUDE:
193
+ case INCLUDENEXT:
194
+ debug(2,("%s, line %d: #include%s %s\n",
195
+ file->i_file, filep->f_line,
196
+ (ret == INCLUDE) ? "" : "_next", p));
197
+
198
+ /* Support ANSI macro substitution */
199
+ while (1) {
200
+ struct symtab **sym;
201
+
202
+ if (!*p || *p == '"' || *p == '<')
203
+ break;
204
+
205
+ sym = isdefined(p, file_red, NULL);
206
+ if (!sym)
207
+ break;
208
+
209
+ p = (*sym)->s_value;
210
+ debug(3,("%s : #includes SYMBOL %s = %s\n",
211
+ file->i_incstring,
212
+ (*sym) -> s_name,
213
+ (*sym) -> s_value));
214
+ /* mark file as having included a 'soft include' */
215
+ file->i_flags |= INCLUDED_SYM;
216
+ }
217
+
218
+ /*
219
+ * Separate the name of the include file.
220
+ */
221
+ while (*p && *p != '"' && *p != '<')
222
+ p++;
223
+ if (! *p)
224
+ return(-2);
225
+ if (*p++ == '"') {
226
+ if (ret == INCLUDE)
227
+ ret = INCLUDEDOT;
228
+ else
229
+ ret = INCLUDENEXTDOT;
230
+ while (*p && *p != '"')
231
+ *line++ = *p++;
232
+ } else
233
+ while (*p && *p != '>')
234
+ *line++ = *p++;
235
+ *line = '\0';
236
+ break;
237
+ case DEFINE:
238
+ /*
239
+ * copy the definition back to the beginning of the line.
240
+ */
241
+ strcpy (line, p);
242
+ break;
243
+ case ELSE:
244
+ case ENDIF:
245
+ case ELIF:
246
+ case PRAGMA:
247
+ case ERROR:
248
+ case IDENT:
249
+ case SCCS:
250
+ case EJECT:
251
+ case WARNING:
252
+ debug(0,("%s, line %d: #%s\n",
253
+ file->i_file, filep->f_line, directives[ret]));
254
+ /*
255
+ * nothing to do.
256
+ */
257
+ break;
258
+ }
259
+ return(ret);
260
+ }
261
+
262
+ struct symtab **
263
+ fdefined(char *symbol, struct inclist *file, struct inclist **srcfile)
264
+ {
265
+ struct inclist **ip;
266
+ struct symtab **val;
267
+ int i;
268
+ static int recurse_lvl = 0;
269
+
270
+ if (file->i_flags & DEFCHECKED)
271
+ return(NULL);
272
+ debug(2,("Looking for %s in %s\n", symbol, file->i_file));
273
+ file->i_flags |= DEFCHECKED;
274
+ if ((val = slookup(symbol, file)))
275
+ debug(1,("%s defined in %s as %s\n",
276
+ symbol, file->i_file, (*val)->s_value));
277
+ if (val == NULL && file->i_list)
278
+ {
279
+ for (ip = file->i_list, i=0; i < file->i_listlen; i++, ip++)
280
+ if (file->i_merged[i]==FALSE) {
281
+ val = fdefined(symbol, *ip, srcfile);
282
+ file->i_merged[i]=merge2defines(file,*ip);
283
+ if (val!=NULL) break;
284
+ }
285
+ }
286
+ else if (val != NULL && srcfile != NULL) *srcfile = file;
287
+ recurse_lvl--;
288
+ file->i_flags &= ~DEFCHECKED;
289
+
290
+ return(val);
291
+ }
292
+
293
+ struct symtab **
294
+ isdefined(char *symbol, struct inclist *file, struct inclist **srcfile)
295
+ {
296
+ struct symtab **val;
297
+
298
+ if ((val = slookup(symbol, &maininclist))) {
299
+ debug(1,("%s defined on command line\n", symbol));
300
+ if (srcfile != NULL) *srcfile = &maininclist;
301
+ return(val);
302
+ }
303
+ if ((val = fdefined(symbol, file, srcfile)))
304
+ return(val);
305
+ debug(1,("%s not defined in %s\n", symbol, file->i_file));
306
+ return(NULL);
307
+ }
308
+
309
+ /*
310
+ * Return type based on if the #if expression evaluates to 0
311
+ */
312
+ static int
313
+ zero_value(char *filename,
314
+ char *exp,
315
+ struct filepointer *filep,
316
+ struct inclist *file_red)
317
+ {
318
+ if (cppsetup(filename, exp, filep, file_red))
319
+ return(IFFALSE);
320
+ else
321
+ return(IF);
322
+ }
323
+
324
+ void
325
+ define2(char *name, char *val, struct inclist *file)
326
+ {
327
+ int first, last, below;
328
+ register struct symtab **sp = NULL, **dest;
329
+ struct symtab *stab;
330
+
331
+ /* Make space if it's needed */
332
+ if (file->i_defs == NULL)
333
+ {
334
+ file->i_defs = (struct symtab **)
335
+ malloc(sizeof (struct symtab*) * SYMTABINC);
336
+ file->i_ndefs = 0;
337
+ }
338
+ else if (!(file->i_ndefs % SYMTABINC))
339
+ file->i_defs = (struct symtab **)
340
+ realloc(file->i_defs,
341
+ sizeof(struct symtab*)*(file->i_ndefs+SYMTABINC));
342
+
343
+ if (file->i_defs == NULL)
344
+ fatalerr("malloc()/realloc() failure in insert_defn()\n");
345
+
346
+ below = first = 0;
347
+ last = file->i_ndefs - 1;
348
+ while (last >= first)
349
+ {
350
+ /* Fast inline binary search */
351
+ register char *s1;
352
+ register char *s2;
353
+ register int middle = (first + last) / 2;
354
+
355
+ /* Fast inline strchr() */
356
+ s1 = name;
357
+ s2 = file->i_defs[middle]->s_name;
358
+ while (*s1++ == *s2++)
359
+ if (s2[-1] == '\0') break;
360
+
361
+ /* If exact match, set sp and break */
362
+ if (*--s1 == *--s2)
363
+ {
364
+ sp = file->i_defs + middle;
365
+ break;
366
+ }
367
+
368
+ /* If name > i_defs[middle] ... */
369
+ if (*s1 > *s2)
370
+ {
371
+ below = first;
372
+ first = middle + 1;
373
+ }
374
+ /* else ... */
375
+ else
376
+ {
377
+ below = last = middle - 1;
378
+ }
379
+ }
380
+
381
+ /* Search is done. If we found an exact match to the symbol name,
382
+ just replace its s_value */
383
+ if (sp != NULL)
384
+ {
385
+ debug(1,("redefining %s from %s to %s in file %s\n",
386
+ name, (*sp)->s_value, val, file->i_file));
387
+ free((*sp)->s_value);
388
+ (*sp)->s_value = copy(val);
389
+ return;
390
+ }
391
+
392
+ sp = file->i_defs + file->i_ndefs++;
393
+ dest = file->i_defs + below + 1;
394
+ while (sp > dest)
395
+ {
396
+ *sp = sp[-1];
397
+ sp--;
398
+ }
399
+ stab = (struct symtab *) malloc(sizeof (struct symtab));
400
+ if (stab == NULL)
401
+ fatalerr("malloc()/realloc() failure in insert_defn()\n");
402
+
403
+ debug(1,("defining %s to %s in file %s\n", name, val, file->i_file));
404
+ stab->s_name = copy(name);
405
+ stab->s_value = copy(val);
406
+ *sp = stab;
407
+ }
408
+
409
+ void
410
+ define(char *def, struct inclist *file)
411
+ {
412
+ char *val;
413
+
414
+ /* Separate symbol name and its value */
415
+ val = def;
416
+ while (isalnum(*val) || *val == '_')
417
+ val++;
418
+ if (*val)
419
+ *val++ = '\0';
420
+ while (*val == ' ' || *val == '\t')
421
+ val++;
422
+
423
+ if (!*val)
424
+ val = "1";
425
+ define2(def, val, file);
426
+ }
427
+
428
+ struct symtab **
429
+ slookup(char *symbol, struct inclist *file)
430
+ {
431
+ register int first = 0;
432
+ register int last = file->i_ndefs - 1;
433
+
434
+ if (file) while (last >= first)
435
+ {
436
+ /* Fast inline binary search */
437
+ register char *s1;
438
+ register char *s2;
439
+ register int middle = (first + last) / 2;
440
+
441
+ /* Fast inline strchr() */
442
+ s1 = symbol;
443
+ s2 = file->i_defs[middle]->s_name;
444
+ while (*s1++ == *s2++)
445
+ if (s2[-1] == '\0') break;
446
+
447
+ /* If exact match, we're done */
448
+ if (*--s1 == *--s2)
449
+ {
450
+ return file->i_defs + middle;
451
+ }
452
+
453
+ /* If symbol > i_defs[middle] ... */
454
+ if (*s1 > *s2)
455
+ {
456
+ first = middle + 1;
457
+ }
458
+ /* else ... */
459
+ else
460
+ {
461
+ last = middle - 1;
462
+ }
463
+ }
464
+ return(NULL);
465
+ }
466
+
467
+ static int
468
+ merge2defines(struct inclist *file1, struct inclist *file2)
469
+ {
470
+ int i;
471
+
472
+ if ((file1==NULL) || (file2==NULL) ||
473
+ !(file2->i_flags & FINISHED))
474
+ return 0;
475
+
476
+ for (i=0; i < file2->i_listlen; i++)
477
+ if (file2->i_merged[i]==FALSE)
478
+ return 0;
479
+
480
+ {
481
+ int first1 = 0;
482
+ int last1 = file1->i_ndefs - 1;
483
+
484
+ int first2 = 0;
485
+ int last2 = file2->i_ndefs - 1;
486
+
487
+ int first=0;
488
+ struct symtab** i_defs = NULL;
489
+ int deflen=file1->i_ndefs+file2->i_ndefs;
490
+
491
+ debug(2,("merging %s into %s\n",
492
+ file2->i_file, file1->i_file));
493
+
494
+ if (deflen>0)
495
+ {
496
+ /* make sure deflen % SYMTABINC == 0 is still true */
497
+ deflen += (SYMTABINC - deflen % SYMTABINC) % SYMTABINC;
498
+ i_defs=(struct symtab**)
499
+ malloc(deflen*sizeof(struct symtab*));
500
+ if (i_defs==NULL) return 0;
501
+ }
502
+
503
+ while ((last1 >= first1) && (last2 >= first2))
504
+ {
505
+ char *s1=file1->i_defs[first1]->s_name;
506
+ char *s2=file2->i_defs[first2]->s_name;
507
+
508
+ if (strcmp(s1,s2) < 0)
509
+ i_defs[first++]=file1->i_defs[first1++];
510
+ else if (strcmp(s1,s2) > 0)
511
+ i_defs[first++]=file2->i_defs[first2++];
512
+ else /* equal */
513
+ {
514
+ i_defs[first++]=file2->i_defs[first2++];
515
+ first1++;
516
+ }
517
+ }
518
+ while (last1 >= first1)
519
+ {
520
+ i_defs[first++]=file1->i_defs[first1++];
521
+ }
522
+ while (last2 >= first2)
523
+ {
524
+ i_defs[first++]=file2->i_defs[first2++];
525
+ }
526
+
527
+ if (file1->i_defs) free(file1->i_defs);
528
+ file1->i_defs=i_defs;
529
+ file1->i_ndefs=first;
530
+
531
+ return 1;
532
+ }
533
+ }
534
+
535
+ void
536
+ undefine(char *symbol, struct inclist *file)
537
+ {
538
+ register struct symtab **ptr;
539
+ struct inclist *srcfile;
540
+ while ((ptr = isdefined(symbol, file, &srcfile)) != NULL)
541
+ {
542
+ srcfile->i_ndefs--;
543
+ for (; ptr < srcfile->i_defs + srcfile->i_ndefs; ptr++)
544
+ *ptr = ptr[1];
545
+ }
546
+ }
547
+
548
+ int
549
+ find_includes(struct filepointer *filep, struct inclist *file,
550
+ struct inclist *file_red, int recursion, boolean failOK)
551
+ {
552
+ struct inclist *inclistp;
553
+ char **includedirsp;
554
+ register char *line;
555
+ register int type;
556
+ boolean recfailOK;
557
+
558
+ while ((line = getnextline(filep))) {
559
+ switch(type = deftype(line, filep, file_red, file, TRUE)) {
560
+ case IF:
561
+ doif:
562
+ type = find_includes(filep, file,
563
+ file_red, recursion+1, failOK);
564
+ while ((type == ELIF) || (type == ELIFFALSE) ||
565
+ (type == ELIFGUESSFALSE))
566
+ type = gobble(filep, file, file_red);
567
+ if (type == ELSE)
568
+ gobble(filep, file, file_red);
569
+ break;
570
+ case IFFALSE:
571
+ case IFGUESSFALSE:
572
+ doiffalse:
573
+ if (type == IFGUESSFALSE || type == ELIFGUESSFALSE)
574
+ recfailOK = TRUE;
575
+ else
576
+ recfailOK = failOK;
577
+ type = gobble(filep, file, file_red);
578
+ if (type == ELSE)
579
+ find_includes(filep, file,
580
+ file_red, recursion+1, recfailOK);
581
+ else
582
+ if (type == ELIF)
583
+ goto doif;
584
+ else
585
+ if ((type == ELIFFALSE) || (type == ELIFGUESSFALSE))
586
+ goto doiffalse;
587
+ break;
588
+ case IFDEF:
589
+ case IFNDEF:
590
+ if ((type == IFDEF && isdefined(line, file_red, NULL))
591
+ || (type == IFNDEF && !isdefined(line, file_red, NULL))) {
592
+ debug(1,(type == IFNDEF ?
593
+ "line %d: %s !def'd in %s via %s%s\n" : "",
594
+ filep->f_line, line,
595
+ file->i_file, file_red->i_file, ": doit"));
596
+ type = find_includes(filep, file,
597
+ file_red, recursion+1, failOK);
598
+ while (type == ELIF || type == ELIFFALSE || type == ELIFGUESSFALSE)
599
+ type = gobble(filep, file, file_red);
600
+ if (type == ELSE)
601
+ gobble(filep, file, file_red);
602
+ }
603
+ else {
604
+ debug(1,(type == IFDEF ?
605
+ "line %d: %s !def'd in %s via %s%s\n" : "",
606
+ filep->f_line, line,
607
+ file->i_file, file_red->i_file, ": gobble"));
608
+ type = gobble(filep, file, file_red);
609
+ if (type == ELSE)
610
+ find_includes(filep, file,
611
+ file_red, recursion+1, failOK);
612
+ else if (type == ELIF)
613
+ goto doif;
614
+ else if (type == ELIFFALSE || type == ELIFGUESSFALSE)
615
+ goto doiffalse;
616
+ }
617
+ break;
618
+ case ELSE:
619
+ case ELIFFALSE:
620
+ case ELIFGUESSFALSE:
621
+ case ELIF:
622
+ if (!recursion)
623
+ gobble(filep, file, file_red);
624
+ case ENDIF:
625
+ if (recursion)
626
+ return(type);
627
+ case DEFINE:
628
+ define(line, file);
629
+ break;
630
+ case UNDEF:
631
+ if (!*line) {
632
+ warning("%s", file_red->i_file);
633
+ if (file_red != file)
634
+ warning1(" (reading %s)", file->i_file);
635
+ warning1(", line %d: incomplete undef == \"%s\"\n",
636
+ filep->f_line, line);
637
+ break;
638
+ }
639
+ undefine(line, file_red);
640
+ break;
641
+ case INCLUDE:
642
+ case INCLUDEDOT:
643
+ case INCLUDENEXT:
644
+ case INCLUDENEXTDOT:
645
+ inclistp = inclistnext;
646
+ includedirsp = includedirsnext;
647
+ debug(2,("%s, reading %s, includes %s\n",
648
+ file_red->i_file, file->i_file, line));
649
+ add_include(filep, file, file_red, line, type, failOK);
650
+ inclistnext = inclistp;
651
+ includedirsnext = includedirsp;
652
+ break;
653
+ case ERROR:
654
+ case WARNING:
655
+ warning("%s", file_red->i_file);
656
+ if (file_red != file)
657
+ warning1(" (reading %s)", file->i_file);
658
+ warning1(", line %d: %s\n",
659
+ filep->f_line, line);
660
+ break;
661
+
662
+ case PRAGMA:
663
+ case IDENT:
664
+ case SCCS:
665
+ case EJECT:
666
+ break;
667
+ case -1:
668
+ warning("%s", file_red->i_file);
669
+ if (file_red != file)
670
+ warning1(" (reading %s)", file->i_file);
671
+ warning1(", line %d: unknown directive == \"%s\"\n",
672
+ filep->f_line, line);
673
+ break;
674
+ case -2:
675
+ warning("%s", file_red->i_file);
676
+ if (file_red != file)
677
+ warning1(" (reading %s)", file->i_file);
678
+ warning1(", line %d: incomplete include == \"%s\"\n",
679
+ filep->f_line, line);
680
+ break;
681
+ }
682
+ }
683
+ file->i_flags |= FINISHED;
684
+ debug(2,("finished with %s\n", file->i_file));
685
+ return(-1);
686
+ }