distil 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (552) hide show
  1. data/Rakefile +28 -0
  2. data/VERSION +1 -0
  3. data/bin/distil +45 -0
  4. data/distil.gemspec +586 -0
  5. data/lib/bootstrap-template.js +56 -0
  6. data/lib/configurable.rb +125 -0
  7. data/lib/file-set.rb +42 -0
  8. data/lib/file-types/css-file.rb +75 -0
  9. data/lib/file-types/html-file.rb +11 -0
  10. data/lib/file-types/javascript-file.rb +98 -0
  11. data/lib/file-types/json-file.rb +14 -0
  12. data/lib/file-types/nib-file.rb +9 -0
  13. data/lib/jsdoc.conf +18 -0
  14. data/lib/jsl.conf +121 -0
  15. data/lib/project.rb +96 -0
  16. data/lib/source-file.rb +181 -0
  17. data/lib/target.rb +96 -0
  18. data/lib/task.rb +239 -0
  19. data/lib/tasks/copy-task.rb +21 -0
  20. data/lib/tasks/css-task.rb +18 -0
  21. data/lib/tasks/javascript-task.rb +125 -0
  22. data/lib/tasks/multiple-output-task.rb +134 -0
  23. data/lib/tasks/nib-task.rb +83 -0
  24. data/lib/tasks/output-task.rb +73 -0
  25. data/lib/tasks/single-output-task.rb +83 -0
  26. data/lib/tasks/test-task.rb +280 -0
  27. data/lib/test/HtmlTestReporter.js +127 -0
  28. data/lib/test/Test.js +248 -0
  29. data/lib/test/TestReporter.js +79 -0
  30. data/lib/test/TestRunner.js +132 -0
  31. data/lib/test/browser.rb +97 -0
  32. data/lib/test/scriptwrapper.html +10 -0
  33. data/lib/test/unittest.html +127 -0
  34. data/vendor/Makefile +35 -0
  35. data/vendor/extconf.rb +3 -0
  36. data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
  37. data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
  38. data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
  39. data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
  40. data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
  41. data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
  42. data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
  43. data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
  44. data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
  45. data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
  46. data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
  47. data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
  48. data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
  49. data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
  50. data/vendor/jsdoc-toolkit/README.txt +183 -0
  51. data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
  52. data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  53. data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
  54. data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
  55. data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  56. data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
  57. data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  58. data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
  59. data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  60. data/vendor/jsdoc-toolkit/app/frame.js +33 -0
  61. data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  62. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  63. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  64. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  65. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  66. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  67. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
  68. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  69. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  70. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  71. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
  72. data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  73. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
  74. data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
  75. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  76. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  77. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  78. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  79. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  80. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
  81. data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  82. data/vendor/jsdoc-toolkit/app/main.js +129 -0
  83. data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  84. data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  85. data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  86. data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
  87. data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  88. data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  89. data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  90. data/vendor/jsdoc-toolkit/app/run.js +348 -0
  91. data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  92. data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
  93. data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
  94. data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  95. data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
  96. data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
  97. data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
  98. data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
  99. data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
  100. data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
  101. data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
  102. data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  103. data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
  104. data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
  105. data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  106. data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  107. data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
  108. data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
  109. data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
  110. data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
  111. data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  112. data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
  113. data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
  114. data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
  115. data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
  116. data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  117. data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
  118. data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
  119. data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  120. data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
  121. data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  122. data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
  123. data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
  124. data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
  125. data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
  126. data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  127. data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  128. data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  129. data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
  130. data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  131. data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  132. data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
  133. data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
  134. data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  135. data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
  136. data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
  137. data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
  138. data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  139. data/vendor/jsdoc-toolkit/app/test.js +342 -0
  140. data/vendor/jsdoc-toolkit/changes.txt +116 -0
  141. data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
  142. data/vendor/jsdoc-toolkit/java/build.xml +36 -0
  143. data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
  144. data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
  145. data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  146. data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
  147. data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
  148. data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
  149. data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
  150. data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  151. data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  152. data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  153. data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  154. data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  155. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
  156. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
  157. data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  158. data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  159. data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  160. data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  161. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
  162. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
  163. data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
  164. data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
  165. data/vendor/jsl-0.3.0/src/README.html +826 -0
  166. data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
  167. data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
  168. data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
  169. data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
  170. data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
  171. data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
  172. data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
  173. data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
  174. data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
  175. data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
  176. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
  177. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
  178. data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
  179. data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
  180. data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
  181. data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
  182. data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
  183. data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
  184. data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
  185. data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
  186. data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
  187. data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
  188. data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
  189. data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
  190. data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
  191. data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
  192. data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
  193. data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
  194. data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
  195. data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
  196. data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
  197. data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
  198. data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
  199. data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
  200. data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
  201. data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
  202. data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
  203. data/vendor/jsl-0.3.0/src/config.mk +166 -0
  204. data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
  205. data/vendor/jsl-0.3.0/src/editline/README +83 -0
  206. data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
  207. data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
  208. data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
  209. data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
  210. data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
  211. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
  212. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
  213. data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
  214. data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
  215. data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
  216. data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
  217. data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
  218. data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
  219. data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
  220. data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
  221. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
  222. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
  223. data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
  224. data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
  225. data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
  226. data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
  227. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
  228. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
  229. data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
  230. data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
  231. data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
  232. data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
  233. data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
  234. data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
  235. data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
  236. data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
  237. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
  238. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
  239. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
  240. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
  241. data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
  242. data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
  243. data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
  244. data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
  245. data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
  246. data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
  247. data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
  248. data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
  249. data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
  250. data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
  251. data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
  252. data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
  253. data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
  254. data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
  255. data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
  256. data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
  257. data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
  258. data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
  259. data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
  260. data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
  261. data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
  262. data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
  263. data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
  264. data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
  265. data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
  266. data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
  267. data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
  268. data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
  269. data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
  270. data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
  271. data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
  272. data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
  273. data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
  274. data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
  275. data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
  276. data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
  277. data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
  278. data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
  279. data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
  280. data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
  281. data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
  282. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
  283. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
  284. data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
  285. data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
  286. data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
  287. data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
  288. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
  289. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
  290. data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
  291. data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
  292. data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
  293. data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
  294. data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
  295. data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
  296. data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
  297. data/vendor/jsl-0.3.0/src/js.c +2447 -0
  298. data/vendor/jsl-0.3.0/src/js.dsp +420 -0
  299. data/vendor/jsl-0.3.0/src/js.mak +4025 -0
  300. data/vendor/jsl-0.3.0/src/js.mdp +0 -0
  301. data/vendor/jsl-0.3.0/src/js.msg +291 -0
  302. data/vendor/jsl-0.3.0/src/js.pkg +2 -0
  303. data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
  304. data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
  305. data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
  306. data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
  307. data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
  308. data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
  309. data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
  310. data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
  311. data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
  312. data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
  313. data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
  314. data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
  315. data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
  316. data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
  317. data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
  318. data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
  319. data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
  320. data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
  321. data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
  322. data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
  323. data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
  324. data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
  325. data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
  326. data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
  327. data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
  328. data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
  329. data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
  330. data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
  331. data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
  332. data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
  333. data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
  334. data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
  335. data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
  336. data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
  337. data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
  338. data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
  339. data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
  340. data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
  341. data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
  342. data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
  343. data/vendor/jsl-0.3.0/src/jshash.c +471 -0
  344. data/vendor/jsl-0.3.0/src/jshash.h +152 -0
  345. data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
  346. data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
  347. data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
  348. data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
  349. data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
  350. data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
  351. data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
  352. data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
  353. data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
  354. data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
  355. data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
  356. data/vendor/jsl-0.3.0/src/jslock.h +289 -0
  357. data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
  358. data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
  359. data/vendor/jsl-0.3.0/src/jslong.c +281 -0
  360. data/vendor/jsl-0.3.0/src/jslong.h +437 -0
  361. data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
  362. data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
  363. data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
  364. data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
  365. data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
  366. data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
  367. data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
  368. data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
  369. data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
  370. data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
  371. data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
  372. data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
  373. data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
  374. data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
  375. data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
  376. data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
  377. data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
  378. data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
  379. data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
  380. data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
  381. data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
  382. data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
  383. data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
  384. data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
  385. data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
  386. data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
  387. data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
  388. data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
  389. data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
  390. data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
  391. data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
  392. data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
  393. data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
  394. data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
  395. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
  396. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
  397. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
  398. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
  399. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
  400. data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
  401. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  402. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  403. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
  404. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
  405. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
  406. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  407. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  408. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  409. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  410. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  411. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  412. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
  413. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
  414. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
  415. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
  416. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
  417. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
  418. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
  419. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
  420. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
  421. data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
  422. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
  423. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
  424. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
  425. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
  426. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
  427. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
  428. data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
  429. data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
  430. data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
  431. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
  432. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
  433. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
  434. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
  435. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
  436. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
  437. data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
  438. data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
  439. data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
  440. data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
  441. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
  442. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
  443. data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
  444. data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
  445. data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
  446. data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
  447. data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
  448. data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
  449. data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
  450. data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
  451. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
  452. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
  453. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
  454. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
  455. data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
  456. data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
  457. data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
  458. data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
  459. data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
  460. data/vendor/jsl-0.3.0/src/perfect.js +39 -0
  461. data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
  462. data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
  463. data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
  464. data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
  465. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
  466. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
  467. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
  468. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
  469. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
  470. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
  471. data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
  472. data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
  473. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
  474. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
  475. data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
  476. data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
  477. data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
  478. data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
  479. data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
  480. data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
  481. data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
  482. data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
  483. data/vendor/jsl-0.3.0/src/resource.h +15 -0
  484. data/vendor/jsl-0.3.0/src/rules.mk +193 -0
  485. data/vendor/jsl-0.3.0/src/win32.order +391 -0
  486. data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
  487. data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
  488. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
  489. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
  490. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
  491. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
  492. data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
  493. data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
  494. data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
  495. data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
  496. data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
  497. data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
  498. data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
  499. data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
  500. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
  501. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
  502. data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
  503. data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
  504. data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
  505. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
  506. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
  507. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
  508. data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
  509. data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
  510. data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
  511. data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
  512. data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
  513. data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
  514. data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
  515. data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
  516. data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
  517. data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
  518. data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
  519. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
  520. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
  521. data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
  522. data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
  523. data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
  524. data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
  525. data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
  526. data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
  527. data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
  528. data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
  529. data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
  530. data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
  531. data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
  532. data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
  533. data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
  534. data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
  535. data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
  536. data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
  537. data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
  538. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
  539. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
  540. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
  541. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
  542. data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
  543. data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
  544. data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
  545. data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
  546. data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
  547. data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
  548. data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
  549. data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
  550. data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
  551. data/vendor/yuicompressor-2.4.2.jar +0 -0
  552. metadata +605 -0
@@ -0,0 +1,576 @@
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
+ #ifndef jsemit_h___
41
+ #define jsemit_h___
42
+ /*
43
+ * JS bytecode generation.
44
+ */
45
+
46
+ #include "jsstddef.h"
47
+ #include "jstypes.h"
48
+ #include "jsatom.h"
49
+ #include "jsopcode.h"
50
+ #include "jsprvtd.h"
51
+ #include "jspubtd.h"
52
+
53
+ JS_BEGIN_EXTERN_C
54
+
55
+ /*
56
+ * NB: If you add non-loop STMT_* enumerators, do so before STMT_DO_LOOP or
57
+ * you will break the STMT_IS_LOOP macro, just below this enum.
58
+ */
59
+ typedef enum JSStmtType {
60
+ STMT_BLOCK = 0, /* compound statement: { s1[;... sN] } */
61
+ STMT_LABEL = 1, /* labeled statement: L: s */
62
+ STMT_IF = 2, /* if (then) statement */
63
+ STMT_ELSE = 3, /* else clause of if statement */
64
+ STMT_SWITCH = 4, /* switch statement */
65
+ STMT_WITH = 5, /* with statement */
66
+ STMT_TRY = 6, /* try statement */
67
+ STMT_CATCH = 7, /* catch block */
68
+ STMT_FINALLY = 8, /* finally statement */
69
+ STMT_SUBROUTINE = 9, /* gosub-target subroutine body */
70
+ STMT_DO_LOOP = 10, /* do/while loop statement */
71
+ STMT_FOR_LOOP = 11, /* for loop statement */
72
+ STMT_FOR_IN_LOOP = 12, /* for/in loop statement */
73
+ STMT_WHILE_LOOP = 13 /* while loop statement */
74
+ } JSStmtType;
75
+
76
+ #define STMT_IS_LOOP(stmt) ((stmt)->type >= STMT_DO_LOOP)
77
+
78
+ typedef struct JSStmtInfo JSStmtInfo;
79
+
80
+ struct JSStmtInfo {
81
+ JSStmtType type; /* statement type */
82
+ ptrdiff_t update; /* loop update offset (top if none) */
83
+ ptrdiff_t breaks; /* offset of last break in loop */
84
+ ptrdiff_t continues; /* offset of last continue in loop */
85
+ ptrdiff_t gosub; /* offset of last GOSUB for this finally */
86
+ ptrdiff_t catchJump; /* offset of last end-of-catch jump */
87
+ JSAtom *label; /* name of LABEL or CATCH var */
88
+ JSStmtInfo *down; /* info for enclosing statement */
89
+ };
90
+
91
+ #define SET_STATEMENT_TOP(stmt, top) \
92
+ ((stmt)->update = (top), (stmt)->breaks = \
93
+ (stmt)->continues = (stmt)->catchJump = (stmt)->gosub = (-1))
94
+
95
+ struct JSTreeContext { /* tree context for semantic checks */
96
+ uint16 flags; /* statement state flags, see below */
97
+ uint16 numGlobalVars; /* max. no. of global variables/regexps */
98
+ uint32 tryCount; /* total count of try statements parsed */
99
+ uint32 globalUses; /* optimizable global var uses in total */
100
+ uint32 loopyGlobalUses;/* optimizable global var uses in loops */
101
+ JSStmtInfo *topStmt; /* top of statement info stack */
102
+ JSAtomList decls; /* function, const, and var declarations */
103
+ JSParseNode *nodeList; /* list of recyclable parse-node structs */
104
+ JSTreeContext *down; /* info for enclosing tree context */
105
+ };
106
+
107
+ #define TCF_COMPILING 0x01 /* generating bytecode; this tc is a cg */
108
+ #define TCF_IN_FUNCTION 0x02 /* parsing inside function body */
109
+ #define TCF_RETURN_EXPR 0x04 /* function has 'return expr;' */
110
+ #define TCF_RETURN_VOID 0x08 /* function has 'return;' */
111
+ #define TCF_IN_FOR_INIT 0x10 /* parsing init expr of for; exclude 'in' */
112
+ #define TCF_FUN_CLOSURE_VS_VAR 0x20 /* function and var with same name */
113
+ #define TCF_FUN_USES_NONLOCALS 0x40 /* function refers to non-local names */
114
+ #define TCF_FUN_HEAVYWEIGHT 0x80 /* function needs Call object per call */
115
+ #define TCF_FUN_FLAGS 0xE0 /* flags to propagate from FunctionBody */
116
+ #define TCF_IN_FOR_POST 0x100 /* parsing post expr of for (lint) */
117
+
118
+ #define TREE_CONTEXT_INIT(tc) \
119
+ ((tc)->flags = (tc)->numGlobalVars = 0, \
120
+ (tc)->tryCount = (tc)->globalUses = (tc)->loopyGlobalUses = 0, \
121
+ (tc)->topStmt = NULL, ATOM_LIST_INIT(&(tc)->decls), \
122
+ (tc)->nodeList = NULL, (tc)->down = NULL)
123
+
124
+ #define TREE_CONTEXT_FINISH(tc) \
125
+ ((void)0)
126
+
127
+ /*
128
+ * Span-dependent instructions are jumps whose span (from the jump bytecode to
129
+ * the jump target) may require 2 or 4 bytes of immediate operand.
130
+ */
131
+ typedef struct JSSpanDep JSSpanDep;
132
+ typedef struct JSJumpTarget JSJumpTarget;
133
+
134
+ struct JSSpanDep {
135
+ ptrdiff_t top; /* offset of first bytecode in an opcode */
136
+ ptrdiff_t offset; /* offset - 1 within opcode of jump operand */
137
+ ptrdiff_t before; /* original offset - 1 of jump operand */
138
+ JSJumpTarget *target; /* tagged target pointer or backpatch delta */
139
+ };
140
+
141
+ /*
142
+ * Jump targets are stored in an AVL tree, for O(log(n)) lookup with targets
143
+ * sorted by offset from left to right, so that targets after a span-dependent
144
+ * instruction whose jump offset operand must be extended can be found quickly
145
+ * and adjusted upward (toward higher offsets).
146
+ */
147
+ struct JSJumpTarget {
148
+ ptrdiff_t offset; /* offset of span-dependent jump target */
149
+ int balance; /* AVL tree balance number */
150
+ JSJumpTarget *kids[2]; /* left and right AVL tree child pointers */
151
+ };
152
+
153
+ #define JT_LEFT 0
154
+ #define JT_RIGHT 1
155
+ #define JT_OTHER_DIR(dir) (1 - (dir))
156
+ #define JT_IMBALANCE(dir) (((dir) << 1) - 1)
157
+ #define JT_DIR(imbalance) (((imbalance) + 1) >> 1)
158
+
159
+ /*
160
+ * Backpatch deltas are encoded in JSSpanDep.target if JT_TAG_BIT is clear,
161
+ * so we can maintain backpatch chains when using span dependency records to
162
+ * hold jump offsets that overflow 16 bits.
163
+ */
164
+ #define JT_TAG_BIT ((jsword) 1)
165
+ #define JT_UNTAG_SHIFT 1
166
+ #define JT_SET_TAG(jt) ((JSJumpTarget *)((jsword)(jt) | JT_TAG_BIT))
167
+ #define JT_CLR_TAG(jt) ((JSJumpTarget *)((jsword)(jt) & ~JT_TAG_BIT))
168
+ #define JT_HAS_TAG(jt) ((jsword)(jt) & JT_TAG_BIT)
169
+
170
+ #define BITS_PER_PTRDIFF (sizeof(ptrdiff_t) * JS_BITS_PER_BYTE)
171
+ #define BITS_PER_BPDELTA (BITS_PER_PTRDIFF - 1 - JT_UNTAG_SHIFT)
172
+ #define BPDELTA_MAX (((ptrdiff_t)1 << BITS_PER_BPDELTA) - 1)
173
+ #define BPDELTA_TO_JT(bp) ((JSJumpTarget *)((bp) << JT_UNTAG_SHIFT))
174
+ #define JT_TO_BPDELTA(jt) ((ptrdiff_t)((jsword)(jt) >> JT_UNTAG_SHIFT))
175
+
176
+ #define SD_SET_TARGET(sd,jt) ((sd)->target = JT_SET_TAG(jt))
177
+ #define SD_SET_BPDELTA(sd,bp) ((sd)->target = BPDELTA_TO_JT(bp))
178
+ #define SD_GET_BPDELTA(sd) (JS_ASSERT(!JT_HAS_TAG((sd)->target)), \
179
+ JT_TO_BPDELTA((sd)->target))
180
+ #define SD_TARGET_OFFSET(sd) (JS_ASSERT(JT_HAS_TAG((sd)->target)), \
181
+ JT_CLR_TAG((sd)->target)->offset)
182
+
183
+ struct JSCodeGenerator {
184
+ JSTreeContext treeContext; /* base state: statement info stack, etc. */
185
+ JSArenaPool *codePool; /* pointer to thread code arena pool */
186
+ JSArenaPool *notePool; /* pointer to thread srcnote arena pool */
187
+ void *codeMark; /* low watermark in cg->codePool */
188
+ void *noteMark; /* low watermark in cg->notePool */
189
+ void *tempMark; /* low watermark in cx->tempPool */
190
+ struct {
191
+ jsbytecode *base; /* base of JS bytecode vector */
192
+ jsbytecode *limit; /* one byte beyond end of bytecode */
193
+ jsbytecode *next; /* pointer to next free bytecode */
194
+ jssrcnote *notes; /* source notes, see below */
195
+ uintN noteCount; /* number of source notes so far */
196
+ uintN noteMask; /* growth increment for notes */
197
+ ptrdiff_t lastNoteOffset; /* code offset for last source note */
198
+ uintN currentLine; /* line number for tree-based srcnote gen */
199
+ } prolog, main, *current;
200
+ const char *filename; /* null or weak link to source filename */
201
+ uintN firstLine; /* first line, for js_NewScriptFromCG */
202
+ JSPrincipals *principals; /* principals for constant folding eval */
203
+ JSAtomList atomList; /* literals indexed for mapping */
204
+ intN stackDepth; /* current stack depth in script frame */
205
+ uintN maxStackDepth; /* maximum stack depth so far */
206
+ JSTryNote *tryBase; /* first exception handling note */
207
+ JSTryNote *tryNext; /* next available note */
208
+ size_t tryNoteSpace; /* # of bytes allocated at tryBase */
209
+ JSSpanDep *spanDeps; /* span dependent instruction records */
210
+ JSJumpTarget *jumpTargets; /* AVL tree of jump target offsets */
211
+ JSJumpTarget *jtFreeList; /* JT_LEFT-linked list of free structs */
212
+ uintN numSpanDeps; /* number of span dependencies */
213
+ uintN numJumpTargets; /* number of jump targets */
214
+ uintN emitLevel; /* js_EmitTree recursion level */
215
+ JSAtomList constList; /* compile time constants */
216
+ JSCodeGenerator *parent; /* Enclosing function or global context */
217
+ };
218
+
219
+ #define CG_BASE(cg) ((cg)->current->base)
220
+ #define CG_LIMIT(cg) ((cg)->current->limit)
221
+ #define CG_NEXT(cg) ((cg)->current->next)
222
+ #define CG_CODE(cg,offset) (CG_BASE(cg) + (offset))
223
+ #define CG_OFFSET(cg) PTRDIFF(CG_NEXT(cg), CG_BASE(cg), jsbytecode)
224
+
225
+ #define CG_NOTES(cg) ((cg)->current->notes)
226
+ #define CG_NOTE_COUNT(cg) ((cg)->current->noteCount)
227
+ #define CG_NOTE_MASK(cg) ((cg)->current->noteMask)
228
+ #define CG_LAST_NOTE_OFFSET(cg) ((cg)->current->lastNoteOffset)
229
+ #define CG_CURRENT_LINE(cg) ((cg)->current->currentLine)
230
+
231
+ #define CG_PROLOG_BASE(cg) ((cg)->prolog.base)
232
+ #define CG_PROLOG_LIMIT(cg) ((cg)->prolog.limit)
233
+ #define CG_PROLOG_NEXT(cg) ((cg)->prolog.next)
234
+ #define CG_PROLOG_CODE(cg,poff) (CG_PROLOG_BASE(cg) + (poff))
235
+ #define CG_PROLOG_OFFSET(cg) PTRDIFF(CG_PROLOG_NEXT(cg), CG_PROLOG_BASE(cg),\
236
+ jsbytecode)
237
+
238
+ #define CG_SWITCH_TO_MAIN(cg) ((cg)->current = &(cg)->main)
239
+ #define CG_SWITCH_TO_PROLOG(cg) ((cg)->current = &(cg)->prolog)
240
+
241
+ /*
242
+ * Initialize cg to allocate bytecode space from codePool, source note space
243
+ * from notePool, and all other arena-allocated temporaries from cx->tempPool.
244
+ * Return true on success. Report an error and return false if the initial
245
+ * code segment can't be allocated.
246
+ */
247
+ extern JS_FRIEND_API(JSBool)
248
+ js_InitCodeGenerator(JSContext *cx, JSCodeGenerator *cg,
249
+ JSArenaPool *codePool, JSArenaPool *notePool,
250
+ const char *filename, uintN lineno,
251
+ JSPrincipals *principals);
252
+
253
+ /*
254
+ * Release cg->codePool, cg->notePool, and cx->tempPool to marks set by
255
+ * js_InitCodeGenerator. Note that cgs are magic: they own the arena pool
256
+ * "tops-of-stack" space above their codeMark, noteMark, and tempMark points.
257
+ * This means you cannot alloc from tempPool and save the pointer beyond the
258
+ * next JS_FinishCodeGenerator.
259
+ */
260
+ extern JS_FRIEND_API(void)
261
+ js_FinishCodeGenerator(JSContext *cx, JSCodeGenerator *cg);
262
+
263
+ /*
264
+ * Emit one bytecode.
265
+ */
266
+ extern ptrdiff_t
267
+ js_Emit1(JSContext *cx, JSCodeGenerator *cg, JSOp op);
268
+
269
+ /*
270
+ * Emit two bytecodes, an opcode (op) with a byte of immediate operand (op1).
271
+ */
272
+ extern ptrdiff_t
273
+ js_Emit2(JSContext *cx, JSCodeGenerator *cg, JSOp op, jsbytecode op1);
274
+
275
+ /*
276
+ * Emit three bytecodes, an opcode with two bytes of immediate operands.
277
+ */
278
+ extern ptrdiff_t
279
+ js_Emit3(JSContext *cx, JSCodeGenerator *cg, JSOp op, jsbytecode op1,
280
+ jsbytecode op2);
281
+
282
+ /*
283
+ * Emit (1 + extra) bytecodes, for N bytes of op and its immediate operand.
284
+ */
285
+ extern ptrdiff_t
286
+ js_EmitN(JSContext *cx, JSCodeGenerator *cg, JSOp op, size_t extra);
287
+
288
+ /*
289
+ * Unsafe macro to call js_SetJumpOffset and return false if it does.
290
+ */
291
+ #define CHECK_AND_SET_JUMP_OFFSET(cx,cg,pc,off) \
292
+ JS_BEGIN_MACRO \
293
+ if (!js_SetJumpOffset(cx, cg, pc, off)) \
294
+ return JS_FALSE; \
295
+ JS_END_MACRO
296
+
297
+ #define CHECK_AND_SET_JUMP_OFFSET_AT(cx,cg,off) \
298
+ CHECK_AND_SET_JUMP_OFFSET(cx, cg, CG_CODE(cg,off), CG_OFFSET(cg) - (off))
299
+
300
+ extern JSBool
301
+ js_SetJumpOffset(JSContext *cx, JSCodeGenerator *cg, jsbytecode *pc,
302
+ ptrdiff_t off);
303
+
304
+ /* Test whether we're in a with statement. */
305
+ extern JSBool
306
+ js_InWithStatement(JSTreeContext *tc);
307
+
308
+ /* Test whether we're in a catch block with exception named by atom. */
309
+ extern JSBool
310
+ js_InCatchBlock(JSTreeContext *tc, JSAtom *atom);
311
+
312
+ /*
313
+ * Push the C-stack-allocated struct at stmt onto the stmtInfo stack.
314
+ */
315
+ extern void
316
+ js_PushStatement(JSTreeContext *tc, JSStmtInfo *stmt, JSStmtType type,
317
+ ptrdiff_t top);
318
+
319
+ /*
320
+ * Pop tc->topStmt. If the top JSStmtInfo struct is not stack-allocated, it
321
+ * is up to the caller to free it.
322
+ */
323
+ extern void
324
+ js_PopStatement(JSTreeContext *tc);
325
+
326
+ /*
327
+ * Like js_PopStatement(&cg->treeContext), also patch breaks and continues.
328
+ * May fail if a jump offset overflows.
329
+ */
330
+ extern JSBool
331
+ js_PopStatementCG(JSContext *cx, JSCodeGenerator *cg);
332
+
333
+ /*
334
+ * Define and lookup a primitive jsval associated with the const named by atom.
335
+ * js_DefineCompileTimeConstant analyzes the constant-folded initializer at pn
336
+ * and saves the const's value in cg->constList, if it can be used at compile
337
+ * time. It returns true unless an error occurred.
338
+ *
339
+ * If the initializer's value could not be saved, js_LookupCompileTimeConstant
340
+ * calls will return the undefined value. js_LookupCompileTimeConstant tries
341
+ * to find a const value memorized for atom, returning true with *vp set to a
342
+ * value other than undefined if the constant was found, true with *vp set to
343
+ * JSVAL_VOID if not found, and false on error.
344
+ */
345
+ extern JSBool
346
+ js_DefineCompileTimeConstant(JSContext *cx, JSCodeGenerator *cg, JSAtom *atom,
347
+ JSParseNode *pn);
348
+
349
+ extern JSBool
350
+ js_LookupCompileTimeConstant(JSContext *cx, JSCodeGenerator *cg, JSAtom *atom,
351
+ jsval *vp);
352
+
353
+ /*
354
+ * Emit code into cg for the tree rooted at pn.
355
+ */
356
+ extern JSBool
357
+ js_EmitTree(JSContext *cx, JSCodeGenerator *cg, JSParseNode *pn);
358
+
359
+ /*
360
+ * Emit code into cg for the tree rooted at body, then create a persistent
361
+ * script for fun from cg.
362
+ */
363
+ extern JSBool
364
+ js_EmitFunctionBody(JSContext *cx, JSCodeGenerator *cg, JSParseNode *body,
365
+ JSFunction *fun);
366
+
367
+ /*
368
+ * Source notes generated along with bytecode for decompiling and debugging.
369
+ * A source note is a uint8 with 5 bits of type and 3 of offset from the pc of
370
+ * the previous note. If 3 bits of offset aren't enough, extended delta notes
371
+ * (SRC_XDELTA) consisting of 2 set high order bits followed by 6 offset bits
372
+ * are emitted before the next note. Some notes have operand offsets encoded
373
+ * immediately after them, in note bytes or byte-triples.
374
+ *
375
+ * Source Note Extended Delta
376
+ * +7-6-5-4-3+2-1-0+ +7-6-5+4-3-2-1-0+
377
+ * |note-type|delta| |1 1| ext-delta |
378
+ * +---------+-----+ +---+-----------+
379
+ *
380
+ * At most one "gettable" note (i.e., a note of type other than SRC_NEWLINE,
381
+ * SRC_SETLINE, and SRC_XDELTA) applies to a given bytecode.
382
+ *
383
+ * NB: the js_SrcNoteSpec array in jsemit.c is indexed by this enum, so its
384
+ * initializers need to match the order here.
385
+ */
386
+ typedef enum JSSrcNoteType {
387
+ SRC_NULL = 0, /* terminates a note vector */
388
+ SRC_IF = 1, /* JSOP_IFEQ bytecode is from an if-then */
389
+ SRC_IF_ELSE = 2, /* JSOP_IFEQ bytecode is from an if-then-else */
390
+ SRC_WHILE = 3, /* JSOP_IFEQ is from a while loop */
391
+ SRC_FOR = 4, /* JSOP_NOP or JSOP_POP in for loop head */
392
+ SRC_CONTINUE = 5, /* JSOP_GOTO is a continue, not a break;
393
+ also used on JSOP_ENDINIT if extra comma
394
+ at end of array literal: [1,2,,] */
395
+ SRC_VAR = 6, /* JSOP_NAME/SETNAME/FORNAME in a var decl */
396
+ SRC_PCDELTA = 7, /* offset from comma-operator to next POP,
397
+ or from CONDSWITCH to first CASE opcode */
398
+ SRC_ASSIGNOP = 8, /* += or another assign-op follows */
399
+ SRC_COND = 9, /* JSOP_IFEQ is from conditional ?: operator */
400
+ SRC_RESERVED0 = 10, /* reserved for future use */
401
+ SRC_HIDDEN = 11, /* opcode shouldn't be decompiled */
402
+ SRC_PCBASE = 12, /* offset of first obj.prop.subprop bytecode */
403
+ SRC_LABEL = 13, /* JSOP_NOP for label: with atomid immediate */
404
+ SRC_LABELBRACE = 14, /* JSOP_NOP for label: {...} begin brace */
405
+ SRC_ENDBRACE = 15, /* JSOP_NOP for label: {...} end brace */
406
+ SRC_BREAK2LABEL = 16, /* JSOP_GOTO for 'break label' with atomid */
407
+ SRC_CONT2LABEL = 17, /* JSOP_GOTO for 'continue label' with atomid */
408
+ SRC_SWITCH = 18, /* JSOP_*SWITCH with offset to end of switch,
409
+ 2nd off to first JSOP_CASE if condswitch */
410
+ SRC_FUNCDEF = 19, /* JSOP_NOP for function f() with atomid */
411
+ SRC_CATCH = 20, /* catch block has guard */
412
+ SRC_CONST = 21, /* JSOP_SETCONST in a const decl */
413
+ SRC_NEWLINE = 22, /* bytecode follows a source newline */
414
+ SRC_SETLINE = 23, /* a file-absolute source line number note */
415
+ SRC_XDELTA = 24 /* 24-31 are for extended delta notes */
416
+ } JSSrcNoteType;
417
+
418
+ #define SN_TYPE_BITS 5
419
+ #define SN_DELTA_BITS 3
420
+ #define SN_XDELTA_BITS 6
421
+ #define SN_TYPE_MASK (JS_BITMASK(SN_TYPE_BITS) << SN_DELTA_BITS)
422
+ #define SN_DELTA_MASK ((ptrdiff_t)JS_BITMASK(SN_DELTA_BITS))
423
+ #define SN_XDELTA_MASK ((ptrdiff_t)JS_BITMASK(SN_XDELTA_BITS))
424
+
425
+ #define SN_MAKE_NOTE(sn,t,d) (*(sn) = (jssrcnote) \
426
+ (((t) << SN_DELTA_BITS) \
427
+ | ((d) & SN_DELTA_MASK)))
428
+ #define SN_MAKE_XDELTA(sn,d) (*(sn) = (jssrcnote) \
429
+ ((SRC_XDELTA << SN_DELTA_BITS) \
430
+ | ((d) & SN_XDELTA_MASK)))
431
+
432
+ #define SN_IS_XDELTA(sn) ((*(sn) >> SN_DELTA_BITS) >= SRC_XDELTA)
433
+ #define SN_TYPE(sn) (SN_IS_XDELTA(sn) ? SRC_XDELTA \
434
+ : *(sn) >> SN_DELTA_BITS)
435
+ #define SN_SET_TYPE(sn,type) SN_MAKE_NOTE(sn, type, SN_DELTA(sn))
436
+ #define SN_IS_GETTABLE(sn) (SN_TYPE(sn) < SRC_NEWLINE)
437
+
438
+ #define SN_DELTA(sn) ((ptrdiff_t)(SN_IS_XDELTA(sn) \
439
+ ? *(sn) & SN_XDELTA_MASK \
440
+ : *(sn) & SN_DELTA_MASK))
441
+ #define SN_SET_DELTA(sn,delta) (SN_IS_XDELTA(sn) \
442
+ ? SN_MAKE_XDELTA(sn, delta) \
443
+ : SN_MAKE_NOTE(sn, SN_TYPE(sn), delta))
444
+
445
+ #define SN_DELTA_LIMIT ((ptrdiff_t)JS_BIT(SN_DELTA_BITS))
446
+ #define SN_XDELTA_LIMIT ((ptrdiff_t)JS_BIT(SN_XDELTA_BITS))
447
+
448
+ /*
449
+ * Offset fields follow certain notes and are frequency-encoded: an offset in
450
+ * [0,0x7f] consumes one byte, an offset in [0x80,0x7fffff] takes three, and
451
+ * the high bit of the first byte is set.
452
+ */
453
+ #define SN_3BYTE_OFFSET_FLAG 0x80
454
+ #define SN_3BYTE_OFFSET_MASK 0x7f
455
+
456
+ typedef struct JSSrcNoteSpec {
457
+ const char *name; /* name for disassembly/debugging output */
458
+ uint8 arity; /* number of offset operands */
459
+ uint8 offsetBias; /* bias of offset(s) from annotated pc */
460
+ int8 isSpanDep; /* 1 or -1 if offsets could span extended ops,
461
+ 0 otherwise; sign tells span direction */
462
+ } JSSrcNoteSpec;
463
+
464
+ extern JS_FRIEND_DATA(JSSrcNoteSpec) js_SrcNoteSpec[];
465
+ extern JS_FRIEND_API(uintN) js_SrcNoteLength(jssrcnote *sn);
466
+
467
+ #define SN_LENGTH(sn) ((js_SrcNoteSpec[SN_TYPE(sn)].arity == 0) ? 1 \
468
+ : js_SrcNoteLength(sn))
469
+ #define SN_NEXT(sn) ((sn) + SN_LENGTH(sn))
470
+
471
+ /* A source note array is terminated by an all-zero element. */
472
+ #define SN_MAKE_TERMINATOR(sn) (*(sn) = SRC_NULL)
473
+ #define SN_IS_TERMINATOR(sn) (*(sn) == SRC_NULL)
474
+
475
+ /*
476
+ * Append a new source note of the given type (and therefore size) to cg's
477
+ * notes dynamic array, updating cg->noteCount. Return the new note's index
478
+ * within the array pointed at by cg->current->notes. Return -1 if out of
479
+ * memory.
480
+ */
481
+ extern intN
482
+ js_NewSrcNote(JSContext *cx, JSCodeGenerator *cg, JSSrcNoteType type);
483
+
484
+ extern intN
485
+ js_NewSrcNote2(JSContext *cx, JSCodeGenerator *cg, JSSrcNoteType type,
486
+ ptrdiff_t offset);
487
+
488
+ extern intN
489
+ js_NewSrcNote3(JSContext *cx, JSCodeGenerator *cg, JSSrcNoteType type,
490
+ ptrdiff_t offset1, ptrdiff_t offset2);
491
+
492
+ /*
493
+ * NB: this function can add at most one extra extended delta note.
494
+ */
495
+ extern jssrcnote *
496
+ js_AddToSrcNoteDelta(JSContext *cx, JSCodeGenerator *cg, jssrcnote *sn,
497
+ ptrdiff_t delta);
498
+
499
+ /*
500
+ * Get and set the offset operand identified by which (0 for the first, etc.).
501
+ */
502
+ extern JS_FRIEND_API(ptrdiff_t)
503
+ js_GetSrcNoteOffset(jssrcnote *sn, uintN which);
504
+
505
+ extern JSBool
506
+ js_SetSrcNoteOffset(JSContext *cx, JSCodeGenerator *cg, uintN index,
507
+ uintN which, ptrdiff_t offset);
508
+
509
+ /*
510
+ * Finish taking source notes in cx's notePool, copying final notes to the new
511
+ * stable store allocated by the caller and passed in via notes. Return false
512
+ * on malloc failure, which means this function reported an error.
513
+ *
514
+ * To compute the number of jssrcnotes to allocate and pass in via notes, use
515
+ * the CG_COUNT_FINAL_SRCNOTES macro. This macro knows a lot about details of
516
+ * js_FinishTakingSrcNotes, SO DON'T CHANGE jsemit.c's js_FinishTakingSrcNotes
517
+ * FUNCTION WITHOUT CHECKING WHETHER THIS MACRO NEEDS CORRESPONDING CHANGES!
518
+ */
519
+ #define CG_COUNT_FINAL_SRCNOTES(cg, cnt) \
520
+ JS_BEGIN_MACRO \
521
+ ptrdiff_t diff_ = CG_PROLOG_OFFSET(cg) - (cg)->prolog.lastNoteOffset; \
522
+ cnt = (cg)->prolog.noteCount + (cg)->main.noteCount + 1; \
523
+ if ((cg)->prolog.noteCount && \
524
+ (cg)->prolog.currentLine != (cg)->firstLine) { \
525
+ if (diff_ > SN_DELTA_MASK) \
526
+ cnt += JS_HOWMANY(diff_ - SN_DELTA_MASK, SN_XDELTA_MASK); \
527
+ cnt += 2 + (((cg)->firstLine > SN_3BYTE_OFFSET_MASK) << 1); \
528
+ } else if (diff_ > 0) { \
529
+ if (cg->main.noteCount) { \
530
+ jssrcnote *sn_ = (cg)->main.notes; \
531
+ diff_ -= SN_IS_XDELTA(sn_) \
532
+ ? SN_XDELTA_MASK - (*sn_ & SN_XDELTA_MASK) \
533
+ : SN_DELTA_MASK - (*sn_ & SN_DELTA_MASK); \
534
+ } \
535
+ if (diff_ > 0) \
536
+ cnt += JS_HOWMANY(diff_, SN_XDELTA_MASK); \
537
+ } \
538
+ JS_END_MACRO
539
+
540
+ extern JSBool
541
+ js_FinishTakingSrcNotes(JSContext *cx, JSCodeGenerator *cg, jssrcnote *notes);
542
+
543
+ /*
544
+ * Allocate cg->treeContext.tryCount notes (plus one for the end sentinel)
545
+ * from cx->tempPool and set up cg->tryBase/tryNext for exactly tryCount
546
+ * js_NewTryNote calls. The storage is freed by js_FinishCodeGenerator.
547
+ */
548
+ extern JSBool
549
+ js_AllocTryNotes(JSContext *cx, JSCodeGenerator *cg);
550
+
551
+ /*
552
+ * Grab the next trynote slot in cg, filling it in appropriately.
553
+ */
554
+ extern JSTryNote *
555
+ js_NewTryNote(JSContext *cx, JSCodeGenerator *cg, ptrdiff_t start,
556
+ ptrdiff_t end, ptrdiff_t catchStart);
557
+
558
+ /*
559
+ * Finish generating exception information into the space at notes. As with
560
+ * js_FinishTakingSrcNotes, the caller must use CG_COUNT_FINAL_TRYNOTES(cg) to
561
+ * preallocate enough space in a JSTryNote[] to pass as the notes parameter of
562
+ * js_FinishTakingTryNotes.
563
+ */
564
+ #define CG_COUNT_FINAL_TRYNOTES(cg, cnt) \
565
+ JS_BEGIN_MACRO \
566
+ cnt = ((cg)->tryNext > (cg)->tryBase) \
567
+ ? PTRDIFF(cg->tryNext, cg->tryBase, JSTryNote) + 1 \
568
+ : 0; \
569
+ JS_END_MACRO
570
+
571
+ extern void
572
+ js_FinishTakingTryNotes(JSContext *cx, JSCodeGenerator *cg, JSTryNote *notes);
573
+
574
+ JS_END_EXTERN_C
575
+
576
+ #endif /* jsemit_h___ */