libv8 3.3.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) hide show
  1. data/.gitignore +8 -0
  2. data/.gitmodules +3 -0
  3. data/Gemfile +4 -0
  4. data/README.md +44 -0
  5. data/Rakefile +73 -0
  6. data/ext/libv8/extconf.rb +9 -0
  7. data/lib/libv8.rb +15 -0
  8. data/lib/libv8/Makefile +38 -0
  9. data/lib/libv8/detect_cpu.rb +27 -0
  10. data/lib/libv8/fpic-on-linux-amd64.patch +13 -0
  11. data/lib/libv8/scons/CHANGES.txt +5334 -0
  12. data/lib/libv8/scons/LICENSE.txt +20 -0
  13. data/lib/libv8/scons/MANIFEST +199 -0
  14. data/lib/libv8/scons/PKG-INFO +13 -0
  15. data/lib/libv8/scons/README.txt +243 -0
  16. data/lib/libv8/scons/RELEASE.txt +98 -0
  17. data/lib/libv8/scons/engine/SCons/Action.py +1241 -0
  18. data/lib/libv8/scons/engine/SCons/Builder.py +877 -0
  19. data/lib/libv8/scons/engine/SCons/CacheDir.py +216 -0
  20. data/lib/libv8/scons/engine/SCons/Conftest.py +793 -0
  21. data/lib/libv8/scons/engine/SCons/Debug.py +220 -0
  22. data/lib/libv8/scons/engine/SCons/Defaults.py +480 -0
  23. data/lib/libv8/scons/engine/SCons/Environment.py +2318 -0
  24. data/lib/libv8/scons/engine/SCons/Errors.py +205 -0
  25. data/lib/libv8/scons/engine/SCons/Executor.py +633 -0
  26. data/lib/libv8/scons/engine/SCons/Job.py +435 -0
  27. data/lib/libv8/scons/engine/SCons/Memoize.py +244 -0
  28. data/lib/libv8/scons/engine/SCons/Node/Alias.py +152 -0
  29. data/lib/libv8/scons/engine/SCons/Node/FS.py +3142 -0
  30. data/lib/libv8/scons/engine/SCons/Node/Python.py +128 -0
  31. data/lib/libv8/scons/engine/SCons/Node/__init__.py +1328 -0
  32. data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +50 -0
  33. data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +50 -0
  34. data/lib/libv8/scons/engine/SCons/Options/ListOption.py +50 -0
  35. data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +50 -0
  36. data/lib/libv8/scons/engine/SCons/Options/PathOption.py +76 -0
  37. data/lib/libv8/scons/engine/SCons/Options/__init__.py +67 -0
  38. data/lib/libv8/scons/engine/SCons/PathList.py +231 -0
  39. data/lib/libv8/scons/engine/SCons/Platform/__init__.py +241 -0
  40. data/lib/libv8/scons/engine/SCons/Platform/aix.py +69 -0
  41. data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +55 -0
  42. data/lib/libv8/scons/engine/SCons/Platform/darwin.py +46 -0
  43. data/lib/libv8/scons/engine/SCons/Platform/hpux.py +46 -0
  44. data/lib/libv8/scons/engine/SCons/Platform/irix.py +44 -0
  45. data/lib/libv8/scons/engine/SCons/Platform/os2.py +58 -0
  46. data/lib/libv8/scons/engine/SCons/Platform/posix.py +263 -0
  47. data/lib/libv8/scons/engine/SCons/Platform/sunos.py +50 -0
  48. data/lib/libv8/scons/engine/SCons/Platform/win32.py +385 -0
  49. data/lib/libv8/scons/engine/SCons/SConf.py +1030 -0
  50. data/lib/libv8/scons/engine/SCons/SConsign.py +383 -0
  51. data/lib/libv8/scons/engine/SCons/Scanner/C.py +132 -0
  52. data/lib/libv8/scons/engine/SCons/Scanner/D.py +73 -0
  53. data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +109 -0
  54. data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +316 -0
  55. data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +48 -0
  56. data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +384 -0
  57. data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +101 -0
  58. data/lib/libv8/scons/engine/SCons/Scanner/RC.py +55 -0
  59. data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +413 -0
  60. data/lib/libv8/scons/engine/SCons/Script/Interactive.py +384 -0
  61. data/lib/libv8/scons/engine/SCons/Script/Main.py +1334 -0
  62. data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +939 -0
  63. data/lib/libv8/scons/engine/SCons/Script/SConscript.py +640 -0
  64. data/lib/libv8/scons/engine/SCons/Script/__init__.py +412 -0
  65. data/lib/libv8/scons/engine/SCons/Sig.py +63 -0
  66. data/lib/libv8/scons/engine/SCons/Subst.py +904 -0
  67. data/lib/libv8/scons/engine/SCons/Taskmaster.py +1017 -0
  68. data/lib/libv8/scons/engine/SCons/Tool/386asm.py +61 -0
  69. data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +67 -0
  70. data/lib/libv8/scons/engine/SCons/Tool/CVS.py +73 -0
  71. data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +246 -0
  72. data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +323 -0
  73. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +56 -0
  74. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +61 -0
  75. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +240 -0
  76. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +82 -0
  77. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +391 -0
  78. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +456 -0
  79. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +499 -0
  80. data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +103 -0
  81. data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +137 -0
  82. data/lib/libv8/scons/engine/SCons/Tool/RCS.py +64 -0
  83. data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +64 -0
  84. data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +71 -0
  85. data/lib/libv8/scons/engine/SCons/Tool/__init__.py +681 -0
  86. data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +82 -0
  87. data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +74 -0
  88. data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +80 -0
  89. data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +76 -0
  90. data/lib/libv8/scons/engine/SCons/Tool/applelink.py +71 -0
  91. data/lib/libv8/scons/engine/SCons/Tool/ar.py +63 -0
  92. data/lib/libv8/scons/engine/SCons/Tool/as.py +78 -0
  93. data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +81 -0
  94. data/lib/libv8/scons/engine/SCons/Tool/c++.py +99 -0
  95. data/lib/libv8/scons/engine/SCons/Tool/cc.py +102 -0
  96. data/lib/libv8/scons/engine/SCons/Tool/cvf.py +58 -0
  97. data/lib/libv8/scons/engine/SCons/Tool/default.py +50 -0
  98. data/lib/libv8/scons/engine/SCons/Tool/dmd.py +223 -0
  99. data/lib/libv8/scons/engine/SCons/Tool/dvi.py +64 -0
  100. data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +124 -0
  101. data/lib/libv8/scons/engine/SCons/Tool/dvips.py +94 -0
  102. data/lib/libv8/scons/engine/SCons/Tool/f77.py +62 -0
  103. data/lib/libv8/scons/engine/SCons/Tool/f90.py +62 -0
  104. data/lib/libv8/scons/engine/SCons/Tool/f95.py +63 -0
  105. data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +98 -0
  106. data/lib/libv8/scons/engine/SCons/Tool/fortran.py +62 -0
  107. data/lib/libv8/scons/engine/SCons/Tool/g++.py +90 -0
  108. data/lib/libv8/scons/engine/SCons/Tool/g77.py +73 -0
  109. data/lib/libv8/scons/engine/SCons/Tool/gas.py +53 -0
  110. data/lib/libv8/scons/engine/SCons/Tool/gcc.py +80 -0
  111. data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +64 -0
  112. data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +63 -0
  113. data/lib/libv8/scons/engine/SCons/Tool/gs.py +81 -0
  114. data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +84 -0
  115. data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +53 -0
  116. data/lib/libv8/scons/engine/SCons/Tool/hplink.py +77 -0
  117. data/lib/libv8/scons/engine/SCons/Tool/icc.py +59 -0
  118. data/lib/libv8/scons/engine/SCons/Tool/icl.py +52 -0
  119. data/lib/libv8/scons/engine/SCons/Tool/ifl.py +72 -0
  120. data/lib/libv8/scons/engine/SCons/Tool/ifort.py +88 -0
  121. data/lib/libv8/scons/engine/SCons/Tool/ilink.py +59 -0
  122. data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +60 -0
  123. data/lib/libv8/scons/engine/SCons/Tool/install.py +229 -0
  124. data/lib/libv8/scons/engine/SCons/Tool/intelc.py +482 -0
  125. data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +67 -0
  126. data/lib/libv8/scons/engine/SCons/Tool/jar.py +110 -0
  127. data/lib/libv8/scons/engine/SCons/Tool/javac.py +230 -0
  128. data/lib/libv8/scons/engine/SCons/Tool/javah.py +137 -0
  129. data/lib/libv8/scons/engine/SCons/Tool/latex.py +79 -0
  130. data/lib/libv8/scons/engine/SCons/Tool/lex.py +97 -0
  131. data/lib/libv8/scons/engine/SCons/Tool/link.py +121 -0
  132. data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +112 -0
  133. data/lib/libv8/scons/engine/SCons/Tool/m4.py +63 -0
  134. data/lib/libv8/scons/engine/SCons/Tool/masm.py +77 -0
  135. data/lib/libv8/scons/engine/SCons/Tool/midl.py +88 -0
  136. data/lib/libv8/scons/engine/SCons/Tool/mingw.py +158 -0
  137. data/lib/libv8/scons/engine/SCons/Tool/mslib.py +64 -0
  138. data/lib/libv8/scons/engine/SCons/Tool/mslink.py +266 -0
  139. data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +50 -0
  140. data/lib/libv8/scons/engine/SCons/Tool/msvc.py +268 -0
  141. data/lib/libv8/scons/engine/SCons/Tool/msvs.py +1388 -0
  142. data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +207 -0
  143. data/lib/libv8/scons/engine/SCons/Tool/mwld.py +107 -0
  144. data/lib/libv8/scons/engine/SCons/Tool/nasm.py +72 -0
  145. data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +312 -0
  146. data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +185 -0
  147. data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +527 -0
  148. data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +365 -0
  149. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +43 -0
  150. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +43 -0
  151. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +43 -0
  152. data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +44 -0
  153. data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +44 -0
  154. data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +44 -0
  155. data/lib/libv8/scons/engine/SCons/Tool/pdf.py +78 -0
  156. data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +83 -0
  157. data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +108 -0
  158. data/lib/libv8/scons/engine/SCons/Tool/qt.py +336 -0
  159. data/lib/libv8/scons/engine/SCons/Tool/rmic.py +120 -0
  160. data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +70 -0
  161. data/lib/libv8/scons/engine/SCons/Tool/rpm.py +132 -0
  162. data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +68 -0
  163. data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +58 -0
  164. data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +53 -0
  165. data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +63 -0
  166. data/lib/libv8/scons/engine/SCons/Tool/sunar.py +67 -0
  167. data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +142 -0
  168. data/lib/libv8/scons/engine/SCons/Tool/suncc.py +58 -0
  169. data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +63 -0
  170. data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +64 -0
  171. data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +64 -0
  172. data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +77 -0
  173. data/lib/libv8/scons/engine/SCons/Tool/swig.py +182 -0
  174. data/lib/libv8/scons/engine/SCons/Tool/tar.py +73 -0
  175. data/lib/libv8/scons/engine/SCons/Tool/tex.py +813 -0
  176. data/lib/libv8/scons/engine/SCons/Tool/textfile.py +175 -0
  177. data/lib/libv8/scons/engine/SCons/Tool/tlib.py +53 -0
  178. data/lib/libv8/scons/engine/SCons/Tool/wix.py +99 -0
  179. data/lib/libv8/scons/engine/SCons/Tool/yacc.py +130 -0
  180. data/lib/libv8/scons/engine/SCons/Tool/zip.py +99 -0
  181. data/lib/libv8/scons/engine/SCons/Util.py +1492 -0
  182. data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +89 -0
  183. data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +103 -0
  184. data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +135 -0
  185. data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +106 -0
  186. data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +147 -0
  187. data/lib/libv8/scons/engine/SCons/Variables/__init__.py +312 -0
  188. data/lib/libv8/scons/engine/SCons/Warnings.py +246 -0
  189. data/lib/libv8/scons/engine/SCons/__init__.py +49 -0
  190. data/lib/libv8/scons/engine/SCons/compat/__init__.py +237 -0
  191. data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +150 -0
  192. data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +45 -0
  193. data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +45 -0
  194. data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +76 -0
  195. data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +45 -0
  196. data/lib/libv8/scons/engine/SCons/compat/_scons_sets.py +563 -0
  197. data/lib/libv8/scons/engine/SCons/compat/_scons_subprocess.py +1281 -0
  198. data/lib/libv8/scons/engine/SCons/cpp.py +589 -0
  199. data/lib/libv8/scons/engine/SCons/dblite.py +251 -0
  200. data/lib/libv8/scons/engine/SCons/exitfuncs.py +77 -0
  201. data/lib/libv8/scons/os_spawnv_fix.diff +83 -0
  202. data/lib/libv8/scons/scons-time.1 +1017 -0
  203. data/lib/libv8/scons/scons.1 +15219 -0
  204. data/lib/libv8/scons/sconsign.1 +208 -0
  205. data/lib/libv8/scons/script/scons +196 -0
  206. data/lib/libv8/scons/script/scons-time +1544 -0
  207. data/lib/libv8/scons/script/scons.bat +31 -0
  208. data/lib/libv8/scons/script/sconsign +513 -0
  209. data/lib/libv8/scons/setup.cfg +6 -0
  210. data/lib/libv8/scons/setup.py +425 -0
  211. data/lib/libv8/v8/.gitignore +35 -0
  212. data/lib/libv8/v8/AUTHORS +44 -0
  213. data/lib/libv8/v8/ChangeLog +2839 -0
  214. data/lib/libv8/v8/LICENSE +52 -0
  215. data/lib/libv8/v8/LICENSE.strongtalk +29 -0
  216. data/lib/libv8/v8/LICENSE.v8 +26 -0
  217. data/lib/libv8/v8/LICENSE.valgrind +45 -0
  218. data/lib/libv8/v8/SConstruct +1478 -0
  219. data/lib/libv8/v8/build/README.txt +49 -0
  220. data/lib/libv8/v8/build/all.gyp +18 -0
  221. data/lib/libv8/v8/build/armu.gypi +32 -0
  222. data/lib/libv8/v8/build/common.gypi +144 -0
  223. data/lib/libv8/v8/build/gyp_v8 +145 -0
  224. data/lib/libv8/v8/include/v8-debug.h +395 -0
  225. data/lib/libv8/v8/include/v8-preparser.h +117 -0
  226. data/lib/libv8/v8/include/v8-profiler.h +505 -0
  227. data/lib/libv8/v8/include/v8-testing.h +104 -0
  228. data/lib/libv8/v8/include/v8.h +4124 -0
  229. data/lib/libv8/v8/include/v8stdint.h +53 -0
  230. data/lib/libv8/v8/preparser/SConscript +38 -0
  231. data/lib/libv8/v8/preparser/preparser-process.cc +379 -0
  232. data/lib/libv8/v8/src/SConscript +368 -0
  233. data/lib/libv8/v8/src/accessors.cc +767 -0
  234. data/lib/libv8/v8/src/accessors.h +123 -0
  235. data/lib/libv8/v8/src/allocation-inl.h +49 -0
  236. data/lib/libv8/v8/src/allocation.cc +122 -0
  237. data/lib/libv8/v8/src/allocation.h +143 -0
  238. data/lib/libv8/v8/src/api.cc +5845 -0
  239. data/lib/libv8/v8/src/api.h +574 -0
  240. data/lib/libv8/v8/src/apinatives.js +110 -0
  241. data/lib/libv8/v8/src/apiutils.h +73 -0
  242. data/lib/libv8/v8/src/arguments.h +118 -0
  243. data/lib/libv8/v8/src/arm/assembler-arm-inl.h +353 -0
  244. data/lib/libv8/v8/src/arm/assembler-arm.cc +2661 -0
  245. data/lib/libv8/v8/src/arm/assembler-arm.h +1375 -0
  246. data/lib/libv8/v8/src/arm/builtins-arm.cc +1658 -0
  247. data/lib/libv8/v8/src/arm/code-stubs-arm.cc +6398 -0
  248. data/lib/libv8/v8/src/arm/code-stubs-arm.h +673 -0
  249. data/lib/libv8/v8/src/arm/codegen-arm.cc +52 -0
  250. data/lib/libv8/v8/src/arm/codegen-arm.h +91 -0
  251. data/lib/libv8/v8/src/arm/constants-arm.cc +152 -0
  252. data/lib/libv8/v8/src/arm/constants-arm.h +775 -0
  253. data/lib/libv8/v8/src/arm/cpu-arm.cc +120 -0
  254. data/lib/libv8/v8/src/arm/debug-arm.cc +317 -0
  255. data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +754 -0
  256. data/lib/libv8/v8/src/arm/disasm-arm.cc +1506 -0
  257. data/lib/libv8/v8/src/arm/frames-arm.cc +45 -0
  258. data/lib/libv8/v8/src/arm/frames-arm.h +168 -0
  259. data/lib/libv8/v8/src/arm/full-codegen-arm.cc +4375 -0
  260. data/lib/libv8/v8/src/arm/ic-arm.cc +1562 -0
  261. data/lib/libv8/v8/src/arm/lithium-arm.cc +2206 -0
  262. data/lib/libv8/v8/src/arm/lithium-arm.h +2348 -0
  263. data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +4526 -0
  264. data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +403 -0
  265. data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +305 -0
  266. data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.h +84 -0
  267. data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +3163 -0
  268. data/lib/libv8/v8/src/arm/macro-assembler-arm.h +1126 -0
  269. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +1287 -0
  270. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +253 -0
  271. data/lib/libv8/v8/src/arm/simulator-arm.cc +3424 -0
  272. data/lib/libv8/v8/src/arm/simulator-arm.h +431 -0
  273. data/lib/libv8/v8/src/arm/stub-cache-arm.cc +4243 -0
  274. data/lib/libv8/v8/src/array.js +1366 -0
  275. data/lib/libv8/v8/src/assembler.cc +1207 -0
  276. data/lib/libv8/v8/src/assembler.h +858 -0
  277. data/lib/libv8/v8/src/ast-inl.h +112 -0
  278. data/lib/libv8/v8/src/ast.cc +1146 -0
  279. data/lib/libv8/v8/src/ast.h +2188 -0
  280. data/lib/libv8/v8/src/atomicops.h +167 -0
  281. data/lib/libv8/v8/src/atomicops_internals_arm_gcc.h +145 -0
  282. data/lib/libv8/v8/src/atomicops_internals_mips_gcc.h +169 -0
  283. data/lib/libv8/v8/src/atomicops_internals_x86_gcc.cc +133 -0
  284. data/lib/libv8/v8/src/atomicops_internals_x86_gcc.h +287 -0
  285. data/lib/libv8/v8/src/atomicops_internals_x86_macosx.h +301 -0
  286. data/lib/libv8/v8/src/atomicops_internals_x86_msvc.h +203 -0
  287. data/lib/libv8/v8/src/bignum-dtoa.cc +655 -0
  288. data/lib/libv8/v8/src/bignum-dtoa.h +81 -0
  289. data/lib/libv8/v8/src/bignum.cc +768 -0
  290. data/lib/libv8/v8/src/bignum.h +140 -0
  291. data/lib/libv8/v8/src/bootstrapper.cc +2184 -0
  292. data/lib/libv8/v8/src/bootstrapper.h +188 -0
  293. data/lib/libv8/v8/src/builtins.cc +1707 -0
  294. data/lib/libv8/v8/src/builtins.h +371 -0
  295. data/lib/libv8/v8/src/bytecodes-irregexp.h +105 -0
  296. data/lib/libv8/v8/src/cached-powers.cc +177 -0
  297. data/lib/libv8/v8/src/cached-powers.h +65 -0
  298. data/lib/libv8/v8/src/char-predicates-inl.h +94 -0
  299. data/lib/libv8/v8/src/char-predicates.h +67 -0
  300. data/lib/libv8/v8/src/checks.cc +110 -0
  301. data/lib/libv8/v8/src/checks.h +296 -0
  302. data/lib/libv8/v8/src/circular-queue-inl.h +53 -0
  303. data/lib/libv8/v8/src/circular-queue.cc +122 -0
  304. data/lib/libv8/v8/src/circular-queue.h +103 -0
  305. data/lib/libv8/v8/src/code-stubs.cc +267 -0
  306. data/lib/libv8/v8/src/code-stubs.h +1011 -0
  307. data/lib/libv8/v8/src/code.h +70 -0
  308. data/lib/libv8/v8/src/codegen.cc +231 -0
  309. data/lib/libv8/v8/src/codegen.h +84 -0
  310. data/lib/libv8/v8/src/compilation-cache.cc +540 -0
  311. data/lib/libv8/v8/src/compilation-cache.h +287 -0
  312. data/lib/libv8/v8/src/compiler.cc +786 -0
  313. data/lib/libv8/v8/src/compiler.h +312 -0
  314. data/lib/libv8/v8/src/contexts.cc +347 -0
  315. data/lib/libv8/v8/src/contexts.h +391 -0
  316. data/lib/libv8/v8/src/conversions-inl.h +106 -0
  317. data/lib/libv8/v8/src/conversions.cc +1131 -0
  318. data/lib/libv8/v8/src/conversions.h +135 -0
  319. data/lib/libv8/v8/src/counters.cc +93 -0
  320. data/lib/libv8/v8/src/counters.h +254 -0
  321. data/lib/libv8/v8/src/cpu-profiler-inl.h +101 -0
  322. data/lib/libv8/v8/src/cpu-profiler.cc +609 -0
  323. data/lib/libv8/v8/src/cpu-profiler.h +302 -0
  324. data/lib/libv8/v8/src/cpu.h +69 -0
  325. data/lib/libv8/v8/src/d8-debug.cc +367 -0
  326. data/lib/libv8/v8/src/d8-debug.h +158 -0
  327. data/lib/libv8/v8/src/d8-posix.cc +695 -0
  328. data/lib/libv8/v8/src/d8-readline.cc +130 -0
  329. data/lib/libv8/v8/src/d8-windows.cc +42 -0
  330. data/lib/libv8/v8/src/d8.cc +803 -0
  331. data/lib/libv8/v8/src/d8.gyp +91 -0
  332. data/lib/libv8/v8/src/d8.h +235 -0
  333. data/lib/libv8/v8/src/d8.js +2798 -0
  334. data/lib/libv8/v8/src/data-flow.cc +66 -0
  335. data/lib/libv8/v8/src/data-flow.h +205 -0
  336. data/lib/libv8/v8/src/date.js +1103 -0
  337. data/lib/libv8/v8/src/dateparser-inl.h +127 -0
  338. data/lib/libv8/v8/src/dateparser.cc +178 -0
  339. data/lib/libv8/v8/src/dateparser.h +266 -0
  340. data/lib/libv8/v8/src/debug-agent.cc +447 -0
  341. data/lib/libv8/v8/src/debug-agent.h +129 -0
  342. data/lib/libv8/v8/src/debug-debugger.js +2569 -0
  343. data/lib/libv8/v8/src/debug.cc +3165 -0
  344. data/lib/libv8/v8/src/debug.h +1057 -0
  345. data/lib/libv8/v8/src/deoptimizer.cc +1256 -0
  346. data/lib/libv8/v8/src/deoptimizer.h +602 -0
  347. data/lib/libv8/v8/src/disasm.h +80 -0
  348. data/lib/libv8/v8/src/disassembler.cc +343 -0
  349. data/lib/libv8/v8/src/disassembler.h +58 -0
  350. data/lib/libv8/v8/src/diy-fp.cc +58 -0
  351. data/lib/libv8/v8/src/diy-fp.h +117 -0
  352. data/lib/libv8/v8/src/double.h +238 -0
  353. data/lib/libv8/v8/src/dtoa.cc +103 -0
  354. data/lib/libv8/v8/src/dtoa.h +85 -0
  355. data/lib/libv8/v8/src/execution.cc +849 -0
  356. data/lib/libv8/v8/src/execution.h +297 -0
  357. data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +250 -0
  358. data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +89 -0
  359. data/lib/libv8/v8/src/extensions/experimental/collator.cc +218 -0
  360. data/lib/libv8/v8/src/extensions/experimental/collator.h +69 -0
  361. data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +94 -0
  362. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +78 -0
  363. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +54 -0
  364. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +112 -0
  365. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +60 -0
  366. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +43 -0
  367. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +49 -0
  368. data/lib/libv8/v8/src/extensions/experimental/i18n.js +180 -0
  369. data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +251 -0
  370. data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +95 -0
  371. data/lib/libv8/v8/src/extensions/externalize-string-extension.cc +141 -0
  372. data/lib/libv8/v8/src/extensions/externalize-string-extension.h +50 -0
  373. data/lib/libv8/v8/src/extensions/gc-extension.cc +58 -0
  374. data/lib/libv8/v8/src/extensions/gc-extension.h +49 -0
  375. data/lib/libv8/v8/src/factory.cc +1222 -0
  376. data/lib/libv8/v8/src/factory.h +442 -0
  377. data/lib/libv8/v8/src/fast-dtoa.cc +736 -0
  378. data/lib/libv8/v8/src/fast-dtoa.h +83 -0
  379. data/lib/libv8/v8/src/fixed-dtoa.cc +405 -0
  380. data/lib/libv8/v8/src/fixed-dtoa.h +55 -0
  381. data/lib/libv8/v8/src/flag-definitions.h +560 -0
  382. data/lib/libv8/v8/src/flags.cc +551 -0
  383. data/lib/libv8/v8/src/flags.h +79 -0
  384. data/lib/libv8/v8/src/frames-inl.h +247 -0
  385. data/lib/libv8/v8/src/frames.cc +1243 -0
  386. data/lib/libv8/v8/src/frames.h +870 -0
  387. data/lib/libv8/v8/src/full-codegen.cc +1374 -0
  388. data/lib/libv8/v8/src/full-codegen.h +771 -0
  389. data/lib/libv8/v8/src/func-name-inferrer.cc +92 -0
  390. data/lib/libv8/v8/src/func-name-inferrer.h +111 -0
  391. data/lib/libv8/v8/src/gdb-jit.cc +1555 -0
  392. data/lib/libv8/v8/src/gdb-jit.h +143 -0
  393. data/lib/libv8/v8/src/global-handles.cc +665 -0
  394. data/lib/libv8/v8/src/global-handles.h +284 -0
  395. data/lib/libv8/v8/src/globals.h +325 -0
  396. data/lib/libv8/v8/src/handles-inl.h +177 -0
  397. data/lib/libv8/v8/src/handles.cc +987 -0
  398. data/lib/libv8/v8/src/handles.h +382 -0
  399. data/lib/libv8/v8/src/hashmap.cc +230 -0
  400. data/lib/libv8/v8/src/hashmap.h +123 -0
  401. data/lib/libv8/v8/src/heap-inl.h +704 -0
  402. data/lib/libv8/v8/src/heap-profiler.cc +1173 -0
  403. data/lib/libv8/v8/src/heap-profiler.h +397 -0
  404. data/lib/libv8/v8/src/heap.cc +5930 -0
  405. data/lib/libv8/v8/src/heap.h +2268 -0
  406. data/lib/libv8/v8/src/hydrogen-instructions.cc +1769 -0
  407. data/lib/libv8/v8/src/hydrogen-instructions.h +3971 -0
  408. data/lib/libv8/v8/src/hydrogen.cc +6239 -0
  409. data/lib/libv8/v8/src/hydrogen.h +1202 -0
  410. data/lib/libv8/v8/src/ia32/assembler-ia32-inl.h +446 -0
  411. data/lib/libv8/v8/src/ia32/assembler-ia32.cc +2487 -0
  412. data/lib/libv8/v8/src/ia32/assembler-ia32.h +1144 -0
  413. data/lib/libv8/v8/src/ia32/builtins-ia32.cc +1621 -0
  414. data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +6198 -0
  415. data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +517 -0
  416. data/lib/libv8/v8/src/ia32/codegen-ia32.cc +265 -0
  417. data/lib/libv8/v8/src/ia32/codegen-ia32.h +79 -0
  418. data/lib/libv8/v8/src/ia32/cpu-ia32.cc +88 -0
  419. data/lib/libv8/v8/src/ia32/debug-ia32.cc +312 -0
  420. data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +774 -0
  421. data/lib/libv8/v8/src/ia32/disasm-ia32.cc +1628 -0
  422. data/lib/libv8/v8/src/ia32/frames-ia32.cc +45 -0
  423. data/lib/libv8/v8/src/ia32/frames-ia32.h +142 -0
  424. data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +4338 -0
  425. data/lib/libv8/v8/src/ia32/ic-ia32.cc +1597 -0
  426. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +4461 -0
  427. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +375 -0
  428. data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +475 -0
  429. data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.h +110 -0
  430. data/lib/libv8/v8/src/ia32/lithium-ia32.cc +2261 -0
  431. data/lib/libv8/v8/src/ia32/lithium-ia32.h +2396 -0
  432. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +2136 -0
  433. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +775 -0
  434. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +1263 -0
  435. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +216 -0
  436. data/lib/libv8/v8/src/ia32/simulator-ia32.cc +30 -0
  437. data/lib/libv8/v8/src/ia32/simulator-ia32.h +74 -0
  438. data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +3847 -0
  439. data/lib/libv8/v8/src/ic-inl.h +130 -0
  440. data/lib/libv8/v8/src/ic.cc +2577 -0
  441. data/lib/libv8/v8/src/ic.h +736 -0
  442. data/lib/libv8/v8/src/inspector.cc +63 -0
  443. data/lib/libv8/v8/src/inspector.h +62 -0
  444. data/lib/libv8/v8/src/interpreter-irregexp.cc +659 -0
  445. data/lib/libv8/v8/src/interpreter-irregexp.h +49 -0
  446. data/lib/libv8/v8/src/isolate-inl.h +50 -0
  447. data/lib/libv8/v8/src/isolate.cc +1869 -0
  448. data/lib/libv8/v8/src/isolate.h +1382 -0
  449. data/lib/libv8/v8/src/json-parser.cc +504 -0
  450. data/lib/libv8/v8/src/json-parser.h +161 -0
  451. data/lib/libv8/v8/src/json.js +342 -0
  452. data/lib/libv8/v8/src/jsregexp.cc +5385 -0
  453. data/lib/libv8/v8/src/jsregexp.h +1492 -0
  454. data/lib/libv8/v8/src/list-inl.h +212 -0
  455. data/lib/libv8/v8/src/list.h +174 -0
  456. data/lib/libv8/v8/src/lithium-allocator-inl.h +142 -0
  457. data/lib/libv8/v8/src/lithium-allocator.cc +2123 -0
  458. data/lib/libv8/v8/src/lithium-allocator.h +630 -0
  459. data/lib/libv8/v8/src/lithium.cc +190 -0
  460. data/lib/libv8/v8/src/lithium.h +597 -0
  461. data/lib/libv8/v8/src/liveedit-debugger.js +1082 -0
  462. data/lib/libv8/v8/src/liveedit.cc +1691 -0
  463. data/lib/libv8/v8/src/liveedit.h +180 -0
  464. data/lib/libv8/v8/src/liveobjectlist-inl.h +126 -0
  465. data/lib/libv8/v8/src/liveobjectlist.cc +2589 -0
  466. data/lib/libv8/v8/src/liveobjectlist.h +322 -0
  467. data/lib/libv8/v8/src/log-inl.h +59 -0
  468. data/lib/libv8/v8/src/log-utils.cc +428 -0
  469. data/lib/libv8/v8/src/log-utils.h +231 -0
  470. data/lib/libv8/v8/src/log.cc +1993 -0
  471. data/lib/libv8/v8/src/log.h +476 -0
  472. data/lib/libv8/v8/src/macro-assembler.h +120 -0
  473. data/lib/libv8/v8/src/macros.py +178 -0
  474. data/lib/libv8/v8/src/mark-compact.cc +3143 -0
  475. data/lib/libv8/v8/src/mark-compact.h +506 -0
  476. data/lib/libv8/v8/src/math.js +264 -0
  477. data/lib/libv8/v8/src/messages.cc +179 -0
  478. data/lib/libv8/v8/src/messages.h +113 -0
  479. data/lib/libv8/v8/src/messages.js +1096 -0
  480. data/lib/libv8/v8/src/mips/assembler-mips-inl.h +312 -0
  481. data/lib/libv8/v8/src/mips/assembler-mips.cc +1960 -0
  482. data/lib/libv8/v8/src/mips/assembler-mips.h +1138 -0
  483. data/lib/libv8/v8/src/mips/builtins-mips.cc +1628 -0
  484. data/lib/libv8/v8/src/mips/code-stubs-mips.cc +6656 -0
  485. data/lib/libv8/v8/src/mips/code-stubs-mips.h +682 -0
  486. data/lib/libv8/v8/src/mips/codegen-mips.cc +52 -0
  487. data/lib/libv8/v8/src/mips/codegen-mips.h +98 -0
  488. data/lib/libv8/v8/src/mips/constants-mips.cc +352 -0
  489. data/lib/libv8/v8/src/mips/constants-mips.h +739 -0
  490. data/lib/libv8/v8/src/mips/cpu-mips.cc +96 -0
  491. data/lib/libv8/v8/src/mips/debug-mips.cc +308 -0
  492. data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +91 -0
  493. data/lib/libv8/v8/src/mips/disasm-mips.cc +1050 -0
  494. data/lib/libv8/v8/src/mips/frames-mips.cc +47 -0
  495. data/lib/libv8/v8/src/mips/frames-mips.h +219 -0
  496. data/lib/libv8/v8/src/mips/full-codegen-mips.cc +4388 -0
  497. data/lib/libv8/v8/src/mips/ic-mips.cc +1580 -0
  498. data/lib/libv8/v8/src/mips/lithium-codegen-mips.h +65 -0
  499. data/lib/libv8/v8/src/mips/lithium-mips.h +307 -0
  500. data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +4056 -0
  501. data/lib/libv8/v8/src/mips/macro-assembler-mips.h +1214 -0
  502. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +1251 -0
  503. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +252 -0
  504. data/lib/libv8/v8/src/mips/simulator-mips.cc +2621 -0
  505. data/lib/libv8/v8/src/mips/simulator-mips.h +401 -0
  506. data/lib/libv8/v8/src/mips/stub-cache-mips.cc +4285 -0
  507. data/lib/libv8/v8/src/mirror-debugger.js +2382 -0
  508. data/lib/libv8/v8/src/mksnapshot.cc +328 -0
  509. data/lib/libv8/v8/src/natives.h +64 -0
  510. data/lib/libv8/v8/src/objects-debug.cc +738 -0
  511. data/lib/libv8/v8/src/objects-inl.h +4323 -0
  512. data/lib/libv8/v8/src/objects-printer.cc +829 -0
  513. data/lib/libv8/v8/src/objects-visiting.cc +148 -0
  514. data/lib/libv8/v8/src/objects-visiting.h +424 -0
  515. data/lib/libv8/v8/src/objects.cc +10585 -0
  516. data/lib/libv8/v8/src/objects.h +6838 -0
  517. data/lib/libv8/v8/src/parser.cc +4997 -0
  518. data/lib/libv8/v8/src/parser.h +765 -0
  519. data/lib/libv8/v8/src/platform-cygwin.cc +779 -0
  520. data/lib/libv8/v8/src/platform-freebsd.cc +826 -0
  521. data/lib/libv8/v8/src/platform-linux.cc +1149 -0
  522. data/lib/libv8/v8/src/platform-macos.cc +830 -0
  523. data/lib/libv8/v8/src/platform-nullos.cc +479 -0
  524. data/lib/libv8/v8/src/platform-openbsd.cc +640 -0
  525. data/lib/libv8/v8/src/platform-posix.cc +424 -0
  526. data/lib/libv8/v8/src/platform-solaris.cc +762 -0
  527. data/lib/libv8/v8/src/platform-tls-mac.h +62 -0
  528. data/lib/libv8/v8/src/platform-tls-win32.h +62 -0
  529. data/lib/libv8/v8/src/platform-tls.h +50 -0
  530. data/lib/libv8/v8/src/platform-win32.cc +2021 -0
  531. data/lib/libv8/v8/src/platform.h +667 -0
  532. data/lib/libv8/v8/src/preparse-data-format.h +62 -0
  533. data/lib/libv8/v8/src/preparse-data.cc +183 -0
  534. data/lib/libv8/v8/src/preparse-data.h +225 -0
  535. data/lib/libv8/v8/src/preparser-api.cc +220 -0
  536. data/lib/libv8/v8/src/preparser.cc +1450 -0
  537. data/lib/libv8/v8/src/preparser.h +493 -0
  538. data/lib/libv8/v8/src/prettyprinter.cc +1493 -0
  539. data/lib/libv8/v8/src/prettyprinter.h +223 -0
  540. data/lib/libv8/v8/src/profile-generator-inl.h +128 -0
  541. data/lib/libv8/v8/src/profile-generator.cc +3098 -0
  542. data/lib/libv8/v8/src/profile-generator.h +1126 -0
  543. data/lib/libv8/v8/src/property.cc +105 -0
  544. data/lib/libv8/v8/src/property.h +365 -0
  545. data/lib/libv8/v8/src/proxy.js +83 -0
  546. data/lib/libv8/v8/src/regexp-macro-assembler-irregexp-inl.h +78 -0
  547. data/lib/libv8/v8/src/regexp-macro-assembler-irregexp.cc +471 -0
  548. data/lib/libv8/v8/src/regexp-macro-assembler-irregexp.h +142 -0
  549. data/lib/libv8/v8/src/regexp-macro-assembler-tracer.cc +373 -0
  550. data/lib/libv8/v8/src/regexp-macro-assembler-tracer.h +104 -0
  551. data/lib/libv8/v8/src/regexp-macro-assembler.cc +267 -0
  552. data/lib/libv8/v8/src/regexp-macro-assembler.h +243 -0
  553. data/lib/libv8/v8/src/regexp-stack.cc +111 -0
  554. data/lib/libv8/v8/src/regexp-stack.h +147 -0
  555. data/lib/libv8/v8/src/regexp.js +483 -0
  556. data/lib/libv8/v8/src/rewriter.cc +360 -0
  557. data/lib/libv8/v8/src/rewriter.h +50 -0
  558. data/lib/libv8/v8/src/runtime-profiler.cc +489 -0
  559. data/lib/libv8/v8/src/runtime-profiler.h +201 -0
  560. data/lib/libv8/v8/src/runtime.cc +12227 -0
  561. data/lib/libv8/v8/src/runtime.h +652 -0
  562. data/lib/libv8/v8/src/runtime.js +649 -0
  563. data/lib/libv8/v8/src/safepoint-table.cc +256 -0
  564. data/lib/libv8/v8/src/safepoint-table.h +270 -0
  565. data/lib/libv8/v8/src/scanner-base.cc +952 -0
  566. data/lib/libv8/v8/src/scanner-base.h +670 -0
  567. data/lib/libv8/v8/src/scanner.cc +345 -0
  568. data/lib/libv8/v8/src/scanner.h +146 -0
  569. data/lib/libv8/v8/src/scopeinfo.cc +646 -0
  570. data/lib/libv8/v8/src/scopeinfo.h +254 -0
  571. data/lib/libv8/v8/src/scopes.cc +1150 -0
  572. data/lib/libv8/v8/src/scopes.h +507 -0
  573. data/lib/libv8/v8/src/serialize.cc +1574 -0
  574. data/lib/libv8/v8/src/serialize.h +589 -0
  575. data/lib/libv8/v8/src/shell.h +55 -0
  576. data/lib/libv8/v8/src/simulator.h +43 -0
  577. data/lib/libv8/v8/src/small-pointer-list.h +163 -0
  578. data/lib/libv8/v8/src/smart-pointer.h +109 -0
  579. data/lib/libv8/v8/src/snapshot-common.cc +83 -0
  580. data/lib/libv8/v8/src/snapshot-empty.cc +54 -0
  581. data/lib/libv8/v8/src/snapshot.h +91 -0
  582. data/lib/libv8/v8/src/spaces-inl.h +529 -0
  583. data/lib/libv8/v8/src/spaces.cc +3145 -0
  584. data/lib/libv8/v8/src/spaces.h +2369 -0
  585. data/lib/libv8/v8/src/splay-tree-inl.h +310 -0
  586. data/lib/libv8/v8/src/splay-tree.h +205 -0
  587. data/lib/libv8/v8/src/string-search.cc +41 -0
  588. data/lib/libv8/v8/src/string-search.h +568 -0
  589. data/lib/libv8/v8/src/string-stream.cc +592 -0
  590. data/lib/libv8/v8/src/string-stream.h +191 -0
  591. data/lib/libv8/v8/src/string.js +994 -0
  592. data/lib/libv8/v8/src/strtod.cc +440 -0
  593. data/lib/libv8/v8/src/strtod.h +40 -0
  594. data/lib/libv8/v8/src/stub-cache.cc +1965 -0
  595. data/lib/libv8/v8/src/stub-cache.h +924 -0
  596. data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +3925 -0
  597. data/lib/libv8/v8/src/token.cc +63 -0
  598. data/lib/libv8/v8/src/token.h +288 -0
  599. data/lib/libv8/v8/src/type-info.cc +507 -0
  600. data/lib/libv8/v8/src/type-info.h +272 -0
  601. data/lib/libv8/v8/src/unbound-queue-inl.h +95 -0
  602. data/lib/libv8/v8/src/unbound-queue.h +69 -0
  603. data/lib/libv8/v8/src/unicode-inl.h +238 -0
  604. data/lib/libv8/v8/src/unicode.cc +1624 -0
  605. data/lib/libv8/v8/src/unicode.h +280 -0
  606. data/lib/libv8/v8/src/uri.js +408 -0
  607. data/lib/libv8/v8/src/utils-inl.h +48 -0
  608. data/lib/libv8/v8/src/utils.cc +371 -0
  609. data/lib/libv8/v8/src/utils.h +800 -0
  610. data/lib/libv8/v8/src/v8-counters.cc +62 -0
  611. data/lib/libv8/v8/src/v8-counters.h +314 -0
  612. data/lib/libv8/v8/src/v8.cc +213 -0
  613. data/lib/libv8/v8/src/v8.h +131 -0
  614. data/lib/libv8/v8/src/v8checks.h +64 -0
  615. data/lib/libv8/v8/src/v8dll-main.cc +44 -0
  616. data/lib/libv8/v8/src/v8globals.h +512 -0
  617. data/lib/libv8/v8/src/v8memory.h +82 -0
  618. data/lib/libv8/v8/src/v8natives.js +1310 -0
  619. data/lib/libv8/v8/src/v8preparserdll-main.cc +39 -0
  620. data/lib/libv8/v8/src/v8threads.cc +464 -0
  621. data/lib/libv8/v8/src/v8threads.h +165 -0
  622. data/lib/libv8/v8/src/v8utils.h +319 -0
  623. data/lib/libv8/v8/src/variables.cc +114 -0
  624. data/lib/libv8/v8/src/variables.h +167 -0
  625. data/lib/libv8/v8/src/version.cc +116 -0
  626. data/lib/libv8/v8/src/version.h +68 -0
  627. data/lib/libv8/v8/src/vm-state-inl.h +138 -0
  628. data/lib/libv8/v8/src/vm-state.h +71 -0
  629. data/lib/libv8/v8/src/win32-headers.h +96 -0
  630. data/lib/libv8/v8/src/x64/assembler-x64-inl.h +462 -0
  631. data/lib/libv8/v8/src/x64/assembler-x64.cc +3027 -0
  632. data/lib/libv8/v8/src/x64/assembler-x64.h +1633 -0
  633. data/lib/libv8/v8/src/x64/builtins-x64.cc +1520 -0
  634. data/lib/libv8/v8/src/x64/code-stubs-x64.cc +5132 -0
  635. data/lib/libv8/v8/src/x64/code-stubs-x64.h +514 -0
  636. data/lib/libv8/v8/src/x64/codegen-x64.cc +146 -0
  637. data/lib/libv8/v8/src/x64/codegen-x64.h +76 -0
  638. data/lib/libv8/v8/src/x64/cpu-x64.cc +88 -0
  639. data/lib/libv8/v8/src/x64/debug-x64.cc +319 -0
  640. data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +815 -0
  641. data/lib/libv8/v8/src/x64/disasm-x64.cc +1832 -0
  642. data/lib/libv8/v8/src/x64/frames-x64.cc +45 -0
  643. data/lib/libv8/v8/src/x64/frames-x64.h +130 -0
  644. data/lib/libv8/v8/src/x64/full-codegen-x64.cc +4318 -0
  645. data/lib/libv8/v8/src/x64/ic-x64.cc +1608 -0
  646. data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +4267 -0
  647. data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +367 -0
  648. data/lib/libv8/v8/src/x64/lithium-gap-resolver-x64.cc +320 -0
  649. data/lib/libv8/v8/src/x64/lithium-gap-resolver-x64.h +74 -0
  650. data/lib/libv8/v8/src/x64/lithium-x64.cc +2202 -0
  651. data/lib/libv8/v8/src/x64/lithium-x64.h +2333 -0
  652. data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +3745 -0
  653. data/lib/libv8/v8/src/x64/macro-assembler-x64.h +1290 -0
  654. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +1398 -0
  655. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +282 -0
  656. data/lib/libv8/v8/src/x64/simulator-x64.cc +27 -0
  657. data/lib/libv8/v8/src/x64/simulator-x64.h +72 -0
  658. data/lib/libv8/v8/src/x64/stub-cache-x64.cc +3610 -0
  659. data/lib/libv8/v8/src/zone-inl.h +140 -0
  660. data/lib/libv8/v8/src/zone.cc +196 -0
  661. data/lib/libv8/v8/src/zone.h +240 -0
  662. data/lib/libv8/v8/tools/codemap.js +265 -0
  663. data/lib/libv8/v8/tools/consarray.js +93 -0
  664. data/lib/libv8/v8/tools/csvparser.js +78 -0
  665. data/lib/libv8/v8/tools/disasm.py +92 -0
  666. data/lib/libv8/v8/tools/freebsd-tick-processor +10 -0
  667. data/lib/libv8/v8/tools/gc-nvp-trace-processor.py +342 -0
  668. data/lib/libv8/v8/tools/gcmole/README +62 -0
  669. data/lib/libv8/v8/tools/gcmole/gccause.lua +60 -0
  670. data/lib/libv8/v8/tools/gcmole/gcmole.cc +1261 -0
  671. data/lib/libv8/v8/tools/gcmole/gcmole.lua +378 -0
  672. data/lib/libv8/v8/tools/generate-ten-powers.scm +286 -0
  673. data/lib/libv8/v8/tools/grokdump.py +841 -0
  674. data/lib/libv8/v8/tools/gyp/v8.gyp +995 -0
  675. data/lib/libv8/v8/tools/js2c.py +364 -0
  676. data/lib/libv8/v8/tools/jsmin.py +280 -0
  677. data/lib/libv8/v8/tools/linux-tick-processor +35 -0
  678. data/lib/libv8/v8/tools/ll_prof.py +942 -0
  679. data/lib/libv8/v8/tools/logreader.js +185 -0
  680. data/lib/libv8/v8/tools/mac-nm +18 -0
  681. data/lib/libv8/v8/tools/mac-tick-processor +6 -0
  682. data/lib/libv8/v8/tools/oom_dump/README +31 -0
  683. data/lib/libv8/v8/tools/oom_dump/SConstruct +42 -0
  684. data/lib/libv8/v8/tools/oom_dump/oom_dump.cc +288 -0
  685. data/lib/libv8/v8/tools/presubmit.py +305 -0
  686. data/lib/libv8/v8/tools/process-heap-prof.py +120 -0
  687. data/lib/libv8/v8/tools/profile.js +751 -0
  688. data/lib/libv8/v8/tools/profile_view.js +219 -0
  689. data/lib/libv8/v8/tools/run-valgrind.py +77 -0
  690. data/lib/libv8/v8/tools/splaytree.js +316 -0
  691. data/lib/libv8/v8/tools/stats-viewer.py +468 -0
  692. data/lib/libv8/v8/tools/test.py +1510 -0
  693. data/lib/libv8/v8/tools/tickprocessor-driver.js +59 -0
  694. data/lib/libv8/v8/tools/tickprocessor.js +877 -0
  695. data/lib/libv8/v8/tools/utils.py +96 -0
  696. data/lib/libv8/v8/tools/visual_studio/README.txt +12 -0
  697. data/lib/libv8/v8/tools/windows-tick-processor.bat +30 -0
  698. data/lib/libv8/version.rb +4 -0
  699. data/libv8.gemspec +31 -0
  700. metadata +800 -0
@@ -0,0 +1,904 @@
1
+ """SCons.Subst
2
+
3
+ SCons string substitution.
4
+
5
+ """
6
+
7
+ #
8
+ # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The SCons Foundation
9
+ #
10
+ # Permission is hereby granted, free of charge, to any person obtaining
11
+ # a copy of this software and associated documentation files (the
12
+ # "Software"), to deal in the Software without restriction, including
13
+ # without limitation the rights to use, copy, modify, merge, publish,
14
+ # distribute, sublicense, and/or sell copies of the Software, and to
15
+ # permit persons to whom the Software is furnished to do so, subject to
16
+ # the following conditions:
17
+ #
18
+ # The above copyright notice and this permission notice shall be included
19
+ # in all copies or substantial portions of the Software.
20
+ #
21
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
22
+ # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
23
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+
29
+ __revision__ = "src/engine/SCons/Subst.py 5134 2010/08/16 23:02:40 bdeegan"
30
+
31
+ import collections
32
+ import re
33
+
34
+ import SCons.Errors
35
+
36
+ from SCons.Util import is_String, is_Sequence
37
+
38
+ # Indexed by the SUBST_* constants below.
39
+ _strconv = [SCons.Util.to_String_for_subst,
40
+ SCons.Util.to_String_for_subst,
41
+ SCons.Util.to_String_for_signature]
42
+
43
+
44
+
45
+ AllowableExceptions = (IndexError, NameError)
46
+
47
+ def SetAllowableExceptions(*excepts):
48
+ global AllowableExceptions
49
+ AllowableExceptions = [_f for _f in excepts if _f]
50
+
51
+ def raise_exception(exception, target, s):
52
+ name = exception.__class__.__name__
53
+ msg = "%s `%s' trying to evaluate `%s'" % (name, exception, s)
54
+ if target:
55
+ raise SCons.Errors.BuildError(target[0], msg)
56
+ else:
57
+ raise SCons.Errors.UserError(msg)
58
+
59
+
60
+
61
+ class Literal(object):
62
+ """A wrapper for a string. If you use this object wrapped
63
+ around a string, then it will be interpreted as literal.
64
+ When passed to the command interpreter, all special
65
+ characters will be escaped."""
66
+ def __init__(self, lstr):
67
+ self.lstr = lstr
68
+
69
+ def __str__(self):
70
+ return self.lstr
71
+
72
+ def escape(self, escape_func):
73
+ return escape_func(self.lstr)
74
+
75
+ def for_signature(self):
76
+ return self.lstr
77
+
78
+ def is_literal(self):
79
+ return 1
80
+
81
+ class SpecialAttrWrapper(object):
82
+ """This is a wrapper for what we call a 'Node special attribute.'
83
+ This is any of the attributes of a Node that we can reference from
84
+ Environment variable substitution, such as $TARGET.abspath or
85
+ $SOURCES[1].filebase. We implement the same methods as Literal
86
+ so we can handle special characters, plus a for_signature method,
87
+ such that we can return some canonical string during signature
88
+ calculation to avoid unnecessary rebuilds."""
89
+
90
+ def __init__(self, lstr, for_signature=None):
91
+ """The for_signature parameter, if supplied, will be the
92
+ canonical string we return from for_signature(). Else
93
+ we will simply return lstr."""
94
+ self.lstr = lstr
95
+ if for_signature:
96
+ self.forsig = for_signature
97
+ else:
98
+ self.forsig = lstr
99
+
100
+ def __str__(self):
101
+ return self.lstr
102
+
103
+ def escape(self, escape_func):
104
+ return escape_func(self.lstr)
105
+
106
+ def for_signature(self):
107
+ return self.forsig
108
+
109
+ def is_literal(self):
110
+ return 1
111
+
112
+ def quote_spaces(arg):
113
+ """Generic function for putting double quotes around any string that
114
+ has white space in it."""
115
+ if ' ' in arg or '\t' in arg:
116
+ return '"%s"' % arg
117
+ else:
118
+ return str(arg)
119
+
120
+ class CmdStringHolder(collections.UserString):
121
+ """This is a special class used to hold strings generated by
122
+ scons_subst() and scons_subst_list(). It defines a special method
123
+ escape(). When passed a function with an escape algorithm for a
124
+ particular platform, it will return the contained string with the
125
+ proper escape sequences inserted.
126
+ """
127
+ def __init__(self, cmd, literal=None):
128
+ collections.UserString.__init__(self, cmd)
129
+ self.literal = literal
130
+
131
+ def is_literal(self):
132
+ return self.literal
133
+
134
+ def escape(self, escape_func, quote_func=quote_spaces):
135
+ """Escape the string with the supplied function. The
136
+ function is expected to take an arbitrary string, then
137
+ return it with all special characters escaped and ready
138
+ for passing to the command interpreter.
139
+
140
+ After calling this function, the next call to str() will
141
+ return the escaped string.
142
+ """
143
+
144
+ if self.is_literal():
145
+ return escape_func(self.data)
146
+ elif ' ' in self.data or '\t' in self.data:
147
+ return quote_func(self.data)
148
+ else:
149
+ return self.data
150
+
151
+ def escape_list(mylist, escape_func):
152
+ """Escape a list of arguments by running the specified escape_func
153
+ on every object in the list that has an escape() method."""
154
+ def escape(obj, escape_func=escape_func):
155
+ try:
156
+ e = obj.escape
157
+ except AttributeError:
158
+ return obj
159
+ else:
160
+ return e(escape_func)
161
+ return list(map(escape, mylist))
162
+
163
+ class NLWrapper(object):
164
+ """A wrapper class that delays turning a list of sources or targets
165
+ into a NodeList until it's needed. The specified function supplied
166
+ when the object is initialized is responsible for turning raw nodes
167
+ into proxies that implement the special attributes like .abspath,
168
+ .source, etc. This way, we avoid creating those proxies just
169
+ "in case" someone is going to use $TARGET or the like, and only
170
+ go through the trouble if we really have to.
171
+
172
+ In practice, this might be a wash performance-wise, but it's a little
173
+ cleaner conceptually...
174
+ """
175
+
176
+ def __init__(self, list, func):
177
+ self.list = list
178
+ self.func = func
179
+ def _return_nodelist(self):
180
+ return self.nodelist
181
+ def _gen_nodelist(self):
182
+ mylist = self.list
183
+ if mylist is None:
184
+ mylist = []
185
+ elif not is_Sequence(mylist):
186
+ mylist = [mylist]
187
+ # The map(self.func) call is what actually turns
188
+ # a list into appropriate proxies.
189
+ self.nodelist = SCons.Util.NodeList(list(map(self.func, mylist)))
190
+ self._create_nodelist = self._return_nodelist
191
+ return self.nodelist
192
+ _create_nodelist = _gen_nodelist
193
+
194
+
195
+ class Targets_or_Sources(collections.UserList):
196
+ """A class that implements $TARGETS or $SOURCES expansions by in turn
197
+ wrapping a NLWrapper. This class handles the different methods used
198
+ to access the list, calling the NLWrapper to create proxies on demand.
199
+
200
+ Note that we subclass collections.UserList purely so that the
201
+ is_Sequence() function will identify an object of this class as
202
+ a list during variable expansion. We're not really using any
203
+ collections.UserList methods in practice.
204
+ """
205
+ def __init__(self, nl):
206
+ self.nl = nl
207
+ def __getattr__(self, attr):
208
+ nl = self.nl._create_nodelist()
209
+ return getattr(nl, attr)
210
+ def __getitem__(self, i):
211
+ nl = self.nl._create_nodelist()
212
+ return nl[i]
213
+ def __getslice__(self, i, j):
214
+ nl = self.nl._create_nodelist()
215
+ i = max(i, 0); j = max(j, 0)
216
+ return nl[i:j]
217
+ def __str__(self):
218
+ nl = self.nl._create_nodelist()
219
+ return str(nl)
220
+ def __repr__(self):
221
+ nl = self.nl._create_nodelist()
222
+ return repr(nl)
223
+
224
+ class Target_or_Source(object):
225
+ """A class that implements $TARGET or $SOURCE expansions by in turn
226
+ wrapping a NLWrapper. This class handles the different methods used
227
+ to access an individual proxy Node, calling the NLWrapper to create
228
+ a proxy on demand.
229
+ """
230
+ def __init__(self, nl):
231
+ self.nl = nl
232
+ def __getattr__(self, attr):
233
+ nl = self.nl._create_nodelist()
234
+ try:
235
+ nl0 = nl[0]
236
+ except IndexError:
237
+ # If there is nothing in the list, then we have no attributes to
238
+ # pass through, so raise AttributeError for everything.
239
+ raise AttributeError("NodeList has no attribute: %s" % attr)
240
+ return getattr(nl0, attr)
241
+ def __str__(self):
242
+ nl = self.nl._create_nodelist()
243
+ if nl:
244
+ return str(nl[0])
245
+ return ''
246
+ def __repr__(self):
247
+ nl = self.nl._create_nodelist()
248
+ if nl:
249
+ return repr(nl[0])
250
+ return ''
251
+
252
+ class NullNodeList(SCons.Util.NullSeq):
253
+ def __call__(self, *args, **kwargs): return ''
254
+ def __str__(self): return ''
255
+
256
+ NullNodesList = NullNodeList()
257
+
258
+ def subst_dict(target, source):
259
+ """Create a dictionary for substitution of special
260
+ construction variables.
261
+
262
+ This translates the following special arguments:
263
+
264
+ target - the target (object or array of objects),
265
+ used to generate the TARGET and TARGETS
266
+ construction variables
267
+
268
+ source - the source (object or array of objects),
269
+ used to generate the SOURCES and SOURCE
270
+ construction variables
271
+ """
272
+ dict = {}
273
+
274
+ if target:
275
+ def get_tgt_subst_proxy(thing):
276
+ try:
277
+ subst_proxy = thing.get_subst_proxy()
278
+ except AttributeError:
279
+ subst_proxy = thing # probably a string, just return it
280
+ return subst_proxy
281
+ tnl = NLWrapper(target, get_tgt_subst_proxy)
282
+ dict['TARGETS'] = Targets_or_Sources(tnl)
283
+ dict['TARGET'] = Target_or_Source(tnl)
284
+
285
+ # This is a total cheat, but hopefully this dictionary goes
286
+ # away soon anyway. We just let these expand to $TARGETS
287
+ # because that's "good enough" for the use of ToolSurrogates
288
+ # (see test/ToolSurrogate.py) to generate documentation.
289
+ dict['CHANGED_TARGETS'] = '$TARGETS'
290
+ dict['UNCHANGED_TARGETS'] = '$TARGETS'
291
+ else:
292
+ dict['TARGETS'] = NullNodesList
293
+ dict['TARGET'] = NullNodesList
294
+
295
+ if source:
296
+ def get_src_subst_proxy(node):
297
+ try:
298
+ rfile = node.rfile
299
+ except AttributeError:
300
+ pass
301
+ else:
302
+ node = rfile()
303
+ try:
304
+ return node.get_subst_proxy()
305
+ except AttributeError:
306
+ return node # probably a String, just return it
307
+ snl = NLWrapper(source, get_src_subst_proxy)
308
+ dict['SOURCES'] = Targets_or_Sources(snl)
309
+ dict['SOURCE'] = Target_or_Source(snl)
310
+
311
+ # This is a total cheat, but hopefully this dictionary goes
312
+ # away soon anyway. We just let these expand to $TARGETS
313
+ # because that's "good enough" for the use of ToolSurrogates
314
+ # (see test/ToolSurrogate.py) to generate documentation.
315
+ dict['CHANGED_SOURCES'] = '$SOURCES'
316
+ dict['UNCHANGED_SOURCES'] = '$SOURCES'
317
+ else:
318
+ dict['SOURCES'] = NullNodesList
319
+ dict['SOURCE'] = NullNodesList
320
+
321
+ return dict
322
+
323
+ # Constants for the "mode" parameter to scons_subst_list() and
324
+ # scons_subst(). SUBST_RAW gives the raw command line. SUBST_CMD
325
+ # gives a command line suitable for passing to a shell. SUBST_SIG
326
+ # gives a command line appropriate for calculating the signature
327
+ # of a command line...if this changes, we should rebuild.
328
+ SUBST_CMD = 0
329
+ SUBST_RAW = 1
330
+ SUBST_SIG = 2
331
+
332
+ _rm = re.compile(r'\$[()]')
333
+ _remove = re.compile(r'\$\([^\$]*(\$[^\)][^\$]*)*\$\)')
334
+
335
+ # Indexed by the SUBST_* constants above.
336
+ _regex_remove = [ _rm, None, _remove ]
337
+
338
+ def _rm_list(list):
339
+ #return [ l for l in list if not l in ('$(', '$)') ]
340
+ return [l for l in list if not l in ('$(', '$)')]
341
+
342
+ def _remove_list(list):
343
+ result = []
344
+ do_append = result.append
345
+ for l in list:
346
+ if l == '$(':
347
+ do_append = lambda x: None
348
+ elif l == '$)':
349
+ do_append = result.append
350
+ else:
351
+ do_append(l)
352
+ return result
353
+
354
+ # Indexed by the SUBST_* constants above.
355
+ _list_remove = [ _rm_list, None, _remove_list ]
356
+
357
+ # Regular expressions for splitting strings and handling substitutions,
358
+ # for use by the scons_subst() and scons_subst_list() functions:
359
+ #
360
+ # The first expression compiled matches all of the $-introduced tokens
361
+ # that we need to process in some way, and is used for substitutions.
362
+ # The expressions it matches are:
363
+ #
364
+ # "$$"
365
+ # "$("
366
+ # "$)"
367
+ # "$variable" [must begin with alphabetic or underscore]
368
+ # "${any stuff}"
369
+ #
370
+ # The second expression compiled is used for splitting strings into tokens
371
+ # to be processed, and it matches all of the tokens listed above, plus
372
+ # the following that affect how arguments do or don't get joined together:
373
+ #
374
+ # " " [white space]
375
+ # "non-white-space" [without any dollar signs]
376
+ # "$" [single dollar sign]
377
+ #
378
+ _dollar_exps_str = r'\$[\$\(\)]|\$[_a-zA-Z][\.\w]*|\${[^}]*}'
379
+ _dollar_exps = re.compile(r'(%s)' % _dollar_exps_str)
380
+ _separate_args = re.compile(r'(%s|\s+|[^\s\$]+|\$)' % _dollar_exps_str)
381
+
382
+ # This regular expression is used to replace strings of multiple white
383
+ # space characters in the string result from the scons_subst() function.
384
+ _space_sep = re.compile(r'[\t ]+(?![^{]*})')
385
+
386
+ def scons_subst(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None):
387
+ """Expand a string or list containing construction variable
388
+ substitutions.
389
+
390
+ This is the work-horse function for substitutions in file names
391
+ and the like. The companion scons_subst_list() function (below)
392
+ handles separating command lines into lists of arguments, so see
393
+ that function if that's what you're looking for.
394
+ """
395
+ if isinstance(strSubst, str) and strSubst.find('$') < 0:
396
+ return strSubst
397
+
398
+ class StringSubber(object):
399
+ """A class to construct the results of a scons_subst() call.
400
+
401
+ This binds a specific construction environment, mode, target and
402
+ source with two methods (substitute() and expand()) that handle
403
+ the expansion.
404
+ """
405
+ def __init__(self, env, mode, conv, gvars):
406
+ self.env = env
407
+ self.mode = mode
408
+ self.conv = conv
409
+ self.gvars = gvars
410
+
411
+ def expand(self, s, lvars):
412
+ """Expand a single "token" as necessary, returning an
413
+ appropriate string containing the expansion.
414
+
415
+ This handles expanding different types of things (strings,
416
+ lists, callables) appropriately. It calls the wrapper
417
+ substitute() method to re-expand things as necessary, so that
418
+ the results of expansions of side-by-side strings still get
419
+ re-evaluated separately, not smushed together.
420
+ """
421
+ if is_String(s):
422
+ try:
423
+ s0, s1 = s[:2]
424
+ except (IndexError, ValueError):
425
+ return s
426
+ if s0 != '$':
427
+ return s
428
+ if s1 == '$':
429
+ return '$'
430
+ elif s1 in '()':
431
+ return s
432
+ else:
433
+ key = s[1:]
434
+ if key[0] == '{' or key.find('.') >= 0:
435
+ if key[0] == '{':
436
+ key = key[1:-1]
437
+ try:
438
+ s = eval(key, self.gvars, lvars)
439
+ except KeyboardInterrupt:
440
+ raise
441
+ except Exception, e:
442
+ if e.__class__ in AllowableExceptions:
443
+ return ''
444
+ raise_exception(e, lvars['TARGETS'], s)
445
+ else:
446
+ if key in lvars:
447
+ s = lvars[key]
448
+ elif key in self.gvars:
449
+ s = self.gvars[key]
450
+ elif not NameError in AllowableExceptions:
451
+ raise_exception(NameError(key), lvars['TARGETS'], s)
452
+ else:
453
+ return ''
454
+
455
+ # Before re-expanding the result, handle
456
+ # recursive expansion by copying the local
457
+ # variable dictionary and overwriting a null
458
+ # string for the value of the variable name
459
+ # we just expanded.
460
+ #
461
+ # This could potentially be optimized by only
462
+ # copying lvars when s contains more expansions,
463
+ # but lvars is usually supposed to be pretty
464
+ # small, and deeply nested variable expansions
465
+ # are probably more the exception than the norm,
466
+ # so it should be tolerable for now.
467
+ lv = lvars.copy()
468
+ var = key.split('.')[0]
469
+ lv[var] = ''
470
+ return self.substitute(s, lv)
471
+ elif is_Sequence(s):
472
+ def func(l, conv=self.conv, substitute=self.substitute, lvars=lvars):
473
+ return conv(substitute(l, lvars))
474
+ return list(map(func, s))
475
+ elif callable(s):
476
+ try:
477
+ s = s(target=lvars['TARGETS'],
478
+ source=lvars['SOURCES'],
479
+ env=self.env,
480
+ for_signature=(self.mode != SUBST_CMD))
481
+ except TypeError:
482
+ # This probably indicates that it's a callable
483
+ # object that doesn't match our calling arguments
484
+ # (like an Action).
485
+ if self.mode == SUBST_RAW:
486
+ return s
487
+ s = self.conv(s)
488
+ return self.substitute(s, lvars)
489
+ elif s is None:
490
+ return ''
491
+ else:
492
+ return s
493
+
494
+ def substitute(self, args, lvars):
495
+ """Substitute expansions in an argument or list of arguments.
496
+
497
+ This serves as a wrapper for splitting up a string into
498
+ separate tokens.
499
+ """
500
+ if is_String(args) and not isinstance(args, CmdStringHolder):
501
+ args = str(args) # In case it's a UserString.
502
+ try:
503
+ def sub_match(match):
504
+ return self.conv(self.expand(match.group(1), lvars))
505
+ result = _dollar_exps.sub(sub_match, args)
506
+ except TypeError:
507
+ # If the internal conversion routine doesn't return
508
+ # strings (it could be overridden to return Nodes, for
509
+ # example), then the 1.5.2 re module will throw this
510
+ # exception. Back off to a slower, general-purpose
511
+ # algorithm that works for all data types.
512
+ args = _separate_args.findall(args)
513
+ result = []
514
+ for a in args:
515
+ result.append(self.conv(self.expand(a, lvars)))
516
+ if len(result) == 1:
517
+ result = result[0]
518
+ else:
519
+ result = ''.join(map(str, result))
520
+ return result
521
+ else:
522
+ return self.expand(args, lvars)
523
+
524
+ if conv is None:
525
+ conv = _strconv[mode]
526
+
527
+ # Doing this every time is a bit of a waste, since the Executor
528
+ # has typically already populated the OverrideEnvironment with
529
+ # $TARGET/$SOURCE variables. We're keeping this (for now), though,
530
+ # because it supports existing behavior that allows us to call
531
+ # an Action directly with an arbitrary target+source pair, which
532
+ # we use in Tool/tex.py to handle calling $BIBTEX when necessary.
533
+ # If we dropped that behavior (or found another way to cover it),
534
+ # we could get rid of this call completely and just rely on the
535
+ # Executor setting the variables.
536
+ if 'TARGET' not in lvars:
537
+ d = subst_dict(target, source)
538
+ if d:
539
+ lvars = lvars.copy()
540
+ lvars.update(d)
541
+
542
+ # We're (most likely) going to eval() things. If Python doesn't
543
+ # find a __builtins__ value in the global dictionary used for eval(),
544
+ # it copies the current global values for you. Avoid this by
545
+ # setting it explicitly and then deleting, so we don't pollute the
546
+ # construction environment Dictionary(ies) that are typically used
547
+ # for expansion.
548
+ gvars['__builtins__'] = __builtins__
549
+
550
+ ss = StringSubber(env, mode, conv, gvars)
551
+ result = ss.substitute(strSubst, lvars)
552
+
553
+ try:
554
+ del gvars['__builtins__']
555
+ except KeyError:
556
+ pass
557
+
558
+ if is_String(result):
559
+ # Remove $(-$) pairs and any stuff in between,
560
+ # if that's appropriate.
561
+ remove = _regex_remove[mode]
562
+ if remove:
563
+ result = remove.sub('', result)
564
+ if mode != SUBST_RAW:
565
+ # Compress strings of white space characters into
566
+ # a single space.
567
+ result = _space_sep.sub(' ', result).strip()
568
+ elif is_Sequence(result):
569
+ remove = _list_remove[mode]
570
+ if remove:
571
+ result = remove(result)
572
+
573
+ return result
574
+
575
+ #Subst_List_Strings = {}
576
+
577
+ def scons_subst_list(strSubst, env, mode=SUBST_RAW, target=None, source=None, gvars={}, lvars={}, conv=None):
578
+ """Substitute construction variables in a string (or list or other
579
+ object) and separate the arguments into a command list.
580
+
581
+ The companion scons_subst() function (above) handles basic
582
+ substitutions within strings, so see that function instead
583
+ if that's what you're looking for.
584
+ """
585
+ # try:
586
+ # Subst_List_Strings[strSubst] = Subst_List_Strings[strSubst] + 1
587
+ # except KeyError:
588
+ # Subst_List_Strings[strSubst] = 1
589
+ # import SCons.Debug
590
+ # SCons.Debug.caller_trace(1)
591
+ class ListSubber(collections.UserList):
592
+ """A class to construct the results of a scons_subst_list() call.
593
+
594
+ Like StringSubber, this class binds a specific construction
595
+ environment, mode, target and source with two methods
596
+ (substitute() and expand()) that handle the expansion.
597
+
598
+ In addition, however, this class is used to track the state of
599
+ the result(s) we're gathering so we can do the appropriate thing
600
+ whenever we have to append another word to the result--start a new
601
+ line, start a new word, append to the current word, etc. We do
602
+ this by setting the "append" attribute to the right method so
603
+ that our wrapper methods only need ever call ListSubber.append(),
604
+ and the rest of the object takes care of doing the right thing
605
+ internally.
606
+ """
607
+ def __init__(self, env, mode, conv, gvars):
608
+ collections.UserList.__init__(self, [])
609
+ self.env = env
610
+ self.mode = mode
611
+ self.conv = conv
612
+ self.gvars = gvars
613
+
614
+ if self.mode == SUBST_RAW:
615
+ self.add_strip = lambda x: self.append(x)
616
+ else:
617
+ self.add_strip = lambda x: None
618
+ self.in_strip = None
619
+ self.next_line()
620
+
621
+ def expand(self, s, lvars, within_list):
622
+ """Expand a single "token" as necessary, appending the
623
+ expansion to the current result.
624
+
625
+ This handles expanding different types of things (strings,
626
+ lists, callables) appropriately. It calls the wrapper
627
+ substitute() method to re-expand things as necessary, so that
628
+ the results of expansions of side-by-side strings still get
629
+ re-evaluated separately, not smushed together.
630
+ """
631
+
632
+ if is_String(s):
633
+ try:
634
+ s0, s1 = s[:2]
635
+ except (IndexError, ValueError):
636
+ self.append(s)
637
+ return
638
+ if s0 != '$':
639
+ self.append(s)
640
+ return
641
+ if s1 == '$':
642
+ self.append('$')
643
+ elif s1 == '(':
644
+ self.open_strip('$(')
645
+ elif s1 == ')':
646
+ self.close_strip('$)')
647
+ else:
648
+ key = s[1:]
649
+ if key[0] == '{' or key.find('.') >= 0:
650
+ if key[0] == '{':
651
+ key = key[1:-1]
652
+ try:
653
+ s = eval(key, self.gvars, lvars)
654
+ except KeyboardInterrupt:
655
+ raise
656
+ except Exception, e:
657
+ if e.__class__ in AllowableExceptions:
658
+ return
659
+ raise_exception(e, lvars['TARGETS'], s)
660
+ else:
661
+ if key in lvars:
662
+ s = lvars[key]
663
+ elif key in self.gvars:
664
+ s = self.gvars[key]
665
+ elif not NameError in AllowableExceptions:
666
+ raise_exception(NameError(), lvars['TARGETS'], s)
667
+ else:
668
+ return
669
+
670
+ # Before re-expanding the result, handle
671
+ # recursive expansion by copying the local
672
+ # variable dictionary and overwriting a null
673
+ # string for the value of the variable name
674
+ # we just expanded.
675
+ lv = lvars.copy()
676
+ var = key.split('.')[0]
677
+ lv[var] = ''
678
+ self.substitute(s, lv, 0)
679
+ self.this_word()
680
+ elif is_Sequence(s):
681
+ for a in s:
682
+ self.substitute(a, lvars, 1)
683
+ self.next_word()
684
+ elif callable(s):
685
+ try:
686
+ s = s(target=lvars['TARGETS'],
687
+ source=lvars['SOURCES'],
688
+ env=self.env,
689
+ for_signature=(self.mode != SUBST_CMD))
690
+ except TypeError:
691
+ # This probably indicates that it's a callable
692
+ # object that doesn't match our calling arguments
693
+ # (like an Action).
694
+ if self.mode == SUBST_RAW:
695
+ self.append(s)
696
+ return
697
+ s = self.conv(s)
698
+ self.substitute(s, lvars, within_list)
699
+ elif s is None:
700
+ self.this_word()
701
+ else:
702
+ self.append(s)
703
+
704
+ def substitute(self, args, lvars, within_list):
705
+ """Substitute expansions in an argument or list of arguments.
706
+
707
+ This serves as a wrapper for splitting up a string into
708
+ separate tokens.
709
+ """
710
+
711
+ if is_String(args) and not isinstance(args, CmdStringHolder):
712
+ args = str(args) # In case it's a UserString.
713
+ args = _separate_args.findall(args)
714
+ for a in args:
715
+ if a[0] in ' \t\n\r\f\v':
716
+ if '\n' in a:
717
+ self.next_line()
718
+ elif within_list:
719
+ self.append(a)
720
+ else:
721
+ self.next_word()
722
+ else:
723
+ self.expand(a, lvars, within_list)
724
+ else:
725
+ self.expand(args, lvars, within_list)
726
+
727
+ def next_line(self):
728
+ """Arrange for the next word to start a new line. This
729
+ is like starting a new word, except that we have to append
730
+ another line to the result."""
731
+ collections.UserList.append(self, [])
732
+ self.next_word()
733
+
734
+ def this_word(self):
735
+ """Arrange for the next word to append to the end of the
736
+ current last word in the result."""
737
+ self.append = self.add_to_current_word
738
+
739
+ def next_word(self):
740
+ """Arrange for the next word to start a new word."""
741
+ self.append = self.add_new_word
742
+
743
+ def add_to_current_word(self, x):
744
+ """Append the string x to the end of the current last word
745
+ in the result. If that is not possible, then just add
746
+ it as a new word. Make sure the entire concatenated string
747
+ inherits the object attributes of x (in particular, the
748
+ escape function) by wrapping it as CmdStringHolder."""
749
+
750
+ if not self.in_strip or self.mode != SUBST_SIG:
751
+ try:
752
+ current_word = self[-1][-1]
753
+ except IndexError:
754
+ self.add_new_word(x)
755
+ else:
756
+ # All right, this is a hack and it should probably
757
+ # be refactored out of existence in the future.
758
+ # The issue is that we want to smoosh words together
759
+ # and make one file name that gets escaped if
760
+ # we're expanding something like foo$EXTENSION,
761
+ # but we don't want to smoosh them together if
762
+ # it's something like >$TARGET, because then we'll
763
+ # treat the '>' like it's part of the file name.
764
+ # So for now, just hard-code looking for the special
765
+ # command-line redirection characters...
766
+ try:
767
+ last_char = str(current_word)[-1]
768
+ except IndexError:
769
+ last_char = '\0'
770
+ if last_char in '<>|':
771
+ self.add_new_word(x)
772
+ else:
773
+ y = current_word + x
774
+
775
+ # We used to treat a word appended to a literal
776
+ # as a literal itself, but this caused problems
777
+ # with interpreting quotes around space-separated
778
+ # targets on command lines. Removing this makes
779
+ # none of the "substantive" end-to-end tests fail,
780
+ # so we'll take this out but leave it commented
781
+ # for now in case there's a problem not covered
782
+ # by the test cases and we need to resurrect this.
783
+ #literal1 = self.literal(self[-1][-1])
784
+ #literal2 = self.literal(x)
785
+ y = self.conv(y)
786
+ if is_String(y):
787
+ #y = CmdStringHolder(y, literal1 or literal2)
788
+ y = CmdStringHolder(y, None)
789
+ self[-1][-1] = y
790
+
791
+ def add_new_word(self, x):
792
+ if not self.in_strip or self.mode != SUBST_SIG:
793
+ literal = self.literal(x)
794
+ x = self.conv(x)
795
+ if is_String(x):
796
+ x = CmdStringHolder(x, literal)
797
+ self[-1].append(x)
798
+ self.append = self.add_to_current_word
799
+
800
+ def literal(self, x):
801
+ try:
802
+ l = x.is_literal
803
+ except AttributeError:
804
+ return None
805
+ else:
806
+ return l()
807
+
808
+ def open_strip(self, x):
809
+ """Handle the "open strip" $( token."""
810
+ self.add_strip(x)
811
+ self.in_strip = 1
812
+
813
+ def close_strip(self, x):
814
+ """Handle the "close strip" $) token."""
815
+ self.add_strip(x)
816
+ self.in_strip = None
817
+
818
+ if conv is None:
819
+ conv = _strconv[mode]
820
+
821
+ # Doing this every time is a bit of a waste, since the Executor
822
+ # has typically already populated the OverrideEnvironment with
823
+ # $TARGET/$SOURCE variables. We're keeping this (for now), though,
824
+ # because it supports existing behavior that allows us to call
825
+ # an Action directly with an arbitrary target+source pair, which
826
+ # we use in Tool/tex.py to handle calling $BIBTEX when necessary.
827
+ # If we dropped that behavior (or found another way to cover it),
828
+ # we could get rid of this call completely and just rely on the
829
+ # Executor setting the variables.
830
+ if 'TARGET' not in lvars:
831
+ d = subst_dict(target, source)
832
+ if d:
833
+ lvars = lvars.copy()
834
+ lvars.update(d)
835
+
836
+ # We're (most likely) going to eval() things. If Python doesn't
837
+ # find a __builtins__ value in the global dictionary used for eval(),
838
+ # it copies the current global values for you. Avoid this by
839
+ # setting it explicitly and then deleting, so we don't pollute the
840
+ # construction environment Dictionary(ies) that are typically used
841
+ # for expansion.
842
+ gvars['__builtins__'] = __builtins__
843
+
844
+ ls = ListSubber(env, mode, conv, gvars)
845
+ ls.substitute(strSubst, lvars, 0)
846
+
847
+ try:
848
+ del gvars['__builtins__']
849
+ except KeyError:
850
+ pass
851
+
852
+ return ls.data
853
+
854
+ def scons_subst_once(strSubst, env, key):
855
+ """Perform single (non-recursive) substitution of a single
856
+ construction variable keyword.
857
+
858
+ This is used when setting a variable when copying or overriding values
859
+ in an Environment. We want to capture (expand) the old value before
860
+ we override it, so people can do things like:
861
+
862
+ env2 = env.Clone(CCFLAGS = '$CCFLAGS -g')
863
+
864
+ We do this with some straightforward, brute-force code here...
865
+ """
866
+ if isinstance(strSubst, str) and strSubst.find('$') < 0:
867
+ return strSubst
868
+
869
+ matchlist = ['$' + key, '${' + key + '}']
870
+ val = env.get(key, '')
871
+ def sub_match(match, val=val, matchlist=matchlist):
872
+ a = match.group(1)
873
+ if a in matchlist:
874
+ a = val
875
+ if is_Sequence(a):
876
+ return ' '.join(map(str, a))
877
+ else:
878
+ return str(a)
879
+
880
+ if is_Sequence(strSubst):
881
+ result = []
882
+ for arg in strSubst:
883
+ if is_String(arg):
884
+ if arg in matchlist:
885
+ arg = val
886
+ if is_Sequence(arg):
887
+ result.extend(arg)
888
+ else:
889
+ result.append(arg)
890
+ else:
891
+ result.append(_dollar_exps.sub(sub_match, arg))
892
+ else:
893
+ result.append(arg)
894
+ return result
895
+ elif is_String(strSubst):
896
+ return _dollar_exps.sub(sub_match, strSubst)
897
+ else:
898
+ return strSubst
899
+
900
+ # Local Variables:
901
+ # tab-width:4
902
+ # indent-tabs-mode:nil
903
+ # End:
904
+ # vim: set expandtab tabstop=4 shiftwidth=4: