pygments.rb 0.6.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (606) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +11 -0
  3. data/README.md +6 -6
  4. data/Rakefile +2 -1
  5. data/cache-lexers.rb +1 -1
  6. data/circle.yml +7 -0
  7. data/lib/pygments/lexer.rb +3 -3
  8. data/lib/pygments/popen.rb +67 -30
  9. data/lib/pygments/version.rb +1 -1
  10. data/pygments.rb.gemspec +2 -1
  11. data/test/test_pygments.rb +16 -16
  12. data/vendor/pygments-main/AUTHORS +54 -8
  13. data/vendor/pygments-main/CHANGES +247 -25
  14. data/vendor/pygments-main/LICENSE +1 -1
  15. data/vendor/pygments-main/Makefile +15 -6
  16. data/vendor/pygments-main/README.rst +39 -0
  17. data/vendor/pygments-main/REVISION +1 -1
  18. data/vendor/pygments-main/TODO +0 -3
  19. data/vendor/pygments-main/doc/_themes/pygments14/layout.html +1 -1
  20. data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +1 -1
  21. data/vendor/pygments-main/doc/conf.py +3 -11
  22. data/vendor/pygments-main/doc/docs/api.rst +15 -0
  23. data/vendor/pygments-main/doc/docs/cmdline.rst +6 -2
  24. data/vendor/pygments-main/doc/docs/filterdevelopment.rst +4 -3
  25. data/vendor/pygments-main/doc/docs/integrate.rst +11 -15
  26. data/vendor/pygments-main/doc/docs/java.rst +7 -7
  27. data/vendor/pygments-main/doc/docs/lexerdevelopment.rst +258 -171
  28. data/vendor/pygments-main/doc/docs/lexers.rst +2 -2
  29. data/vendor/pygments-main/doc/docs/styles.rst +58 -0
  30. data/vendor/pygments-main/doc/docs/tokens.rst +22 -2
  31. data/vendor/pygments-main/doc/docs/unicode.rst +15 -7
  32. data/vendor/pygments-main/doc/faq.rst +17 -21
  33. data/vendor/pygments-main/doc/index.rst +12 -11
  34. data/vendor/pygments-main/doc/languages.rst +10 -7
  35. data/vendor/pygments-main/external/autopygmentize +9 -6
  36. data/vendor/pygments-main/external/lasso-builtins-generator-9.lasso +70 -52
  37. data/vendor/pygments-main/external/markdown-processor.py +1 -1
  38. data/vendor/pygments-main/external/moin-parser.py +1 -1
  39. data/vendor/pygments-main/external/rst-directive.py +1 -1
  40. data/vendor/pygments-main/pygmentize +2 -1
  41. data/vendor/pygments-main/pygments/__init__.py +14 -15
  42. data/vendor/pygments-main/pygments/cmdline.py +188 -113
  43. data/vendor/pygments-main/pygments/console.py +13 -13
  44. data/vendor/pygments-main/pygments/filter.py +7 -7
  45. data/vendor/pygments-main/pygments/filters/__init__.py +24 -32
  46. data/vendor/pygments-main/pygments/formatter.py +5 -5
  47. data/vendor/pygments-main/pygments/formatters/__init__.py +92 -44
  48. data/vendor/pygments-main/pygments/formatters/_mapping.py +51 -69
  49. data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
  50. data/vendor/pygments-main/pygments/formatters/html.py +63 -51
  51. data/vendor/pygments-main/pygments/formatters/img.py +25 -22
  52. data/vendor/pygments-main/pygments/formatters/irc.py +182 -0
  53. data/vendor/pygments-main/pygments/formatters/latex.py +34 -22
  54. data/vendor/pygments-main/pygments/formatters/other.py +5 -7
  55. data/vendor/pygments-main/pygments/formatters/rtf.py +28 -31
  56. data/vendor/pygments-main/pygments/formatters/svg.py +1 -2
  57. data/vendor/pygments-main/pygments/formatters/terminal.py +29 -45
  58. data/vendor/pygments-main/pygments/formatters/terminal256.py +118 -31
  59. data/vendor/pygments-main/pygments/lexer.py +120 -34
  60. data/vendor/pygments-main/pygments/lexers/__init__.py +85 -53
  61. data/vendor/pygments-main/pygments/lexers/{_asybuiltins.py → _asy_builtins.py} +7 -7
  62. data/vendor/pygments-main/pygments/lexers/{_clbuiltins.py → _cl_builtins.py} +17 -17
  63. data/vendor/pygments-main/pygments/lexers/_cocoa_builtins.py +72 -0
  64. data/vendor/pygments-main/pygments/lexers/_csound_builtins.py +1346 -0
  65. data/vendor/pygments-main/pygments/lexers/{_lassobuiltins.py → _lasso_builtins.py} +4699 -4561
  66. data/vendor/pygments-main/pygments/lexers/{_luabuiltins.py → _lua_builtins.py} +91 -51
  67. data/vendor/pygments-main/pygments/lexers/_mapping.py +342 -242
  68. data/vendor/pygments-main/pygments/lexers/_mql_builtins.py +1172 -0
  69. data/vendor/pygments-main/pygments/lexers/_openedge_builtins.py +2547 -0
  70. data/vendor/pygments-main/pygments/lexers/{_phpbuiltins.py → _php_builtins.py} +350 -353
  71. data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +600 -212
  72. data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +3084 -30
  73. data/vendor/pygments-main/pygments/lexers/_sourcemod_builtins.py +1163 -0
  74. data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +91 -13
  75. data/vendor/pygments-main/pygments/lexers/_stata_builtins.py +419 -0
  76. data/vendor/pygments-main/pygments/lexers/_tsql_builtins.py +1004 -0
  77. data/vendor/pygments-main/pygments/lexers/_vim_builtins.py +1939 -0
  78. data/vendor/pygments-main/pygments/lexers/actionscript.py +240 -0
  79. data/vendor/pygments-main/pygments/lexers/agile.py +14 -2542
  80. data/vendor/pygments-main/pygments/lexers/algebra.py +221 -0
  81. data/vendor/pygments-main/pygments/lexers/ambient.py +76 -0
  82. data/vendor/pygments-main/pygments/lexers/ampl.py +87 -0
  83. data/vendor/pygments-main/pygments/lexers/apl.py +101 -0
  84. data/vendor/pygments-main/pygments/lexers/archetype.py +318 -0
  85. data/vendor/pygments-main/pygments/lexers/asm.py +276 -81
  86. data/vendor/pygments-main/pygments/lexers/automation.py +374 -0
  87. data/vendor/pygments-main/pygments/lexers/basic.py +500 -0
  88. data/vendor/pygments-main/pygments/lexers/bibtex.py +156 -0
  89. data/vendor/pygments-main/pygments/lexers/business.py +594 -0
  90. data/vendor/pygments-main/pygments/lexers/c_cpp.py +252 -0
  91. data/vendor/pygments-main/pygments/lexers/c_like.py +541 -0
  92. data/vendor/pygments-main/pygments/lexers/capnproto.py +79 -0
  93. data/vendor/pygments-main/pygments/lexers/chapel.py +101 -0
  94. data/vendor/pygments-main/pygments/lexers/clean.py +288 -0
  95. data/vendor/pygments-main/pygments/lexers/compiled.py +24 -5182
  96. data/vendor/pygments-main/pygments/lexers/configs.py +833 -0
  97. data/vendor/pygments-main/pygments/lexers/console.py +114 -0
  98. data/vendor/pygments-main/pygments/lexers/crystal.py +384 -0
  99. data/vendor/pygments-main/pygments/lexers/csound.py +366 -0
  100. data/vendor/pygments-main/pygments/lexers/css.py +689 -0
  101. data/vendor/pygments-main/pygments/lexers/d.py +251 -0
  102. data/vendor/pygments-main/pygments/lexers/dalvik.py +6 -6
  103. data/vendor/pygments-main/pygments/lexers/data.py +555 -0
  104. data/vendor/pygments-main/pygments/lexers/diff.py +165 -0
  105. data/vendor/pygments-main/pygments/lexers/dotnet.py +96 -88
  106. data/vendor/pygments-main/pygments/lexers/dsls.py +878 -0
  107. data/vendor/pygments-main/pygments/lexers/dylan.py +289 -0
  108. data/vendor/pygments-main/pygments/lexers/ecl.py +125 -0
  109. data/vendor/pygments-main/pygments/lexers/eiffel.py +65 -0
  110. data/vendor/pygments-main/pygments/lexers/elm.py +121 -0
  111. data/vendor/pygments-main/pygments/lexers/erlang.py +533 -0
  112. data/vendor/pygments-main/pygments/lexers/esoteric.py +275 -0
  113. data/vendor/pygments-main/pygments/lexers/ezhil.py +68 -0
  114. data/vendor/pygments-main/pygments/lexers/factor.py +344 -0
  115. data/vendor/pygments-main/pygments/lexers/fantom.py +250 -0
  116. data/vendor/pygments-main/pygments/lexers/felix.py +273 -0
  117. data/vendor/pygments-main/pygments/lexers/forth.py +177 -0
  118. data/vendor/pygments-main/pygments/lexers/fortran.py +205 -0
  119. data/vendor/pygments-main/pygments/lexers/foxpro.py +1 -1
  120. data/vendor/pygments-main/pygments/lexers/functional.py +11 -3661
  121. data/vendor/pygments-main/pygments/lexers/go.py +101 -0
  122. data/vendor/pygments-main/pygments/lexers/grammar_notation.py +213 -0
  123. data/vendor/pygments-main/pygments/lexers/graph.py +7 -8
  124. data/vendor/pygments-main/pygments/lexers/graphics.py +553 -0
  125. data/vendor/pygments-main/pygments/lexers/haskell.py +840 -0
  126. data/vendor/pygments-main/pygments/lexers/haxe.py +936 -0
  127. data/vendor/pygments-main/pygments/lexers/hdl.py +172 -145
  128. data/vendor/pygments-main/pygments/lexers/hexdump.py +97 -0
  129. data/vendor/pygments-main/pygments/lexers/html.py +602 -0
  130. data/vendor/pygments-main/pygments/lexers/idl.py +270 -0
  131. data/vendor/pygments-main/pygments/lexers/igor.py +288 -0
  132. data/vendor/pygments-main/pygments/lexers/inferno.py +3 -3
  133. data/vendor/pygments-main/pygments/lexers/installers.py +322 -0
  134. data/vendor/pygments-main/pygments/lexers/int_fiction.py +1343 -0
  135. data/vendor/pygments-main/pygments/lexers/iolang.py +63 -0
  136. data/vendor/pygments-main/pygments/lexers/j.py +146 -0
  137. data/vendor/pygments-main/pygments/lexers/javascript.py +1506 -0
  138. data/vendor/pygments-main/pygments/lexers/julia.py +333 -0
  139. data/vendor/pygments-main/pygments/lexers/jvm.py +232 -186
  140. data/vendor/pygments-main/pygments/lexers/lisp.py +2621 -0
  141. data/vendor/pygments-main/pygments/lexers/make.py +202 -0
  142. data/vendor/pygments-main/pygments/lexers/markup.py +595 -0
  143. data/vendor/pygments-main/pygments/lexers/math.py +11 -2276
  144. data/vendor/pygments-main/pygments/lexers/matlab.py +663 -0
  145. data/vendor/pygments-main/pygments/lexers/ml.py +769 -0
  146. data/vendor/pygments-main/pygments/lexers/modeling.py +358 -0
  147. data/vendor/pygments-main/pygments/lexers/modula2.py +1561 -0
  148. data/vendor/pygments-main/pygments/lexers/monte.py +203 -0
  149. data/vendor/pygments-main/pygments/lexers/ncl.py +1053 -0
  150. data/vendor/pygments-main/pygments/lexers/nimrod.py +159 -0
  151. data/vendor/pygments-main/pygments/lexers/nit.py +64 -0
  152. data/vendor/pygments-main/pygments/lexers/nix.py +136 -0
  153. data/vendor/pygments-main/pygments/lexers/oberon.py +105 -0
  154. data/vendor/pygments-main/pygments/lexers/objective.py +504 -0
  155. data/vendor/pygments-main/pygments/lexers/ooc.py +85 -0
  156. data/vendor/pygments-main/pygments/lexers/other.py +30 -4481
  157. data/vendor/pygments-main/pygments/lexers/parasail.py +79 -0
  158. data/vendor/pygments-main/pygments/lexers/parsers.py +171 -114
  159. data/vendor/pygments-main/pygments/lexers/pascal.py +644 -0
  160. data/vendor/pygments-main/pygments/lexers/pawn.py +199 -0
  161. data/vendor/pygments-main/pygments/lexers/perl.py +616 -0
  162. data/vendor/pygments-main/pygments/lexers/php.py +267 -0
  163. data/vendor/pygments-main/pygments/lexers/praat.py +294 -0
  164. data/vendor/pygments-main/pygments/lexers/prolog.py +306 -0
  165. data/vendor/pygments-main/pygments/lexers/python.py +938 -0
  166. data/vendor/pygments-main/pygments/lexers/qvt.py +152 -0
  167. data/vendor/pygments-main/pygments/lexers/r.py +453 -0
  168. data/vendor/pygments-main/pygments/lexers/rdf.py +195 -24
  169. data/vendor/pygments-main/pygments/lexers/rebol.py +431 -0
  170. data/vendor/pygments-main/pygments/lexers/resource.py +85 -0
  171. data/vendor/pygments-main/pygments/lexers/rnc.py +67 -0
  172. data/vendor/pygments-main/pygments/lexers/roboconf.py +82 -0
  173. data/vendor/pygments-main/pygments/lexers/{_robotframeworklexer.py → robotframework.py} +20 -18
  174. data/vendor/pygments-main/pygments/lexers/ruby.py +519 -0
  175. data/vendor/pygments-main/pygments/lexers/rust.py +209 -0
  176. data/vendor/pygments-main/pygments/lexers/sas.py +228 -0
  177. data/vendor/pygments-main/pygments/lexers/scripting.py +1222 -0
  178. data/vendor/pygments-main/pygments/lexers/shell.py +478 -115
  179. data/vendor/pygments-main/pygments/lexers/smalltalk.py +195 -0
  180. data/vendor/pygments-main/pygments/lexers/smv.py +75 -0
  181. data/vendor/pygments-main/pygments/lexers/snobol.py +83 -0
  182. data/vendor/pygments-main/pygments/lexers/special.py +6 -2
  183. data/vendor/pygments-main/pygments/lexers/sql.py +209 -120
  184. data/vendor/pygments-main/pygments/lexers/stata.py +106 -0
  185. data/vendor/pygments-main/pygments/lexers/supercollider.py +90 -0
  186. data/vendor/pygments-main/pygments/lexers/tcl.py +145 -0
  187. data/vendor/pygments-main/pygments/lexers/templates.py +282 -90
  188. data/vendor/pygments-main/pygments/lexers/testing.py +207 -0
  189. data/vendor/pygments-main/pygments/lexers/text.py +15 -2045
  190. data/vendor/pygments-main/pygments/lexers/textedit.py +169 -0
  191. data/vendor/pygments-main/pygments/lexers/textfmts.py +297 -0
  192. data/vendor/pygments-main/pygments/lexers/theorem.py +458 -0
  193. data/vendor/pygments-main/pygments/lexers/trafficscript.py +54 -0
  194. data/vendor/pygments-main/pygments/lexers/typoscript.py +225 -0
  195. data/vendor/pygments-main/pygments/lexers/urbi.py +133 -0
  196. data/vendor/pygments-main/pygments/lexers/varnish.py +190 -0
  197. data/vendor/pygments-main/pygments/lexers/verification.py +111 -0
  198. data/vendor/pygments-main/pygments/lexers/web.py +13 -4499
  199. data/vendor/pygments-main/pygments/lexers/webmisc.py +979 -0
  200. data/vendor/pygments-main/pygments/lexers/whiley.py +117 -0
  201. data/vendor/pygments-main/pygments/lexers/x10.py +69 -0
  202. data/vendor/pygments-main/pygments/modeline.py +5 -2
  203. data/vendor/pygments-main/pygments/plugin.py +1 -1
  204. data/vendor/pygments-main/pygments/regexopt.py +92 -0
  205. data/vendor/pygments-main/pygments/scanner.py +3 -2
  206. data/vendor/pygments-main/pygments/sphinxext.py +11 -6
  207. data/vendor/pygments-main/pygments/style.py +41 -4
  208. data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
  209. data/vendor/pygments-main/pygments/styles/algol.py +63 -0
  210. data/vendor/pygments-main/pygments/styles/algol_nu.py +63 -0
  211. data/vendor/pygments-main/pygments/styles/arduino.py +98 -0
  212. data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
  213. data/vendor/pygments-main/pygments/styles/borland.py +1 -1
  214. data/vendor/pygments-main/pygments/styles/bw.py +1 -1
  215. data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
  216. data/vendor/pygments-main/pygments/styles/default.py +1 -1
  217. data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
  218. data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
  219. data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
  220. data/vendor/pygments-main/pygments/styles/igor.py +1 -1
  221. data/vendor/pygments-main/pygments/styles/lovelace.py +97 -0
  222. data/vendor/pygments-main/pygments/styles/manni.py +1 -1
  223. data/vendor/pygments-main/pygments/styles/monokai.py +1 -1
  224. data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
  225. data/vendor/pygments-main/pygments/styles/native.py +1 -1
  226. data/vendor/pygments-main/pygments/styles/paraiso_dark.py +1 -1
  227. data/vendor/pygments-main/pygments/styles/paraiso_light.py +1 -1
  228. data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
  229. data/vendor/pygments-main/pygments/styles/perldoc.py +2 -2
  230. data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
  231. data/vendor/pygments-main/pygments/styles/sas.py +41 -0
  232. data/vendor/pygments-main/pygments/styles/stata.py +37 -0
  233. data/vendor/pygments-main/pygments/styles/tango.py +1 -1
  234. data/vendor/pygments-main/pygments/styles/trac.py +1 -1
  235. data/vendor/pygments-main/pygments/styles/vim.py +1 -1
  236. data/vendor/pygments-main/pygments/styles/vs.py +1 -1
  237. data/vendor/pygments-main/pygments/styles/xcode.py +1 -1
  238. data/vendor/pygments-main/pygments/token.py +31 -16
  239. data/vendor/pygments-main/pygments/unistring.py +141 -65
  240. data/vendor/pygments-main/pygments/util.py +129 -33
  241. data/vendor/pygments-main/requirements.txt +5 -0
  242. data/vendor/pygments-main/scripts/check_sources.py +25 -40
  243. data/vendor/pygments-main/scripts/debug_lexer.py +246 -0
  244. data/vendor/pygments-main/scripts/find_error.py +1 -0
  245. data/vendor/pygments-main/scripts/get_vimkw.py +35 -4
  246. data/vendor/pygments-main/setup.cfg +3 -0
  247. data/vendor/pygments-main/setup.py +17 -30
  248. data/vendor/pygments-main/tox.ini +7 -0
  249. metadata +159 -387
  250. data/vendor/pygments-main/ez_setup.py +0 -382
  251. data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +0 -73
  252. data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +0 -562
  253. data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +0 -1077
  254. data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +0 -13
  255. data/vendor/pygments-main/pygments/lexers/qbasic.py +0 -157
  256. data/vendor/pygments-main/scripts/find_codetags.py +0 -213
  257. data/vendor/pygments-main/scripts/find_error.py +0 -173
  258. data/vendor/pygments-main/tests/dtds/HTML4-f.dtd +0 -37
  259. data/vendor/pygments-main/tests/dtds/HTML4-s.dtd +0 -869
  260. data/vendor/pygments-main/tests/dtds/HTML4.dcl +0 -88
  261. data/vendor/pygments-main/tests/dtds/HTML4.dtd +0 -1092
  262. data/vendor/pygments-main/tests/dtds/HTML4.soc +0 -9
  263. data/vendor/pygments-main/tests/dtds/HTMLlat1.ent +0 -195
  264. data/vendor/pygments-main/tests/dtds/HTMLspec.ent +0 -77
  265. data/vendor/pygments-main/tests/dtds/HTMLsym.ent +0 -241
  266. data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +0 -118
  267. data/vendor/pygments-main/tests/examplefiles/AcidStateAdvanced.hs +0 -209
  268. data/vendor/pygments-main/tests/examplefiles/AlternatingGroup.mu +0 -102
  269. data/vendor/pygments-main/tests/examplefiles/BOM.js +0 -1
  270. data/vendor/pygments-main/tests/examplefiles/CPDictionary.j +0 -611
  271. data/vendor/pygments-main/tests/examplefiles/Config.in.cache +0 -1973
  272. data/vendor/pygments-main/tests/examplefiles/Constants.mo +0 -158
  273. data/vendor/pygments-main/tests/examplefiles/DancingSudoku.lhs +0 -411
  274. data/vendor/pygments-main/tests/examplefiles/Deflate.fs +0 -578
  275. data/vendor/pygments-main/tests/examplefiles/Error.pmod +0 -38
  276. data/vendor/pygments-main/tests/examplefiles/Errors.scala +0 -18
  277. data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +0 -360
  278. data/vendor/pygments-main/tests/examplefiles/Get-CommandDefinitionHtml.ps1 +0 -66
  279. data/vendor/pygments-main/tests/examplefiles/IPDispatchC.nc +0 -104
  280. data/vendor/pygments-main/tests/examplefiles/IPDispatchP.nc +0 -671
  281. data/vendor/pygments-main/tests/examplefiles/Intro.java +0 -1660
  282. data/vendor/pygments-main/tests/examplefiles/Makefile +0 -1131
  283. data/vendor/pygments-main/tests/examplefiles/Object.st +0 -4394
  284. data/vendor/pygments-main/tests/examplefiles/OrderedMap.hx +0 -584
  285. data/vendor/pygments-main/tests/examplefiles/RoleQ.pm6 +0 -23
  286. data/vendor/pygments-main/tests/examplefiles/SmallCheck.hs +0 -378
  287. data/vendor/pygments-main/tests/examplefiles/Sorting.mod +0 -470
  288. data/vendor/pygments-main/tests/examplefiles/Sudoku.lhs +0 -382
  289. data/vendor/pygments-main/tests/examplefiles/addressbook.proto +0 -30
  290. data/vendor/pygments-main/tests/examplefiles/antlr_ANTLRv3.g +0 -608
  291. data/vendor/pygments-main/tests/examplefiles/antlr_throws +0 -1
  292. data/vendor/pygments-main/tests/examplefiles/apache2.conf +0 -393
  293. data/vendor/pygments-main/tests/examplefiles/as3_test.as +0 -143
  294. data/vendor/pygments-main/tests/examplefiles/as3_test2.as +0 -46
  295. data/vendor/pygments-main/tests/examplefiles/as3_test3.as +0 -3
  296. data/vendor/pygments-main/tests/examplefiles/aspx-cs_example +0 -27
  297. data/vendor/pygments-main/tests/examplefiles/autoit_submit.au3 +0 -25
  298. data/vendor/pygments-main/tests/examplefiles/badcase.java +0 -2
  299. data/vendor/pygments-main/tests/examplefiles/batchfile.bat +0 -49
  300. data/vendor/pygments-main/tests/examplefiles/bigtest.nsi +0 -308
  301. data/vendor/pygments-main/tests/examplefiles/boot-9.scm +0 -1557
  302. data/vendor/pygments-main/tests/examplefiles/ca65_example +0 -284
  303. data/vendor/pygments-main/tests/examplefiles/cbmbas_example +0 -9
  304. data/vendor/pygments-main/tests/examplefiles/cells.ps +0 -515
  305. data/vendor/pygments-main/tests/examplefiles/ceval.c +0 -2604
  306. data/vendor/pygments-main/tests/examplefiles/cheetah_example.html +0 -13
  307. data/vendor/pygments-main/tests/examplefiles/classes.dylan +0 -125
  308. data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +0 -5
  309. data/vendor/pygments-main/tests/examplefiles/condensed_ruby.rb +0 -10
  310. data/vendor/pygments-main/tests/examplefiles/coq_RelationClasses +0 -447
  311. data/vendor/pygments-main/tests/examplefiles/core.cljs +0 -52
  312. data/vendor/pygments-main/tests/examplefiles/database.pytb +0 -20
  313. data/vendor/pygments-main/tests/examplefiles/de.MoinMoin.po +0 -2461
  314. data/vendor/pygments-main/tests/examplefiles/demo.ahk +0 -181
  315. data/vendor/pygments-main/tests/examplefiles/demo.cfm +0 -50
  316. data/vendor/pygments-main/tests/examplefiles/demo.hbs +0 -12
  317. data/vendor/pygments-main/tests/examplefiles/django_sample.html+django +0 -68
  318. data/vendor/pygments-main/tests/examplefiles/dwarf.cw +0 -17
  319. data/vendor/pygments-main/tests/examplefiles/ember.handlebars +0 -33
  320. data/vendor/pygments-main/tests/examplefiles/erl_session +0 -10
  321. data/vendor/pygments-main/tests/examplefiles/escape_semicolon.clj +0 -1
  322. data/vendor/pygments-main/tests/examplefiles/evil_regex.js +0 -48
  323. data/vendor/pygments-main/tests/examplefiles/example.Rd +0 -78
  324. data/vendor/pygments-main/tests/examplefiles/example.als +0 -217
  325. data/vendor/pygments-main/tests/examplefiles/example.bug +0 -54
  326. data/vendor/pygments-main/tests/examplefiles/example.c +0 -2080
  327. data/vendor/pygments-main/tests/examplefiles/example.ceylon +0 -52
  328. data/vendor/pygments-main/tests/examplefiles/example.chai +0 -6
  329. data/vendor/pygments-main/tests/examplefiles/example.clay +0 -33
  330. data/vendor/pygments-main/tests/examplefiles/example.cls +0 -15
  331. data/vendor/pygments-main/tests/examplefiles/example.cob +0 -3556
  332. data/vendor/pygments-main/tests/examplefiles/example.coffee +0 -27
  333. data/vendor/pygments-main/tests/examplefiles/example.cpp +0 -2363
  334. data/vendor/pygments-main/tests/examplefiles/example.e +0 -124
  335. data/vendor/pygments-main/tests/examplefiles/example.f90 +0 -8
  336. data/vendor/pygments-main/tests/examplefiles/example.feature +0 -16
  337. data/vendor/pygments-main/tests/examplefiles/example.gd +0 -23
  338. data/vendor/pygments-main/tests/examplefiles/example.gi +0 -64
  339. data/vendor/pygments-main/tests/examplefiles/example.groovy +0 -2
  340. data/vendor/pygments-main/tests/examplefiles/example.gs +0 -106
  341. data/vendor/pygments-main/tests/examplefiles/example.gst +0 -7
  342. data/vendor/pygments-main/tests/examplefiles/example.hs +0 -27
  343. data/vendor/pygments-main/tests/examplefiles/example.hx +0 -185
  344. data/vendor/pygments-main/tests/examplefiles/example.i6t +0 -32
  345. data/vendor/pygments-main/tests/examplefiles/example.i7x +0 -45
  346. data/vendor/pygments-main/tests/examplefiles/example.inf +0 -374
  347. data/vendor/pygments-main/tests/examplefiles/example.j +0 -564
  348. data/vendor/pygments-main/tests/examplefiles/example.jag +0 -48
  349. data/vendor/pygments-main/tests/examplefiles/example.java +0 -16
  350. data/vendor/pygments-main/tests/examplefiles/example.kal +0 -75
  351. data/vendor/pygments-main/tests/examplefiles/example.kt +0 -47
  352. data/vendor/pygments-main/tests/examplefiles/example.lagda +0 -19
  353. data/vendor/pygments-main/tests/examplefiles/example.liquid +0 -42
  354. data/vendor/pygments-main/tests/examplefiles/example.lua +0 -250
  355. data/vendor/pygments-main/tests/examplefiles/example.ma +0 -8
  356. data/vendor/pygments-main/tests/examplefiles/example.monkey +0 -152
  357. data/vendor/pygments-main/tests/examplefiles/example.moo +0 -26
  358. data/vendor/pygments-main/tests/examplefiles/example.moon +0 -629
  359. data/vendor/pygments-main/tests/examplefiles/example.mq4 +0 -187
  360. data/vendor/pygments-main/tests/examplefiles/example.mqh +0 -123
  361. data/vendor/pygments-main/tests/examplefiles/example.msc +0 -43
  362. data/vendor/pygments-main/tests/examplefiles/example.ni +0 -57
  363. data/vendor/pygments-main/tests/examplefiles/example.nim +0 -1010
  364. data/vendor/pygments-main/tests/examplefiles/example.nix +0 -80
  365. data/vendor/pygments-main/tests/examplefiles/example.ns2 +0 -69
  366. data/vendor/pygments-main/tests/examplefiles/example.pas +0 -2708
  367. data/vendor/pygments-main/tests/examplefiles/example.pp +0 -8
  368. data/vendor/pygments-main/tests/examplefiles/example.prg +0 -161
  369. data/vendor/pygments-main/tests/examplefiles/example.rb +0 -1852
  370. data/vendor/pygments-main/tests/examplefiles/example.red +0 -257
  371. data/vendor/pygments-main/tests/examplefiles/example.reds +0 -150
  372. data/vendor/pygments-main/tests/examplefiles/example.reg +0 -19
  373. data/vendor/pygments-main/tests/examplefiles/example.rexx +0 -50
  374. data/vendor/pygments-main/tests/examplefiles/example.rhtml +0 -561
  375. data/vendor/pygments-main/tests/examplefiles/example.rkt +0 -743
  376. data/vendor/pygments-main/tests/examplefiles/example.rpf +0 -4
  377. data/vendor/pygments-main/tests/examplefiles/example.sh +0 -22
  378. data/vendor/pygments-main/tests/examplefiles/example.sh-session +0 -19
  379. data/vendor/pygments-main/tests/examplefiles/example.shell-session +0 -45
  380. data/vendor/pygments-main/tests/examplefiles/example.slim +0 -31
  381. data/vendor/pygments-main/tests/examplefiles/example.sls +0 -51
  382. data/vendor/pygments-main/tests/examplefiles/example.sml +0 -156
  383. data/vendor/pygments-main/tests/examplefiles/example.snobol +0 -15
  384. data/vendor/pygments-main/tests/examplefiles/example.stan +0 -110
  385. data/vendor/pygments-main/tests/examplefiles/example.tea +0 -34
  386. data/vendor/pygments-main/tests/examplefiles/example.todotxt +0 -9
  387. data/vendor/pygments-main/tests/examplefiles/example.ts +0 -28
  388. data/vendor/pygments-main/tests/examplefiles/example.u +0 -548
  389. data/vendor/pygments-main/tests/examplefiles/example.weechatlog +0 -9
  390. data/vendor/pygments-main/tests/examplefiles/example.xhtml +0 -376
  391. data/vendor/pygments-main/tests/examplefiles/example.xtend +0 -34
  392. data/vendor/pygments-main/tests/examplefiles/example.yaml +0 -302
  393. data/vendor/pygments-main/tests/examplefiles/example2.aspx +0 -29
  394. data/vendor/pygments-main/tests/examplefiles/example2.msc +0 -79
  395. data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +0 -241
  396. data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +0 -18
  397. data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +0 -205
  398. data/vendor/pygments-main/tests/examplefiles/example_file.fy +0 -128
  399. data/vendor/pygments-main/tests/examplefiles/firefox.mak +0 -586
  400. data/vendor/pygments-main/tests/examplefiles/flipflop.sv +0 -19
  401. data/vendor/pygments-main/tests/examplefiles/foo.sce +0 -6
  402. data/vendor/pygments-main/tests/examplefiles/format.ml +0 -1213
  403. data/vendor/pygments-main/tests/examplefiles/fucked_up.rb +0 -77
  404. data/vendor/pygments-main/tests/examplefiles/function.mu +0 -1
  405. data/vendor/pygments-main/tests/examplefiles/functional.rst +0 -1472
  406. data/vendor/pygments-main/tests/examplefiles/garcia-wachs.kk +0 -133
  407. data/vendor/pygments-main/tests/examplefiles/genclass.clj +0 -510
  408. data/vendor/pygments-main/tests/examplefiles/genshi_example.xml+genshi +0 -193
  409. data/vendor/pygments-main/tests/examplefiles/genshitext_example.genshitext +0 -33
  410. data/vendor/pygments-main/tests/examplefiles/glsl.frag +0 -7
  411. data/vendor/pygments-main/tests/examplefiles/glsl.vert +0 -13
  412. data/vendor/pygments-main/tests/examplefiles/grammar-test.p6 +0 -22
  413. data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +0 -5
  414. data/vendor/pygments-main/tests/examplefiles/hello.at +0 -6
  415. data/vendor/pygments-main/tests/examplefiles/hello.golo +0 -5
  416. data/vendor/pygments-main/tests/examplefiles/hello.lsl +0 -12
  417. data/vendor/pygments-main/tests/examplefiles/hello.smali +0 -40
  418. data/vendor/pygments-main/tests/examplefiles/hello.sp +0 -9
  419. data/vendor/pygments-main/tests/examplefiles/html+php_faulty.php +0 -1
  420. data/vendor/pygments-main/tests/examplefiles/http_request_example +0 -15
  421. data/vendor/pygments-main/tests/examplefiles/http_response_example +0 -29
  422. data/vendor/pygments-main/tests/examplefiles/hybris_File.hy +0 -174
  423. data/vendor/pygments-main/tests/examplefiles/idl_sample.pro +0 -73
  424. data/vendor/pygments-main/tests/examplefiles/iex_example +0 -23
  425. data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +0 -71
  426. data/vendor/pygments-main/tests/examplefiles/intro.ik +0 -24
  427. data/vendor/pygments-main/tests/examplefiles/ints.php +0 -10
  428. data/vendor/pygments-main/tests/examplefiles/intsyn.fun +0 -675
  429. data/vendor/pygments-main/tests/examplefiles/intsyn.sig +0 -286
  430. data/vendor/pygments-main/tests/examplefiles/irb_heredoc +0 -8
  431. data/vendor/pygments-main/tests/examplefiles/irc.lsp +0 -214
  432. data/vendor/pygments-main/tests/examplefiles/java.properties +0 -16
  433. data/vendor/pygments-main/tests/examplefiles/jbst_example1.jbst +0 -28
  434. data/vendor/pygments-main/tests/examplefiles/jbst_example2.jbst +0 -45
  435. data/vendor/pygments-main/tests/examplefiles/jinjadesignerdoc.rst +0 -713
  436. data/vendor/pygments-main/tests/examplefiles/json.lasso +0 -301
  437. data/vendor/pygments-main/tests/examplefiles/json.lasso9 +0 -213
  438. data/vendor/pygments-main/tests/examplefiles/language.hy +0 -165
  439. data/vendor/pygments-main/tests/examplefiles/lighttpd_config.conf +0 -13
  440. data/vendor/pygments-main/tests/examplefiles/limbo.b +0 -456
  441. data/vendor/pygments-main/tests/examplefiles/linecontinuation.py +0 -47
  442. data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +0 -43
  443. data/vendor/pygments-main/tests/examplefiles/logos_example.xm +0 -28
  444. data/vendor/pygments-main/tests/examplefiles/ltmain.sh +0 -2849
  445. data/vendor/pygments-main/tests/examplefiles/main.cmake +0 -44
  446. data/vendor/pygments-main/tests/examplefiles/markdown.lsp +0 -679
  447. data/vendor/pygments-main/tests/examplefiles/matlab_noreturn +0 -3
  448. data/vendor/pygments-main/tests/examplefiles/matlab_sample +0 -30
  449. data/vendor/pygments-main/tests/examplefiles/matlabsession_sample.txt +0 -37
  450. data/vendor/pygments-main/tests/examplefiles/metagrammar.treetop +0 -455
  451. data/vendor/pygments-main/tests/examplefiles/minehunt.qml +0 -112
  452. data/vendor/pygments-main/tests/examplefiles/minimal.ns2 +0 -4
  453. data/vendor/pygments-main/tests/examplefiles/moin_SyntaxReference.txt +0 -340
  454. data/vendor/pygments-main/tests/examplefiles/multiline_regexes.rb +0 -38
  455. data/vendor/pygments-main/tests/examplefiles/nanomsg.intr +0 -95
  456. data/vendor/pygments-main/tests/examplefiles/nasm_aoutso.asm +0 -96
  457. data/vendor/pygments-main/tests/examplefiles/nasm_objexe.asm +0 -30
  458. data/vendor/pygments-main/tests/examplefiles/nemerle_sample.n +0 -87
  459. data/vendor/pygments-main/tests/examplefiles/nginx_nginx.conf +0 -118
  460. data/vendor/pygments-main/tests/examplefiles/numbers.c +0 -12
  461. data/vendor/pygments-main/tests/examplefiles/objc_example.m +0 -179
  462. data/vendor/pygments-main/tests/examplefiles/openedge_example +0 -34
  463. data/vendor/pygments-main/tests/examplefiles/pawn_example +0 -25
  464. data/vendor/pygments-main/tests/examplefiles/perl_misc +0 -62
  465. data/vendor/pygments-main/tests/examplefiles/perl_perl5db +0 -998
  466. data/vendor/pygments-main/tests/examplefiles/perl_regex-delims +0 -120
  467. data/vendor/pygments-main/tests/examplefiles/perlfunc.1 +0 -856
  468. data/vendor/pygments-main/tests/examplefiles/phpMyAdmin.spec +0 -163
  469. data/vendor/pygments-main/tests/examplefiles/phpcomplete.vim +0 -567
  470. data/vendor/pygments-main/tests/examplefiles/pleac.in.rb +0 -1223
  471. data/vendor/pygments-main/tests/examplefiles/postgresql_test.txt +0 -47
  472. data/vendor/pygments-main/tests/examplefiles/pppoe.applescript +0 -10
  473. data/vendor/pygments-main/tests/examplefiles/psql_session.txt +0 -122
  474. data/vendor/pygments-main/tests/examplefiles/py3_test.txt +0 -2
  475. data/vendor/pygments-main/tests/examplefiles/py3tb_test.py3tb +0 -4
  476. data/vendor/pygments-main/tests/examplefiles/pycon_test.pycon +0 -14
  477. data/vendor/pygments-main/tests/examplefiles/pytb_test2.pytb +0 -2
  478. data/vendor/pygments-main/tests/examplefiles/pytb_test3.pytb +0 -4
  479. data/vendor/pygments-main/tests/examplefiles/python25-bsd.mak +0 -234
  480. data/vendor/pygments-main/tests/examplefiles/qbasic_example +0 -2
  481. data/vendor/pygments-main/tests/examplefiles/qsort.prolog +0 -13
  482. data/vendor/pygments-main/tests/examplefiles/r-console-transcript.Rout +0 -38
  483. data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +0 -23
  484. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_rlscan +0 -280
  485. data/vendor/pygments-main/tests/examplefiles/ragel-cpp_snippet +0 -2
  486. data/vendor/pygments-main/tests/examplefiles/regex.js +0 -22
  487. data/vendor/pygments-main/tests/examplefiles/reversi.lsp +0 -427
  488. data/vendor/pygments-main/tests/examplefiles/robotframework_test.txt +0 -39
  489. data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +0 -34
  490. data/vendor/pygments-main/tests/examplefiles/ruby_func_def.rb +0 -11
  491. data/vendor/pygments-main/tests/examplefiles/rust_example.rs +0 -233
  492. data/vendor/pygments-main/tests/examplefiles/scilab.sci +0 -30
  493. data/vendor/pygments-main/tests/examplefiles/scope.cirru +0 -43
  494. data/vendor/pygments-main/tests/examplefiles/session.dylan-console +0 -9
  495. data/vendor/pygments-main/tests/examplefiles/sibling.prolog +0 -19
  496. data/vendor/pygments-main/tests/examplefiles/simple.md +0 -747
  497. data/vendor/pygments-main/tests/examplefiles/smarty_example.html +0 -209
  498. data/vendor/pygments-main/tests/examplefiles/source.lgt +0 -343
  499. data/vendor/pygments-main/tests/examplefiles/sources.list +0 -62
  500. data/vendor/pygments-main/tests/examplefiles/sparql.rq +0 -23
  501. data/vendor/pygments-main/tests/examplefiles/sphere.pov +0 -18
  502. data/vendor/pygments-main/tests/examplefiles/sqlite3.sqlite3-console +0 -27
  503. data/vendor/pygments-main/tests/examplefiles/squid.conf +0 -30
  504. data/vendor/pygments-main/tests/examplefiles/string.jl +0 -1031
  505. data/vendor/pygments-main/tests/examplefiles/string_delimiters.d +0 -21
  506. data/vendor/pygments-main/tests/examplefiles/stripheredoc.sh +0 -3
  507. data/vendor/pygments-main/tests/examplefiles/swig_java.swg +0 -1329
  508. data/vendor/pygments-main/tests/examplefiles/swig_std_vector.i +0 -225
  509. data/vendor/pygments-main/tests/examplefiles/test.R +0 -185
  510. data/vendor/pygments-main/tests/examplefiles/test.adb +0 -211
  511. data/vendor/pygments-main/tests/examplefiles/test.agda +0 -102
  512. data/vendor/pygments-main/tests/examplefiles/test.apl +0 -26
  513. data/vendor/pygments-main/tests/examplefiles/test.asy +0 -131
  514. data/vendor/pygments-main/tests/examplefiles/test.awk +0 -121
  515. data/vendor/pygments-main/tests/examplefiles/test.bb +0 -95
  516. data/vendor/pygments-main/tests/examplefiles/test.bmx +0 -145
  517. data/vendor/pygments-main/tests/examplefiles/test.boo +0 -39
  518. data/vendor/pygments-main/tests/examplefiles/test.bro +0 -250
  519. data/vendor/pygments-main/tests/examplefiles/test.cs +0 -374
  520. data/vendor/pygments-main/tests/examplefiles/test.css +0 -54
  521. data/vendor/pygments-main/tests/examplefiles/test.cu +0 -36
  522. data/vendor/pygments-main/tests/examplefiles/test.cyp +0 -123
  523. data/vendor/pygments-main/tests/examplefiles/test.d +0 -135
  524. data/vendor/pygments-main/tests/examplefiles/test.dart +0 -23
  525. data/vendor/pygments-main/tests/examplefiles/test.dtd +0 -89
  526. data/vendor/pygments-main/tests/examplefiles/test.ebnf +0 -31
  527. data/vendor/pygments-main/tests/examplefiles/test.ec +0 -605
  528. data/vendor/pygments-main/tests/examplefiles/test.ecl +0 -58
  529. data/vendor/pygments-main/tests/examplefiles/test.eh +0 -315
  530. data/vendor/pygments-main/tests/examplefiles/test.erl +0 -169
  531. data/vendor/pygments-main/tests/examplefiles/test.evoque +0 -33
  532. data/vendor/pygments-main/tests/examplefiles/test.fan +0 -818
  533. data/vendor/pygments-main/tests/examplefiles/test.flx +0 -57
  534. data/vendor/pygments-main/tests/examplefiles/test.gdc +0 -13
  535. data/vendor/pygments-main/tests/examplefiles/test.groovy +0 -97
  536. data/vendor/pygments-main/tests/examplefiles/test.html +0 -339
  537. data/vendor/pygments-main/tests/examplefiles/test.idr +0 -93
  538. data/vendor/pygments-main/tests/examplefiles/test.ini +0 -10
  539. data/vendor/pygments-main/tests/examplefiles/test.java +0 -653
  540. data/vendor/pygments-main/tests/examplefiles/test.jsp +0 -24
  541. data/vendor/pygments-main/tests/examplefiles/test.maql +0 -45
  542. data/vendor/pygments-main/tests/examplefiles/test.mask +0 -41
  543. data/vendor/pygments-main/tests/examplefiles/test.mod +0 -374
  544. data/vendor/pygments-main/tests/examplefiles/test.moo +0 -51
  545. data/vendor/pygments-main/tests/examplefiles/test.myt +0 -166
  546. data/vendor/pygments-main/tests/examplefiles/test.nim +0 -93
  547. data/vendor/pygments-main/tests/examplefiles/test.opa +0 -10
  548. data/vendor/pygments-main/tests/examplefiles/test.p6 +0 -252
  549. data/vendor/pygments-main/tests/examplefiles/test.pan +0 -54
  550. data/vendor/pygments-main/tests/examplefiles/test.pas +0 -743
  551. data/vendor/pygments-main/tests/examplefiles/test.php +0 -507
  552. data/vendor/pygments-main/tests/examplefiles/test.pig +0 -148
  553. data/vendor/pygments-main/tests/examplefiles/test.plot +0 -333
  554. data/vendor/pygments-main/tests/examplefiles/test.ps1 +0 -108
  555. data/vendor/pygments-main/tests/examplefiles/test.pwn +0 -253
  556. data/vendor/pygments-main/tests/examplefiles/test.pypylog +0 -1839
  557. data/vendor/pygments-main/tests/examplefiles/test.r3 +0 -114
  558. data/vendor/pygments-main/tests/examplefiles/test.rb +0 -177
  559. data/vendor/pygments-main/tests/examplefiles/test.rhtml +0 -43
  560. data/vendor/pygments-main/tests/examplefiles/test.rsl +0 -111
  561. data/vendor/pygments-main/tests/examplefiles/test.scaml +0 -8
  562. data/vendor/pygments-main/tests/examplefiles/test.ssp +0 -12
  563. data/vendor/pygments-main/tests/examplefiles/test.swift +0 -65
  564. data/vendor/pygments-main/tests/examplefiles/test.tcsh +0 -830
  565. data/vendor/pygments-main/tests/examplefiles/test.vb +0 -407
  566. data/vendor/pygments-main/tests/examplefiles/test.vhdl +0 -161
  567. data/vendor/pygments-main/tests/examplefiles/test.xqy +0 -138
  568. data/vendor/pygments-main/tests/examplefiles/test.xsl +0 -23
  569. data/vendor/pygments-main/tests/examplefiles/test.zep +0 -33
  570. data/vendor/pygments-main/tests/examplefiles/test2.pypylog +0 -120
  571. data/vendor/pygments-main/tests/examplefiles/truncated.pytb +0 -15
  572. data/vendor/pygments-main/tests/examplefiles/type.lisp +0 -1218
  573. data/vendor/pygments-main/tests/examplefiles/underscore.coffee +0 -603
  574. data/vendor/pygments-main/tests/examplefiles/unicode.applescript +0 -5
  575. data/vendor/pygments-main/tests/examplefiles/unicode.go +0 -10
  576. data/vendor/pygments-main/tests/examplefiles/unicodedoc.py +0 -11
  577. data/vendor/pygments-main/tests/examplefiles/unix-io.lid +0 -37
  578. data/vendor/pygments-main/tests/examplefiles/vbnet_test.bas +0 -29
  579. data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +0 -4
  580. data/vendor/pygments-main/tests/examplefiles/vimrc +0 -21
  581. data/vendor/pygments-main/tests/examplefiles/webkit-transition.css +0 -3
  582. data/vendor/pygments-main/tests/examplefiles/while.pov +0 -13
  583. data/vendor/pygments-main/tests/examplefiles/wiki.factor +0 -384
  584. data/vendor/pygments-main/tests/examplefiles/xml_example +0 -1897
  585. data/vendor/pygments-main/tests/examplefiles/zmlrpc.f90 +0 -798
  586. data/vendor/pygments-main/tests/run.py +0 -44
  587. data/vendor/pygments-main/tests/string_asserts.py +0 -22
  588. data/vendor/pygments-main/tests/support.py +0 -15
  589. data/vendor/pygments-main/tests/support/tags +0 -36
  590. data/vendor/pygments-main/tests/test_basic_api.py +0 -309
  591. data/vendor/pygments-main/tests/test_cfm.py +0 -46
  592. data/vendor/pygments-main/tests/test_clexer.py +0 -236
  593. data/vendor/pygments-main/tests/test_cmdline.py +0 -106
  594. data/vendor/pygments-main/tests/test_examplefiles.py +0 -110
  595. data/vendor/pygments-main/tests/test_html_formatter.py +0 -180
  596. data/vendor/pygments-main/tests/test_latex_formatter.py +0 -57
  597. data/vendor/pygments-main/tests/test_lexers_other.py +0 -68
  598. data/vendor/pygments-main/tests/test_objectiveclexer.py +0 -81
  599. data/vendor/pygments-main/tests/test_perllexer.py +0 -137
  600. data/vendor/pygments-main/tests/test_qbasiclexer.py +0 -43
  601. data/vendor/pygments-main/tests/test_regexlexer.py +0 -54
  602. data/vendor/pygments-main/tests/test_rtf_formatter.py +0 -109
  603. data/vendor/pygments-main/tests/test_string_asserts.py +0 -39
  604. data/vendor/pygments-main/tests/test_token.py +0 -46
  605. data/vendor/pygments-main/tests/test_using_api.py +0 -40
  606. data/vendor/pygments-main/tests/test_util.py +0 -135
@@ -1,2604 +0,0 @@
1
-
2
- /* Execute compiled code */
3
-
4
- /* XXX TO DO:
5
- XXX speed up searching for keywords by using a dictionary
6
- XXX document it!
7
- */
8
-
9
- /* enable more aggressive intra-module optimizations, where available */
10
- #define PY_LOCAL_AGGRESSIVE
11
-
12
- #include "Python.h"
13
-
14
- #include "code.h"
15
- #include "frameobject.h"
16
- #include "eval.h"
17
- #include "opcode.h"
18
- #include "structmember.h"
19
-
20
- #include <ctype.h>
21
-
22
- #ifndef WITH_TSC
23
-
24
- #define READ_TIMESTAMP(var)
25
-
26
- #else
27
-
28
- typedef unsigned long long uint64;
29
-
30
- #if defined(__ppc__) /* <- Don't know if this is the correct symbol; this
31
- section should work for GCC on any PowerPC platform,
32
- irrespective of OS. POWER? Who knows :-) */
33
-
34
- #define READ_TIMESTAMP(var) ppc_getcounter(&var)
35
-
36
- static void
37
- ppc_getcounter(uint64 *v)
38
- {
39
- register unsigned long tbu, tb, tbu2;
40
-
41
- loop:
42
- asm volatile ("mftbu %0" : "=r" (tbu) );
43
- asm volatile ("mftb %0" : "=r" (tb) );
44
- asm volatile ("mftbu %0" : "=r" (tbu2));
45
- if (__builtin_expect(tbu != tbu2, 0)) goto loop;
46
-
47
- /* The slightly peculiar way of writing the next lines is
48
- compiled better by GCC than any other way I tried. */
49
- ((long*)(v))[0] = tbu;
50
- ((long*)(v))[1] = tb;
51
- }
52
-
53
- #else /* this is for linux/x86 (and probably any other GCC/x86 combo) */
54
-
55
- #define READ_TIMESTAMP(val) \
56
- __asm__ __volatile__("rdtsc" : "=A" (val))
57
-
58
- #endif
59
-
60
- void dump_tsc(int opcode, int ticked, uint64 inst0, uint64 inst1,
61
- uint64 loop0, uint64 loop1, uint64 intr0, uint64 intr1)
62
- {
63
- uint64 intr, inst, loop;
64
- PyThreadState *tstate = PyThreadState_Get();
65
- if (!tstate->interp->tscdump)
66
- return;
67
- intr = intr1 - intr0;
68
- inst = inst1 - inst0 - intr;
69
- loop = loop1 - loop0 - intr;
70
- fprintf(stderr, "opcode=%03d t=%d inst=%06lld loop=%06lld\n",
71
- opcode, ticked, inst, loop);
72
- }
73
-
74
- #endif
75
-
76
- /* Turn this on if your compiler chokes on the big switch: */
77
- /* #define CASE_TOO_BIG 1 */
78
-
79
- #ifdef Py_DEBUG
80
- /* For debugging the interpreter: */
81
- #define LLTRACE 1 /* Low-level trace feature */
82
- #define CHECKEXC 1 /* Double-check exception checking */
83
- #endif
84
-
85
- typedef PyObject *(*callproc)(PyObject *, PyObject *, PyObject *);
86
-
87
- /* Forward declarations */
88
- #ifdef WITH_TSC
89
- static PyObject * call_function(PyObject ***, int, uint64*, uint64*);
90
- #else
91
- static PyObject * call_function(PyObject ***, int);
92
- #endif
93
- static PyObject * fast_function(PyObject *, PyObject ***, int, int, int);
94
- static PyObject * do_call(PyObject *, PyObject ***, int, int);
95
- static PyObject * ext_do_call(PyObject *, PyObject ***, int, int, int);
96
- static PyObject * update_keyword_args(PyObject *, int, PyObject ***,PyObject *);
97
- static PyObject * update_star_args(int, int, PyObject *, PyObject ***);
98
- static PyObject * load_args(PyObject ***, int);
99
- #define CALL_FLAG_VAR 1
100
- #define CALL_FLAG_KW 2
101
-
102
- #ifdef LLTRACE
103
- static int lltrace;
104
- static int prtrace(PyObject *, char *);
105
- #endif
106
- static int call_trace(Py_tracefunc, PyObject *, PyFrameObject *,
107
- int, PyObject *);
108
- static void call_trace_protected(Py_tracefunc, PyObject *,
109
- PyFrameObject *, int, PyObject *);
110
- static void call_exc_trace(Py_tracefunc, PyObject *, PyFrameObject *);
111
- static int maybe_call_line_trace(Py_tracefunc, PyObject *,
112
- PyFrameObject *, int *, int *, int *);
113
-
114
- static PyObject * apply_slice(PyObject *, PyObject *, PyObject *);
115
- static int assign_slice(PyObject *, PyObject *,
116
- PyObject *, PyObject *);
117
- static PyObject * cmp_outcome(int, PyObject *, PyObject *);
118
- static PyObject * import_from(PyObject *, PyObject *);
119
- static int import_all_from(PyObject *, PyObject *);
120
- static PyObject * build_class(PyObject *, PyObject *, PyObject *);
121
- static int exec_statement(PyFrameObject *,
122
- PyObject *, PyObject *, PyObject *);
123
- static void set_exc_info(PyThreadState *, PyObject *, PyObject *, PyObject *);
124
- static void reset_exc_info(PyThreadState *);
125
- static void format_exc_check_arg(PyObject *, char *, PyObject *);
126
- static PyObject * string_concatenate(PyObject *, PyObject *,
127
- PyFrameObject *, unsigned char *);
128
-
129
- #define NAME_ERROR_MSG \
130
- "name '%.200s' is not defined"
131
- #define GLOBAL_NAME_ERROR_MSG \
132
- "global name '%.200s' is not defined"
133
- #define UNBOUNDLOCAL_ERROR_MSG \
134
- "local variable '%.200s' referenced before assignment"
135
- #define UNBOUNDFREE_ERROR_MSG \
136
- "free variable '%.200s' referenced before assignment" \
137
- " in enclosing scope"
138
-
139
- /* Dynamic execution profile */
140
- #ifdef DYNAMIC_EXECUTION_PROFILE
141
- #ifdef DXPAIRS
142
- static long dxpairs[257][256];
143
- #define dxp dxpairs[256]
144
- #else
145
- static long dxp[256];
146
- #endif
147
- #endif
148
-
149
- /* Function call profile */
150
- #ifdef CALL_PROFILE
151
- #define PCALL_NUM 11
152
- static int pcall[PCALL_NUM];
153
-
154
- #define PCALL_ALL 0
155
- #define PCALL_FUNCTION 1
156
- #define PCALL_FAST_FUNCTION 2
157
- #define PCALL_FASTER_FUNCTION 3
158
- #define PCALL_METHOD 4
159
- #define PCALL_BOUND_METHOD 5
160
- #define PCALL_CFUNCTION 6
161
- #define PCALL_TYPE 7
162
- #define PCALL_GENERATOR 8
163
- #define PCALL_OTHER 9
164
- #define PCALL_POP 10
165
-
166
- /* Notes about the statistics
167
-
168
- PCALL_FAST stats
169
-
170
- FAST_FUNCTION means no argument tuple needs to be created.
171
- FASTER_FUNCTION means that the fast-path frame setup code is used.
172
-
173
- If there is a method call where the call can be optimized by changing
174
- the argument tuple and calling the function directly, it gets recorded
175
- twice.
176
-
177
- As a result, the relationship among the statistics appears to be
178
- PCALL_ALL == PCALL_FUNCTION + PCALL_METHOD - PCALL_BOUND_METHOD +
179
- PCALL_CFUNCTION + PCALL_TYPE + PCALL_GENERATOR + PCALL_OTHER
180
- PCALL_FUNCTION > PCALL_FAST_FUNCTION > PCALL_FASTER_FUNCTION
181
- PCALL_METHOD > PCALL_BOUND_METHOD
182
- */
183
-
184
- #define PCALL(POS) pcall[POS]++
185
-
186
- PyObject *
187
- PyEval_GetCallStats(PyObject *self)
188
- {
189
- return Py_BuildValue("iiiiiiiiii",
190
- pcall[0], pcall[1], pcall[2], pcall[3],
191
- pcall[4], pcall[5], pcall[6], pcall[7],
192
- pcall[8], pcall[9]);
193
- }
194
- #else
195
- #define PCALL(O)
196
-
197
- PyObject *
198
- PyEval_GetCallStats(PyObject *self)
199
- {
200
- Py_INCREF(Py_None);
201
- return Py_None;
202
- }
203
- #endif
204
-
205
-
206
- #ifdef WITH_THREAD
207
-
208
- #ifdef HAVE_ERRNO_H
209
- #include <errno.h>
210
- #endif
211
- #include "pythread.h"
212
-
213
- static PyThread_type_lock interpreter_lock = 0; /* This is the GIL */
214
- static long main_thread = 0;
215
-
216
- int
217
- PyEval_ThreadsInitialized(void)
218
- {
219
- return interpreter_lock != 0;
220
- }
221
-
222
- void
223
- PyEval_InitThreads(void)
224
- {
225
- if (interpreter_lock)
226
- return;
227
- interpreter_lock = PyThread_allocate_lock();
228
- PyThread_acquire_lock(interpreter_lock, 1);
229
- main_thread = PyThread_get_thread_ident();
230
- }
231
-
232
- void
233
- PyEval_AcquireLock(void)
234
- {
235
- PyThread_acquire_lock(interpreter_lock, 1);
236
- }
237
-
238
- void
239
- PyEval_ReleaseLock(void)
240
- {
241
- PyThread_release_lock(interpreter_lock);
242
- }
243
-
244
- void
245
- PyEval_AcquireThread(PyThreadState *tstate)
246
- {
247
- if (tstate == NULL)
248
- Py_FatalError("PyEval_AcquireThread: NULL new thread state");
249
- /* Check someone has called PyEval_InitThreads() to create the lock */
250
- assert(interpreter_lock);
251
- PyThread_acquire_lock(interpreter_lock, 1);
252
- if (PyThreadState_Swap(tstate) != NULL)
253
- Py_FatalError(
254
- "PyEval_AcquireThread: non-NULL old thread state");
255
- }
256
-
257
- void
258
- PyEval_ReleaseThread(PyThreadState *tstate)
259
- {
260
- if (tstate == NULL)
261
- Py_FatalError("PyEval_ReleaseThread: NULL thread state");
262
- if (PyThreadState_Swap(NULL) != tstate)
263
- Py_FatalError("PyEval_ReleaseThread: wrong thread state");
264
- PyThread_release_lock(interpreter_lock);
265
- }
266
-
267
- /* This function is called from PyOS_AfterFork to ensure that newly
268
- created child processes don't hold locks referring to threads which
269
- are not running in the child process. (This could also be done using
270
- pthread_atfork mechanism, at least for the pthreads implementation.) */
271
-
272
- void
273
- PyEval_ReInitThreads(void)
274
- {
275
- if (!interpreter_lock)
276
- return;
277
- /*XXX Can't use PyThread_free_lock here because it does too
278
- much error-checking. Doing this cleanly would require
279
- adding a new function to each thread_*.h. Instead, just
280
- create a new lock and waste a little bit of memory */
281
- interpreter_lock = PyThread_allocate_lock();
282
- PyThread_acquire_lock(interpreter_lock, 1);
283
- main_thread = PyThread_get_thread_ident();
284
- }
285
- #endif
286
-
287
- /* Functions save_thread and restore_thread are always defined so
288
- dynamically loaded modules needn't be compiled separately for use
289
- with and without threads: */
290
-
291
- PyThreadState *
292
- PyEval_SaveThread(void)
293
- {
294
- PyThreadState *tstate = PyThreadState_Swap(NULL);
295
- if (tstate == NULL)
296
- Py_FatalError("PyEval_SaveThread: NULL tstate");
297
- #ifdef WITH_THREAD
298
- if (interpreter_lock)
299
- PyThread_release_lock(interpreter_lock);
300
- #endif
301
- return tstate;
302
- }
303
-
304
- void
305
- PyEval_RestoreThread(PyThreadState *tstate)
306
- {
307
- if (tstate == NULL)
308
- Py_FatalError("PyEval_RestoreThread: NULL tstate");
309
- #ifdef WITH_THREAD
310
- if (interpreter_lock) {
311
- int err = errno;
312
- PyThread_acquire_lock(interpreter_lock, 1);
313
- errno = err;
314
- }
315
- #endif
316
- PyThreadState_Swap(tstate);
317
- }
318
-
319
-
320
- /* Mechanism whereby asynchronously executing callbacks (e.g. UNIX
321
- signal handlers or Mac I/O completion routines) can schedule calls
322
- to a function to be called synchronously.
323
- The synchronous function is called with one void* argument.
324
- It should return 0 for success or -1 for failure -- failure should
325
- be accompanied by an exception.
326
-
327
- If registry succeeds, the registry function returns 0; if it fails
328
- (e.g. due to too many pending calls) it returns -1 (without setting
329
- an exception condition).
330
-
331
- Note that because registry may occur from within signal handlers,
332
- or other asynchronous events, calling malloc() is unsafe!
333
-
334
- #ifdef WITH_THREAD
335
- Any thread can schedule pending calls, but only the main thread
336
- will execute them.
337
- #endif
338
-
339
- XXX WARNING! ASYNCHRONOUSLY EXECUTING CODE!
340
- There are two possible race conditions:
341
- (1) nested asynchronous registry calls;
342
- (2) registry calls made while pending calls are being processed.
343
- While (1) is very unlikely, (2) is a real possibility.
344
- The current code is safe against (2), but not against (1).
345
- The safety against (2) is derived from the fact that only one
346
- thread (the main thread) ever takes things out of the queue.
347
-
348
- XXX Darn! With the advent of thread state, we should have an array
349
- of pending calls per thread in the thread state! Later...
350
- */
351
-
352
- #define NPENDINGCALLS 32
353
- static struct {
354
- int (*func)(void *);
355
- void *arg;
356
- } pendingcalls[NPENDINGCALLS];
357
- static volatile int pendingfirst = 0;
358
- static volatile int pendinglast = 0;
359
- static volatile int things_to_do = 0;
360
-
361
- int
362
- Py_AddPendingCall(int (*func)(void *), void *arg)
363
- {
364
- static volatile int busy = 0;
365
- int i, j;
366
- /* XXX Begin critical section */
367
- /* XXX If you want this to be safe against nested
368
- XXX asynchronous calls, you'll have to work harder! */
369
- if (busy)
370
- return -1;
371
- busy = 1;
372
- i = pendinglast;
373
- j = (i + 1) % NPENDINGCALLS;
374
- if (j == pendingfirst) {
375
- busy = 0;
376
- return -1; /* Queue full */
377
- }
378
- pendingcalls[i].func = func;
379
- pendingcalls[i].arg = arg;
380
- pendinglast = j;
381
-
382
- _Py_Ticker = 0;
383
- things_to_do = 1; /* Signal main loop */
384
- busy = 0;
385
- /* XXX End critical section */
386
- return 0;
387
- }
388
-
389
- int
390
- Py_MakePendingCalls(void)
391
- {
392
- static int busy = 0;
393
- #ifdef WITH_THREAD
394
- if (main_thread && PyThread_get_thread_ident() != main_thread)
395
- return 0;
396
- #endif
397
- if (busy)
398
- return 0;
399
- busy = 1;
400
- things_to_do = 0;
401
- for (;;) {
402
- int i;
403
- int (*func)(void *);
404
- void *arg;
405
- i = pendingfirst;
406
- if (i == pendinglast)
407
- break; /* Queue empty */
408
- func = pendingcalls[i].func;
409
- arg = pendingcalls[i].arg;
410
- pendingfirst = (i + 1) % NPENDINGCALLS;
411
- if (func(arg) < 0) {
412
- busy = 0;
413
- things_to_do = 1; /* We're not done yet */
414
- return -1;
415
- }
416
- }
417
- busy = 0;
418
- return 0;
419
- }
420
-
421
-
422
- /* The interpreter's recursion limit */
423
-
424
- #ifndef Py_DEFAULT_RECURSION_LIMIT
425
- #define Py_DEFAULT_RECURSION_LIMIT 1000
426
- #endif
427
- static int recursion_limit = Py_DEFAULT_RECURSION_LIMIT;
428
- int _Py_CheckRecursionLimit = Py_DEFAULT_RECURSION_LIMIT;
429
-
430
- int
431
- Py_GetRecursionLimit(void)
432
- {
433
- return recursion_limit;
434
- }
435
-
436
- void
437
- Py_SetRecursionLimit(int new_limit)
438
- {
439
- recursion_limit = new_limit;
440
- _Py_CheckRecursionLimit = recursion_limit;
441
- }
442
-
443
- /* the macro Py_EnterRecursiveCall() only calls _Py_CheckRecursiveCall()
444
- if the recursion_depth reaches _Py_CheckRecursionLimit.
445
- If USE_STACKCHECK, the macro decrements _Py_CheckRecursionLimit
446
- to guarantee that _Py_CheckRecursiveCall() is regularly called.
447
- Without USE_STACKCHECK, there is no need for this. */
448
- int
449
- _Py_CheckRecursiveCall(char *where)
450
- {
451
- PyThreadState *tstate = PyThreadState_GET();
452
-
453
- #ifdef USE_STACKCHECK
454
- if (PyOS_CheckStack()) {
455
- --tstate->recursion_depth;
456
- PyErr_SetString(PyExc_MemoryError, "Stack overflow");
457
- return -1;
458
- }
459
- #endif
460
- if (tstate->recursion_depth > recursion_limit) {
461
- --tstate->recursion_depth;
462
- PyErr_Format(PyExc_RuntimeError,
463
- "maximum recursion depth exceeded%s",
464
- where);
465
- return -1;
466
- }
467
- _Py_CheckRecursionLimit = recursion_limit;
468
- return 0;
469
- }
470
-
471
- /* Status code for main loop (reason for stack unwind) */
472
- enum why_code {
473
- WHY_NOT = 0x0001, /* No error */
474
- WHY_EXCEPTION = 0x0002, /* Exception occurred */
475
- WHY_RERAISE = 0x0004, /* Exception re-raised by 'finally' */
476
- WHY_RETURN = 0x0008, /* 'return' statement */
477
- WHY_BREAK = 0x0010, /* 'break' statement */
478
- WHY_CONTINUE = 0x0020, /* 'continue' statement */
479
- WHY_YIELD = 0x0040 /* 'yield' operator */
480
- };
481
-
482
- static enum why_code do_raise(PyObject *, PyObject *, PyObject *);
483
- static int unpack_iterable(PyObject *, int, PyObject **);
484
-
485
- /* for manipulating the thread switch and periodic "stuff" - used to be
486
- per thread, now just a pair o' globals */
487
- int _Py_CheckInterval = 100;
488
- volatile int _Py_Ticker = 100;
489
-
490
- PyObject *
491
- PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject *locals)
492
- {
493
- /* XXX raise SystemError if globals is NULL */
494
- return PyEval_EvalCodeEx(co,
495
- globals, locals,
496
- (PyObject **)NULL, 0,
497
- (PyObject **)NULL, 0,
498
- (PyObject **)NULL, 0,
499
- NULL);
500
- }
501
-
502
-
503
- /* Interpreter main loop */
504
-
505
- PyObject *
506
- PyEval_EvalFrame(PyFrameObject *f) {
507
- /* This is for backward compatibility with extension modules that
508
- used this API; core interpreter code should call PyEval_EvalFrameEx() */
509
- return PyEval_EvalFrameEx(f, 0);
510
- }
511
-
512
- PyObject *
513
- PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
514
- {
515
- #ifdef DXPAIRS
516
- int lastopcode = 0;
517
- #endif
518
- register PyObject **stack_pointer; /* Next free slot in value stack */
519
- register unsigned char *next_instr;
520
- register int opcode; /* Current opcode */
521
- register int oparg; /* Current opcode argument, if any */
522
- register enum why_code why; /* Reason for block stack unwind */
523
- register int err; /* Error status -- nonzero if error */
524
- register PyObject *x; /* Result object -- NULL if error */
525
- register PyObject *v; /* Temporary objects popped off stack */
526
- register PyObject *w;
527
- register PyObject *u;
528
- register PyObject *t;
529
- register PyObject *stream = NULL; /* for PRINT opcodes */
530
- register PyObject **fastlocals, **freevars;
531
- PyObject *retval = NULL; /* Return value */
532
- PyThreadState *tstate = PyThreadState_GET();
533
- PyCodeObject *co;
534
-
535
- /* when tracing we set things up so that
536
-
537
- not (instr_lb <= current_bytecode_offset < instr_ub)
538
-
539
- is true when the line being executed has changed. The
540
- initial values are such as to make this false the first
541
- time it is tested. */
542
- int instr_ub = -1, instr_lb = 0, instr_prev = -1;
543
-
544
- unsigned char *first_instr;
545
- PyObject *names;
546
- PyObject *consts;
547
- #if defined(Py_DEBUG) || defined(LLTRACE)
548
- /* Make it easier to find out where we are with a debugger */
549
- char *filename;
550
- #endif
551
-
552
- /* Tuple access macros */
553
-
554
- #ifndef Py_DEBUG
555
- #define GETITEM(v, i) PyTuple_GET_ITEM((PyTupleObject *)(v), (i))
556
- #else
557
- #define GETITEM(v, i) PyTuple_GetItem((v), (i))
558
- #endif
559
-
560
- #ifdef WITH_TSC
561
- /* Use Pentium timestamp counter to mark certain events:
562
- inst0 -- beginning of switch statement for opcode dispatch
563
- inst1 -- end of switch statement (may be skipped)
564
- loop0 -- the top of the mainloop
565
- loop1 -- place where control returns again to top of mainloop
566
- (may be skipped)
567
- intr1 -- beginning of long interruption
568
- intr2 -- end of long interruption
569
-
570
- Many opcodes call out to helper C functions. In some cases, the
571
- time in those functions should be counted towards the time for the
572
- opcode, but not in all cases. For example, a CALL_FUNCTION opcode
573
- calls another Python function; there's no point in charge all the
574
- bytecode executed by the called function to the caller.
575
-
576
- It's hard to make a useful judgement statically. In the presence
577
- of operator overloading, it's impossible to tell if a call will
578
- execute new Python code or not.
579
-
580
- It's a case-by-case judgement. I'll use intr1 for the following
581
- cases:
582
-
583
- EXEC_STMT
584
- IMPORT_STAR
585
- IMPORT_FROM
586
- CALL_FUNCTION (and friends)
587
-
588
- */
589
- uint64 inst0, inst1, loop0, loop1, intr0 = 0, intr1 = 0;
590
- int ticked = 0;
591
-
592
- READ_TIMESTAMP(inst0);
593
- READ_TIMESTAMP(inst1);
594
- READ_TIMESTAMP(loop0);
595
- READ_TIMESTAMP(loop1);
596
-
597
- /* shut up the compiler */
598
- opcode = 0;
599
- #endif
600
-
601
- /* Code access macros */
602
-
603
- #define INSTR_OFFSET() ((int)(next_instr - first_instr))
604
- #define NEXTOP() (*next_instr++)
605
- #define NEXTARG() (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
606
- #define PEEKARG() ((next_instr[2]<<8) + next_instr[1])
607
- #define JUMPTO(x) (next_instr = first_instr + (x))
608
- #define JUMPBY(x) (next_instr += (x))
609
-
610
- /* OpCode prediction macros
611
- Some opcodes tend to come in pairs thus making it possible to predict
612
- the second code when the first is run. For example, COMPARE_OP is often
613
- followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And, those opcodes are often
614
- followed by a POP_TOP.
615
-
616
- Verifying the prediction costs a single high-speed test of register
617
- variable against a constant. If the pairing was good, then the
618
- processor has a high likelihood of making its own successful branch
619
- prediction which results in a nearly zero overhead transition to the
620
- next opcode.
621
-
622
- A successful prediction saves a trip through the eval-loop including
623
- its two unpredictable branches, the HASARG test and the switch-case.
624
-
625
- If collecting opcode statistics, turn off prediction so that
626
- statistics are accurately maintained (the predictions bypass
627
- the opcode frequency counter updates).
628
- */
629
-
630
- #ifdef DYNAMIC_EXECUTION_PROFILE
631
- #define PREDICT(op) if (0) goto PRED_##op
632
- #else
633
- #define PREDICT(op) if (*next_instr == op) goto PRED_##op
634
- #endif
635
-
636
- #define PREDICTED(op) PRED_##op: next_instr++
637
- #define PREDICTED_WITH_ARG(op) PRED_##op: oparg = PEEKARG(); next_instr += 3
638
-
639
- /* Stack manipulation macros */
640
-
641
- /* The stack can grow at most MAXINT deep, as co_nlocals and
642
- co_stacksize are ints. */
643
- #define STACK_LEVEL() ((int)(stack_pointer - f->f_valuestack))
644
- #define EMPTY() (STACK_LEVEL() == 0)
645
- #define TOP() (stack_pointer[-1])
646
- #define SECOND() (stack_pointer[-2])
647
- #define THIRD() (stack_pointer[-3])
648
- #define FOURTH() (stack_pointer[-4])
649
- #define SET_TOP(v) (stack_pointer[-1] = (v))
650
- #define SET_SECOND(v) (stack_pointer[-2] = (v))
651
- #define SET_THIRD(v) (stack_pointer[-3] = (v))
652
- #define SET_FOURTH(v) (stack_pointer[-4] = (v))
653
- #define BASIC_STACKADJ(n) (stack_pointer += n)
654
- #define BASIC_PUSH(v) (*stack_pointer++ = (v))
655
- #define BASIC_POP() (*--stack_pointer)
656
-
657
- #ifdef LLTRACE
658
- #define PUSH(v) { (void)(BASIC_PUSH(v), \
659
- lltrace && prtrace(TOP(), "push")); \
660
- assert(STACK_LEVEL() <= co->co_stacksize); }
661
- #define POP() ((void)(lltrace && prtrace(TOP(), "pop")), BASIC_POP())
662
- #define STACKADJ(n) { (void)(BASIC_STACKADJ(n), \
663
- lltrace && prtrace(TOP(), "stackadj")); \
664
- assert(STACK_LEVEL() <= co->co_stacksize); }
665
- #define EXT_POP(STACK_POINTER) (lltrace && prtrace(*(STACK_POINTER), "ext_pop"), *--(STACK_POINTER))
666
- #else
667
- #define PUSH(v) BASIC_PUSH(v)
668
- #define POP() BASIC_POP()
669
- #define STACKADJ(n) BASIC_STACKADJ(n)
670
- #define EXT_POP(STACK_POINTER) (*--(STACK_POINTER))
671
- #endif
672
-
673
- /* Local variable macros */
674
-
675
- #define GETLOCAL(i) (fastlocals[i])
676
-
677
- /* The SETLOCAL() macro must not DECREF the local variable in-place and
678
- then store the new value; it must copy the old value to a temporary
679
- value, then store the new value, and then DECREF the temporary value.
680
- This is because it is possible that during the DECREF the frame is
681
- accessed by other code (e.g. a __del__ method or gc.collect()) and the
682
- variable would be pointing to already-freed memory. */
683
- #define SETLOCAL(i, value) do { PyObject *tmp = GETLOCAL(i); \
684
- GETLOCAL(i) = value; \
685
- Py_XDECREF(tmp); } while (0)
686
-
687
- /* Start of code */
688
-
689
- if (f == NULL)
690
- return NULL;
691
-
692
- /* push frame */
693
- if (Py_EnterRecursiveCall(""))
694
- return NULL;
695
-
696
- tstate->frame = f;
697
-
698
- if (tstate->use_tracing) {
699
- if (tstate->c_tracefunc != NULL) {
700
- /* tstate->c_tracefunc, if defined, is a
701
- function that will be called on *every* entry
702
- to a code block. Its return value, if not
703
- None, is a function that will be called at
704
- the start of each executed line of code.
705
- (Actually, the function must return itself
706
- in order to continue tracing.) The trace
707
- functions are called with three arguments:
708
- a pointer to the current frame, a string
709
- indicating why the function is called, and
710
- an argument which depends on the situation.
711
- The global trace function is also called
712
- whenever an exception is detected. */
713
- if (call_trace(tstate->c_tracefunc, tstate->c_traceobj,
714
- f, PyTrace_CALL, Py_None)) {
715
- /* Trace function raised an error */
716
- goto exit_eval_frame;
717
- }
718
- }
719
- if (tstate->c_profilefunc != NULL) {
720
- /* Similar for c_profilefunc, except it needn't
721
- return itself and isn't called for "line" events */
722
- if (call_trace(tstate->c_profilefunc,
723
- tstate->c_profileobj,
724
- f, PyTrace_CALL, Py_None)) {
725
- /* Profile function raised an error */
726
- goto exit_eval_frame;
727
- }
728
- }
729
- }
730
-
731
- co = f->f_code;
732
- names = co->co_names;
733
- consts = co->co_consts;
734
- fastlocals = f->f_localsplus;
735
- freevars = f->f_localsplus + co->co_nlocals;
736
- first_instr = (unsigned char*) PyString_AS_STRING(co->co_code);
737
- /* An explanation is in order for the next line.
738
-
739
- f->f_lasti now refers to the index of the last instruction
740
- executed. You might think this was obvious from the name, but
741
- this wasn't always true before 2.3! PyFrame_New now sets
742
- f->f_lasti to -1 (i.e. the index *before* the first instruction)
743
- and YIELD_VALUE doesn't fiddle with f_lasti any more. So this
744
- does work. Promise. */
745
- next_instr = first_instr + f->f_lasti + 1;
746
- stack_pointer = f->f_stacktop;
747
- assert(stack_pointer != NULL);
748
- f->f_stacktop = NULL; /* remains NULL unless yield suspends frame */
749
-
750
- #ifdef LLTRACE
751
- lltrace = PyDict_GetItemString(f->f_globals, "__lltrace__") != NULL;
752
- #endif
753
- #if defined(Py_DEBUG) || defined(LLTRACE)
754
- filename = PyString_AsString(co->co_filename);
755
- #endif
756
-
757
- why = WHY_NOT;
758
- err = 0;
759
- x = Py_None; /* Not a reference, just anything non-NULL */
760
- w = NULL;
761
-
762
- if (throwflag) { /* support for generator.throw() */
763
- why = WHY_EXCEPTION;
764
- goto on_error;
765
- }
766
-
767
- for (;;) {
768
- #ifdef WITH_TSC
769
- if (inst1 == 0) {
770
- /* Almost surely, the opcode executed a break
771
- or a continue, preventing inst1 from being set
772
- on the way out of the loop.
773
- */
774
- READ_TIMESTAMP(inst1);
775
- loop1 = inst1;
776
- }
777
- dump_tsc(opcode, ticked, inst0, inst1, loop0, loop1,
778
- intr0, intr1);
779
- ticked = 0;
780
- inst1 = 0;
781
- intr0 = 0;
782
- intr1 = 0;
783
- READ_TIMESTAMP(loop0);
784
- #endif
785
- assert(stack_pointer >= f->f_valuestack); /* else underflow */
786
- assert(STACK_LEVEL() <= co->co_stacksize); /* else overflow */
787
-
788
- /* Do periodic things. Doing this every time through
789
- the loop would add too much overhead, so we do it
790
- only every Nth instruction. We also do it if
791
- ``things_to_do'' is set, i.e. when an asynchronous
792
- event needs attention (e.g. a signal handler or
793
- async I/O handler); see Py_AddPendingCall() and
794
- Py_MakePendingCalls() above. */
795
-
796
- if (--_Py_Ticker < 0) {
797
- if (*next_instr == SETUP_FINALLY) {
798
- /* Make the last opcode before
799
- a try: finally: block uninterruptable. */
800
- goto fast_next_opcode;
801
- }
802
- _Py_Ticker = _Py_CheckInterval;
803
- tstate->tick_counter++;
804
- #ifdef WITH_TSC
805
- ticked = 1;
806
- #endif
807
- if (things_to_do) {
808
- if (Py_MakePendingCalls() < 0) {
809
- why = WHY_EXCEPTION;
810
- goto on_error;
811
- }
812
- if (things_to_do)
813
- /* MakePendingCalls() didn't succeed.
814
- Force early re-execution of this
815
- "periodic" code, possibly after
816
- a thread switch */
817
- _Py_Ticker = 0;
818
- }
819
- #ifdef WITH_THREAD
820
- if (interpreter_lock) {
821
- /* Give another thread a chance */
822
-
823
- if (PyThreadState_Swap(NULL) != tstate)
824
- Py_FatalError("ceval: tstate mix-up");
825
- PyThread_release_lock(interpreter_lock);
826
-
827
- /* Other threads may run now */
828
-
829
- PyThread_acquire_lock(interpreter_lock, 1);
830
- if (PyThreadState_Swap(tstate) != NULL)
831
- Py_FatalError("ceval: orphan tstate");
832
-
833
- /* Check for thread interrupts */
834
-
835
- if (tstate->async_exc != NULL) {
836
- x = tstate->async_exc;
837
- tstate->async_exc = NULL;
838
- PyErr_SetNone(x);
839
- Py_DECREF(x);
840
- why = WHY_EXCEPTION;
841
- goto on_error;
842
- }
843
- }
844
- #endif
845
- }
846
-
847
- fast_next_opcode:
848
- f->f_lasti = INSTR_OFFSET();
849
-
850
- /* line-by-line tracing support */
851
-
852
- if (tstate->c_tracefunc != NULL && !tstate->tracing) {
853
- /* see maybe_call_line_trace
854
- for expository comments */
855
- f->f_stacktop = stack_pointer;
856
-
857
- err = maybe_call_line_trace(tstate->c_tracefunc,
858
- tstate->c_traceobj,
859
- f, &instr_lb, &instr_ub,
860
- &instr_prev);
861
- /* Reload possibly changed frame fields */
862
- JUMPTO(f->f_lasti);
863
- if (f->f_stacktop != NULL) {
864
- stack_pointer = f->f_stacktop;
865
- f->f_stacktop = NULL;
866
- }
867
- if (err) {
868
- /* trace function raised an exception */
869
- goto on_error;
870
- }
871
- }
872
-
873
- /* Extract opcode and argument */
874
-
875
- opcode = NEXTOP();
876
- oparg = 0; /* allows oparg to be stored in a register because
877
- it doesn't have to be remembered across a full loop */
878
- if (HAS_ARG(opcode))
879
- oparg = NEXTARG();
880
- dispatch_opcode:
881
- #ifdef DYNAMIC_EXECUTION_PROFILE
882
- #ifdef DXPAIRS
883
- dxpairs[lastopcode][opcode]++;
884
- lastopcode = opcode;
885
- #endif
886
- dxp[opcode]++;
887
- #endif
888
-
889
- #ifdef LLTRACE
890
- /* Instruction tracing */
891
-
892
- if (lltrace) {
893
- if (HAS_ARG(opcode)) {
894
- printf("%d: %d, %d\n",
895
- f->f_lasti, opcode, oparg);
896
- }
897
- else {
898
- printf("%d: %d\n",
899
- f->f_lasti, opcode);
900
- }
901
- }
902
- #endif
903
-
904
- /* Main switch on opcode */
905
- READ_TIMESTAMP(inst0);
906
-
907
- switch (opcode) {
908
-
909
- /* BEWARE!
910
- It is essential that any operation that fails sets either
911
- x to NULL, err to nonzero, or why to anything but WHY_NOT,
912
- and that no operation that succeeds does this! */
913
-
914
- /* case STOP_CODE: this is an error! */
915
-
916
- case NOP:
917
- goto fast_next_opcode;
918
-
919
- case LOAD_FAST:
920
- x = GETLOCAL(oparg);
921
- if (x != NULL) {
922
- Py_INCREF(x);
923
- PUSH(x);
924
- goto fast_next_opcode;
925
- }
926
- format_exc_check_arg(PyExc_UnboundLocalError,
927
- UNBOUNDLOCAL_ERROR_MSG,
928
- PyTuple_GetItem(co->co_varnames, oparg));
929
- break;
930
-
931
- case LOAD_CONST:
932
- x = GETITEM(consts, oparg);
933
- Py_INCREF(x);
934
- PUSH(x);
935
- goto fast_next_opcode;
936
-
937
- PREDICTED_WITH_ARG(STORE_FAST);
938
- case STORE_FAST:
939
- v = POP();
940
- SETLOCAL(oparg, v);
941
- goto fast_next_opcode;
942
-
943
- PREDICTED(POP_TOP);
944
- case POP_TOP:
945
- v = POP();
946
- Py_DECREF(v);
947
- goto fast_next_opcode;
948
-
949
- case ROT_TWO:
950
- v = TOP();
951
- w = SECOND();
952
- SET_TOP(w);
953
- SET_SECOND(v);
954
- goto fast_next_opcode;
955
-
956
- case ROT_THREE:
957
- v = TOP();
958
- w = SECOND();
959
- x = THIRD();
960
- SET_TOP(w);
961
- SET_SECOND(x);
962
- SET_THIRD(v);
963
- goto fast_next_opcode;
964
-
965
- case ROT_FOUR:
966
- u = TOP();
967
- v = SECOND();
968
- w = THIRD();
969
- x = FOURTH();
970
- SET_TOP(v);
971
- SET_SECOND(w);
972
- SET_THIRD(x);
973
- SET_FOURTH(u);
974
- goto fast_next_opcode;
975
-
976
- case DUP_TOP:
977
- v = TOP();
978
- Py_INCREF(v);
979
- PUSH(v);
980
- goto fast_next_opcode;
981
-
982
- case DUP_TOPX:
983
- if (oparg == 2) {
984
- x = TOP();
985
- Py_INCREF(x);
986
- w = SECOND();
987
- Py_INCREF(w);
988
- STACKADJ(2);
989
- SET_TOP(x);
990
- SET_SECOND(w);
991
- goto fast_next_opcode;
992
- } else if (oparg == 3) {
993
- x = TOP();
994
- Py_INCREF(x);
995
- w = SECOND();
996
- Py_INCREF(w);
997
- v = THIRD();
998
- Py_INCREF(v);
999
- STACKADJ(3);
1000
- SET_TOP(x);
1001
- SET_SECOND(w);
1002
- SET_THIRD(v);
1003
- goto fast_next_opcode;
1004
- }
1005
- Py_FatalError("invalid argument to DUP_TOPX"
1006
- " (bytecode corruption?)");
1007
- break;
1008
-
1009
- case UNARY_POSITIVE:
1010
- v = TOP();
1011
- x = PyNumber_Positive(v);
1012
- Py_DECREF(v);
1013
- SET_TOP(x);
1014
- if (x != NULL) continue;
1015
- break;
1016
-
1017
- case UNARY_NEGATIVE:
1018
- v = TOP();
1019
- x = PyNumber_Negative(v);
1020
- Py_DECREF(v);
1021
- SET_TOP(x);
1022
- if (x != NULL) continue;
1023
- break;
1024
-
1025
- case UNARY_NOT:
1026
- v = TOP();
1027
- err = PyObject_IsTrue(v);
1028
- Py_DECREF(v);
1029
- if (err == 0) {
1030
- Py_INCREF(Py_True);
1031
- SET_TOP(Py_True);
1032
- continue;
1033
- }
1034
- else if (err > 0) {
1035
- Py_INCREF(Py_False);
1036
- SET_TOP(Py_False);
1037
- err = 0;
1038
- continue;
1039
- }
1040
- STACKADJ(-1);
1041
- break;
1042
-
1043
- case UNARY_CONVERT:
1044
- v = TOP();
1045
- x = PyObject_Repr(v);
1046
- Py_DECREF(v);
1047
- SET_TOP(x);
1048
- if (x != NULL) continue;
1049
- break;
1050
-
1051
- case UNARY_INVERT:
1052
- v = TOP();
1053
- x = PyNumber_Invert(v);
1054
- Py_DECREF(v);
1055
- SET_TOP(x);
1056
- if (x != NULL) continue;
1057
- break;
1058
-
1059
- case BINARY_POWER:
1060
- w = POP();
1061
- v = TOP();
1062
- x = PyNumber_Power(v, w, Py_None);
1063
- Py_DECREF(v);
1064
- Py_DECREF(w);
1065
- SET_TOP(x);
1066
- if (x != NULL) continue;
1067
- break;
1068
-
1069
- case BINARY_MULTIPLY:
1070
- w = POP();
1071
- v = TOP();
1072
- x = PyNumber_Multiply(v, w);
1073
- Py_DECREF(v);
1074
- Py_DECREF(w);
1075
- SET_TOP(x);
1076
- if (x != NULL) continue;
1077
- break;
1078
-
1079
- case BINARY_DIVIDE:
1080
- if (!_Py_QnewFlag) {
1081
- w = POP();
1082
- v = TOP();
1083
- x = PyNumber_Divide(v, w);
1084
- Py_DECREF(v);
1085
- Py_DECREF(w);
1086
- SET_TOP(x);
1087
- if (x != NULL) continue;
1088
- break;
1089
- }
1090
- /* -Qnew is in effect: fall through to
1091
- BINARY_TRUE_DIVIDE */
1092
- case BINARY_TRUE_DIVIDE:
1093
- w = POP();
1094
- v = TOP();
1095
- x = PyNumber_TrueDivide(v, w);
1096
- Py_DECREF(v);
1097
- Py_DECREF(w);
1098
- SET_TOP(x);
1099
- if (x != NULL) continue;
1100
- break;
1101
-
1102
- case BINARY_FLOOR_DIVIDE:
1103
- w = POP();
1104
- v = TOP();
1105
- x = PyNumber_FloorDivide(v, w);
1106
- Py_DECREF(v);
1107
- Py_DECREF(w);
1108
- SET_TOP(x);
1109
- if (x != NULL) continue;
1110
- break;
1111
-
1112
- case BINARY_MODULO:
1113
- w = POP();
1114
- v = TOP();
1115
- x = PyNumber_Remainder(v, w);
1116
- Py_DECREF(v);
1117
- Py_DECREF(w);
1118
- SET_TOP(x);
1119
- if (x != NULL) continue;
1120
- break;
1121
-
1122
- case BINARY_ADD:
1123
- w = POP();
1124
- v = TOP();
1125
- if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
1126
- /* INLINE: int + int */
1127
- register long a, b, i;
1128
- a = PyInt_AS_LONG(v);
1129
- b = PyInt_AS_LONG(w);
1130
- i = a + b;
1131
- if ((i^a) < 0 && (i^b) < 0)
1132
- goto slow_add;
1133
- x = PyInt_FromLong(i);
1134
- }
1135
- else if (PyString_CheckExact(v) &&
1136
- PyString_CheckExact(w)) {
1137
- x = string_concatenate(v, w, f, next_instr);
1138
- /* string_concatenate consumed the ref to v */
1139
- goto skip_decref_vx;
1140
- }
1141
- else {
1142
- slow_add:
1143
- x = PyNumber_Add(v, w);
1144
- }
1145
- Py_DECREF(v);
1146
- skip_decref_vx:
1147
- Py_DECREF(w);
1148
- SET_TOP(x);
1149
- if (x != NULL) continue;
1150
- break;
1151
-
1152
- case BINARY_SUBTRACT:
1153
- w = POP();
1154
- v = TOP();
1155
- if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
1156
- /* INLINE: int - int */
1157
- register long a, b, i;
1158
- a = PyInt_AS_LONG(v);
1159
- b = PyInt_AS_LONG(w);
1160
- i = a - b;
1161
- if ((i^a) < 0 && (i^~b) < 0)
1162
- goto slow_sub;
1163
- x = PyInt_FromLong(i);
1164
- }
1165
- else {
1166
- slow_sub:
1167
- x = PyNumber_Subtract(v, w);
1168
- }
1169
- Py_DECREF(v);
1170
- Py_DECREF(w);
1171
- SET_TOP(x);
1172
- if (x != NULL) continue;
1173
- break;
1174
-
1175
- case BINARY_SUBSCR:
1176
- w = POP();
1177
- v = TOP();
1178
- if (PyList_CheckExact(v) && PyInt_CheckExact(w)) {
1179
- /* INLINE: list[int] */
1180
- Py_ssize_t i = PyInt_AsSsize_t(w);
1181
- if (i < 0)
1182
- i += PyList_GET_SIZE(v);
1183
- if (i >= 0 && i < PyList_GET_SIZE(v)) {
1184
- x = PyList_GET_ITEM(v, i);
1185
- Py_INCREF(x);
1186
- }
1187
- else
1188
- goto slow_get;
1189
- }
1190
- else
1191
- slow_get:
1192
- x = PyObject_GetItem(v, w);
1193
- Py_DECREF(v);
1194
- Py_DECREF(w);
1195
- SET_TOP(x);
1196
- if (x != NULL) continue;
1197
- break;
1198
-
1199
- case BINARY_LSHIFT:
1200
- w = POP();
1201
- v = TOP();
1202
- x = PyNumber_Lshift(v, w);
1203
- Py_DECREF(v);
1204
- Py_DECREF(w);
1205
- SET_TOP(x);
1206
- if (x != NULL) continue;
1207
- break;
1208
-
1209
- case BINARY_RSHIFT:
1210
- w = POP();
1211
- v = TOP();
1212
- x = PyNumber_Rshift(v, w);
1213
- Py_DECREF(v);
1214
- Py_DECREF(w);
1215
- SET_TOP(x);
1216
- if (x != NULL) continue;
1217
- break;
1218
-
1219
- case BINARY_AND:
1220
- w = POP();
1221
- v = TOP();
1222
- x = PyNumber_And(v, w);
1223
- Py_DECREF(v);
1224
- Py_DECREF(w);
1225
- SET_TOP(x);
1226
- if (x != NULL) continue;
1227
- break;
1228
-
1229
- case BINARY_XOR:
1230
- w = POP();
1231
- v = TOP();
1232
- x = PyNumber_Xor(v, w);
1233
- Py_DECREF(v);
1234
- Py_DECREF(w);
1235
- SET_TOP(x);
1236
- if (x != NULL) continue;
1237
- break;
1238
-
1239
- case BINARY_OR:
1240
- w = POP();
1241
- v = TOP();
1242
- x = PyNumber_Or(v, w);
1243
- Py_DECREF(v);
1244
- Py_DECREF(w);
1245
- SET_TOP(x);
1246
- if (x != NULL) continue;
1247
- break;
1248
-
1249
- case LIST_APPEND:
1250
- w = POP();
1251
- v = POP();
1252
- err = PyList_Append(v, w);
1253
- Py_DECREF(v);
1254
- Py_DECREF(w);
1255
- if (err == 0) {
1256
- PREDICT(JUMP_ABSOLUTE);
1257
- continue;
1258
- }
1259
- break;
1260
-
1261
- case INPLACE_POWER:
1262
- w = POP();
1263
- v = TOP();
1264
- x = PyNumber_InPlacePower(v, w, Py_None);
1265
- Py_DECREF(v);
1266
- Py_DECREF(w);
1267
- SET_TOP(x);
1268
- if (x != NULL) continue;
1269
- break;
1270
-
1271
- case INPLACE_MULTIPLY:
1272
- w = POP();
1273
- v = TOP();
1274
- x = PyNumber_InPlaceMultiply(v, w);
1275
- Py_DECREF(v);
1276
- Py_DECREF(w);
1277
- SET_TOP(x);
1278
- if (x != NULL) continue;
1279
- break;
1280
-
1281
- case INPLACE_DIVIDE:
1282
- if (!_Py_QnewFlag) {
1283
- w = POP();
1284
- v = TOP();
1285
- x = PyNumber_InPlaceDivide(v, w);
1286
- Py_DECREF(v);
1287
- Py_DECREF(w);
1288
- SET_TOP(x);
1289
- if (x != NULL) continue;
1290
- break;
1291
- }
1292
- /* -Qnew is in effect: fall through to
1293
- INPLACE_TRUE_DIVIDE */
1294
- case INPLACE_TRUE_DIVIDE:
1295
- w = POP();
1296
- v = TOP();
1297
- x = PyNumber_InPlaceTrueDivide(v, w);
1298
- Py_DECREF(v);
1299
- Py_DECREF(w);
1300
- SET_TOP(x);
1301
- if (x != NULL) continue;
1302
- break;
1303
-
1304
- case INPLACE_FLOOR_DIVIDE:
1305
- w = POP();
1306
- v = TOP();
1307
- x = PyNumber_InPlaceFloorDivide(v, w);
1308
- Py_DECREF(v);
1309
- Py_DECREF(w);
1310
- SET_TOP(x);
1311
- if (x != NULL) continue;
1312
- break;
1313
-
1314
- case INPLACE_MODULO:
1315
- w = POP();
1316
- v = TOP();
1317
- x = PyNumber_InPlaceRemainder(v, w);
1318
- Py_DECREF(v);
1319
- Py_DECREF(w);
1320
- SET_TOP(x);
1321
- if (x != NULL) continue;
1322
- break;
1323
-
1324
- case INPLACE_ADD:
1325
- w = POP();
1326
- v = TOP();
1327
- if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
1328
- /* INLINE: int + int */
1329
- register long a, b, i;
1330
- a = PyInt_AS_LONG(v);
1331
- b = PyInt_AS_LONG(w);
1332
- i = a + b;
1333
- if ((i^a) < 0 && (i^b) < 0)
1334
- goto slow_iadd;
1335
- x = PyInt_FromLong(i);
1336
- }
1337
- else if (PyString_CheckExact(v) &&
1338
- PyString_CheckExact(w)) {
1339
- x = string_concatenate(v, w, f, next_instr);
1340
- /* string_concatenate consumed the ref to v */
1341
- goto skip_decref_v;
1342
- }
1343
- else {
1344
- slow_iadd:
1345
- x = PyNumber_InPlaceAdd(v, w);
1346
- }
1347
- Py_DECREF(v);
1348
- skip_decref_v:
1349
- Py_DECREF(w);
1350
- SET_TOP(x);
1351
- if (x != NULL) continue;
1352
- break;
1353
-
1354
- case INPLACE_SUBTRACT:
1355
- w = POP();
1356
- v = TOP();
1357
- if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
1358
- /* INLINE: int - int */
1359
- register long a, b, i;
1360
- a = PyInt_AS_LONG(v);
1361
- b = PyInt_AS_LONG(w);
1362
- i = a - b;
1363
- if ((i^a) < 0 && (i^~b) < 0)
1364
- goto slow_isub;
1365
- x = PyInt_FromLong(i);
1366
- }
1367
- else {
1368
- slow_isub:
1369
- x = PyNumber_InPlaceSubtract(v, w);
1370
- }
1371
- Py_DECREF(v);
1372
- Py_DECREF(w);
1373
- SET_TOP(x);
1374
- if (x != NULL) continue;
1375
- break;
1376
-
1377
- case INPLACE_LSHIFT:
1378
- w = POP();
1379
- v = TOP();
1380
- x = PyNumber_InPlaceLshift(v, w);
1381
- Py_DECREF(v);
1382
- Py_DECREF(w);
1383
- SET_TOP(x);
1384
- if (x != NULL) continue;
1385
- break;
1386
-
1387
- case INPLACE_RSHIFT:
1388
- w = POP();
1389
- v = TOP();
1390
- x = PyNumber_InPlaceRshift(v, w);
1391
- Py_DECREF(v);
1392
- Py_DECREF(w);
1393
- SET_TOP(x);
1394
- if (x != NULL) continue;
1395
- break;
1396
-
1397
- case INPLACE_AND:
1398
- w = POP();
1399
- v = TOP();
1400
- x = PyNumber_InPlaceAnd(v, w);
1401
- Py_DECREF(v);
1402
- Py_DECREF(w);
1403
- SET_TOP(x);
1404
- if (x != NULL) continue;
1405
- break;
1406
-
1407
- case INPLACE_XOR:
1408
- w = POP();
1409
- v = TOP();
1410
- x = PyNumber_InPlaceXor(v, w);
1411
- Py_DECREF(v);
1412
- Py_DECREF(w);
1413
- SET_TOP(x);
1414
- if (x != NULL) continue;
1415
- break;
1416
-
1417
- case INPLACE_OR:
1418
- w = POP();
1419
- v = TOP();
1420
- x = PyNumber_InPlaceOr(v, w);
1421
- Py_DECREF(v);
1422
- Py_DECREF(w);
1423
- SET_TOP(x);
1424
- if (x != NULL) continue;
1425
- break;
1426
-
1427
- case SLICE+0:
1428
- case SLICE+1:
1429
- case SLICE+2:
1430
- case SLICE+3:
1431
- if ((opcode-SLICE) & 2)
1432
- w = POP();
1433
- else
1434
- w = NULL;
1435
- if ((opcode-SLICE) & 1)
1436
- v = POP();
1437
- else
1438
- v = NULL;
1439
- u = TOP();
1440
- x = apply_slice(u, v, w);
1441
- Py_DECREF(u);
1442
- Py_XDECREF(v);
1443
- Py_XDECREF(w);
1444
- SET_TOP(x);
1445
- if (x != NULL) continue;
1446
- break;
1447
-
1448
- case STORE_SLICE+0:
1449
- case STORE_SLICE+1:
1450
- case STORE_SLICE+2:
1451
- case STORE_SLICE+3:
1452
- if ((opcode-STORE_SLICE) & 2)
1453
- w = POP();
1454
- else
1455
- w = NULL;
1456
- if ((opcode-STORE_SLICE) & 1)
1457
- v = POP();
1458
- else
1459
- v = NULL;
1460
- u = POP();
1461
- t = POP();
1462
- err = assign_slice(u, v, w, t); /* u[v:w] = t */
1463
- Py_DECREF(t);
1464
- Py_DECREF(u);
1465
- Py_XDECREF(v);
1466
- Py_XDECREF(w);
1467
- if (err == 0) continue;
1468
- break;
1469
-
1470
- case DELETE_SLICE+0:
1471
- case DELETE_SLICE+1:
1472
- case DELETE_SLICE+2:
1473
- case DELETE_SLICE+3:
1474
- if ((opcode-DELETE_SLICE) & 2)
1475
- w = POP();
1476
- else
1477
- w = NULL;
1478
- if ((opcode-DELETE_SLICE) & 1)
1479
- v = POP();
1480
- else
1481
- v = NULL;
1482
- u = POP();
1483
- err = assign_slice(u, v, w, (PyObject *)NULL);
1484
- /* del u[v:w] */
1485
- Py_DECREF(u);
1486
- Py_XDECREF(v);
1487
- Py_XDECREF(w);
1488
- if (err == 0) continue;
1489
- break;
1490
-
1491
- case STORE_SUBSCR:
1492
- w = TOP();
1493
- v = SECOND();
1494
- u = THIRD();
1495
- STACKADJ(-3);
1496
- /* v[w] = u */
1497
- err = PyObject_SetItem(v, w, u);
1498
- Py_DECREF(u);
1499
- Py_DECREF(v);
1500
- Py_DECREF(w);
1501
- if (err == 0) continue;
1502
- break;
1503
-
1504
- case DELETE_SUBSCR:
1505
- w = TOP();
1506
- v = SECOND();
1507
- STACKADJ(-2);
1508
- /* del v[w] */
1509
- err = PyObject_DelItem(v, w);
1510
- Py_DECREF(v);
1511
- Py_DECREF(w);
1512
- if (err == 0) continue;
1513
- break;
1514
-
1515
- case PRINT_EXPR:
1516
- v = POP();
1517
- w = PySys_GetObject("displayhook");
1518
- if (w == NULL) {
1519
- PyErr_SetString(PyExc_RuntimeError,
1520
- "lost sys.displayhook");
1521
- err = -1;
1522
- x = NULL;
1523
- }
1524
- if (err == 0) {
1525
- x = PyTuple_Pack(1, v);
1526
- if (x == NULL)
1527
- err = -1;
1528
- }
1529
- if (err == 0) {
1530
- w = PyEval_CallObject(w, x);
1531
- Py_XDECREF(w);
1532
- if (w == NULL)
1533
- err = -1;
1534
- }
1535
- Py_DECREF(v);
1536
- Py_XDECREF(x);
1537
- break;
1538
-
1539
- case PRINT_ITEM_TO:
1540
- w = stream = POP();
1541
- /* fall through to PRINT_ITEM */
1542
-
1543
- case PRINT_ITEM:
1544
- v = POP();
1545
- if (stream == NULL || stream == Py_None) {
1546
- w = PySys_GetObject("stdout");
1547
- if (w == NULL) {
1548
- PyErr_SetString(PyExc_RuntimeError,
1549
- "lost sys.stdout");
1550
- err = -1;
1551
- }
1552
- }
1553
- /* PyFile_SoftSpace() can exececute arbitrary code
1554
- if sys.stdout is an instance with a __getattr__.
1555
- If __getattr__ raises an exception, w will
1556
- be freed, so we need to prevent that temporarily. */
1557
- Py_XINCREF(w);
1558
- if (w != NULL && PyFile_SoftSpace(w, 0))
1559
- err = PyFile_WriteString(" ", w);
1560
- if (err == 0)
1561
- err = PyFile_WriteObject(v, w, Py_PRINT_RAW);
1562
- if (err == 0) {
1563
- /* XXX move into writeobject() ? */
1564
- if (PyString_Check(v)) {
1565
- char *s = PyString_AS_STRING(v);
1566
- Py_ssize_t len = PyString_GET_SIZE(v);
1567
- if (len == 0 ||
1568
- !isspace(Py_CHARMASK(s[len-1])) ||
1569
- s[len-1] == ' ')
1570
- PyFile_SoftSpace(w, 1);
1571
- }
1572
- #ifdef Py_USING_UNICODE
1573
- else if (PyUnicode_Check(v)) {
1574
- Py_UNICODE *s = PyUnicode_AS_UNICODE(v);
1575
- Py_ssize_t len = PyUnicode_GET_SIZE(v);
1576
- if (len == 0 ||
1577
- !Py_UNICODE_ISSPACE(s[len-1]) ||
1578
- s[len-1] == ' ')
1579
- PyFile_SoftSpace(w, 1);
1580
- }
1581
- #endif
1582
- else
1583
- PyFile_SoftSpace(w, 1);
1584
- }
1585
- Py_XDECREF(w);
1586
- Py_DECREF(v);
1587
- Py_XDECREF(stream);
1588
- stream = NULL;
1589
- if (err == 0)
1590
- continue;
1591
- break;
1592
-
1593
- case PRINT_NEWLINE_TO:
1594
- w = stream = POP();
1595
- /* fall through to PRINT_NEWLINE */
1596
-
1597
- case PRINT_NEWLINE:
1598
- if (stream == NULL || stream == Py_None) {
1599
- w = PySys_GetObject("stdout");
1600
- if (w == NULL)
1601
- PyErr_SetString(PyExc_RuntimeError,
1602
- "lost sys.stdout");
1603
- }
1604
- if (w != NULL) {
1605
- err = PyFile_WriteString("\n", w);
1606
- if (err == 0)
1607
- PyFile_SoftSpace(w, 0);
1608
- }
1609
- Py_XDECREF(stream);
1610
- stream = NULL;
1611
- break;
1612
-
1613
-
1614
- #ifdef CASE_TOO_BIG
1615
- default: switch (opcode) {
1616
- #endif
1617
- case RAISE_VARARGS:
1618
- u = v = w = NULL;
1619
- switch (oparg) {
1620
- case 3:
1621
- u = POP(); /* traceback */
1622
- /* Fallthrough */
1623
- case 2:
1624
- v = POP(); /* value */
1625
- /* Fallthrough */
1626
- case 1:
1627
- w = POP(); /* exc */
1628
- case 0: /* Fallthrough */
1629
- why = do_raise(w, v, u);
1630
- break;
1631
- default:
1632
- PyErr_SetString(PyExc_SystemError,
1633
- "bad RAISE_VARARGS oparg");
1634
- why = WHY_EXCEPTION;
1635
- break;
1636
- }
1637
- break;
1638
-
1639
- case LOAD_LOCALS:
1640
- if ((x = f->f_locals) != NULL) {
1641
- Py_INCREF(x);
1642
- PUSH(x);
1643
- continue;
1644
- }
1645
- PyErr_SetString(PyExc_SystemError, "no locals");
1646
- break;
1647
-
1648
- case RETURN_VALUE:
1649
- retval = POP();
1650
- why = WHY_RETURN;
1651
- goto fast_block_end;
1652
-
1653
- case YIELD_VALUE:
1654
- retval = POP();
1655
- f->f_stacktop = stack_pointer;
1656
- why = WHY_YIELD;
1657
- goto fast_yield;
1658
-
1659
- case EXEC_STMT:
1660
- w = TOP();
1661
- v = SECOND();
1662
- u = THIRD();
1663
- STACKADJ(-3);
1664
- READ_TIMESTAMP(intr0);
1665
- err = exec_statement(f, u, v, w);
1666
- READ_TIMESTAMP(intr1);
1667
- Py_DECREF(u);
1668
- Py_DECREF(v);
1669
- Py_DECREF(w);
1670
- break;
1671
-
1672
- case POP_BLOCK:
1673
- {
1674
- PyTryBlock *b = PyFrame_BlockPop(f);
1675
- while (STACK_LEVEL() > b->b_level) {
1676
- v = POP();
1677
- Py_DECREF(v);
1678
- }
1679
- }
1680
- continue;
1681
-
1682
- case END_FINALLY:
1683
- v = POP();
1684
- if (PyInt_Check(v)) {
1685
- why = (enum why_code) PyInt_AS_LONG(v);
1686
- assert(why != WHY_YIELD);
1687
- if (why == WHY_RETURN ||
1688
- why == WHY_CONTINUE)
1689
- retval = POP();
1690
- }
1691
- else if (PyExceptionClass_Check(v) || PyString_Check(v)) {
1692
- w = POP();
1693
- u = POP();
1694
- PyErr_Restore(v, w, u);
1695
- why = WHY_RERAISE;
1696
- break;
1697
- }
1698
- else if (v != Py_None) {
1699
- PyErr_SetString(PyExc_SystemError,
1700
- "'finally' pops bad exception");
1701
- why = WHY_EXCEPTION;
1702
- }
1703
- Py_DECREF(v);
1704
- break;
1705
-
1706
- case BUILD_CLASS:
1707
- u = TOP();
1708
- v = SECOND();
1709
- w = THIRD();
1710
- STACKADJ(-2);
1711
- x = build_class(u, v, w);
1712
- SET_TOP(x);
1713
- Py_DECREF(u);
1714
- Py_DECREF(v);
1715
- Py_DECREF(w);
1716
- break;
1717
-
1718
- case STORE_NAME:
1719
- w = GETITEM(names, oparg);
1720
- v = POP();
1721
- if ((x = f->f_locals) != NULL) {
1722
- if (PyDict_CheckExact(x))
1723
- err = PyDict_SetItem(x, w, v);
1724
- else
1725
- err = PyObject_SetItem(x, w, v);
1726
- Py_DECREF(v);
1727
- if (err == 0) continue;
1728
- break;
1729
- }
1730
- PyErr_Format(PyExc_SystemError,
1731
- "no locals found when storing %s",
1732
- PyObject_REPR(w));
1733
- break;
1734
-
1735
- case DELETE_NAME:
1736
- w = GETITEM(names, oparg);
1737
- if ((x = f->f_locals) != NULL) {
1738
- if ((err = PyObject_DelItem(x, w)) != 0)
1739
- format_exc_check_arg(PyExc_NameError,
1740
- NAME_ERROR_MSG ,w);
1741
- break;
1742
- }
1743
- PyErr_Format(PyExc_SystemError,
1744
- "no locals when deleting %s",
1745
- PyObject_REPR(w));
1746
- break;
1747
-
1748
- PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
1749
- case UNPACK_SEQUENCE:
1750
- v = POP();
1751
- if (PyTuple_CheckExact(v) && PyTuple_GET_SIZE(v) == oparg) {
1752
- PyObject **items = ((PyTupleObject *)v)->ob_item;
1753
- while (oparg--) {
1754
- w = items[oparg];
1755
- Py_INCREF(w);
1756
- PUSH(w);
1757
- }
1758
- Py_DECREF(v);
1759
- continue;
1760
- } else if (PyList_CheckExact(v) && PyList_GET_SIZE(v) == oparg) {
1761
- PyObject **items = ((PyListObject *)v)->ob_item;
1762
- while (oparg--) {
1763
- w = items[oparg];
1764
- Py_INCREF(w);
1765
- PUSH(w);
1766
- }
1767
- } else if (unpack_iterable(v, oparg,
1768
- stack_pointer + oparg))
1769
- stack_pointer += oparg;
1770
- else {
1771
- if (PyErr_ExceptionMatches(PyExc_TypeError))
1772
- PyErr_SetString(PyExc_TypeError,
1773
- "unpack non-sequence");
1774
- why = WHY_EXCEPTION;
1775
- }
1776
- Py_DECREF(v);
1777
- break;
1778
-
1779
- case STORE_ATTR:
1780
- w = GETITEM(names, oparg);
1781
- v = TOP();
1782
- u = SECOND();
1783
- STACKADJ(-2);
1784
- err = PyObject_SetAttr(v, w, u); /* v.w = u */
1785
- Py_DECREF(v);
1786
- Py_DECREF(u);
1787
- if (err == 0) continue;
1788
- break;
1789
-
1790
- case DELETE_ATTR:
1791
- w = GETITEM(names, oparg);
1792
- v = POP();
1793
- err = PyObject_SetAttr(v, w, (PyObject *)NULL);
1794
- /* del v.w */
1795
- Py_DECREF(v);
1796
- break;
1797
-
1798
- case STORE_GLOBAL:
1799
- w = GETITEM(names, oparg);
1800
- v = POP();
1801
- err = PyDict_SetItem(f->f_globals, w, v);
1802
- Py_DECREF(v);
1803
- if (err == 0) continue;
1804
- break;
1805
-
1806
- case DELETE_GLOBAL:
1807
- w = GETITEM(names, oparg);
1808
- if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
1809
- format_exc_check_arg(
1810
- PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w);
1811
- break;
1812
-
1813
- case LOAD_NAME:
1814
- w = GETITEM(names, oparg);
1815
- if ((v = f->f_locals) == NULL) {
1816
- PyErr_Format(PyExc_SystemError,
1817
- "no locals when loading %s",
1818
- PyObject_REPR(w));
1819
- break;
1820
- }
1821
- if (PyDict_CheckExact(v)) {
1822
- x = PyDict_GetItem(v, w);
1823
- Py_XINCREF(x);
1824
- }
1825
- else {
1826
- x = PyObject_GetItem(v, w);
1827
- if (x == NULL && PyErr_Occurred()) {
1828
- if (!PyErr_ExceptionMatches(PyExc_KeyError))
1829
- break;
1830
- PyErr_Clear();
1831
- }
1832
- }
1833
- if (x == NULL) {
1834
- x = PyDict_GetItem(f->f_globals, w);
1835
- if (x == NULL) {
1836
- x = PyDict_GetItem(f->f_builtins, w);
1837
- if (x == NULL) {
1838
- format_exc_check_arg(
1839
- PyExc_NameError,
1840
- NAME_ERROR_MSG ,w);
1841
- break;
1842
- }
1843
- }
1844
- Py_INCREF(x);
1845
- }
1846
- PUSH(x);
1847
- continue;
1848
-
1849
- case LOAD_GLOBAL:
1850
- w = GETITEM(names, oparg);
1851
- if (PyString_CheckExact(w)) {
1852
- /* Inline the PyDict_GetItem() calls.
1853
- WARNING: this is an extreme speed hack.
1854
- Do not try this at home. */
1855
- long hash = ((PyStringObject *)w)->ob_shash;
1856
- if (hash != -1) {
1857
- PyDictObject *d;
1858
- PyDictEntry *e;
1859
- d = (PyDictObject *)(f->f_globals);
1860
- e = d->ma_lookup(d, w, hash);
1861
- if (e == NULL) {
1862
- x = NULL;
1863
- break;
1864
- }
1865
- x = e->me_value;
1866
- if (x != NULL) {
1867
- Py_INCREF(x);
1868
- PUSH(x);
1869
- continue;
1870
- }
1871
- d = (PyDictObject *)(f->f_builtins);
1872
- e = d->ma_lookup(d, w, hash);
1873
- if (e == NULL) {
1874
- x = NULL;
1875
- break;
1876
- }
1877
- x = e->me_value;
1878
- if (x != NULL) {
1879
- Py_INCREF(x);
1880
- PUSH(x);
1881
- continue;
1882
- }
1883
- goto load_global_error;
1884
- }
1885
- }
1886
- /* This is the un-inlined version of the code above */
1887
- x = PyDict_GetItem(f->f_globals, w);
1888
- if (x == NULL) {
1889
- x = PyDict_GetItem(f->f_builtins, w);
1890
- if (x == NULL) {
1891
- load_global_error:
1892
- format_exc_check_arg(
1893
- PyExc_NameError,
1894
- GLOBAL_NAME_ERROR_MSG, w);
1895
- break;
1896
- }
1897
- }
1898
- Py_INCREF(x);
1899
- PUSH(x);
1900
- continue;
1901
-
1902
- case DELETE_FAST:
1903
- x = GETLOCAL(oparg);
1904
- if (x != NULL) {
1905
- SETLOCAL(oparg, NULL);
1906
- continue;
1907
- }
1908
- format_exc_check_arg(
1909
- PyExc_UnboundLocalError,
1910
- UNBOUNDLOCAL_ERROR_MSG,
1911
- PyTuple_GetItem(co->co_varnames, oparg)
1912
- );
1913
- break;
1914
-
1915
- case LOAD_CLOSURE:
1916
- x = freevars[oparg];
1917
- Py_INCREF(x);
1918
- PUSH(x);
1919
- if (x != NULL) continue;
1920
- break;
1921
-
1922
- case LOAD_DEREF:
1923
- x = freevars[oparg];
1924
- w = PyCell_Get(x);
1925
- if (w != NULL) {
1926
- PUSH(w);
1927
- continue;
1928
- }
1929
- err = -1;
1930
- /* Don't stomp existing exception */
1931
- if (PyErr_Occurred())
1932
- break;
1933
- if (oparg < PyTuple_GET_SIZE(co->co_cellvars)) {
1934
- v = PyTuple_GET_ITEM(co->co_cellvars,
1935
- oparg);
1936
- format_exc_check_arg(
1937
- PyExc_UnboundLocalError,
1938
- UNBOUNDLOCAL_ERROR_MSG,
1939
- v);
1940
- } else {
1941
- v = PyTuple_GET_ITEM(
1942
- co->co_freevars,
1943
- oparg - PyTuple_GET_SIZE(co->co_cellvars));
1944
- format_exc_check_arg(
1945
- PyExc_NameError,
1946
- UNBOUNDFREE_ERROR_MSG,
1947
- v);
1948
- }
1949
- break;
1950
-
1951
- case STORE_DEREF:
1952
- w = POP();
1953
- x = freevars[oparg];
1954
- PyCell_Set(x, w);
1955
- Py_DECREF(w);
1956
- continue;
1957
-
1958
- case BUILD_TUPLE:
1959
- x = PyTuple_New(oparg);
1960
- if (x != NULL) {
1961
- for (; --oparg >= 0;) {
1962
- w = POP();
1963
- PyTuple_SET_ITEM(x, oparg, w);
1964
- }
1965
- PUSH(x);
1966
- continue;
1967
- }
1968
- break;
1969
-
1970
- case BUILD_LIST:
1971
- x = PyList_New(oparg);
1972
- if (x != NULL) {
1973
- for (; --oparg >= 0;) {
1974
- w = POP();
1975
- PyList_SET_ITEM(x, oparg, w);
1976
- }
1977
- PUSH(x);
1978
- continue;
1979
- }
1980
- break;
1981
-
1982
- case BUILD_MAP:
1983
- x = PyDict_New();
1984
- PUSH(x);
1985
- if (x != NULL) continue;
1986
- break;
1987
-
1988
- case LOAD_ATTR:
1989
- w = GETITEM(names, oparg);
1990
- v = TOP();
1991
- x = PyObject_GetAttr(v, w);
1992
- Py_DECREF(v);
1993
- SET_TOP(x);
1994
- if (x != NULL) continue;
1995
- break;
1996
-
1997
- case COMPARE_OP:
1998
- w = POP();
1999
- v = TOP();
2000
- if (PyInt_CheckExact(w) && PyInt_CheckExact(v)) {
2001
- /* INLINE: cmp(int, int) */
2002
- register long a, b;
2003
- register int res;
2004
- a = PyInt_AS_LONG(v);
2005
- b = PyInt_AS_LONG(w);
2006
- switch (oparg) {
2007
- case PyCmp_LT: res = a < b; break;
2008
- case PyCmp_LE: res = a <= b; break;
2009
- case PyCmp_EQ: res = a == b; break;
2010
- case PyCmp_NE: res = a != b; break;
2011
- case PyCmp_GT: res = a > b; break;
2012
- case PyCmp_GE: res = a >= b; break;
2013
- case PyCmp_IS: res = v == w; break;
2014
- case PyCmp_IS_NOT: res = v != w; break;
2015
- default: goto slow_compare;
2016
- }
2017
- x = res ? Py_True : Py_False;
2018
- Py_INCREF(x);
2019
- }
2020
- else {
2021
- slow_compare:
2022
- x = cmp_outcome(oparg, v, w);
2023
- }
2024
- Py_DECREF(v);
2025
- Py_DECREF(w);
2026
- SET_TOP(x);
2027
- if (x == NULL) break;
2028
- PREDICT(JUMP_IF_FALSE);
2029
- PREDICT(JUMP_IF_TRUE);
2030
- continue;
2031
-
2032
- case IMPORT_NAME:
2033
- w = GETITEM(names, oparg);
2034
- x = PyDict_GetItemString(f->f_builtins, "__import__");
2035
- if (x == NULL) {
2036
- PyErr_SetString(PyExc_ImportError,
2037
- "__import__ not found");
2038
- break;
2039
- }
2040
- v = POP();
2041
- u = TOP();
2042
- if (PyInt_AsLong(u) != -1 || PyErr_Occurred())
2043
- w = PyTuple_Pack(5,
2044
- w,
2045
- f->f_globals,
2046
- f->f_locals == NULL ?
2047
- Py_None : f->f_locals,
2048
- v,
2049
- u);
2050
- else
2051
- w = PyTuple_Pack(4,
2052
- w,
2053
- f->f_globals,
2054
- f->f_locals == NULL ?
2055
- Py_None : f->f_locals,
2056
- v);
2057
- Py_DECREF(v);
2058
- Py_DECREF(u);
2059
- if (w == NULL) {
2060
- u = POP();
2061
- x = NULL;
2062
- break;
2063
- }
2064
- READ_TIMESTAMP(intr0);
2065
- x = PyEval_CallObject(x, w);
2066
- READ_TIMESTAMP(intr1);
2067
- Py_DECREF(w);
2068
- SET_TOP(x);
2069
- if (x != NULL) continue;
2070
- break;
2071
-
2072
- case IMPORT_STAR:
2073
- v = POP();
2074
- PyFrame_FastToLocals(f);
2075
- if ((x = f->f_locals) == NULL) {
2076
- PyErr_SetString(PyExc_SystemError,
2077
- "no locals found during 'import *'");
2078
- break;
2079
- }
2080
- READ_TIMESTAMP(intr0);
2081
- err = import_all_from(x, v);
2082
- READ_TIMESTAMP(intr1);
2083
- PyFrame_LocalsToFast(f, 0);
2084
- Py_DECREF(v);
2085
- if (err == 0) continue;
2086
- break;
2087
-
2088
- case IMPORT_FROM:
2089
- w = GETITEM(names, oparg);
2090
- v = TOP();
2091
- READ_TIMESTAMP(intr0);
2092
- x = import_from(v, w);
2093
- READ_TIMESTAMP(intr1);
2094
- PUSH(x);
2095
- if (x != NULL) continue;
2096
- break;
2097
-
2098
- case JUMP_FORWARD:
2099
- JUMPBY(oparg);
2100
- goto fast_next_opcode;
2101
-
2102
- PREDICTED_WITH_ARG(JUMP_IF_FALSE);
2103
- case JUMP_IF_FALSE:
2104
- w = TOP();
2105
- if (w == Py_True) {
2106
- PREDICT(POP_TOP);
2107
- goto fast_next_opcode;
2108
- }
2109
- if (w == Py_False) {
2110
- JUMPBY(oparg);
2111
- goto fast_next_opcode;
2112
- }
2113
- err = PyObject_IsTrue(w);
2114
- if (err > 0)
2115
- err = 0;
2116
- else if (err == 0)
2117
- JUMPBY(oparg);
2118
- else
2119
- break;
2120
- continue;
2121
-
2122
- PREDICTED_WITH_ARG(JUMP_IF_TRUE);
2123
- case JUMP_IF_TRUE:
2124
- w = TOP();
2125
- if (w == Py_False) {
2126
- PREDICT(POP_TOP);
2127
- goto fast_next_opcode;
2128
- }
2129
- if (w == Py_True) {
2130
- JUMPBY(oparg);
2131
- goto fast_next_opcode;
2132
- }
2133
- err = PyObject_IsTrue(w);
2134
- if (err > 0) {
2135
- err = 0;
2136
- JUMPBY(oparg);
2137
- }
2138
- else if (err == 0)
2139
- ;
2140
- else
2141
- break;
2142
- continue;
2143
-
2144
- PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
2145
- case JUMP_ABSOLUTE:
2146
- JUMPTO(oparg);
2147
- continue;
2148
-
2149
- case GET_ITER:
2150
- /* before: [obj]; after [getiter(obj)] */
2151
- v = TOP();
2152
- x = PyObject_GetIter(v);
2153
- Py_DECREF(v);
2154
- if (x != NULL) {
2155
- SET_TOP(x);
2156
- PREDICT(FOR_ITER);
2157
- continue;
2158
- }
2159
- STACKADJ(-1);
2160
- break;
2161
-
2162
- PREDICTED_WITH_ARG(FOR_ITER);
2163
- case FOR_ITER:
2164
- /* before: [iter]; after: [iter, iter()] *or* [] */
2165
- v = TOP();
2166
- x = (*v->ob_type->tp_iternext)(v);
2167
- if (x != NULL) {
2168
- PUSH(x);
2169
- PREDICT(STORE_FAST);
2170
- PREDICT(UNPACK_SEQUENCE);
2171
- continue;
2172
- }
2173
- if (PyErr_Occurred()) {
2174
- if (!PyErr_ExceptionMatches(PyExc_StopIteration))
2175
- break;
2176
- PyErr_Clear();
2177
- }
2178
- /* iterator ended normally */
2179
- x = v = POP();
2180
- Py_DECREF(v);
2181
- JUMPBY(oparg);
2182
- continue;
2183
-
2184
- case BREAK_LOOP:
2185
- why = WHY_BREAK;
2186
- goto fast_block_end;
2187
-
2188
- case CONTINUE_LOOP:
2189
- retval = PyInt_FromLong(oparg);
2190
- if (!retval) {
2191
- x = NULL;
2192
- break;
2193
- }
2194
- why = WHY_CONTINUE;
2195
- goto fast_block_end;
2196
-
2197
- case SETUP_LOOP:
2198
- case SETUP_EXCEPT:
2199
- case SETUP_FINALLY:
2200
- /* NOTE: If you add any new block-setup opcodes that are not try/except/finally
2201
- handlers, you may need to update the PyGen_NeedsFinalizing() function. */
2202
-
2203
- PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg,
2204
- STACK_LEVEL());
2205
- continue;
2206
-
2207
- case WITH_CLEANUP:
2208
- {
2209
- /* TOP is the context.__exit__ bound method.
2210
- Below that are 1-3 values indicating how/why
2211
- we entered the finally clause:
2212
- - SECOND = None
2213
- - (SECOND, THIRD) = (WHY_{RETURN,CONTINUE}), retval
2214
- - SECOND = WHY_*; no retval below it
2215
- - (SECOND, THIRD, FOURTH) = exc_info()
2216
- In the last case, we must call
2217
- TOP(SECOND, THIRD, FOURTH)
2218
- otherwise we must call
2219
- TOP(None, None, None)
2220
-
2221
- In addition, if the stack represents an exception,
2222
- *and* the function call returns a 'true' value, we
2223
- "zap" this information, to prevent END_FINALLY from
2224
- re-raising the exception. (But non-local gotos
2225
- should still be resumed.)
2226
- */
2227
-
2228
- x = TOP();
2229
- u = SECOND();
2230
- if (PyInt_Check(u) || u == Py_None) {
2231
- u = v = w = Py_None;
2232
- }
2233
- else {
2234
- v = THIRD();
2235
- w = FOURTH();
2236
- }
2237
- /* XXX Not the fastest way to call it... */
2238
- x = PyObject_CallFunctionObjArgs(x, u, v, w, NULL);
2239
- if (x == NULL)
2240
- break; /* Go to error exit */
2241
- if (u != Py_None && PyObject_IsTrue(x)) {
2242
- /* There was an exception and a true return */
2243
- Py_DECREF(x);
2244
- x = TOP(); /* Again */
2245
- STACKADJ(-3);
2246
- Py_INCREF(Py_None);
2247
- SET_TOP(Py_None);
2248
- Py_DECREF(x);
2249
- Py_DECREF(u);
2250
- Py_DECREF(v);
2251
- Py_DECREF(w);
2252
- } else {
2253
- /* Let END_FINALLY do its thing */
2254
- Py_DECREF(x);
2255
- x = POP();
2256
- Py_DECREF(x);
2257
- }
2258
- break;
2259
- }
2260
-
2261
- case CALL_FUNCTION:
2262
- {
2263
- PyObject **sp;
2264
- PCALL(PCALL_ALL);
2265
- sp = stack_pointer;
2266
- #ifdef WITH_TSC
2267
- x = call_function(&sp, oparg, &intr0, &intr1);
2268
- #else
2269
- x = call_function(&sp, oparg);
2270
- #endif
2271
- stack_pointer = sp;
2272
- PUSH(x);
2273
- if (x != NULL)
2274
- continue;
2275
- break;
2276
- }
2277
-
2278
- case CALL_FUNCTION_VAR:
2279
- case CALL_FUNCTION_KW:
2280
- case CALL_FUNCTION_VAR_KW:
2281
- {
2282
- int na = oparg & 0xff;
2283
- int nk = (oparg>>8) & 0xff;
2284
- int flags = (opcode - CALL_FUNCTION) & 3;
2285
- int n = na + 2 * nk;
2286
- PyObject **pfunc, *func, **sp;
2287
- PCALL(PCALL_ALL);
2288
- if (flags & CALL_FLAG_VAR)
2289
- n++;
2290
- if (flags & CALL_FLAG_KW)
2291
- n++;
2292
- pfunc = stack_pointer - n - 1;
2293
- func = *pfunc;
2294
-
2295
- if (PyMethod_Check(func)
2296
- && PyMethod_GET_SELF(func) != NULL) {
2297
- PyObject *self = PyMethod_GET_SELF(func);
2298
- Py_INCREF(self);
2299
- func = PyMethod_GET_FUNCTION(func);
2300
- Py_INCREF(func);
2301
- Py_DECREF(*pfunc);
2302
- *pfunc = self;
2303
- na++;
2304
- n++;
2305
- } else
2306
- Py_INCREF(func);
2307
- sp = stack_pointer;
2308
- READ_TIMESTAMP(intr0);
2309
- x = ext_do_call(func, &sp, flags, na, nk);
2310
- READ_TIMESTAMP(intr1);
2311
- stack_pointer = sp;
2312
- Py_DECREF(func);
2313
-
2314
- while (stack_pointer > pfunc) {
2315
- w = POP();
2316
- Py_DECREF(w);
2317
- }
2318
- PUSH(x);
2319
- if (x != NULL)
2320
- continue;
2321
- break;
2322
- }
2323
-
2324
- case MAKE_FUNCTION:
2325
- v = POP(); /* code object */
2326
- x = PyFunction_New(v, f->f_globals);
2327
- Py_DECREF(v);
2328
- /* XXX Maybe this should be a separate opcode? */
2329
- if (x != NULL && oparg > 0) {
2330
- v = PyTuple_New(oparg);
2331
- if (v == NULL) {
2332
- Py_DECREF(x);
2333
- x = NULL;
2334
- break;
2335
- }
2336
- while (--oparg >= 0) {
2337
- w = POP();
2338
- PyTuple_SET_ITEM(v, oparg, w);
2339
- }
2340
- err = PyFunction_SetDefaults(x, v);
2341
- Py_DECREF(v);
2342
- }
2343
- PUSH(x);
2344
- break;
2345
-
2346
- case MAKE_CLOSURE:
2347
- {
2348
- v = POP(); /* code object */
2349
- x = PyFunction_New(v, f->f_globals);
2350
- Py_DECREF(v);
2351
- if (x != NULL) {
2352
- v = POP();
2353
- err = PyFunction_SetClosure(x, v);
2354
- Py_DECREF(v);
2355
- }
2356
- if (x != NULL && oparg > 0) {
2357
- v = PyTuple_New(oparg);
2358
- if (v == NULL) {
2359
- Py_DECREF(x);
2360
- x = NULL;
2361
- break;
2362
- }
2363
- while (--oparg >= 0) {
2364
- w = POP();
2365
- PyTuple_SET_ITEM(v, oparg, w);
2366
- }
2367
- err = PyFunction_SetDefaults(x, v);
2368
- Py_DECREF(v);
2369
- }
2370
- PUSH(x);
2371
- break;
2372
- }
2373
-
2374
- case BUILD_SLICE:
2375
- if (oparg == 3)
2376
- w = POP();
2377
- else
2378
- w = NULL;
2379
- v = POP();
2380
- u = TOP();
2381
- x = PySlice_New(u, v, w);
2382
- Py_DECREF(u);
2383
- Py_DECREF(v);
2384
- Py_XDECREF(w);
2385
- SET_TOP(x);
2386
- if (x != NULL) continue;
2387
- break;
2388
-
2389
- case EXTENDED_ARG:
2390
- opcode = NEXTOP();
2391
- oparg = oparg<<16 | NEXTARG();
2392
- goto dispatch_opcode;
2393
-
2394
- default:
2395
- fprintf(stderr,
2396
- "XXX lineno: %d, opcode: %d\n",
2397
- PyCode_Addr2Line(f->f_code, f->f_lasti),
2398
- opcode);
2399
- PyErr_SetString(PyExc_SystemError, "unknown opcode");
2400
- why = WHY_EXCEPTION;
2401
- break;
2402
-
2403
- #ifdef CASE_TOO_BIG
2404
- }
2405
- #endif
2406
-
2407
- } /* switch */
2408
-
2409
- on_error:
2410
-
2411
- READ_TIMESTAMP(inst1);
2412
-
2413
- /* Quickly continue if no error occurred */
2414
-
2415
- if (why == WHY_NOT) {
2416
- if (err == 0 && x != NULL) {
2417
- #ifdef CHECKEXC
2418
- /* This check is expensive! */
2419
- if (PyErr_Occurred())
2420
- fprintf(stderr,
2421
- "XXX undetected error\n");
2422
- else {
2423
- #endif
2424
- READ_TIMESTAMP(loop1);
2425
- continue; /* Normal, fast path */
2426
- #ifdef CHECKEXC
2427
- }
2428
- #endif
2429
- }
2430
- why = WHY_EXCEPTION;
2431
- x = Py_None;
2432
- err = 0;
2433
- }
2434
-
2435
- /* Double-check exception status */
2436
-
2437
- if (why == WHY_EXCEPTION || why == WHY_RERAISE) {
2438
- if (!PyErr_Occurred()) {
2439
- PyErr_SetString(PyExc_SystemError,
2440
- "error return without exception set");
2441
- why = WHY_EXCEPTION;
2442
- }
2443
- }
2444
- #ifdef CHECKEXC
2445
- else {
2446
- /* This check is expensive! */
2447
- if (PyErr_Occurred()) {
2448
- char buf[1024];
2449
- sprintf(buf, "Stack unwind with exception "
2450
- "set and why=%d", why);
2451
- Py_FatalError(buf);
2452
- }
2453
- }
2454
- #endif
2455
-
2456
- /* Log traceback info if this is a real exception */
2457
-
2458
- if (why == WHY_EXCEPTION) {
2459
- PyTraceBack_Here(f);
2460
-
2461
- if (tstate->c_tracefunc != NULL)
2462
- call_exc_trace(tstate->c_tracefunc,
2463
- tstate->c_traceobj, f);
2464
- }
2465
-
2466
- /* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */
2467
-
2468
- if (why == WHY_RERAISE)
2469
- why = WHY_EXCEPTION;
2470
-
2471
- /* Unwind stacks if a (pseudo) exception occurred */
2472
-
2473
- fast_block_end:
2474
- while (why != WHY_NOT && f->f_iblock > 0) {
2475
- PyTryBlock *b = PyFrame_BlockPop(f);
2476
-
2477
- assert(why != WHY_YIELD);
2478
- if (b->b_type == SETUP_LOOP && why == WHY_CONTINUE) {
2479
- /* For a continue inside a try block,
2480
- don't pop the block for the loop. */
2481
- PyFrame_BlockSetup(f, b->b_type, b->b_handler,
2482
- b->b_level);
2483
- why = WHY_NOT;
2484
- JUMPTO(PyInt_AS_LONG(retval));
2485
- Py_DECREF(retval);
2486
- break;
2487
- }
2488
-
2489
- while (STACK_LEVEL() > b->b_level) {
2490
- v = POP();
2491
- Py_XDECREF(v);
2492
- }
2493
- if (b->b_type == SETUP_LOOP && why == WHY_BREAK) {
2494
- why = WHY_NOT;
2495
- JUMPTO(b->b_handler);
2496
- break;
2497
- }
2498
- if (b->b_type == SETUP_FINALLY ||
2499
- (b->b_type == SETUP_EXCEPT &&
2500
- why == WHY_EXCEPTION)) {
2501
- if (why == WHY_EXCEPTION) {
2502
- PyObject *exc, *val, *tb;
2503
- PyErr_Fetch(&exc, &val, &tb);
2504
- if (val == NULL) {
2505
- val = Py_None;
2506
- Py_INCREF(val);
2507
- }
2508
- /* Make the raw exception data
2509
- available to the handler,
2510
- so a program can emulate the
2511
- Python main loop. Don't do
2512
- this for 'finally'. */
2513
- if (b->b_type == SETUP_EXCEPT) {
2514
- PyErr_NormalizeException(
2515
- &exc, &val, &tb);
2516
- set_exc_info(tstate,
2517
- exc, val, tb);
2518
- }
2519
- if (tb == NULL) {
2520
- Py_INCREF(Py_None);
2521
- PUSH(Py_None);
2522
- } else
2523
- PUSH(tb);
2524
- PUSH(val);
2525
- PUSH(exc);
2526
- }
2527
- else {
2528
- if (why & (WHY_RETURN | WHY_CONTINUE))
2529
- PUSH(retval);
2530
- v = PyInt_FromLong((long)why);
2531
- PUSH(v);
2532
- }
2533
- why = WHY_NOT;
2534
- JUMPTO(b->b_handler);
2535
- break;
2536
- }
2537
- } /* unwind stack */
2538
-
2539
- /* End the loop if we still have an error (or return) */
2540
-
2541
- if (why != WHY_NOT)
2542
- break;
2543
- READ_TIMESTAMP(loop1);
2544
-
2545
- } /* main loop */
2546
-
2547
- assert(why != WHY_YIELD);
2548
- /* Pop remaining stack entries. */
2549
- while (!EMPTY()) {
2550
- v = POP();
2551
- Py_XDECREF(v);
2552
- }
2553
-
2554
- if (why != WHY_RETURN)
2555
- retval = NULL;
2556
-
2557
- fast_yield:
2558
- if (tstate->use_tracing) {
2559
- if (tstate->c_tracefunc) {
2560
- if (why == WHY_RETURN || why == WHY_YIELD) {
2561
- if (call_trace(tstate->c_tracefunc,
2562
- tstate->c_traceobj, f,
2563
- PyTrace_RETURN, retval)) {
2564
- Py_XDECREF(retval);
2565
- retval = NULL;
2566
- why = WHY_EXCEPTION;
2567
- }
2568
- }
2569
- else if (why == WHY_EXCEPTION) {
2570
- call_trace_protected(tstate->c_tracefunc,
2571
- tstate->c_traceobj, f,
2572
- PyTrace_RETURN, NULL);
2573
- }
2574
- }
2575
- if (tstate->c_profilefunc) {
2576
- if (why == WHY_EXCEPTION)
2577
- call_trace_protected(tstate->c_profilefunc,
2578
- tstate->c_profileobj, f,
2579
- PyTrace_RETURN, NULL);
2580
- else if (call_trace(tstate->c_profilefunc,
2581
- tstate->c_profileobj, f,
2582
- PyTrace_RETURN, retval)) {
2583
- Py_XDECREF(retval);
2584
- retval = NULL;
2585
- why = WHY_EXCEPTION;
2586
- }
2587
- }
2588
- }
2589
-
2590
- if (tstate->frame->f_exc_type != NULL)
2591
- reset_exc_info(tstate);
2592
- else {
2593
- assert(tstate->frame->f_exc_value == NULL);
2594
- assert(tstate->frame->f_exc_traceback == NULL);
2595
- }
2596
-
2597
- /* pop frame */
2598
- exit_eval_frame:
2599
- Py_LeaveRecursiveCall();
2600
- tstate->frame = f->f_back;
2601
-
2602
- return retval;
2603
- }
2604
-