therubyracer-heroku 0.8.1.pre2 → 0.8.1.pre3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1239) hide show
  1. data/ext/v8/upstream/build/v8/libv8.a +0 -0
  2. data/lib/v8/version.rb +1 -1
  3. metadata +3 -1238
  4. data/ext/v8/upstream/build/scons/CHANGES.txt +0 -5183
  5. data/ext/v8/upstream/build/scons/LICENSE.txt +0 -20
  6. data/ext/v8/upstream/build/scons/MANIFEST +0 -202
  7. data/ext/v8/upstream/build/scons/PKG-INFO +0 -13
  8. data/ext/v8/upstream/build/scons/README.txt +0 -273
  9. data/ext/v8/upstream/build/scons/RELEASE.txt +0 -1040
  10. data/ext/v8/upstream/build/scons/build/lib/SCons/Action.py +0 -1256
  11. data/ext/v8/upstream/build/scons/build/lib/SCons/Builder.py +0 -868
  12. data/ext/v8/upstream/build/scons/build/lib/SCons/CacheDir.py +0 -217
  13. data/ext/v8/upstream/build/scons/build/lib/SCons/Conftest.py +0 -794
  14. data/ext/v8/upstream/build/scons/build/lib/SCons/Debug.py +0 -237
  15. data/ext/v8/upstream/build/scons/build/lib/SCons/Defaults.py +0 -485
  16. data/ext/v8/upstream/build/scons/build/lib/SCons/Environment.py +0 -2327
  17. data/ext/v8/upstream/build/scons/build/lib/SCons/Errors.py +0 -207
  18. data/ext/v8/upstream/build/scons/build/lib/SCons/Executor.py +0 -636
  19. data/ext/v8/upstream/build/scons/build/lib/SCons/Job.py +0 -435
  20. data/ext/v8/upstream/build/scons/build/lib/SCons/Memoize.py +0 -292
  21. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Alias.py +0 -153
  22. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/FS.py +0 -3220
  23. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/Python.py +0 -128
  24. data/ext/v8/upstream/build/scons/build/lib/SCons/Node/__init__.py +0 -1341
  25. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/BoolOption.py +0 -50
  26. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/EnumOption.py +0 -50
  27. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/ListOption.py +0 -50
  28. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PackageOption.py +0 -50
  29. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/PathOption.py +0 -76
  30. data/ext/v8/upstream/build/scons/build/lib/SCons/Options/__init__.py +0 -74
  31. data/ext/v8/upstream/build/scons/build/lib/SCons/PathList.py +0 -232
  32. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/__init__.py +0 -236
  33. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/aix.py +0 -70
  34. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/cygwin.py +0 -55
  35. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/darwin.py +0 -46
  36. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/hpux.py +0 -46
  37. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/irix.py +0 -44
  38. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/os2.py +0 -58
  39. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/posix.py +0 -264
  40. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/sunos.py +0 -50
  41. data/ext/v8/upstream/build/scons/build/lib/SCons/Platform/win32.py +0 -386
  42. data/ext/v8/upstream/build/scons/build/lib/SCons/SConf.py +0 -1038
  43. data/ext/v8/upstream/build/scons/build/lib/SCons/SConsign.py +0 -381
  44. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/C.py +0 -132
  45. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/D.py +0 -74
  46. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Dir.py +0 -111
  47. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Fortran.py +0 -320
  48. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/IDL.py +0 -48
  49. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/LaTeX.py +0 -378
  50. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/Prog.py +0 -103
  51. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/RC.py +0 -55
  52. data/ext/v8/upstream/build/scons/build/lib/SCons/Scanner/__init__.py +0 -415
  53. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Interactive.py +0 -386
  54. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/Main.py +0 -1360
  55. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConsOptions.py +0 -944
  56. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/SConscript.py +0 -642
  57. data/ext/v8/upstream/build/scons/build/lib/SCons/Script/__init__.py +0 -414
  58. data/ext/v8/upstream/build/scons/build/lib/SCons/Sig.py +0 -63
  59. data/ext/v8/upstream/build/scons/build/lib/SCons/Subst.py +0 -911
  60. data/ext/v8/upstream/build/scons/build/lib/SCons/Taskmaster.py +0 -1030
  61. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/386asm.py +0 -61
  62. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/BitKeeper.py +0 -65
  63. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/CVS.py +0 -73
  64. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/FortranCommon.py +0 -247
  65. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/JavaCommon.py +0 -324
  66. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/__init__.py +0 -56
  67. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/arch.py +0 -61
  68. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/common.py +0 -210
  69. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/netframework.py +0 -84
  70. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/sdk.py +0 -321
  71. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vc.py +0 -367
  72. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/MSCommon/vs.py +0 -497
  73. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Perforce.py +0 -104
  74. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/PharLapCommon.py +0 -138
  75. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/RCS.py +0 -64
  76. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/SCCS.py +0 -64
  77. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/Subversion.py +0 -71
  78. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/__init__.py +0 -675
  79. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixc++.py +0 -82
  80. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixcc.py +0 -74
  81. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixf77.py +0 -80
  82. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/aixlink.py +0 -76
  83. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/applelink.py +0 -71
  84. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ar.py +0 -63
  85. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/as.py +0 -78
  86. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/bcc32.py +0 -82
  87. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/c++.py +0 -99
  88. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cc.py +0 -114
  89. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/cvf.py +0 -58
  90. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/default.py +0 -50
  91. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dmd.py +0 -224
  92. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvi.py +0 -64
  93. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvipdf.py +0 -125
  94. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/dvips.py +0 -94
  95. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f77.py +0 -62
  96. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f90.py +0 -62
  97. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/f95.py +0 -63
  98. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/filesystem.py +0 -98
  99. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/fortran.py +0 -63
  100. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g++.py +0 -90
  101. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/g77.py +0 -73
  102. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gas.py +0 -53
  103. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gcc.py +0 -80
  104. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gfortran.py +0 -64
  105. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gnulink.py +0 -63
  106. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/gs.py +0 -81
  107. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpc++.py +0 -85
  108. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hpcc.py +0 -53
  109. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/hplink.py +0 -77
  110. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icc.py +0 -59
  111. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/icl.py +0 -52
  112. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifl.py +0 -72
  113. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ifort.py +0 -90
  114. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink.py +0 -59
  115. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ilink32.py +0 -60
  116. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/install.py +0 -229
  117. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/intelc.py +0 -490
  118. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/ipkg.py +0 -71
  119. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/jar.py +0 -110
  120. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javac.py +0 -234
  121. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/javah.py +0 -138
  122. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/latex.py +0 -79
  123. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/lex.py +0 -99
  124. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/link.py +0 -121
  125. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/linkloc.py +0 -112
  126. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/m4.py +0 -63
  127. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/masm.py +0 -77
  128. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/midl.py +0 -90
  129. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mingw.py +0 -159
  130. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslib.py +0 -64
  131. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mslink.py +0 -266
  132. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mssdk.py +0 -50
  133. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvc.py +0 -269
  134. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/msvs.py +0 -1439
  135. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwcc.py +0 -208
  136. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/mwld.py +0 -107
  137. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/nasm.py +0 -72
  138. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/__init__.py +0 -314
  139. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/ipk.py +0 -185
  140. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/msi.py +0 -526
  141. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/rpm.py +0 -367
  142. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_tarbz2.py +0 -43
  143. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_targz.py +0 -43
  144. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/src_zip.py +0 -43
  145. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/tarbz2.py +0 -44
  146. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/targz.py +0 -44
  147. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/packaging/zip.py +0 -44
  148. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdf.py +0 -78
  149. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdflatex.py +0 -83
  150. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/pdftex.py +0 -108
  151. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/qt.py +0 -336
  152. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rmic.py +0 -121
  153. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpcgen.py +0 -70
  154. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/rpm.py +0 -132
  155. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgiar.py +0 -68
  156. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgic++.py +0 -58
  157. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgicc.py +0 -53
  158. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sgilink.py +0 -63
  159. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunar.py +0 -67
  160. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunc++.py +0 -142
  161. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/suncc.py +0 -58
  162. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf77.py +0 -63
  163. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf90.py +0 -64
  164. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunf95.py +0 -64
  165. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/sunlink.py +0 -77
  166. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/swig.py +0 -186
  167. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tar.py +0 -73
  168. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tex.py +0 -805
  169. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/textfile.py +0 -175
  170. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/tlib.py +0 -53
  171. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/wix.py +0 -100
  172. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/yacc.py +0 -131
  173. data/ext/v8/upstream/build/scons/build/lib/SCons/Tool/zip.py +0 -100
  174. data/ext/v8/upstream/build/scons/build/lib/SCons/Util.py +0 -1645
  175. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/BoolVariable.py +0 -91
  176. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/EnumVariable.py +0 -107
  177. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/ListVariable.py +0 -139
  178. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PackageVariable.py +0 -109
  179. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/PathVariable.py +0 -147
  180. data/ext/v8/upstream/build/scons/build/lib/SCons/Variables/__init__.py +0 -317
  181. data/ext/v8/upstream/build/scons/build/lib/SCons/Warnings.py +0 -228
  182. data/ext/v8/upstream/build/scons/build/lib/SCons/__init__.py +0 -49
  183. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/__init__.py +0 -302
  184. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_UserString.py +0 -98
  185. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_hashlib.py +0 -91
  186. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_itertools.py +0 -124
  187. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_optparse.py +0 -1725
  188. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets.py +0 -583
  189. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_sets15.py +0 -176
  190. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_shlex.py +0 -325
  191. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_subprocess.py +0 -1296
  192. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/_scons_textwrap.py +0 -382
  193. data/ext/v8/upstream/build/scons/build/lib/SCons/compat/builtins.py +0 -187
  194. data/ext/v8/upstream/build/scons/build/lib/SCons/cpp.py +0 -598
  195. data/ext/v8/upstream/build/scons/build/lib/SCons/dblite.py +0 -248
  196. data/ext/v8/upstream/build/scons/build/lib/SCons/exitfuncs.py +0 -77
  197. data/ext/v8/upstream/build/scons/build/scripts/scons +0 -184
  198. data/ext/v8/upstream/build/scons/build/scripts/scons-time +0 -1529
  199. data/ext/v8/upstream/build/scons/build/scripts/scons.bat +0 -31
  200. data/ext/v8/upstream/build/scons/build/scripts/sconsign +0 -508
  201. data/ext/v8/upstream/build/scons/engine/SCons/Action.py +0 -1256
  202. data/ext/v8/upstream/build/scons/engine/SCons/Builder.py +0 -868
  203. data/ext/v8/upstream/build/scons/engine/SCons/CacheDir.py +0 -217
  204. data/ext/v8/upstream/build/scons/engine/SCons/Conftest.py +0 -794
  205. data/ext/v8/upstream/build/scons/engine/SCons/Debug.py +0 -237
  206. data/ext/v8/upstream/build/scons/engine/SCons/Defaults.py +0 -485
  207. data/ext/v8/upstream/build/scons/engine/SCons/Environment.py +0 -2327
  208. data/ext/v8/upstream/build/scons/engine/SCons/Errors.py +0 -207
  209. data/ext/v8/upstream/build/scons/engine/SCons/Executor.py +0 -636
  210. data/ext/v8/upstream/build/scons/engine/SCons/Job.py +0 -435
  211. data/ext/v8/upstream/build/scons/engine/SCons/Memoize.py +0 -292
  212. data/ext/v8/upstream/build/scons/engine/SCons/Node/Alias.py +0 -153
  213. data/ext/v8/upstream/build/scons/engine/SCons/Node/FS.py +0 -3220
  214. data/ext/v8/upstream/build/scons/engine/SCons/Node/Python.py +0 -128
  215. data/ext/v8/upstream/build/scons/engine/SCons/Node/__init__.py +0 -1341
  216. data/ext/v8/upstream/build/scons/engine/SCons/Options/BoolOption.py +0 -50
  217. data/ext/v8/upstream/build/scons/engine/SCons/Options/EnumOption.py +0 -50
  218. data/ext/v8/upstream/build/scons/engine/SCons/Options/ListOption.py +0 -50
  219. data/ext/v8/upstream/build/scons/engine/SCons/Options/PackageOption.py +0 -50
  220. data/ext/v8/upstream/build/scons/engine/SCons/Options/PathOption.py +0 -76
  221. data/ext/v8/upstream/build/scons/engine/SCons/Options/__init__.py +0 -74
  222. data/ext/v8/upstream/build/scons/engine/SCons/PathList.py +0 -232
  223. data/ext/v8/upstream/build/scons/engine/SCons/Platform/__init__.py +0 -236
  224. data/ext/v8/upstream/build/scons/engine/SCons/Platform/aix.py +0 -70
  225. data/ext/v8/upstream/build/scons/engine/SCons/Platform/cygwin.py +0 -55
  226. data/ext/v8/upstream/build/scons/engine/SCons/Platform/darwin.py +0 -46
  227. data/ext/v8/upstream/build/scons/engine/SCons/Platform/hpux.py +0 -46
  228. data/ext/v8/upstream/build/scons/engine/SCons/Platform/irix.py +0 -44
  229. data/ext/v8/upstream/build/scons/engine/SCons/Platform/os2.py +0 -58
  230. data/ext/v8/upstream/build/scons/engine/SCons/Platform/posix.py +0 -264
  231. data/ext/v8/upstream/build/scons/engine/SCons/Platform/sunos.py +0 -50
  232. data/ext/v8/upstream/build/scons/engine/SCons/Platform/win32.py +0 -386
  233. data/ext/v8/upstream/build/scons/engine/SCons/SConf.py +0 -1038
  234. data/ext/v8/upstream/build/scons/engine/SCons/SConsign.py +0 -381
  235. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/C.py +0 -132
  236. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/D.py +0 -74
  237. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Dir.py +0 -111
  238. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Fortran.py +0 -320
  239. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/IDL.py +0 -48
  240. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/LaTeX.py +0 -378
  241. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/Prog.py +0 -103
  242. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/RC.py +0 -55
  243. data/ext/v8/upstream/build/scons/engine/SCons/Scanner/__init__.py +0 -415
  244. data/ext/v8/upstream/build/scons/engine/SCons/Script/Interactive.py +0 -386
  245. data/ext/v8/upstream/build/scons/engine/SCons/Script/Main.py +0 -1360
  246. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConsOptions.py +0 -944
  247. data/ext/v8/upstream/build/scons/engine/SCons/Script/SConscript.py +0 -642
  248. data/ext/v8/upstream/build/scons/engine/SCons/Script/__init__.py +0 -414
  249. data/ext/v8/upstream/build/scons/engine/SCons/Sig.py +0 -63
  250. data/ext/v8/upstream/build/scons/engine/SCons/Subst.py +0 -911
  251. data/ext/v8/upstream/build/scons/engine/SCons/Taskmaster.py +0 -1030
  252. data/ext/v8/upstream/build/scons/engine/SCons/Tool/386asm.py +0 -61
  253. data/ext/v8/upstream/build/scons/engine/SCons/Tool/BitKeeper.py +0 -65
  254. data/ext/v8/upstream/build/scons/engine/SCons/Tool/CVS.py +0 -73
  255. data/ext/v8/upstream/build/scons/engine/SCons/Tool/FortranCommon.py +0 -247
  256. data/ext/v8/upstream/build/scons/engine/SCons/Tool/JavaCommon.py +0 -324
  257. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/__init__.py +0 -56
  258. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/arch.py +0 -61
  259. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/common.py +0 -210
  260. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/netframework.py +0 -84
  261. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/sdk.py +0 -321
  262. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vc.py +0 -367
  263. data/ext/v8/upstream/build/scons/engine/SCons/Tool/MSCommon/vs.py +0 -497
  264. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Perforce.py +0 -104
  265. data/ext/v8/upstream/build/scons/engine/SCons/Tool/PharLapCommon.py +0 -138
  266. data/ext/v8/upstream/build/scons/engine/SCons/Tool/RCS.py +0 -64
  267. data/ext/v8/upstream/build/scons/engine/SCons/Tool/SCCS.py +0 -64
  268. data/ext/v8/upstream/build/scons/engine/SCons/Tool/Subversion.py +0 -71
  269. data/ext/v8/upstream/build/scons/engine/SCons/Tool/__init__.py +0 -675
  270. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixc++.py +0 -82
  271. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixcc.py +0 -74
  272. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixf77.py +0 -80
  273. data/ext/v8/upstream/build/scons/engine/SCons/Tool/aixlink.py +0 -76
  274. data/ext/v8/upstream/build/scons/engine/SCons/Tool/applelink.py +0 -71
  275. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ar.py +0 -63
  276. data/ext/v8/upstream/build/scons/engine/SCons/Tool/as.py +0 -78
  277. data/ext/v8/upstream/build/scons/engine/SCons/Tool/bcc32.py +0 -82
  278. data/ext/v8/upstream/build/scons/engine/SCons/Tool/c++.py +0 -99
  279. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cc.py +0 -114
  280. data/ext/v8/upstream/build/scons/engine/SCons/Tool/cvf.py +0 -58
  281. data/ext/v8/upstream/build/scons/engine/SCons/Tool/default.py +0 -50
  282. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dmd.py +0 -224
  283. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvi.py +0 -64
  284. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvipdf.py +0 -125
  285. data/ext/v8/upstream/build/scons/engine/SCons/Tool/dvips.py +0 -94
  286. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f77.py +0 -62
  287. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f90.py +0 -62
  288. data/ext/v8/upstream/build/scons/engine/SCons/Tool/f95.py +0 -63
  289. data/ext/v8/upstream/build/scons/engine/SCons/Tool/filesystem.py +0 -98
  290. data/ext/v8/upstream/build/scons/engine/SCons/Tool/fortran.py +0 -63
  291. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g++.py +0 -90
  292. data/ext/v8/upstream/build/scons/engine/SCons/Tool/g77.py +0 -73
  293. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gas.py +0 -53
  294. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gcc.py +0 -80
  295. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gfortran.py +0 -64
  296. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gnulink.py +0 -63
  297. data/ext/v8/upstream/build/scons/engine/SCons/Tool/gs.py +0 -81
  298. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpc++.py +0 -85
  299. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hpcc.py +0 -53
  300. data/ext/v8/upstream/build/scons/engine/SCons/Tool/hplink.py +0 -77
  301. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icc.py +0 -59
  302. data/ext/v8/upstream/build/scons/engine/SCons/Tool/icl.py +0 -52
  303. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifl.py +0 -72
  304. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ifort.py +0 -90
  305. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink.py +0 -59
  306. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ilink32.py +0 -60
  307. data/ext/v8/upstream/build/scons/engine/SCons/Tool/install.py +0 -229
  308. data/ext/v8/upstream/build/scons/engine/SCons/Tool/intelc.py +0 -490
  309. data/ext/v8/upstream/build/scons/engine/SCons/Tool/ipkg.py +0 -71
  310. data/ext/v8/upstream/build/scons/engine/SCons/Tool/jar.py +0 -110
  311. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javac.py +0 -234
  312. data/ext/v8/upstream/build/scons/engine/SCons/Tool/javah.py +0 -138
  313. data/ext/v8/upstream/build/scons/engine/SCons/Tool/latex.py +0 -79
  314. data/ext/v8/upstream/build/scons/engine/SCons/Tool/lex.py +0 -99
  315. data/ext/v8/upstream/build/scons/engine/SCons/Tool/link.py +0 -121
  316. data/ext/v8/upstream/build/scons/engine/SCons/Tool/linkloc.py +0 -112
  317. data/ext/v8/upstream/build/scons/engine/SCons/Tool/m4.py +0 -63
  318. data/ext/v8/upstream/build/scons/engine/SCons/Tool/masm.py +0 -77
  319. data/ext/v8/upstream/build/scons/engine/SCons/Tool/midl.py +0 -90
  320. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mingw.py +0 -159
  321. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslib.py +0 -64
  322. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mslink.py +0 -266
  323. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mssdk.py +0 -50
  324. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvc.py +0 -269
  325. data/ext/v8/upstream/build/scons/engine/SCons/Tool/msvs.py +0 -1439
  326. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwcc.py +0 -208
  327. data/ext/v8/upstream/build/scons/engine/SCons/Tool/mwld.py +0 -107
  328. data/ext/v8/upstream/build/scons/engine/SCons/Tool/nasm.py +0 -72
  329. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/__init__.py +0 -314
  330. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/ipk.py +0 -185
  331. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/msi.py +0 -526
  332. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/rpm.py +0 -367
  333. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_tarbz2.py +0 -43
  334. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_targz.py +0 -43
  335. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/src_zip.py +0 -43
  336. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/tarbz2.py +0 -44
  337. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/targz.py +0 -44
  338. data/ext/v8/upstream/build/scons/engine/SCons/Tool/packaging/zip.py +0 -44
  339. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdf.py +0 -78
  340. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdflatex.py +0 -83
  341. data/ext/v8/upstream/build/scons/engine/SCons/Tool/pdftex.py +0 -108
  342. data/ext/v8/upstream/build/scons/engine/SCons/Tool/qt.py +0 -336
  343. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rmic.py +0 -121
  344. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpcgen.py +0 -70
  345. data/ext/v8/upstream/build/scons/engine/SCons/Tool/rpm.py +0 -132
  346. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgiar.py +0 -68
  347. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgic++.py +0 -58
  348. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgicc.py +0 -53
  349. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sgilink.py +0 -63
  350. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunar.py +0 -67
  351. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunc++.py +0 -142
  352. data/ext/v8/upstream/build/scons/engine/SCons/Tool/suncc.py +0 -58
  353. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf77.py +0 -63
  354. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf90.py +0 -64
  355. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunf95.py +0 -64
  356. data/ext/v8/upstream/build/scons/engine/SCons/Tool/sunlink.py +0 -77
  357. data/ext/v8/upstream/build/scons/engine/SCons/Tool/swig.py +0 -186
  358. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tar.py +0 -73
  359. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tex.py +0 -805
  360. data/ext/v8/upstream/build/scons/engine/SCons/Tool/textfile.py +0 -175
  361. data/ext/v8/upstream/build/scons/engine/SCons/Tool/tlib.py +0 -53
  362. data/ext/v8/upstream/build/scons/engine/SCons/Tool/wix.py +0 -100
  363. data/ext/v8/upstream/build/scons/engine/SCons/Tool/yacc.py +0 -131
  364. data/ext/v8/upstream/build/scons/engine/SCons/Tool/zip.py +0 -100
  365. data/ext/v8/upstream/build/scons/engine/SCons/Util.py +0 -1645
  366. data/ext/v8/upstream/build/scons/engine/SCons/Variables/BoolVariable.py +0 -91
  367. data/ext/v8/upstream/build/scons/engine/SCons/Variables/EnumVariable.py +0 -107
  368. data/ext/v8/upstream/build/scons/engine/SCons/Variables/ListVariable.py +0 -139
  369. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PackageVariable.py +0 -109
  370. data/ext/v8/upstream/build/scons/engine/SCons/Variables/PathVariable.py +0 -147
  371. data/ext/v8/upstream/build/scons/engine/SCons/Variables/__init__.py +0 -317
  372. data/ext/v8/upstream/build/scons/engine/SCons/Warnings.py +0 -228
  373. data/ext/v8/upstream/build/scons/engine/SCons/__init__.py +0 -49
  374. data/ext/v8/upstream/build/scons/engine/SCons/compat/__init__.py +0 -302
  375. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_UserString.py +0 -98
  376. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_hashlib.py +0 -91
  377. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_itertools.py +0 -124
  378. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_optparse.py +0 -1725
  379. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets.py +0 -583
  380. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_sets15.py +0 -176
  381. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_shlex.py +0 -325
  382. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_subprocess.py +0 -1296
  383. data/ext/v8/upstream/build/scons/engine/SCons/compat/_scons_textwrap.py +0 -382
  384. data/ext/v8/upstream/build/scons/engine/SCons/compat/builtins.py +0 -187
  385. data/ext/v8/upstream/build/scons/engine/SCons/cpp.py +0 -598
  386. data/ext/v8/upstream/build/scons/engine/SCons/dblite.py +0 -248
  387. data/ext/v8/upstream/build/scons/engine/SCons/exitfuncs.py +0 -77
  388. data/ext/v8/upstream/build/scons/install/bin/scons +0 -184
  389. data/ext/v8/upstream/build/scons/install/bin/scons-1.2.0.d20100117 +0 -184
  390. data/ext/v8/upstream/build/scons/install/bin/scons-time +0 -1529
  391. data/ext/v8/upstream/build/scons/install/bin/scons-time-1.2.0.d20100117 +0 -1529
  392. data/ext/v8/upstream/build/scons/install/bin/sconsign +0 -508
  393. data/ext/v8/upstream/build/scons/install/bin/sconsign-1.2.0.d20100117 +0 -508
  394. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.py +0 -1256
  395. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Action.pyc +0 -0
  396. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.py +0 -868
  397. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Builder.pyc +0 -0
  398. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.py +0 -217
  399. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/CacheDir.pyc +0 -0
  400. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.py +0 -794
  401. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Conftest.pyc +0 -0
  402. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.py +0 -237
  403. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Debug.pyc +0 -0
  404. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.py +0 -485
  405. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Defaults.pyc +0 -0
  406. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.py +0 -2327
  407. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Environment.pyc +0 -0
  408. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.py +0 -207
  409. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Errors.pyc +0 -0
  410. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.py +0 -636
  411. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Executor.pyc +0 -0
  412. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.py +0 -435
  413. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Job.pyc +0 -0
  414. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.py +0 -292
  415. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Memoize.pyc +0 -0
  416. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.py +0 -153
  417. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Alias.pyc +0 -0
  418. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.py +0 -3220
  419. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/FS.pyc +0 -0
  420. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.py +0 -128
  421. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/Python.pyc +0 -0
  422. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.py +0 -1341
  423. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Node/__init__.pyc +0 -0
  424. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.py +0 -50
  425. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/BoolOption.pyc +0 -0
  426. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.py +0 -50
  427. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/EnumOption.pyc +0 -0
  428. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.py +0 -50
  429. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/ListOption.pyc +0 -0
  430. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.py +0 -50
  431. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PackageOption.pyc +0 -0
  432. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.py +0 -76
  433. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/PathOption.pyc +0 -0
  434. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.py +0 -74
  435. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Options/__init__.pyc +0 -0
  436. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.py +0 -232
  437. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/PathList.pyc +0 -0
  438. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.py +0 -236
  439. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/__init__.pyc +0 -0
  440. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.py +0 -70
  441. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/aix.pyc +0 -0
  442. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.py +0 -55
  443. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/cygwin.pyc +0 -0
  444. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.py +0 -46
  445. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/darwin.pyc +0 -0
  446. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.py +0 -46
  447. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/hpux.pyc +0 -0
  448. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.py +0 -44
  449. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/irix.pyc +0 -0
  450. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.py +0 -58
  451. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/os2.pyc +0 -0
  452. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.py +0 -264
  453. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/posix.pyc +0 -0
  454. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.py +0 -50
  455. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/sunos.pyc +0 -0
  456. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.py +0 -386
  457. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Platform/win32.pyc +0 -0
  458. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.py +0 -1038
  459. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConf.pyc +0 -0
  460. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.py +0 -381
  461. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/SConsign.pyc +0 -0
  462. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.py +0 -132
  463. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/C.pyc +0 -0
  464. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.py +0 -74
  465. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/D.pyc +0 -0
  466. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.py +0 -111
  467. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Dir.pyc +0 -0
  468. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.py +0 -320
  469. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Fortran.pyc +0 -0
  470. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.py +0 -48
  471. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/IDL.pyc +0 -0
  472. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.py +0 -378
  473. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/LaTeX.pyc +0 -0
  474. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.py +0 -103
  475. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/Prog.pyc +0 -0
  476. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.py +0 -55
  477. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/RC.pyc +0 -0
  478. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.py +0 -415
  479. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Scanner/__init__.pyc +0 -0
  480. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.py +0 -386
  481. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Interactive.pyc +0 -0
  482. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.py +0 -1360
  483. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/Main.pyc +0 -0
  484. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.py +0 -944
  485. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConsOptions.pyc +0 -0
  486. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.py +0 -642
  487. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/SConscript.pyc +0 -0
  488. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.py +0 -414
  489. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Script/__init__.pyc +0 -0
  490. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.py +0 -63
  491. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Sig.pyc +0 -0
  492. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.py +0 -911
  493. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Subst.pyc +0 -0
  494. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.py +0 -1030
  495. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Taskmaster.pyc +0 -0
  496. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.py +0 -61
  497. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/386asm.pyc +0 -0
  498. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.py +0 -65
  499. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/BitKeeper.pyc +0 -0
  500. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.py +0 -73
  501. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/CVS.pyc +0 -0
  502. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.py +0 -247
  503. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/FortranCommon.pyc +0 -0
  504. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.py +0 -324
  505. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/JavaCommon.pyc +0 -0
  506. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.py +0 -56
  507. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/__init__.pyc +0 -0
  508. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.py +0 -61
  509. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/arch.pyc +0 -0
  510. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.py +0 -210
  511. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/common.pyc +0 -0
  512. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.py +0 -84
  513. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/netframework.pyc +0 -0
  514. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.py +0 -321
  515. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/sdk.pyc +0 -0
  516. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.py +0 -367
  517. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vc.pyc +0 -0
  518. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.py +0 -497
  519. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/MSCommon/vs.pyc +0 -0
  520. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.py +0 -104
  521. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Perforce.pyc +0 -0
  522. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.py +0 -138
  523. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/PharLapCommon.pyc +0 -0
  524. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.py +0 -64
  525. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/RCS.pyc +0 -0
  526. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.py +0 -64
  527. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/SCCS.pyc +0 -0
  528. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.py +0 -71
  529. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/Subversion.pyc +0 -0
  530. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.py +0 -675
  531. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/__init__.pyc +0 -0
  532. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.py +0 -82
  533. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixc++.pyc +0 -0
  534. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.py +0 -74
  535. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixcc.pyc +0 -0
  536. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.py +0 -80
  537. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixf77.pyc +0 -0
  538. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.py +0 -76
  539. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/aixlink.pyc +0 -0
  540. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.py +0 -71
  541. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/applelink.pyc +0 -0
  542. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.py +0 -63
  543. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ar.pyc +0 -0
  544. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.py +0 -78
  545. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/as.pyc +0 -0
  546. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.py +0 -82
  547. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/bcc32.pyc +0 -0
  548. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.py +0 -99
  549. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/c++.pyc +0 -0
  550. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.py +0 -114
  551. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cc.pyc +0 -0
  552. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.py +0 -58
  553. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/cvf.pyc +0 -0
  554. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.py +0 -50
  555. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/default.pyc +0 -0
  556. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.py +0 -224
  557. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dmd.pyc +0 -0
  558. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.py +0 -64
  559. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvi.pyc +0 -0
  560. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.py +0 -125
  561. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvipdf.pyc +0 -0
  562. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.py +0 -94
  563. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/dvips.pyc +0 -0
  564. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.py +0 -62
  565. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f77.pyc +0 -0
  566. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.py +0 -62
  567. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f90.pyc +0 -0
  568. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.py +0 -63
  569. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/f95.pyc +0 -0
  570. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.py +0 -98
  571. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/filesystem.pyc +0 -0
  572. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.py +0 -63
  573. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/fortran.pyc +0 -0
  574. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.py +0 -90
  575. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g++.pyc +0 -0
  576. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.py +0 -73
  577. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/g77.pyc +0 -0
  578. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.py +0 -53
  579. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gas.pyc +0 -0
  580. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.py +0 -80
  581. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gcc.pyc +0 -0
  582. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.py +0 -64
  583. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gfortran.pyc +0 -0
  584. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.py +0 -63
  585. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gnulink.pyc +0 -0
  586. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.py +0 -81
  587. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/gs.pyc +0 -0
  588. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.py +0 -85
  589. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpc++.pyc +0 -0
  590. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.py +0 -53
  591. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hpcc.pyc +0 -0
  592. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.py +0 -77
  593. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/hplink.pyc +0 -0
  594. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.py +0 -59
  595. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icc.pyc +0 -0
  596. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.py +0 -52
  597. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/icl.pyc +0 -0
  598. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.py +0 -72
  599. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifl.pyc +0 -0
  600. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.py +0 -90
  601. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ifort.pyc +0 -0
  602. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.py +0 -59
  603. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink.pyc +0 -0
  604. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.py +0 -60
  605. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ilink32.pyc +0 -0
  606. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.py +0 -229
  607. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/install.pyc +0 -0
  608. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.py +0 -490
  609. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/intelc.pyc +0 -0
  610. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.py +0 -71
  611. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/ipkg.pyc +0 -0
  612. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.py +0 -110
  613. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/jar.pyc +0 -0
  614. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.py +0 -234
  615. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javac.pyc +0 -0
  616. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.py +0 -138
  617. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/javah.pyc +0 -0
  618. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.py +0 -79
  619. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/latex.pyc +0 -0
  620. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.py +0 -99
  621. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/lex.pyc +0 -0
  622. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.py +0 -121
  623. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/link.pyc +0 -0
  624. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.py +0 -112
  625. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/linkloc.pyc +0 -0
  626. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.py +0 -63
  627. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/m4.pyc +0 -0
  628. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.py +0 -77
  629. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/masm.pyc +0 -0
  630. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.py +0 -90
  631. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/midl.pyc +0 -0
  632. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.py +0 -159
  633. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mingw.pyc +0 -0
  634. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.py +0 -64
  635. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslib.pyc +0 -0
  636. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.py +0 -266
  637. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mslink.pyc +0 -0
  638. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.py +0 -50
  639. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mssdk.pyc +0 -0
  640. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.py +0 -269
  641. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvc.pyc +0 -0
  642. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.py +0 -1439
  643. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/msvs.pyc +0 -0
  644. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.py +0 -208
  645. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwcc.pyc +0 -0
  646. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.py +0 -107
  647. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/mwld.pyc +0 -0
  648. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.py +0 -72
  649. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/nasm.pyc +0 -0
  650. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.py +0 -314
  651. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/__init__.pyc +0 -0
  652. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.py +0 -185
  653. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/ipk.pyc +0 -0
  654. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.py +0 -526
  655. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/msi.pyc +0 -0
  656. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.py +0 -367
  657. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/rpm.pyc +0 -0
  658. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.py +0 -43
  659. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_tarbz2.pyc +0 -0
  660. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.py +0 -43
  661. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_targz.pyc +0 -0
  662. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.py +0 -43
  663. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/src_zip.pyc +0 -0
  664. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.py +0 -44
  665. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/tarbz2.pyc +0 -0
  666. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.py +0 -44
  667. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/targz.pyc +0 -0
  668. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.py +0 -44
  669. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/packaging/zip.pyc +0 -0
  670. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.py +0 -78
  671. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdf.pyc +0 -0
  672. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.py +0 -83
  673. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdflatex.pyc +0 -0
  674. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.py +0 -108
  675. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/pdftex.pyc +0 -0
  676. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.py +0 -336
  677. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/qt.pyc +0 -0
  678. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.py +0 -121
  679. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rmic.pyc +0 -0
  680. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.py +0 -70
  681. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpcgen.pyc +0 -0
  682. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.py +0 -132
  683. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/rpm.pyc +0 -0
  684. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.py +0 -68
  685. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgiar.pyc +0 -0
  686. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.py +0 -58
  687. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgic++.pyc +0 -0
  688. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.py +0 -53
  689. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgicc.pyc +0 -0
  690. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.py +0 -63
  691. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sgilink.pyc +0 -0
  692. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.py +0 -67
  693. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunar.pyc +0 -0
  694. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.py +0 -142
  695. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunc++.pyc +0 -0
  696. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.py +0 -58
  697. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/suncc.pyc +0 -0
  698. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.py +0 -63
  699. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf77.pyc +0 -0
  700. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.py +0 -64
  701. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf90.pyc +0 -0
  702. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.py +0 -64
  703. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunf95.pyc +0 -0
  704. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.py +0 -77
  705. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/sunlink.pyc +0 -0
  706. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.py +0 -186
  707. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/swig.pyc +0 -0
  708. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.py +0 -73
  709. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tar.pyc +0 -0
  710. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.py +0 -805
  711. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tex.pyc +0 -0
  712. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.py +0 -175
  713. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/textfile.pyc +0 -0
  714. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.py +0 -53
  715. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/tlib.pyc +0 -0
  716. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.py +0 -100
  717. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/wix.pyc +0 -0
  718. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.py +0 -131
  719. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/yacc.pyc +0 -0
  720. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.py +0 -100
  721. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Tool/zip.pyc +0 -0
  722. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.py +0 -1645
  723. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Util.pyc +0 -0
  724. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.py +0 -91
  725. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/BoolVariable.pyc +0 -0
  726. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.py +0 -107
  727. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/EnumVariable.pyc +0 -0
  728. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.py +0 -139
  729. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/ListVariable.pyc +0 -0
  730. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.py +0 -109
  731. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PackageVariable.pyc +0 -0
  732. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.py +0 -147
  733. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/PathVariable.pyc +0 -0
  734. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.py +0 -317
  735. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Variables/__init__.pyc +0 -0
  736. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.py +0 -228
  737. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/Warnings.pyc +0 -0
  738. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.py +0 -49
  739. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/__init__.pyc +0 -0
  740. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.py +0 -302
  741. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/__init__.pyc +0 -0
  742. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.py +0 -98
  743. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_UserString.pyc +0 -0
  744. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.py +0 -91
  745. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_hashlib.pyc +0 -0
  746. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.py +0 -124
  747. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_itertools.pyc +0 -0
  748. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.py +0 -1725
  749. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_optparse.pyc +0 -0
  750. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.py +0 -583
  751. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets.pyc +0 -0
  752. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.py +0 -176
  753. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_sets15.pyc +0 -0
  754. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.py +0 -325
  755. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_shlex.pyc +0 -0
  756. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.py +0 -1296
  757. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_subprocess.pyc +0 -0
  758. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.py +0 -382
  759. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/_scons_textwrap.pyc +0 -0
  760. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.py +0 -187
  761. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/compat/builtins.pyc +0 -0
  762. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.py +0 -598
  763. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/cpp.pyc +0 -0
  764. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.py +0 -248
  765. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/dblite.pyc +0 -0
  766. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.py +0 -77
  767. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/SCons/exitfuncs.pyc +0 -0
  768. data/ext/v8/upstream/build/scons/install/lib/scons-1.2.0.d20100117/scons-1.2.0.d20100117.egg-info +0 -13
  769. data/ext/v8/upstream/build/scons/install/man/man1/scons-time.1 +0 -1017
  770. data/ext/v8/upstream/build/scons/install/man/man1/scons.1 +0 -15179
  771. data/ext/v8/upstream/build/scons/install/man/man1/sconsign.1 +0 -208
  772. data/ext/v8/upstream/build/scons/os_spawnv_fix.diff +0 -83
  773. data/ext/v8/upstream/build/scons/scons-time.1 +0 -1017
  774. data/ext/v8/upstream/build/scons/scons.1 +0 -15179
  775. data/ext/v8/upstream/build/scons/sconsign.1 +0 -208
  776. data/ext/v8/upstream/build/scons/script/scons +0 -184
  777. data/ext/v8/upstream/build/scons/script/scons-time +0 -1529
  778. data/ext/v8/upstream/build/scons/script/scons.bat +0 -31
  779. data/ext/v8/upstream/build/scons/script/sconsign +0 -508
  780. data/ext/v8/upstream/build/scons/setup.cfg +0 -6
  781. data/ext/v8/upstream/build/scons/setup.py +0 -427
  782. data/ext/v8/upstream/build/v8/.gitignore +0 -26
  783. data/ext/v8/upstream/build/v8/AUTHORS +0 -31
  784. data/ext/v8/upstream/build/v8/ChangeLog +0 -1916
  785. data/ext/v8/upstream/build/v8/LICENSE +0 -55
  786. data/ext/v8/upstream/build/v8/SConstruct +0 -1158
  787. data/ext/v8/upstream/build/v8/SConstruct.orig +0 -1154
  788. data/ext/v8/upstream/build/v8/include/v8-debug.h +0 -381
  789. data/ext/v8/upstream/build/v8/include/v8-profiler.h +0 -353
  790. data/ext/v8/upstream/build/v8/src/SConscript +0 -330
  791. data/ext/v8/upstream/build/v8/src/accessors.cc +0 -661
  792. data/ext/v8/upstream/build/v8/src/accessors.h +0 -114
  793. data/ext/v8/upstream/build/v8/src/allocation.cc +0 -198
  794. data/ext/v8/upstream/build/v8/src/allocation.h +0 -169
  795. data/ext/v8/upstream/build/v8/src/api.cc +0 -4795
  796. data/ext/v8/upstream/build/v8/src/api.h +0 -485
  797. data/ext/v8/upstream/build/v8/src/apinatives.js +0 -110
  798. data/ext/v8/upstream/build/v8/src/apiutils.h +0 -69
  799. data/ext/v8/upstream/build/v8/src/arguments.h +0 -96
  800. data/ext/v8/upstream/build/v8/src/arm/assembler-arm-inl.h +0 -305
  801. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.cc +0 -2580
  802. data/ext/v8/upstream/build/v8/src/arm/assembler-arm.h +0 -1275
  803. data/ext/v8/upstream/build/v8/src/arm/builtins-arm.cc +0 -1320
  804. data/ext/v8/upstream/build/v8/src/arm/codegen-arm-inl.h +0 -48
  805. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.cc +0 -11398
  806. data/ext/v8/upstream/build/v8/src/arm/codegen-arm.h +0 -1102
  807. data/ext/v8/upstream/build/v8/src/arm/constants-arm.cc +0 -154
  808. data/ext/v8/upstream/build/v8/src/arm/constants-arm.h +0 -388
  809. data/ext/v8/upstream/build/v8/src/arm/cpu-arm.cc +0 -142
  810. data/ext/v8/upstream/build/v8/src/arm/debug-arm.cc +0 -309
  811. data/ext/v8/upstream/build/v8/src/arm/disasm-arm.cc +0 -1459
  812. data/ext/v8/upstream/build/v8/src/arm/fast-codegen-arm.cc +0 -241
  813. data/ext/v8/upstream/build/v8/src/arm/frames-arm.cc +0 -123
  814. data/ext/v8/upstream/build/v8/src/arm/frames-arm.h +0 -162
  815. data/ext/v8/upstream/build/v8/src/arm/full-codegen-arm.cc +0 -3178
  816. data/ext/v8/upstream/build/v8/src/arm/ic-arm.cc +0 -2258
  817. data/ext/v8/upstream/build/v8/src/arm/jump-target-arm.cc +0 -164
  818. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.cc +0 -1892
  819. data/ext/v8/upstream/build/v8/src/arm/macro-assembler-arm.h +0 -727
  820. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.cc +0 -1261
  821. data/ext/v8/upstream/build/v8/src/arm/regexp-macro-assembler-arm.h +0 -266
  822. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm-inl.h +0 -100
  823. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.cc +0 -63
  824. data/ext/v8/upstream/build/v8/src/arm/register-allocator-arm.h +0 -44
  825. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.cc +0 -2822
  826. data/ext/v8/upstream/build/v8/src/arm/simulator-arm.h +0 -361
  827. data/ext/v8/upstream/build/v8/src/arm/stub-cache-arm.cc +0 -2387
  828. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm-inl.h +0 -59
  829. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.cc +0 -834
  830. data/ext/v8/upstream/build/v8/src/arm/virtual-frame-arm.h +0 -519
  831. data/ext/v8/upstream/build/v8/src/array.js +0 -1127
  832. data/ext/v8/upstream/build/v8/src/assembler.cc +0 -801
  833. data/ext/v8/upstream/build/v8/src/assembler.h +0 -573
  834. data/ext/v8/upstream/build/v8/src/ast-inl.h +0 -81
  835. data/ext/v8/upstream/build/v8/src/ast.cc +0 -1152
  836. data/ext/v8/upstream/build/v8/src/ast.h +0 -2106
  837. data/ext/v8/upstream/build/v8/src/bootstrapper.cc +0 -1819
  838. data/ext/v8/upstream/build/v8/src/bootstrapper.h +0 -118
  839. data/ext/v8/upstream/build/v8/src/builtins.cc +0 -1529
  840. data/ext/v8/upstream/build/v8/src/builtins.h +0 -263
  841. data/ext/v8/upstream/build/v8/src/bytecodes-irregexp.h +0 -104
  842. data/ext/v8/upstream/build/v8/src/cached-powers.h +0 -119
  843. data/ext/v8/upstream/build/v8/src/char-predicates-inl.h +0 -86
  844. data/ext/v8/upstream/build/v8/src/char-predicates.h +0 -65
  845. data/ext/v8/upstream/build/v8/src/checks.cc +0 -100
  846. data/ext/v8/upstream/build/v8/src/checks.h +0 -310
  847. data/ext/v8/upstream/build/v8/src/circular-queue-inl.h +0 -53
  848. data/ext/v8/upstream/build/v8/src/circular-queue.cc +0 -121
  849. data/ext/v8/upstream/build/v8/src/circular-queue.h +0 -103
  850. data/ext/v8/upstream/build/v8/src/code-stubs.cc +0 -177
  851. data/ext/v8/upstream/build/v8/src/code-stubs.h +0 -177
  852. data/ext/v8/upstream/build/v8/src/code.h +0 -68
  853. data/ext/v8/upstream/build/v8/src/codegen-inl.h +0 -60
  854. data/ext/v8/upstream/build/v8/src/codegen.cc +0 -516
  855. data/ext/v8/upstream/build/v8/src/codegen.h +0 -897
  856. data/ext/v8/upstream/build/v8/src/compilation-cache.cc +0 -562
  857. data/ext/v8/upstream/build/v8/src/compilation-cache.h +0 -102
  858. data/ext/v8/upstream/build/v8/src/compiler.cc +0 -654
  859. data/ext/v8/upstream/build/v8/src/compiler.h +0 -299
  860. data/ext/v8/upstream/build/v8/src/contexts.cc +0 -256
  861. data/ext/v8/upstream/build/v8/src/contexts.h +0 -342
  862. data/ext/v8/upstream/build/v8/src/conversions-inl.h +0 -110
  863. data/ext/v8/upstream/build/v8/src/conversions.cc +0 -1119
  864. data/ext/v8/upstream/build/v8/src/conversions.h +0 -123
  865. data/ext/v8/upstream/build/v8/src/counters.cc +0 -78
  866. data/ext/v8/upstream/build/v8/src/counters.h +0 -239
  867. data/ext/v8/upstream/build/v8/src/cpu-profiler-inl.h +0 -100
  868. data/ext/v8/upstream/build/v8/src/cpu-profiler.cc +0 -538
  869. data/ext/v8/upstream/build/v8/src/cpu-profiler.h +0 -285
  870. data/ext/v8/upstream/build/v8/src/cpu.h +0 -65
  871. data/ext/v8/upstream/build/v8/src/d8-debug.cc +0 -356
  872. data/ext/v8/upstream/build/v8/src/d8-debug.h +0 -155
  873. data/ext/v8/upstream/build/v8/src/d8-posix.cc +0 -693
  874. data/ext/v8/upstream/build/v8/src/d8-readline.cc +0 -128
  875. data/ext/v8/upstream/build/v8/src/d8-windows.cc +0 -42
  876. data/ext/v8/upstream/build/v8/src/d8.cc +0 -783
  877. data/ext/v8/upstream/build/v8/src/d8.h +0 -227
  878. data/ext/v8/upstream/build/v8/src/d8.js +0 -1683
  879. data/ext/v8/upstream/build/v8/src/data-flow.cc +0 -758
  880. data/ext/v8/upstream/build/v8/src/data-flow.h +0 -278
  881. data/ext/v8/upstream/build/v8/src/date.js +0 -1059
  882. data/ext/v8/upstream/build/v8/src/dateparser-inl.h +0 -123
  883. data/ext/v8/upstream/build/v8/src/dateparser.cc +0 -178
  884. data/ext/v8/upstream/build/v8/src/dateparser.h +0 -244
  885. data/ext/v8/upstream/build/v8/src/debug-agent.cc +0 -427
  886. data/ext/v8/upstream/build/v8/src/debug-agent.h +0 -129
  887. data/ext/v8/upstream/build/v8/src/debug-debugger.js +0 -2227
  888. data/ext/v8/upstream/build/v8/src/debug.cc +0 -3005
  889. data/ext/v8/upstream/build/v8/src/debug.h +0 -993
  890. data/ext/v8/upstream/build/v8/src/disasm.h +0 -77
  891. data/ext/v8/upstream/build/v8/src/disassembler.cc +0 -312
  892. data/ext/v8/upstream/build/v8/src/disassembler.h +0 -56
  893. data/ext/v8/upstream/build/v8/src/diy-fp.cc +0 -58
  894. data/ext/v8/upstream/build/v8/src/diy-fp.h +0 -117
  895. data/ext/v8/upstream/build/v8/src/double.h +0 -169
  896. data/ext/v8/upstream/build/v8/src/dtoa-config.c +0 -92
  897. data/ext/v8/upstream/build/v8/src/dtoa.cc +0 -77
  898. data/ext/v8/upstream/build/v8/src/dtoa.h +0 -81
  899. data/ext/v8/upstream/build/v8/src/execution.cc +0 -809
  900. data/ext/v8/upstream/build/v8/src/execution.h +0 -336
  901. data/ext/v8/upstream/build/v8/src/factory.cc +0 -1003
  902. data/ext/v8/upstream/build/v8/src/factory.h +0 -410
  903. data/ext/v8/upstream/build/v8/src/fast-codegen.cc +0 -746
  904. data/ext/v8/upstream/build/v8/src/fast-codegen.h +0 -161
  905. data/ext/v8/upstream/build/v8/src/fast-dtoa.cc +0 -505
  906. data/ext/v8/upstream/build/v8/src/fast-dtoa.h +0 -58
  907. data/ext/v8/upstream/build/v8/src/fixed-dtoa.cc +0 -405
  908. data/ext/v8/upstream/build/v8/src/fixed-dtoa.h +0 -55
  909. data/ext/v8/upstream/build/v8/src/flag-definitions.h +0 -455
  910. data/ext/v8/upstream/build/v8/src/flags.cc +0 -551
  911. data/ext/v8/upstream/build/v8/src/flags.h +0 -81
  912. data/ext/v8/upstream/build/v8/src/flow-graph.cc +0 -763
  913. data/ext/v8/upstream/build/v8/src/flow-graph.h +0 -180
  914. data/ext/v8/upstream/build/v8/src/frame-element.cc +0 -42
  915. data/ext/v8/upstream/build/v8/src/frame-element.h +0 -273
  916. data/ext/v8/upstream/build/v8/src/frames-inl.h +0 -217
  917. data/ext/v8/upstream/build/v8/src/frames.cc +0 -826
  918. data/ext/v8/upstream/build/v8/src/frames.h +0 -682
  919. data/ext/v8/upstream/build/v8/src/full-codegen.cc +0 -1443
  920. data/ext/v8/upstream/build/v8/src/full-codegen.h +0 -548
  921. data/ext/v8/upstream/build/v8/src/func-name-inferrer.cc +0 -76
  922. data/ext/v8/upstream/build/v8/src/func-name-inferrer.h +0 -135
  923. data/ext/v8/upstream/build/v8/src/global-handles.cc +0 -520
  924. data/ext/v8/upstream/build/v8/src/global-handles.h +0 -180
  925. data/ext/v8/upstream/build/v8/src/globals.h +0 -669
  926. data/ext/v8/upstream/build/v8/src/handles-inl.h +0 -76
  927. data/ext/v8/upstream/build/v8/src/handles.cc +0 -825
  928. data/ext/v8/upstream/build/v8/src/handles.h +0 -393
  929. data/ext/v8/upstream/build/v8/src/hashmap.cc +0 -226
  930. data/ext/v8/upstream/build/v8/src/hashmap.h +0 -120
  931. data/ext/v8/upstream/build/v8/src/heap-inl.h +0 -493
  932. data/ext/v8/upstream/build/v8/src/heap-profiler.cc +0 -779
  933. data/ext/v8/upstream/build/v8/src/heap-profiler.h +0 -323
  934. data/ext/v8/upstream/build/v8/src/heap.cc +0 -4994
  935. data/ext/v8/upstream/build/v8/src/heap.h +0 -1984
  936. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32-inl.h +0 -360
  937. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.cc +0 -2600
  938. data/ext/v8/upstream/build/v8/src/ia32/assembler-ia32.h +0 -969
  939. data/ext/v8/upstream/build/v8/src/ia32/builtins-ia32.cc +0 -1261
  940. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32-inl.h +0 -46
  941. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.cc +0 -13968
  942. data/ext/v8/upstream/build/v8/src/ia32/codegen-ia32.h +0 -1097
  943. data/ext/v8/upstream/build/v8/src/ia32/cpu-ia32.cc +0 -83
  944. data/ext/v8/upstream/build/v8/src/ia32/debug-ia32.cc +0 -309
  945. data/ext/v8/upstream/build/v8/src/ia32/disasm-ia32.cc +0 -1471
  946. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.cc +0 -954
  947. data/ext/v8/upstream/build/v8/src/ia32/fast-codegen-ia32.h +0 -155
  948. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.cc +0 -115
  949. data/ext/v8/upstream/build/v8/src/ia32/frames-ia32.h +0 -135
  950. data/ext/v8/upstream/build/v8/src/ia32/full-codegen-ia32.cc +0 -3281
  951. data/ext/v8/upstream/build/v8/src/ia32/ic-ia32.cc +0 -1966
  952. data/ext/v8/upstream/build/v8/src/ia32/jump-target-ia32.cc +0 -437
  953. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.cc +0 -1610
  954. data/ext/v8/upstream/build/v8/src/ia32/macro-assembler-ia32.h +0 -610
  955. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.cc +0 -1247
  956. data/ext/v8/upstream/build/v8/src/ia32/regexp-macro-assembler-ia32.h +0 -214
  957. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32-inl.h +0 -82
  958. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.cc +0 -157
  959. data/ext/v8/upstream/build/v8/src/ia32/register-allocator-ia32.h +0 -43
  960. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.cc +0 -30
  961. data/ext/v8/upstream/build/v8/src/ia32/simulator-ia32.h +0 -62
  962. data/ext/v8/upstream/build/v8/src/ia32/stub-cache-ia32.cc +0 -2750
  963. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.cc +0 -1334
  964. data/ext/v8/upstream/build/v8/src/ia32/virtual-frame-ia32.h +0 -627
  965. data/ext/v8/upstream/build/v8/src/ic-inl.h +0 -120
  966. data/ext/v8/upstream/build/v8/src/ic.cc +0 -1827
  967. data/ext/v8/upstream/build/v8/src/ic.h +0 -515
  968. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.cc +0 -646
  969. data/ext/v8/upstream/build/v8/src/interpreter-irregexp.h +0 -48
  970. data/ext/v8/upstream/build/v8/src/json.js +0 -268
  971. data/ext/v8/upstream/build/v8/src/jsregexp.cc +0 -5283
  972. data/ext/v8/upstream/build/v8/src/jsregexp.h +0 -1463
  973. data/ext/v8/upstream/build/v8/src/jump-target-heavy-inl.h +0 -51
  974. data/ext/v8/upstream/build/v8/src/jump-target-heavy.cc +0 -429
  975. data/ext/v8/upstream/build/v8/src/jump-target-heavy.h +0 -244
  976. data/ext/v8/upstream/build/v8/src/jump-target-inl.h +0 -48
  977. data/ext/v8/upstream/build/v8/src/jump-target-light-inl.h +0 -56
  978. data/ext/v8/upstream/build/v8/src/jump-target-light.cc +0 -110
  979. data/ext/v8/upstream/build/v8/src/jump-target-light.h +0 -192
  980. data/ext/v8/upstream/build/v8/src/jump-target.cc +0 -91
  981. data/ext/v8/upstream/build/v8/src/jump-target.h +0 -90
  982. data/ext/v8/upstream/build/v8/src/list-inl.h +0 -166
  983. data/ext/v8/upstream/build/v8/src/list.h +0 -159
  984. data/ext/v8/upstream/build/v8/src/liveedit-debugger.js +0 -1057
  985. data/ext/v8/upstream/build/v8/src/liveedit.cc +0 -1480
  986. data/ext/v8/upstream/build/v8/src/liveedit.h +0 -170
  987. data/ext/v8/upstream/build/v8/src/log-inl.h +0 -59
  988. data/ext/v8/upstream/build/v8/src/log-utils.cc +0 -497
  989. data/ext/v8/upstream/build/v8/src/log-utils.h +0 -289
  990. data/ext/v8/upstream/build/v8/src/log.cc +0 -1561
  991. data/ext/v8/upstream/build/v8/src/log.h +0 -384
  992. data/ext/v8/upstream/build/v8/src/macro-assembler.h +0 -86
  993. data/ext/v8/upstream/build/v8/src/macros.py +0 -177
  994. data/ext/v8/upstream/build/v8/src/mark-compact.cc +0 -2330
  995. data/ext/v8/upstream/build/v8/src/mark-compact.h +0 -451
  996. data/ext/v8/upstream/build/v8/src/math.js +0 -264
  997. data/ext/v8/upstream/build/v8/src/memory.h +0 -74
  998. data/ext/v8/upstream/build/v8/src/messages.cc +0 -183
  999. data/ext/v8/upstream/build/v8/src/messages.h +0 -113
  1000. data/ext/v8/upstream/build/v8/src/messages.js +0 -982
  1001. data/ext/v8/upstream/build/v8/src/mips/assembler-mips-inl.h +0 -215
  1002. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.cc +0 -1219
  1003. data/ext/v8/upstream/build/v8/src/mips/assembler-mips.h +0 -668
  1004. data/ext/v8/upstream/build/v8/src/mips/builtins-mips.cc +0 -205
  1005. data/ext/v8/upstream/build/v8/src/mips/codegen-mips-inl.h +0 -70
  1006. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.cc +0 -1437
  1007. data/ext/v8/upstream/build/v8/src/mips/codegen-mips.h +0 -434
  1008. data/ext/v8/upstream/build/v8/src/mips/constants-mips.cc +0 -328
  1009. data/ext/v8/upstream/build/v8/src/mips/constants-mips.h +0 -525
  1010. data/ext/v8/upstream/build/v8/src/mips/cpu-mips.cc +0 -73
  1011. data/ext/v8/upstream/build/v8/src/mips/debug-mips.cc +0 -131
  1012. data/ext/v8/upstream/build/v8/src/mips/disasm-mips.cc +0 -787
  1013. data/ext/v8/upstream/build/v8/src/mips/fast-codegen-mips.cc +0 -77
  1014. data/ext/v8/upstream/build/v8/src/mips/frames-mips.cc +0 -102
  1015. data/ext/v8/upstream/build/v8/src/mips/frames-mips.h +0 -164
  1016. data/ext/v8/upstream/build/v8/src/mips/full-codegen-mips.cc +0 -277
  1017. data/ext/v8/upstream/build/v8/src/mips/ic-mips.cc +0 -220
  1018. data/ext/v8/upstream/build/v8/src/mips/jump-target-mips.cc +0 -175
  1019. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.cc +0 -1326
  1020. data/ext/v8/upstream/build/v8/src/mips/macro-assembler-mips.h +0 -461
  1021. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips-inl.h +0 -137
  1022. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.cc +0 -63
  1023. data/ext/v8/upstream/build/v8/src/mips/register-allocator-mips.h +0 -46
  1024. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.cc +0 -1651
  1025. data/ext/v8/upstream/build/v8/src/mips/simulator-mips.h +0 -311
  1026. data/ext/v8/upstream/build/v8/src/mips/stub-cache-mips.cc +0 -403
  1027. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.cc +0 -319
  1028. data/ext/v8/upstream/build/v8/src/mips/virtual-frame-mips.h +0 -548
  1029. data/ext/v8/upstream/build/v8/src/mirror-debugger.js +0 -2380
  1030. data/ext/v8/upstream/build/v8/src/mksnapshot.cc +0 -256
  1031. data/ext/v8/upstream/build/v8/src/natives.h +0 -63
  1032. data/ext/v8/upstream/build/v8/src/objects-debug.cc +0 -1366
  1033. data/ext/v8/upstream/build/v8/src/objects-inl.h +0 -3333
  1034. data/ext/v8/upstream/build/v8/src/objects.cc +0 -8820
  1035. data/ext/v8/upstream/build/v8/src/objects.h +0 -5373
  1036. data/ext/v8/upstream/build/v8/src/oprofile-agent.cc +0 -108
  1037. data/ext/v8/upstream/build/v8/src/oprofile-agent.h +0 -77
  1038. data/ext/v8/upstream/build/v8/src/parser.cc +0 -5207
  1039. data/ext/v8/upstream/build/v8/src/parser.h +0 -197
  1040. data/ext/v8/upstream/build/v8/src/platform-freebsd.cc +0 -667
  1041. data/ext/v8/upstream/build/v8/src/platform-linux.cc +0 -862
  1042. data/ext/v8/upstream/build/v8/src/platform-macos.cc +0 -665
  1043. data/ext/v8/upstream/build/v8/src/platform-nullos.cc +0 -454
  1044. data/ext/v8/upstream/build/v8/src/platform-openbsd.cc +0 -622
  1045. data/ext/v8/upstream/build/v8/src/platform-posix.cc +0 -362
  1046. data/ext/v8/upstream/build/v8/src/platform-solaris.cc +0 -653
  1047. data/ext/v8/upstream/build/v8/src/platform-win32.cc +0 -1911
  1048. data/ext/v8/upstream/build/v8/src/platform.h +0 -577
  1049. data/ext/v8/upstream/build/v8/src/powers-ten.h +0 -2461
  1050. data/ext/v8/upstream/build/v8/src/prettyprinter.cc +0 -1531
  1051. data/ext/v8/upstream/build/v8/src/prettyprinter.h +0 -221
  1052. data/ext/v8/upstream/build/v8/src/profile-generator-inl.h +0 -148
  1053. data/ext/v8/upstream/build/v8/src/profile-generator.cc +0 -1830
  1054. data/ext/v8/upstream/build/v8/src/profile-generator.h +0 -853
  1055. data/ext/v8/upstream/build/v8/src/property.cc +0 -96
  1056. data/ext/v8/upstream/build/v8/src/property.h +0 -315
  1057. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp-inl.h +0 -78
  1058. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.cc +0 -464
  1059. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-irregexp.h +0 -141
  1060. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.cc +0 -356
  1061. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler-tracer.h +0 -103
  1062. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.cc +0 -261
  1063. data/ext/v8/upstream/build/v8/src/regexp-macro-assembler.h +0 -228
  1064. data/ext/v8/upstream/build/v8/src/regexp-stack.cc +0 -103
  1065. data/ext/v8/upstream/build/v8/src/regexp-stack.h +0 -123
  1066. data/ext/v8/upstream/build/v8/src/regexp.js +0 -549
  1067. data/ext/v8/upstream/build/v8/src/register-allocator-inl.h +0 -141
  1068. data/ext/v8/upstream/build/v8/src/register-allocator.cc +0 -104
  1069. data/ext/v8/upstream/build/v8/src/register-allocator.h +0 -320
  1070. data/ext/v8/upstream/build/v8/src/rewriter.cc +0 -1038
  1071. data/ext/v8/upstream/build/v8/src/rewriter.h +0 -54
  1072. data/ext/v8/upstream/build/v8/src/runtime.cc +0 -10599
  1073. data/ext/v8/upstream/build/v8/src/runtime.h +0 -459
  1074. data/ext/v8/upstream/build/v8/src/runtime.js +0 -629
  1075. data/ext/v8/upstream/build/v8/src/scanner.cc +0 -1346
  1076. data/ext/v8/upstream/build/v8/src/scanner.h +0 -503
  1077. data/ext/v8/upstream/build/v8/src/scopeinfo.cc +0 -637
  1078. data/ext/v8/upstream/build/v8/src/scopeinfo.h +0 -233
  1079. data/ext/v8/upstream/build/v8/src/scopes.cc +0 -962
  1080. data/ext/v8/upstream/build/v8/src/scopes.h +0 -400
  1081. data/ext/v8/upstream/build/v8/src/serialize.cc +0 -1461
  1082. data/ext/v8/upstream/build/v8/src/serialize.h +0 -581
  1083. data/ext/v8/upstream/build/v8/src/shell.h +0 -55
  1084. data/ext/v8/upstream/build/v8/src/simulator.h +0 -43
  1085. data/ext/v8/upstream/build/v8/src/smart-pointer.h +0 -109
  1086. data/ext/v8/upstream/build/v8/src/snapshot-common.cc +0 -82
  1087. data/ext/v8/upstream/build/v8/src/snapshot-empty.cc +0 -50
  1088. data/ext/v8/upstream/build/v8/src/snapshot.h +0 -71
  1089. data/ext/v8/upstream/build/v8/src/spaces-inl.h +0 -483
  1090. data/ext/v8/upstream/build/v8/src/spaces.cc +0 -2901
  1091. data/ext/v8/upstream/build/v8/src/spaces.h +0 -2197
  1092. data/ext/v8/upstream/build/v8/src/splay-tree-inl.h +0 -310
  1093. data/ext/v8/upstream/build/v8/src/splay-tree.h +0 -203
  1094. data/ext/v8/upstream/build/v8/src/string-stream.cc +0 -584
  1095. data/ext/v8/upstream/build/v8/src/string-stream.h +0 -189
  1096. data/ext/v8/upstream/build/v8/src/string.js +0 -1006
  1097. data/ext/v8/upstream/build/v8/src/stub-cache.cc +0 -1379
  1098. data/ext/v8/upstream/build/v8/src/stub-cache.h +0 -756
  1099. data/ext/v8/upstream/build/v8/src/third_party/dtoa/COPYING +0 -15
  1100. data/ext/v8/upstream/build/v8/src/third_party/dtoa/dtoa.c +0 -3334
  1101. data/ext/v8/upstream/build/v8/src/third_party/valgrind/valgrind.h +0 -3925
  1102. data/ext/v8/upstream/build/v8/src/token.cc +0 -56
  1103. data/ext/v8/upstream/build/v8/src/token.h +0 -270
  1104. data/ext/v8/upstream/build/v8/src/top.cc +0 -1067
  1105. data/ext/v8/upstream/build/v8/src/top.h +0 -463
  1106. data/ext/v8/upstream/build/v8/src/type-info.cc +0 -53
  1107. data/ext/v8/upstream/build/v8/src/type-info.h +0 -244
  1108. data/ext/v8/upstream/build/v8/src/unbound-queue-inl.h +0 -95
  1109. data/ext/v8/upstream/build/v8/src/unbound-queue.h +0 -67
  1110. data/ext/v8/upstream/build/v8/src/unicode-inl.h +0 -238
  1111. data/ext/v8/upstream/build/v8/src/unicode.cc +0 -749
  1112. data/ext/v8/upstream/build/v8/src/unicode.h +0 -279
  1113. data/ext/v8/upstream/build/v8/src/uri.js +0 -415
  1114. data/ext/v8/upstream/build/v8/src/utils.cc +0 -285
  1115. data/ext/v8/upstream/build/v8/src/utils.h +0 -745
  1116. data/ext/v8/upstream/build/v8/src/v8-counters.cc +0 -55
  1117. data/ext/v8/upstream/build/v8/src/v8-counters.h +0 -250
  1118. data/ext/v8/upstream/build/v8/src/v8.cc +0 -228
  1119. data/ext/v8/upstream/build/v8/src/v8.h +0 -121
  1120. data/ext/v8/upstream/build/v8/src/v8dll-main.cc +0 -39
  1121. data/ext/v8/upstream/build/v8/src/v8natives.js +0 -1188
  1122. data/ext/v8/upstream/build/v8/src/v8threads.cc +0 -461
  1123. data/ext/v8/upstream/build/v8/src/v8threads.h +0 -159
  1124. data/ext/v8/upstream/build/v8/src/variables.cc +0 -119
  1125. data/ext/v8/upstream/build/v8/src/variables.h +0 -205
  1126. data/ext/v8/upstream/build/v8/src/version.cc +0 -88
  1127. data/ext/v8/upstream/build/v8/src/version.h +0 -64
  1128. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy-inl.h +0 -192
  1129. data/ext/v8/upstream/build/v8/src/virtual-frame-heavy.cc +0 -312
  1130. data/ext/v8/upstream/build/v8/src/virtual-frame-inl.h +0 -39
  1131. data/ext/v8/upstream/build/v8/src/virtual-frame-light-inl.h +0 -170
  1132. data/ext/v8/upstream/build/v8/src/virtual-frame-light.cc +0 -52
  1133. data/ext/v8/upstream/build/v8/src/virtual-frame.cc +0 -49
  1134. data/ext/v8/upstream/build/v8/src/virtual-frame.h +0 -46
  1135. data/ext/v8/upstream/build/v8/src/vm-state-inl.h +0 -137
  1136. data/ext/v8/upstream/build/v8/src/vm-state.cc +0 -39
  1137. data/ext/v8/upstream/build/v8/src/vm-state.h +0 -77
  1138. data/ext/v8/upstream/build/v8/src/x64/assembler-x64-inl.h +0 -400
  1139. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.cc +0 -2963
  1140. data/ext/v8/upstream/build/v8/src/x64/assembler-x64.h +0 -1438
  1141. data/ext/v8/upstream/build/v8/src/x64/builtins-x64.cc +0 -1296
  1142. data/ext/v8/upstream/build/v8/src/x64/codegen-x64-inl.h +0 -46
  1143. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.cc +0 -12491
  1144. data/ext/v8/upstream/build/v8/src/x64/codegen-x64.h +0 -1090
  1145. data/ext/v8/upstream/build/v8/src/x64/cpu-x64.cc +0 -83
  1146. data/ext/v8/upstream/build/v8/src/x64/debug-x64.cc +0 -267
  1147. data/ext/v8/upstream/build/v8/src/x64/disasm-x64.cc +0 -1696
  1148. data/ext/v8/upstream/build/v8/src/x64/fast-codegen-x64.cc +0 -250
  1149. data/ext/v8/upstream/build/v8/src/x64/frames-x64.cc +0 -113
  1150. data/ext/v8/upstream/build/v8/src/x64/frames-x64.h +0 -125
  1151. data/ext/v8/upstream/build/v8/src/x64/full-codegen-x64.cc +0 -3270
  1152. data/ext/v8/upstream/build/v8/src/x64/ic-x64.cc +0 -1907
  1153. data/ext/v8/upstream/build/v8/src/x64/jump-target-x64.cc +0 -437
  1154. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.cc +0 -2793
  1155. data/ext/v8/upstream/build/v8/src/x64/macro-assembler-x64.h +0 -916
  1156. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.cc +0 -1374
  1157. data/ext/v8/upstream/build/v8/src/x64/regexp-macro-assembler-x64.h +0 -277
  1158. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64-inl.h +0 -87
  1159. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.cc +0 -91
  1160. data/ext/v8/upstream/build/v8/src/x64/register-allocator-x64.h +0 -43
  1161. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.cc +0 -27
  1162. data/ext/v8/upstream/build/v8/src/x64/simulator-x64.h +0 -63
  1163. data/ext/v8/upstream/build/v8/src/x64/stub-cache-x64.cc +0 -2560
  1164. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.cc +0 -1264
  1165. data/ext/v8/upstream/build/v8/src/x64/virtual-frame-x64.h +0 -590
  1166. data/ext/v8/upstream/build/v8/src/zone-inl.h +0 -82
  1167. data/ext/v8/upstream/build/v8/src/zone.cc +0 -194
  1168. data/ext/v8/upstream/build/v8/src/zone.h +0 -221
  1169. data/ext/v8/upstream/build/v8/tools/codemap.js +0 -270
  1170. data/ext/v8/upstream/build/v8/tools/consarray.js +0 -93
  1171. data/ext/v8/upstream/build/v8/tools/csvparser.js +0 -83
  1172. data/ext/v8/upstream/build/v8/tools/gc-nvp-trace-processor.py +0 -317
  1173. data/ext/v8/upstream/build/v8/tools/generate-ten-powers.scm +0 -286
  1174. data/ext/v8/upstream/build/v8/tools/gyp/v8.gyp +0 -749
  1175. data/ext/v8/upstream/build/v8/tools/js2c.py +0 -380
  1176. data/ext/v8/upstream/build/v8/tools/jsmin.py +0 -280
  1177. data/ext/v8/upstream/build/v8/tools/linux-tick-processor +0 -33
  1178. data/ext/v8/upstream/build/v8/tools/linux-tick-processor.py +0 -78
  1179. data/ext/v8/upstream/build/v8/tools/logreader.js +0 -338
  1180. data/ext/v8/upstream/build/v8/tools/mac-nm +0 -18
  1181. data/ext/v8/upstream/build/v8/tools/mac-tick-processor +0 -6
  1182. data/ext/v8/upstream/build/v8/tools/oprofile/annotate +0 -7
  1183. data/ext/v8/upstream/build/v8/tools/oprofile/common +0 -19
  1184. data/ext/v8/upstream/build/v8/tools/oprofile/dump +0 -7
  1185. data/ext/v8/upstream/build/v8/tools/oprofile/report +0 -7
  1186. data/ext/v8/upstream/build/v8/tools/oprofile/reset +0 -7
  1187. data/ext/v8/upstream/build/v8/tools/oprofile/run +0 -14
  1188. data/ext/v8/upstream/build/v8/tools/oprofile/shutdown +0 -7
  1189. data/ext/v8/upstream/build/v8/tools/oprofile/start +0 -7
  1190. data/ext/v8/upstream/build/v8/tools/presubmit.py +0 -299
  1191. data/ext/v8/upstream/build/v8/tools/process-heap-prof.py +0 -120
  1192. data/ext/v8/upstream/build/v8/tools/profile.js +0 -691
  1193. data/ext/v8/upstream/build/v8/tools/profile_view.js +0 -224
  1194. data/ext/v8/upstream/build/v8/tools/run-valgrind.py +0 -77
  1195. data/ext/v8/upstream/build/v8/tools/splaytree.js +0 -322
  1196. data/ext/v8/upstream/build/v8/tools/splaytree.py +0 -226
  1197. data/ext/v8/upstream/build/v8/tools/stats-viewer.py +0 -468
  1198. data/ext/v8/upstream/build/v8/tools/tickprocessor-driver.js +0 -59
  1199. data/ext/v8/upstream/build/v8/tools/tickprocessor.js +0 -862
  1200. data/ext/v8/upstream/build/v8/tools/tickprocessor.py +0 -571
  1201. data/ext/v8/upstream/build/v8/tools/utils.py +0 -88
  1202. data/ext/v8/upstream/build/v8/tools/visual_studio/README.txt +0 -71
  1203. data/ext/v8/upstream/build/v8/tools/visual_studio/arm.vsprops +0 -14
  1204. data/ext/v8/upstream/build/v8/tools/visual_studio/common.vsprops +0 -34
  1205. data/ext/v8/upstream/build/v8/tools/visual_studio/d8.vcproj +0 -193
  1206. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_arm.vcproj +0 -193
  1207. data/ext/v8/upstream/build/v8/tools/visual_studio/d8_x64.vcproj +0 -209
  1208. data/ext/v8/upstream/build/v8/tools/visual_studio/d8js2c.cmd +0 -6
  1209. data/ext/v8/upstream/build/v8/tools/visual_studio/debug.vsprops +0 -17
  1210. data/ext/v8/upstream/build/v8/tools/visual_studio/ia32.vsprops +0 -17
  1211. data/ext/v8/upstream/build/v8/tools/visual_studio/js2c.cmd +0 -6
  1212. data/ext/v8/upstream/build/v8/tools/visual_studio/release.vsprops +0 -24
  1213. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.sln +0 -101
  1214. data/ext/v8/upstream/build/v8/tools/visual_studio/v8.vcproj +0 -227
  1215. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.sln +0 -74
  1216. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_arm.vcproj +0 -227
  1217. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base.vcproj +0 -1143
  1218. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_arm.vcproj +0 -1115
  1219. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_base_x64.vcproj +0 -1096
  1220. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest.vcproj +0 -265
  1221. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_arm.vcproj +0 -249
  1222. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_cctest_x64.vcproj +0 -257
  1223. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot.vcproj +0 -145
  1224. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -145
  1225. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample.vcproj +0 -145
  1226. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_arm.vcproj +0 -145
  1227. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_process_sample_x64.vcproj +0 -161
  1228. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample.vcproj +0 -145
  1229. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -145
  1230. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -161
  1231. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot.vcproj +0 -142
  1232. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc.vcproj +0 -92
  1233. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -92
  1234. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_snapshot_x64.vcproj +0 -142
  1235. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.sln +0 -101
  1236. data/ext/v8/upstream/build/v8/tools/visual_studio/v8_x64.vcproj +0 -227
  1237. data/ext/v8/upstream/build/v8/tools/visual_studio/x64.vsprops +0 -17
  1238. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.bat +0 -29
  1239. data/ext/v8/upstream/build/v8/tools/windows-tick-processor.py +0 -137
@@ -1,2580 +0,0 @@
1
- // Copyright (c) 1994-2006 Sun Microsystems Inc.
2
- // All Rights Reserved.
3
- //
4
- // Redistribution and use in source and binary forms, with or without
5
- // modification, are permitted provided that the following conditions
6
- // are met:
7
- //
8
- // - Redistributions of source code must retain the above copyright notice,
9
- // this list of conditions and the following disclaimer.
10
- //
11
- // - Redistribution in binary form must reproduce the above copyright
12
- // notice, this list of conditions and the following disclaimer in the
13
- // documentation and/or other materials provided with the
14
- // distribution.
15
- //
16
- // - Neither the name of Sun Microsystems or the names of contributors may
17
- // be used to endorse or promote products derived from this software without
18
- // specific prior written permission.
19
- //
20
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
- // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
- // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
- // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
- // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29
- // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31
- // OF THE POSSIBILITY OF SUCH DAMAGE.
32
-
33
- // The original source code covered by the above license above has been
34
- // modified significantly by Google Inc.
35
- // Copyright 2010 the V8 project authors. All rights reserved.
36
-
37
- #include "v8.h"
38
-
39
- #if defined(V8_TARGET_ARCH_ARM)
40
-
41
- #include "arm/assembler-arm-inl.h"
42
- #include "serialize.h"
43
-
44
- namespace v8 {
45
- namespace internal {
46
-
47
- // Safe default is no features.
48
- unsigned CpuFeatures::supported_ = 0;
49
- unsigned CpuFeatures::enabled_ = 0;
50
- unsigned CpuFeatures::found_by_runtime_probing_ = 0;
51
-
52
-
53
- #ifdef __arm__
54
- static uint64_t CpuFeaturesImpliedByCompiler() {
55
- uint64_t answer = 0;
56
- #ifdef CAN_USE_ARMV7_INSTRUCTIONS
57
- answer |= 1u << ARMv7;
58
- #endif // def CAN_USE_ARMV7_INSTRUCTIONS
59
- // If the compiler is allowed to use VFP then we can use VFP too in our code
60
- // generation even when generating snapshots. This won't work for cross
61
- // compilation.
62
- #if defined(__VFP_FP__) && !defined(__SOFTFP__)
63
- answer |= 1u << VFP3;
64
- #endif // defined(__VFP_FP__) && !defined(__SOFTFP__)
65
- #ifdef CAN_USE_VFP_INSTRUCTIONS
66
- answer |= 1u << VFP3;
67
- #endif // def CAN_USE_VFP_INSTRUCTIONS
68
- return answer;
69
- }
70
- #endif // def __arm__
71
-
72
-
73
- void CpuFeatures::Probe() {
74
- #ifndef __arm__
75
- // For the simulator=arm build, use VFP when FLAG_enable_vfp3 is enabled.
76
- if (FLAG_enable_vfp3) {
77
- supported_ |= 1u << VFP3;
78
- }
79
- // For the simulator=arm build, use ARMv7 when FLAG_enable_armv7 is enabled
80
- if (FLAG_enable_armv7) {
81
- supported_ |= 1u << ARMv7;
82
- }
83
- #else // def __arm__
84
- if (Serializer::enabled()) {
85
- supported_ |= OS::CpuFeaturesImpliedByPlatform();
86
- supported_ |= CpuFeaturesImpliedByCompiler();
87
- return; // No features if we might serialize.
88
- }
89
-
90
- if (OS::ArmCpuHasFeature(VFP3)) {
91
- // This implementation also sets the VFP flags if
92
- // runtime detection of VFP returns true.
93
- supported_ |= 1u << VFP3;
94
- found_by_runtime_probing_ |= 1u << VFP3;
95
- }
96
-
97
- if (OS::ArmCpuHasFeature(ARMv7)) {
98
- supported_ |= 1u << ARMv7;
99
- found_by_runtime_probing_ |= 1u << ARMv7;
100
- }
101
- #endif
102
- }
103
-
104
-
105
- // -----------------------------------------------------------------------------
106
- // Implementation of RelocInfo
107
-
108
- const int RelocInfo::kApplyMask = 0;
109
-
110
-
111
- bool RelocInfo::IsCodedSpecially() {
112
- // The deserializer needs to know whether a pointer is specially coded. Being
113
- // specially coded on ARM means that it is a movw/movt instruction. We don't
114
- // generate those yet.
115
- return false;
116
- }
117
-
118
-
119
-
120
- void RelocInfo::PatchCode(byte* instructions, int instruction_count) {
121
- // Patch the code at the current address with the supplied instructions.
122
- Instr* pc = reinterpret_cast<Instr*>(pc_);
123
- Instr* instr = reinterpret_cast<Instr*>(instructions);
124
- for (int i = 0; i < instruction_count; i++) {
125
- *(pc + i) = *(instr + i);
126
- }
127
-
128
- // Indicate that code has changed.
129
- CPU::FlushICache(pc_, instruction_count * Assembler::kInstrSize);
130
- }
131
-
132
-
133
- // Patch the code at the current PC with a call to the target address.
134
- // Additional guard instructions can be added if required.
135
- void RelocInfo::PatchCodeWithCall(Address target, int guard_bytes) {
136
- // Patch the code at the current address with a call to the target.
137
- UNIMPLEMENTED();
138
- }
139
-
140
-
141
- // -----------------------------------------------------------------------------
142
- // Implementation of Operand and MemOperand
143
- // See assembler-arm-inl.h for inlined constructors
144
-
145
- Operand::Operand(Handle<Object> handle) {
146
- rm_ = no_reg;
147
- // Verify all Objects referred by code are NOT in new space.
148
- Object* obj = *handle;
149
- ASSERT(!Heap::InNewSpace(obj));
150
- if (obj->IsHeapObject()) {
151
- imm32_ = reinterpret_cast<intptr_t>(handle.location());
152
- rmode_ = RelocInfo::EMBEDDED_OBJECT;
153
- } else {
154
- // no relocation needed
155
- imm32_ = reinterpret_cast<intptr_t>(obj);
156
- rmode_ = RelocInfo::NONE;
157
- }
158
- }
159
-
160
-
161
- Operand::Operand(Register rm, ShiftOp shift_op, int shift_imm) {
162
- ASSERT(is_uint5(shift_imm));
163
- ASSERT(shift_op != ROR || shift_imm != 0); // use RRX if you mean it
164
- rm_ = rm;
165
- rs_ = no_reg;
166
- shift_op_ = shift_op;
167
- shift_imm_ = shift_imm & 31;
168
- if (shift_op == RRX) {
169
- // encoded as ROR with shift_imm == 0
170
- ASSERT(shift_imm == 0);
171
- shift_op_ = ROR;
172
- shift_imm_ = 0;
173
- }
174
- }
175
-
176
-
177
- Operand::Operand(Register rm, ShiftOp shift_op, Register rs) {
178
- ASSERT(shift_op != RRX);
179
- rm_ = rm;
180
- rs_ = no_reg;
181
- shift_op_ = shift_op;
182
- rs_ = rs;
183
- }
184
-
185
-
186
- MemOperand::MemOperand(Register rn, int32_t offset, AddrMode am) {
187
- rn_ = rn;
188
- rm_ = no_reg;
189
- offset_ = offset;
190
- am_ = am;
191
- }
192
-
193
- MemOperand::MemOperand(Register rn, Register rm, AddrMode am) {
194
- rn_ = rn;
195
- rm_ = rm;
196
- shift_op_ = LSL;
197
- shift_imm_ = 0;
198
- am_ = am;
199
- }
200
-
201
-
202
- MemOperand::MemOperand(Register rn, Register rm,
203
- ShiftOp shift_op, int shift_imm, AddrMode am) {
204
- ASSERT(is_uint5(shift_imm));
205
- rn_ = rn;
206
- rm_ = rm;
207
- shift_op_ = shift_op;
208
- shift_imm_ = shift_imm & 31;
209
- am_ = am;
210
- }
211
-
212
-
213
- // -----------------------------------------------------------------------------
214
- // Implementation of Assembler.
215
-
216
- // Instruction encoding bits.
217
- enum {
218
- H = 1 << 5, // halfword (or byte)
219
- S6 = 1 << 6, // signed (or unsigned)
220
- L = 1 << 20, // load (or store)
221
- S = 1 << 20, // set condition code (or leave unchanged)
222
- W = 1 << 21, // writeback base register (or leave unchanged)
223
- A = 1 << 21, // accumulate in multiply instruction (or not)
224
- B = 1 << 22, // unsigned byte (or word)
225
- N = 1 << 22, // long (or short)
226
- U = 1 << 23, // positive (or negative) offset/index
227
- P = 1 << 24, // offset/pre-indexed addressing (or post-indexed addressing)
228
- I = 1 << 25, // immediate shifter operand (or not)
229
-
230
- B4 = 1 << 4,
231
- B5 = 1 << 5,
232
- B6 = 1 << 6,
233
- B7 = 1 << 7,
234
- B8 = 1 << 8,
235
- B9 = 1 << 9,
236
- B12 = 1 << 12,
237
- B16 = 1 << 16,
238
- B18 = 1 << 18,
239
- B19 = 1 << 19,
240
- B20 = 1 << 20,
241
- B21 = 1 << 21,
242
- B22 = 1 << 22,
243
- B23 = 1 << 23,
244
- B24 = 1 << 24,
245
- B25 = 1 << 25,
246
- B26 = 1 << 26,
247
- B27 = 1 << 27,
248
-
249
- // Instruction bit masks.
250
- RdMask = 15 << 12, // in str instruction
251
- CondMask = 15 << 28,
252
- CoprocessorMask = 15 << 8,
253
- OpCodeMask = 15 << 21, // in data-processing instructions
254
- Imm24Mask = (1 << 24) - 1,
255
- Off12Mask = (1 << 12) - 1,
256
- // Reserved condition.
257
- nv = 15 << 28
258
- };
259
-
260
-
261
- // add(sp, sp, 4) instruction (aka Pop())
262
- static const Instr kPopInstruction =
263
- al | 4 * B21 | 4 | LeaveCC | I | sp.code() * B16 | sp.code() * B12;
264
- // str(r, MemOperand(sp, 4, NegPreIndex), al) instruction (aka push(r))
265
- // register r is not encoded.
266
- static const Instr kPushRegPattern =
267
- al | B26 | 4 | NegPreIndex | sp.code() * B16;
268
- // ldr(r, MemOperand(sp, 4, PostIndex), al) instruction (aka pop(r))
269
- // register r is not encoded.
270
- static const Instr kPopRegPattern =
271
- al | B26 | L | 4 | PostIndex | sp.code() * B16;
272
- // mov lr, pc
273
- const Instr kMovLrPc = al | 13*B21 | pc.code() | lr.code() * B12;
274
- // ldr rd, [pc, #offset]
275
- const Instr kLdrPCMask = CondMask | 15 * B24 | 7 * B20 | 15 * B16;
276
- const Instr kLdrPCPattern = al | 5 * B24 | L | pc.code() * B16;
277
- // blxcc rm
278
- const Instr kBlxRegMask =
279
- 15 * B24 | 15 * B20 | 15 * B16 | 15 * B12 | 15 * B8 | 15 * B4;
280
- const Instr kBlxRegPattern =
281
- B24 | B21 | 15 * B16 | 15 * B12 | 15 * B8 | 3 * B4;
282
- const Instr kMovMvnMask = 0x6d * B21 | 0xf * B16;
283
- const Instr kMovMvnPattern = 0xd * B21;
284
- const Instr kMovMvnFlip = B22;
285
- const Instr kMovLeaveCCMask = 0xdff * B16;
286
- const Instr kMovLeaveCCPattern = 0x1a0 * B16;
287
- const Instr kMovwMask = 0xff * B20;
288
- const Instr kMovwPattern = 0x30 * B20;
289
- const Instr kMovwLeaveCCFlip = 0x5 * B21;
290
- const Instr kCmpCmnMask = 0xdd * B20 | 0xf * B12;
291
- const Instr kCmpCmnPattern = 0x15 * B20;
292
- const Instr kCmpCmnFlip = B21;
293
- const Instr kALUMask = 0x6f * B21;
294
- const Instr kAddPattern = 0x4 * B21;
295
- const Instr kSubPattern = 0x2 * B21;
296
- const Instr kBicPattern = 0xe * B21;
297
- const Instr kAndPattern = 0x0 * B21;
298
- const Instr kAddSubFlip = 0x6 * B21;
299
- const Instr kAndBicFlip = 0xe * B21;
300
-
301
- // A mask for the Rd register for push, pop, ldr, str instructions.
302
- const Instr kRdMask = 0x0000f000;
303
- static const int kRdShift = 12;
304
- static const Instr kLdrRegFpOffsetPattern =
305
- al | B26 | L | Offset | fp.code() * B16;
306
- static const Instr kStrRegFpOffsetPattern =
307
- al | B26 | Offset | fp.code() * B16;
308
- static const Instr kLdrRegFpNegOffsetPattern =
309
- al | B26 | L | NegOffset | fp.code() * B16;
310
- static const Instr kStrRegFpNegOffsetPattern =
311
- al | B26 | NegOffset | fp.code() * B16;
312
- static const Instr kLdrStrInstrTypeMask = 0xffff0000;
313
- static const Instr kLdrStrInstrArgumentMask = 0x0000ffff;
314
- static const Instr kLdrStrOffsetMask = 0x00000fff;
315
-
316
- // Spare buffer.
317
- static const int kMinimalBufferSize = 4*KB;
318
- static byte* spare_buffer_ = NULL;
319
-
320
- Assembler::Assembler(void* buffer, int buffer_size) {
321
- if (buffer == NULL) {
322
- // Do our own buffer management.
323
- if (buffer_size <= kMinimalBufferSize) {
324
- buffer_size = kMinimalBufferSize;
325
-
326
- if (spare_buffer_ != NULL) {
327
- buffer = spare_buffer_;
328
- spare_buffer_ = NULL;
329
- }
330
- }
331
- if (buffer == NULL) {
332
- buffer_ = NewArray<byte>(buffer_size);
333
- } else {
334
- buffer_ = static_cast<byte*>(buffer);
335
- }
336
- buffer_size_ = buffer_size;
337
- own_buffer_ = true;
338
-
339
- } else {
340
- // Use externally provided buffer instead.
341
- ASSERT(buffer_size > 0);
342
- buffer_ = static_cast<byte*>(buffer);
343
- buffer_size_ = buffer_size;
344
- own_buffer_ = false;
345
- }
346
-
347
- // Setup buffer pointers.
348
- ASSERT(buffer_ != NULL);
349
- pc_ = buffer_;
350
- reloc_info_writer.Reposition(buffer_ + buffer_size, pc_);
351
- num_prinfo_ = 0;
352
- next_buffer_check_ = 0;
353
- const_pool_blocked_nesting_ = 0;
354
- no_const_pool_before_ = 0;
355
- last_const_pool_end_ = 0;
356
- last_bound_pos_ = 0;
357
- current_statement_position_ = RelocInfo::kNoPosition;
358
- current_position_ = RelocInfo::kNoPosition;
359
- written_statement_position_ = current_statement_position_;
360
- written_position_ = current_position_;
361
- }
362
-
363
-
364
- Assembler::~Assembler() {
365
- ASSERT(const_pool_blocked_nesting_ == 0);
366
- if (own_buffer_) {
367
- if (spare_buffer_ == NULL && buffer_size_ == kMinimalBufferSize) {
368
- spare_buffer_ = buffer_;
369
- } else {
370
- DeleteArray(buffer_);
371
- }
372
- }
373
- }
374
-
375
-
376
- void Assembler::GetCode(CodeDesc* desc) {
377
- // Emit constant pool if necessary.
378
- CheckConstPool(true, false);
379
- ASSERT(num_prinfo_ == 0);
380
-
381
- // Setup code descriptor.
382
- desc->buffer = buffer_;
383
- desc->buffer_size = buffer_size_;
384
- desc->instr_size = pc_offset();
385
- desc->reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos();
386
- }
387
-
388
-
389
- void Assembler::Align(int m) {
390
- ASSERT(m >= 4 && IsPowerOf2(m));
391
- while ((pc_offset() & (m - 1)) != 0) {
392
- nop();
393
- }
394
- }
395
-
396
-
397
- void Assembler::CodeTargetAlign() {
398
- // Preferred alignment of jump targets on some ARM chips.
399
- Align(8);
400
- }
401
-
402
-
403
- bool Assembler::IsNop(Instr instr, int type) {
404
- // Check for mov rx, rx.
405
- ASSERT(0 <= type && type <= 14); // mov pc, pc is not a nop.
406
- return instr == (al | 13*B21 | type*B12 | type);
407
- }
408
-
409
-
410
- bool Assembler::IsBranch(Instr instr) {
411
- return (instr & (B27 | B25)) == (B27 | B25);
412
- }
413
-
414
-
415
- int Assembler::GetBranchOffset(Instr instr) {
416
- ASSERT(IsBranch(instr));
417
- // Take the jump offset in the lower 24 bits, sign extend it and multiply it
418
- // with 4 to get the offset in bytes.
419
- return ((instr & Imm24Mask) << 8) >> 6;
420
- }
421
-
422
-
423
- bool Assembler::IsLdrRegisterImmediate(Instr instr) {
424
- return (instr & (B27 | B26 | B25 | B22 | B20)) == (B26 | B20);
425
- }
426
-
427
-
428
- int Assembler::GetLdrRegisterImmediateOffset(Instr instr) {
429
- ASSERT(IsLdrRegisterImmediate(instr));
430
- bool positive = (instr & B23) == B23;
431
- int offset = instr & Off12Mask; // Zero extended offset.
432
- return positive ? offset : -offset;
433
- }
434
-
435
-
436
- Instr Assembler::SetLdrRegisterImmediateOffset(Instr instr, int offset) {
437
- ASSERT(IsLdrRegisterImmediate(instr));
438
- bool positive = offset >= 0;
439
- if (!positive) offset = -offset;
440
- ASSERT(is_uint12(offset));
441
- // Set bit indicating whether the offset should be added.
442
- instr = (instr & ~B23) | (positive ? B23 : 0);
443
- // Set the actual offset.
444
- return (instr & ~Off12Mask) | offset;
445
- }
446
-
447
-
448
- bool Assembler::IsStrRegisterImmediate(Instr instr) {
449
- return (instr & (B27 | B26 | B25 | B22 | B20)) == B26;
450
- }
451
-
452
-
453
- Instr Assembler::SetStrRegisterImmediateOffset(Instr instr, int offset) {
454
- ASSERT(IsStrRegisterImmediate(instr));
455
- bool positive = offset >= 0;
456
- if (!positive) offset = -offset;
457
- ASSERT(is_uint12(offset));
458
- // Set bit indicating whether the offset should be added.
459
- instr = (instr & ~B23) | (positive ? B23 : 0);
460
- // Set the actual offset.
461
- return (instr & ~Off12Mask) | offset;
462
- }
463
-
464
-
465
- bool Assembler::IsAddRegisterImmediate(Instr instr) {
466
- return (instr & (B27 | B26 | B25 | B24 | B23 | B22 | B21)) == (B25 | B23);
467
- }
468
-
469
-
470
- Instr Assembler::SetAddRegisterImmediateOffset(Instr instr, int offset) {
471
- ASSERT(IsAddRegisterImmediate(instr));
472
- ASSERT(offset >= 0);
473
- ASSERT(is_uint12(offset));
474
- // Set the offset.
475
- return (instr & ~Off12Mask) | offset;
476
- }
477
-
478
-
479
- Register Assembler::GetRd(Instr instr) {
480
- Register reg;
481
- reg.code_ = ((instr & kRdMask) >> kRdShift);
482
- return reg;
483
- }
484
-
485
-
486
- bool Assembler::IsPush(Instr instr) {
487
- return ((instr & ~kRdMask) == kPushRegPattern);
488
- }
489
-
490
-
491
- bool Assembler::IsPop(Instr instr) {
492
- return ((instr & ~kRdMask) == kPopRegPattern);
493
- }
494
-
495
-
496
- bool Assembler::IsStrRegFpOffset(Instr instr) {
497
- return ((instr & kLdrStrInstrTypeMask) == kStrRegFpOffsetPattern);
498
- }
499
-
500
-
501
- bool Assembler::IsLdrRegFpOffset(Instr instr) {
502
- return ((instr & kLdrStrInstrTypeMask) == kLdrRegFpOffsetPattern);
503
- }
504
-
505
-
506
- bool Assembler::IsStrRegFpNegOffset(Instr instr) {
507
- return ((instr & kLdrStrInstrTypeMask) == kStrRegFpNegOffsetPattern);
508
- }
509
-
510
-
511
- bool Assembler::IsLdrRegFpNegOffset(Instr instr) {
512
- return ((instr & kLdrStrInstrTypeMask) == kLdrRegFpNegOffsetPattern);
513
- }
514
-
515
-
516
- // Labels refer to positions in the (to be) generated code.
517
- // There are bound, linked, and unused labels.
518
- //
519
- // Bound labels refer to known positions in the already
520
- // generated code. pos() is the position the label refers to.
521
- //
522
- // Linked labels refer to unknown positions in the code
523
- // to be generated; pos() is the position of the last
524
- // instruction using the label.
525
-
526
-
527
- // The link chain is terminated by a negative code position (must be aligned)
528
- const int kEndOfChain = -4;
529
-
530
-
531
- int Assembler::target_at(int pos) {
532
- Instr instr = instr_at(pos);
533
- if ((instr & ~Imm24Mask) == 0) {
534
- // Emitted label constant, not part of a branch.
535
- return instr - (Code::kHeaderSize - kHeapObjectTag);
536
- }
537
- ASSERT((instr & 7*B25) == 5*B25); // b, bl, or blx imm24
538
- int imm26 = ((instr & Imm24Mask) << 8) >> 6;
539
- if ((instr & CondMask) == nv && (instr & B24) != 0) {
540
- // blx uses bit 24 to encode bit 2 of imm26
541
- imm26 += 2;
542
- }
543
- return pos + kPcLoadDelta + imm26;
544
- }
545
-
546
-
547
- void Assembler::target_at_put(int pos, int target_pos) {
548
- Instr instr = instr_at(pos);
549
- if ((instr & ~Imm24Mask) == 0) {
550
- ASSERT(target_pos == kEndOfChain || target_pos >= 0);
551
- // Emitted label constant, not part of a branch.
552
- // Make label relative to Code* of generated Code object.
553
- instr_at_put(pos, target_pos + (Code::kHeaderSize - kHeapObjectTag));
554
- return;
555
- }
556
- int imm26 = target_pos - (pos + kPcLoadDelta);
557
- ASSERT((instr & 7*B25) == 5*B25); // b, bl, or blx imm24
558
- if ((instr & CondMask) == nv) {
559
- // blx uses bit 24 to encode bit 2 of imm26
560
- ASSERT((imm26 & 1) == 0);
561
- instr = (instr & ~(B24 | Imm24Mask)) | ((imm26 & 2) >> 1)*B24;
562
- } else {
563
- ASSERT((imm26 & 3) == 0);
564
- instr &= ~Imm24Mask;
565
- }
566
- int imm24 = imm26 >> 2;
567
- ASSERT(is_int24(imm24));
568
- instr_at_put(pos, instr | (imm24 & Imm24Mask));
569
- }
570
-
571
-
572
- void Assembler::print(Label* L) {
573
- if (L->is_unused()) {
574
- PrintF("unused label\n");
575
- } else if (L->is_bound()) {
576
- PrintF("bound label to %d\n", L->pos());
577
- } else if (L->is_linked()) {
578
- Label l = *L;
579
- PrintF("unbound label");
580
- while (l.is_linked()) {
581
- PrintF("@ %d ", l.pos());
582
- Instr instr = instr_at(l.pos());
583
- if ((instr & ~Imm24Mask) == 0) {
584
- PrintF("value\n");
585
- } else {
586
- ASSERT((instr & 7*B25) == 5*B25); // b, bl, or blx
587
- int cond = instr & CondMask;
588
- const char* b;
589
- const char* c;
590
- if (cond == nv) {
591
- b = "blx";
592
- c = "";
593
- } else {
594
- if ((instr & B24) != 0)
595
- b = "bl";
596
- else
597
- b = "b";
598
-
599
- switch (cond) {
600
- case eq: c = "eq"; break;
601
- case ne: c = "ne"; break;
602
- case hs: c = "hs"; break;
603
- case lo: c = "lo"; break;
604
- case mi: c = "mi"; break;
605
- case pl: c = "pl"; break;
606
- case vs: c = "vs"; break;
607
- case vc: c = "vc"; break;
608
- case hi: c = "hi"; break;
609
- case ls: c = "ls"; break;
610
- case ge: c = "ge"; break;
611
- case lt: c = "lt"; break;
612
- case gt: c = "gt"; break;
613
- case le: c = "le"; break;
614
- case al: c = ""; break;
615
- default:
616
- c = "";
617
- UNREACHABLE();
618
- }
619
- }
620
- PrintF("%s%s\n", b, c);
621
- }
622
- next(&l);
623
- }
624
- } else {
625
- PrintF("label in inconsistent state (pos = %d)\n", L->pos_);
626
- }
627
- }
628
-
629
-
630
- void Assembler::bind_to(Label* L, int pos) {
631
- ASSERT(0 <= pos && pos <= pc_offset()); // must have a valid binding position
632
- while (L->is_linked()) {
633
- int fixup_pos = L->pos();
634
- next(L); // call next before overwriting link with target at fixup_pos
635
- target_at_put(fixup_pos, pos);
636
- }
637
- L->bind_to(pos);
638
-
639
- // Keep track of the last bound label so we don't eliminate any instructions
640
- // before a bound label.
641
- if (pos > last_bound_pos_)
642
- last_bound_pos_ = pos;
643
- }
644
-
645
-
646
- void Assembler::link_to(Label* L, Label* appendix) {
647
- if (appendix->is_linked()) {
648
- if (L->is_linked()) {
649
- // Append appendix to L's list.
650
- int fixup_pos;
651
- int link = L->pos();
652
- do {
653
- fixup_pos = link;
654
- link = target_at(fixup_pos);
655
- } while (link > 0);
656
- ASSERT(link == kEndOfChain);
657
- target_at_put(fixup_pos, appendix->pos());
658
- } else {
659
- // L is empty, simply use appendix.
660
- *L = *appendix;
661
- }
662
- }
663
- appendix->Unuse(); // appendix should not be used anymore
664
- }
665
-
666
-
667
- void Assembler::bind(Label* L) {
668
- ASSERT(!L->is_bound()); // label can only be bound once
669
- bind_to(L, pc_offset());
670
- }
671
-
672
-
673
- void Assembler::next(Label* L) {
674
- ASSERT(L->is_linked());
675
- int link = target_at(L->pos());
676
- if (link > 0) {
677
- L->link_to(link);
678
- } else {
679
- ASSERT(link == kEndOfChain);
680
- L->Unuse();
681
- }
682
- }
683
-
684
-
685
- static Instr EncodeMovwImmediate(uint32_t immediate) {
686
- ASSERT(immediate < 0x10000);
687
- return ((immediate & 0xf000) << 4) | (immediate & 0xfff);
688
- }
689
-
690
-
691
- // Low-level code emission routines depending on the addressing mode.
692
- // If this returns true then you have to use the rotate_imm and immed_8
693
- // that it returns, because it may have already changed the instruction
694
- // to match them!
695
- static bool fits_shifter(uint32_t imm32,
696
- uint32_t* rotate_imm,
697
- uint32_t* immed_8,
698
- Instr* instr) {
699
- // imm32 must be unsigned.
700
- for (int rot = 0; rot < 16; rot++) {
701
- uint32_t imm8 = (imm32 << 2*rot) | (imm32 >> (32 - 2*rot));
702
- if ((imm8 <= 0xff)) {
703
- *rotate_imm = rot;
704
- *immed_8 = imm8;
705
- return true;
706
- }
707
- }
708
- // If the opcode is one with a complementary version and the complementary
709
- // immediate fits, change the opcode.
710
- if (instr != NULL) {
711
- if ((*instr & kMovMvnMask) == kMovMvnPattern) {
712
- if (fits_shifter(~imm32, rotate_imm, immed_8, NULL)) {
713
- *instr ^= kMovMvnFlip;
714
- return true;
715
- } else if ((*instr & kMovLeaveCCMask) == kMovLeaveCCPattern) {
716
- if (CpuFeatures::IsSupported(ARMv7)) {
717
- if (imm32 < 0x10000) {
718
- *instr ^= kMovwLeaveCCFlip;
719
- *instr |= EncodeMovwImmediate(imm32);
720
- *rotate_imm = *immed_8 = 0; // Not used for movw.
721
- return true;
722
- }
723
- }
724
- }
725
- } else if ((*instr & kCmpCmnMask) == kCmpCmnPattern) {
726
- if (fits_shifter(-imm32, rotate_imm, immed_8, NULL)) {
727
- *instr ^= kCmpCmnFlip;
728
- return true;
729
- }
730
- } else {
731
- Instr alu_insn = (*instr & kALUMask);
732
- if (alu_insn == kAddPattern ||
733
- alu_insn == kSubPattern) {
734
- if (fits_shifter(-imm32, rotate_imm, immed_8, NULL)) {
735
- *instr ^= kAddSubFlip;
736
- return true;
737
- }
738
- } else if (alu_insn == kAndPattern ||
739
- alu_insn == kBicPattern) {
740
- if (fits_shifter(~imm32, rotate_imm, immed_8, NULL)) {
741
- *instr ^= kAndBicFlip;
742
- return true;
743
- }
744
- }
745
- }
746
- }
747
- return false;
748
- }
749
-
750
-
751
- // We have to use the temporary register for things that can be relocated even
752
- // if they can be encoded in the ARM's 12 bits of immediate-offset instruction
753
- // space. There is no guarantee that the relocated location can be similarly
754
- // encoded.
755
- static bool MustUseConstantPool(RelocInfo::Mode rmode) {
756
- if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
757
- #ifdef DEBUG
758
- if (!Serializer::enabled()) {
759
- Serializer::TooLateToEnableNow();
760
- }
761
- #endif // def DEBUG
762
- return Serializer::enabled();
763
- } else if (rmode == RelocInfo::NONE) {
764
- return false;
765
- }
766
- return true;
767
- }
768
-
769
-
770
- bool Operand::is_single_instruction() const {
771
- if (rm_.is_valid()) return true;
772
- if (MustUseConstantPool(rmode_)) return false;
773
- uint32_t dummy1, dummy2;
774
- return fits_shifter(imm32_, &dummy1, &dummy2, NULL);
775
- }
776
-
777
-
778
- void Assembler::addrmod1(Instr instr,
779
- Register rn,
780
- Register rd,
781
- const Operand& x) {
782
- CheckBuffer();
783
- ASSERT((instr & ~(CondMask | OpCodeMask | S)) == 0);
784
- if (!x.rm_.is_valid()) {
785
- // Immediate.
786
- uint32_t rotate_imm;
787
- uint32_t immed_8;
788
- if (MustUseConstantPool(x.rmode_) ||
789
- !fits_shifter(x.imm32_, &rotate_imm, &immed_8, &instr)) {
790
- // The immediate operand cannot be encoded as a shifter operand, so load
791
- // it first to register ip and change the original instruction to use ip.
792
- // However, if the original instruction is a 'mov rd, x' (not setting the
793
- // condition code), then replace it with a 'ldr rd, [pc]'.
794
- CHECK(!rn.is(ip)); // rn should never be ip, or will be trashed
795
- Condition cond = static_cast<Condition>(instr & CondMask);
796
- if ((instr & ~CondMask) == 13*B21) { // mov, S not set
797
- if (MustUseConstantPool(x.rmode_) ||
798
- !CpuFeatures::IsSupported(ARMv7)) {
799
- RecordRelocInfo(x.rmode_, x.imm32_);
800
- ldr(rd, MemOperand(pc, 0), cond);
801
- } else {
802
- // Will probably use movw, will certainly not use constant pool.
803
- mov(rd, Operand(x.imm32_ & 0xffff), LeaveCC, cond);
804
- movt(rd, static_cast<uint32_t>(x.imm32_) >> 16, cond);
805
- }
806
- } else {
807
- // If this is not a mov or mvn instruction we may still be able to avoid
808
- // a constant pool entry by using mvn or movw.
809
- if (!MustUseConstantPool(x.rmode_) &&
810
- (instr & kMovMvnMask) != kMovMvnPattern) {
811
- mov(ip, x, LeaveCC, cond);
812
- } else {
813
- RecordRelocInfo(x.rmode_, x.imm32_);
814
- ldr(ip, MemOperand(pc, 0), cond);
815
- }
816
- addrmod1(instr, rn, rd, Operand(ip));
817
- }
818
- return;
819
- }
820
- instr |= I | rotate_imm*B8 | immed_8;
821
- } else if (!x.rs_.is_valid()) {
822
- // Immediate shift.
823
- instr |= x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
824
- } else {
825
- // Register shift.
826
- ASSERT(!rn.is(pc) && !rd.is(pc) && !x.rm_.is(pc) && !x.rs_.is(pc));
827
- instr |= x.rs_.code()*B8 | x.shift_op_ | B4 | x.rm_.code();
828
- }
829
- emit(instr | rn.code()*B16 | rd.code()*B12);
830
- if (rn.is(pc) || x.rm_.is(pc)) {
831
- // Block constant pool emission for one instruction after reading pc.
832
- BlockConstPoolBefore(pc_offset() + kInstrSize);
833
- }
834
- }
835
-
836
-
837
- void Assembler::addrmod2(Instr instr, Register rd, const MemOperand& x) {
838
- ASSERT((instr & ~(CondMask | B | L)) == B26);
839
- int am = x.am_;
840
- if (!x.rm_.is_valid()) {
841
- // Immediate offset.
842
- int offset_12 = x.offset_;
843
- if (offset_12 < 0) {
844
- offset_12 = -offset_12;
845
- am ^= U;
846
- }
847
- if (!is_uint12(offset_12)) {
848
- // Immediate offset cannot be encoded, load it first to register ip
849
- // rn (and rd in a load) should never be ip, or will be trashed.
850
- ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
851
- mov(ip, Operand(x.offset_), LeaveCC,
852
- static_cast<Condition>(instr & CondMask));
853
- addrmod2(instr, rd, MemOperand(x.rn_, ip, x.am_));
854
- return;
855
- }
856
- ASSERT(offset_12 >= 0); // no masking needed
857
- instr |= offset_12;
858
- } else {
859
- // Register offset (shift_imm_ and shift_op_ are 0) or scaled
860
- // register offset the constructors make sure than both shift_imm_
861
- // and shift_op_ are initialized.
862
- ASSERT(!x.rm_.is(pc));
863
- instr |= B25 | x.shift_imm_*B7 | x.shift_op_ | x.rm_.code();
864
- }
865
- ASSERT((am & (P|W)) == P || !x.rn_.is(pc)); // no pc base with writeback
866
- emit(instr | am | x.rn_.code()*B16 | rd.code()*B12);
867
- }
868
-
869
-
870
- void Assembler::addrmod3(Instr instr, Register rd, const MemOperand& x) {
871
- ASSERT((instr & ~(CondMask | L | S6 | H)) == (B4 | B7));
872
- ASSERT(x.rn_.is_valid());
873
- int am = x.am_;
874
- if (!x.rm_.is_valid()) {
875
- // Immediate offset.
876
- int offset_8 = x.offset_;
877
- if (offset_8 < 0) {
878
- offset_8 = -offset_8;
879
- am ^= U;
880
- }
881
- if (!is_uint8(offset_8)) {
882
- // Immediate offset cannot be encoded, load it first to register ip
883
- // rn (and rd in a load) should never be ip, or will be trashed.
884
- ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
885
- mov(ip, Operand(x.offset_), LeaveCC,
886
- static_cast<Condition>(instr & CondMask));
887
- addrmod3(instr, rd, MemOperand(x.rn_, ip, x.am_));
888
- return;
889
- }
890
- ASSERT(offset_8 >= 0); // no masking needed
891
- instr |= B | (offset_8 >> 4)*B8 | (offset_8 & 0xf);
892
- } else if (x.shift_imm_ != 0) {
893
- // Scaled register offset not supported, load index first
894
- // rn (and rd in a load) should never be ip, or will be trashed.
895
- ASSERT(!x.rn_.is(ip) && ((instr & L) == L || !rd.is(ip)));
896
- mov(ip, Operand(x.rm_, x.shift_op_, x.shift_imm_), LeaveCC,
897
- static_cast<Condition>(instr & CondMask));
898
- addrmod3(instr, rd, MemOperand(x.rn_, ip, x.am_));
899
- return;
900
- } else {
901
- // Register offset.
902
- ASSERT((am & (P|W)) == P || !x.rm_.is(pc)); // no pc index with writeback
903
- instr |= x.rm_.code();
904
- }
905
- ASSERT((am & (P|W)) == P || !x.rn_.is(pc)); // no pc base with writeback
906
- emit(instr | am | x.rn_.code()*B16 | rd.code()*B12);
907
- }
908
-
909
-
910
- void Assembler::addrmod4(Instr instr, Register rn, RegList rl) {
911
- ASSERT((instr & ~(CondMask | P | U | W | L)) == B27);
912
- ASSERT(rl != 0);
913
- ASSERT(!rn.is(pc));
914
- emit(instr | rn.code()*B16 | rl);
915
- }
916
-
917
-
918
- void Assembler::addrmod5(Instr instr, CRegister crd, const MemOperand& x) {
919
- // Unindexed addressing is not encoded by this function.
920
- ASSERT_EQ((B27 | B26),
921
- (instr & ~(CondMask | CoprocessorMask | P | U | N | W | L)));
922
- ASSERT(x.rn_.is_valid() && !x.rm_.is_valid());
923
- int am = x.am_;
924
- int offset_8 = x.offset_;
925
- ASSERT((offset_8 & 3) == 0); // offset must be an aligned word offset
926
- offset_8 >>= 2;
927
- if (offset_8 < 0) {
928
- offset_8 = -offset_8;
929
- am ^= U;
930
- }
931
- ASSERT(is_uint8(offset_8)); // unsigned word offset must fit in a byte
932
- ASSERT((am & (P|W)) == P || !x.rn_.is(pc)); // no pc base with writeback
933
-
934
- // Post-indexed addressing requires W == 1; different than in addrmod2/3.
935
- if ((am & P) == 0)
936
- am |= W;
937
-
938
- ASSERT(offset_8 >= 0); // no masking needed
939
- emit(instr | am | x.rn_.code()*B16 | crd.code()*B12 | offset_8);
940
- }
941
-
942
-
943
- int Assembler::branch_offset(Label* L, bool jump_elimination_allowed) {
944
- int target_pos;
945
- if (L->is_bound()) {
946
- target_pos = L->pos();
947
- } else {
948
- if (L->is_linked()) {
949
- target_pos = L->pos(); // L's link
950
- } else {
951
- target_pos = kEndOfChain;
952
- }
953
- L->link_to(pc_offset());
954
- }
955
-
956
- // Block the emission of the constant pool, since the branch instruction must
957
- // be emitted at the pc offset recorded by the label.
958
- BlockConstPoolBefore(pc_offset() + kInstrSize);
959
- return target_pos - (pc_offset() + kPcLoadDelta);
960
- }
961
-
962
-
963
- void Assembler::label_at_put(Label* L, int at_offset) {
964
- int target_pos;
965
- if (L->is_bound()) {
966
- target_pos = L->pos();
967
- } else {
968
- if (L->is_linked()) {
969
- target_pos = L->pos(); // L's link
970
- } else {
971
- target_pos = kEndOfChain;
972
- }
973
- L->link_to(at_offset);
974
- instr_at_put(at_offset, target_pos + (Code::kHeaderSize - kHeapObjectTag));
975
- }
976
- }
977
-
978
-
979
- // Branch instructions.
980
- void Assembler::b(int branch_offset, Condition cond) {
981
- ASSERT((branch_offset & 3) == 0);
982
- int imm24 = branch_offset >> 2;
983
- ASSERT(is_int24(imm24));
984
- emit(cond | B27 | B25 | (imm24 & Imm24Mask));
985
-
986
- if (cond == al) {
987
- // Dead code is a good location to emit the constant pool.
988
- CheckConstPool(false, false);
989
- }
990
- }
991
-
992
-
993
- void Assembler::bl(int branch_offset, Condition cond) {
994
- ASSERT((branch_offset & 3) == 0);
995
- int imm24 = branch_offset >> 2;
996
- ASSERT(is_int24(imm24));
997
- emit(cond | B27 | B25 | B24 | (imm24 & Imm24Mask));
998
- }
999
-
1000
-
1001
- void Assembler::blx(int branch_offset) { // v5 and above
1002
- WriteRecordedPositions();
1003
- ASSERT((branch_offset & 1) == 0);
1004
- int h = ((branch_offset & 2) >> 1)*B24;
1005
- int imm24 = branch_offset >> 2;
1006
- ASSERT(is_int24(imm24));
1007
- emit(15 << 28 | B27 | B25 | h | (imm24 & Imm24Mask));
1008
- }
1009
-
1010
-
1011
- void Assembler::blx(Register target, Condition cond) { // v5 and above
1012
- WriteRecordedPositions();
1013
- ASSERT(!target.is(pc));
1014
- emit(cond | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | 3*B4 | target.code());
1015
- }
1016
-
1017
-
1018
- void Assembler::bx(Register target, Condition cond) { // v5 and above, plus v4t
1019
- WriteRecordedPositions();
1020
- ASSERT(!target.is(pc)); // use of pc is actually allowed, but discouraged
1021
- emit(cond | B24 | B21 | 15*B16 | 15*B12 | 15*B8 | B4 | target.code());
1022
- }
1023
-
1024
-
1025
- // Data-processing instructions.
1026
-
1027
- void Assembler::and_(Register dst, Register src1, const Operand& src2,
1028
- SBit s, Condition cond) {
1029
- addrmod1(cond | 0*B21 | s, src1, dst, src2);
1030
- }
1031
-
1032
-
1033
- void Assembler::eor(Register dst, Register src1, const Operand& src2,
1034
- SBit s, Condition cond) {
1035
- addrmod1(cond | 1*B21 | s, src1, dst, src2);
1036
- }
1037
-
1038
-
1039
- void Assembler::sub(Register dst, Register src1, const Operand& src2,
1040
- SBit s, Condition cond) {
1041
- addrmod1(cond | 2*B21 | s, src1, dst, src2);
1042
- }
1043
-
1044
-
1045
- void Assembler::rsb(Register dst, Register src1, const Operand& src2,
1046
- SBit s, Condition cond) {
1047
- addrmod1(cond | 3*B21 | s, src1, dst, src2);
1048
- }
1049
-
1050
-
1051
- void Assembler::add(Register dst, Register src1, const Operand& src2,
1052
- SBit s, Condition cond) {
1053
- addrmod1(cond | 4*B21 | s, src1, dst, src2);
1054
-
1055
- // Eliminate pattern: push(r), pop()
1056
- // str(src, MemOperand(sp, 4, NegPreIndex), al);
1057
- // add(sp, sp, Operand(kPointerSize));
1058
- // Both instructions can be eliminated.
1059
- if (can_peephole_optimize(2) &&
1060
- // Pattern.
1061
- instr_at(pc_ - 1 * kInstrSize) == kPopInstruction &&
1062
- (instr_at(pc_ - 2 * kInstrSize) & ~RdMask) == kPushRegPattern) {
1063
- pc_ -= 2 * kInstrSize;
1064
- if (FLAG_print_peephole_optimization) {
1065
- PrintF("%x push(reg)/pop() eliminated\n", pc_offset());
1066
- }
1067
- }
1068
- }
1069
-
1070
-
1071
- void Assembler::adc(Register dst, Register src1, const Operand& src2,
1072
- SBit s, Condition cond) {
1073
- addrmod1(cond | 5*B21 | s, src1, dst, src2);
1074
- }
1075
-
1076
-
1077
- void Assembler::sbc(Register dst, Register src1, const Operand& src2,
1078
- SBit s, Condition cond) {
1079
- addrmod1(cond | 6*B21 | s, src1, dst, src2);
1080
- }
1081
-
1082
-
1083
- void Assembler::rsc(Register dst, Register src1, const Operand& src2,
1084
- SBit s, Condition cond) {
1085
- addrmod1(cond | 7*B21 | s, src1, dst, src2);
1086
- }
1087
-
1088
-
1089
- void Assembler::tst(Register src1, const Operand& src2, Condition cond) {
1090
- addrmod1(cond | 8*B21 | S, src1, r0, src2);
1091
- }
1092
-
1093
-
1094
- void Assembler::teq(Register src1, const Operand& src2, Condition cond) {
1095
- addrmod1(cond | 9*B21 | S, src1, r0, src2);
1096
- }
1097
-
1098
-
1099
- void Assembler::cmp(Register src1, const Operand& src2, Condition cond) {
1100
- addrmod1(cond | 10*B21 | S, src1, r0, src2);
1101
- }
1102
-
1103
-
1104
- void Assembler::cmn(Register src1, const Operand& src2, Condition cond) {
1105
- addrmod1(cond | 11*B21 | S, src1, r0, src2);
1106
- }
1107
-
1108
-
1109
- void Assembler::orr(Register dst, Register src1, const Operand& src2,
1110
- SBit s, Condition cond) {
1111
- addrmod1(cond | 12*B21 | s, src1, dst, src2);
1112
- }
1113
-
1114
-
1115
- void Assembler::mov(Register dst, const Operand& src, SBit s, Condition cond) {
1116
- if (dst.is(pc)) {
1117
- WriteRecordedPositions();
1118
- }
1119
- // Don't allow nop instructions in the form mov rn, rn to be generated using
1120
- // the mov instruction. They must be generated using nop(int)
1121
- // pseudo instructions.
1122
- ASSERT(!(src.is_reg() && src.rm().is(dst) && s == LeaveCC && cond == al));
1123
- addrmod1(cond | 13*B21 | s, r0, dst, src);
1124
- }
1125
-
1126
-
1127
- void Assembler::movw(Register reg, uint32_t immediate, Condition cond) {
1128
- ASSERT(immediate < 0x10000);
1129
- mov(reg, Operand(immediate), LeaveCC, cond);
1130
- }
1131
-
1132
-
1133
- void Assembler::movt(Register reg, uint32_t immediate, Condition cond) {
1134
- emit(cond | 0x34*B20 | reg.code()*B12 | EncodeMovwImmediate(immediate));
1135
- }
1136
-
1137
-
1138
- void Assembler::bic(Register dst, Register src1, const Operand& src2,
1139
- SBit s, Condition cond) {
1140
- addrmod1(cond | 14*B21 | s, src1, dst, src2);
1141
- }
1142
-
1143
-
1144
- void Assembler::mvn(Register dst, const Operand& src, SBit s, Condition cond) {
1145
- addrmod1(cond | 15*B21 | s, r0, dst, src);
1146
- }
1147
-
1148
-
1149
- // Multiply instructions.
1150
- void Assembler::mla(Register dst, Register src1, Register src2, Register srcA,
1151
- SBit s, Condition cond) {
1152
- ASSERT(!dst.is(pc) && !src1.is(pc) && !src2.is(pc) && !srcA.is(pc));
1153
- emit(cond | A | s | dst.code()*B16 | srcA.code()*B12 |
1154
- src2.code()*B8 | B7 | B4 | src1.code());
1155
- }
1156
-
1157
-
1158
- void Assembler::mul(Register dst, Register src1, Register src2,
1159
- SBit s, Condition cond) {
1160
- ASSERT(!dst.is(pc) && !src1.is(pc) && !src2.is(pc));
1161
- // dst goes in bits 16-19 for this instruction!
1162
- emit(cond | s | dst.code()*B16 | src2.code()*B8 | B7 | B4 | src1.code());
1163
- }
1164
-
1165
-
1166
- void Assembler::smlal(Register dstL,
1167
- Register dstH,
1168
- Register src1,
1169
- Register src2,
1170
- SBit s,
1171
- Condition cond) {
1172
- ASSERT(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc));
1173
- ASSERT(!dstL.is(dstH));
1174
- emit(cond | B23 | B22 | A | s | dstH.code()*B16 | dstL.code()*B12 |
1175
- src2.code()*B8 | B7 | B4 | src1.code());
1176
- }
1177
-
1178
-
1179
- void Assembler::smull(Register dstL,
1180
- Register dstH,
1181
- Register src1,
1182
- Register src2,
1183
- SBit s,
1184
- Condition cond) {
1185
- ASSERT(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc));
1186
- ASSERT(!dstL.is(dstH));
1187
- emit(cond | B23 | B22 | s | dstH.code()*B16 | dstL.code()*B12 |
1188
- src2.code()*B8 | B7 | B4 | src1.code());
1189
- }
1190
-
1191
-
1192
- void Assembler::umlal(Register dstL,
1193
- Register dstH,
1194
- Register src1,
1195
- Register src2,
1196
- SBit s,
1197
- Condition cond) {
1198
- ASSERT(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc));
1199
- ASSERT(!dstL.is(dstH));
1200
- emit(cond | B23 | A | s | dstH.code()*B16 | dstL.code()*B12 |
1201
- src2.code()*B8 | B7 | B4 | src1.code());
1202
- }
1203
-
1204
-
1205
- void Assembler::umull(Register dstL,
1206
- Register dstH,
1207
- Register src1,
1208
- Register src2,
1209
- SBit s,
1210
- Condition cond) {
1211
- ASSERT(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc));
1212
- ASSERT(!dstL.is(dstH));
1213
- emit(cond | B23 | s | dstH.code()*B16 | dstL.code()*B12 |
1214
- src2.code()*B8 | B7 | B4 | src1.code());
1215
- }
1216
-
1217
-
1218
- // Miscellaneous arithmetic instructions.
1219
- void Assembler::clz(Register dst, Register src, Condition cond) {
1220
- // v5 and above.
1221
- ASSERT(!dst.is(pc) && !src.is(pc));
1222
- emit(cond | B24 | B22 | B21 | 15*B16 | dst.code()*B12 |
1223
- 15*B8 | B4 | src.code());
1224
- }
1225
-
1226
-
1227
- // Saturating instructions.
1228
-
1229
- // Unsigned saturate.
1230
- void Assembler::usat(Register dst,
1231
- int satpos,
1232
- const Operand& src,
1233
- Condition cond) {
1234
- // v6 and above.
1235
- ASSERT(CpuFeatures::IsSupported(ARMv7));
1236
- ASSERT(!dst.is(pc) && !src.rm_.is(pc));
1237
- ASSERT((satpos >= 0) && (satpos <= 31));
1238
- ASSERT((src.shift_op_ == ASR) || (src.shift_op_ == LSL));
1239
- ASSERT(src.rs_.is(no_reg));
1240
-
1241
- int sh = 0;
1242
- if (src.shift_op_ == ASR) {
1243
- sh = 1;
1244
- }
1245
-
1246
- emit(cond | 0x6*B24 | 0xe*B20 | satpos*B16 | dst.code()*B12 |
1247
- src.shift_imm_*B7 | sh*B6 | 0x1*B4 | src.rm_.code());
1248
- }
1249
-
1250
-
1251
- // Bitfield manipulation instructions.
1252
-
1253
- // Unsigned bit field extract.
1254
- // Extracts #width adjacent bits from position #lsb in a register, and
1255
- // writes them to the low bits of a destination register.
1256
- // ubfx dst, src, #lsb, #width
1257
- void Assembler::ubfx(Register dst,
1258
- Register src,
1259
- int lsb,
1260
- int width,
1261
- Condition cond) {
1262
- // v7 and above.
1263
- ASSERT(CpuFeatures::IsSupported(ARMv7));
1264
- ASSERT(!dst.is(pc) && !src.is(pc));
1265
- ASSERT((lsb >= 0) && (lsb <= 31));
1266
- ASSERT((width >= 1) && (width <= (32 - lsb)));
1267
- emit(cond | 0xf*B23 | B22 | B21 | (width - 1)*B16 | dst.code()*B12 |
1268
- lsb*B7 | B6 | B4 | src.code());
1269
- }
1270
-
1271
-
1272
- // Signed bit field extract.
1273
- // Extracts #width adjacent bits from position #lsb in a register, and
1274
- // writes them to the low bits of a destination register. The extracted
1275
- // value is sign extended to fill the destination register.
1276
- // sbfx dst, src, #lsb, #width
1277
- void Assembler::sbfx(Register dst,
1278
- Register src,
1279
- int lsb,
1280
- int width,
1281
- Condition cond) {
1282
- // v7 and above.
1283
- ASSERT(CpuFeatures::IsSupported(ARMv7));
1284
- ASSERT(!dst.is(pc) && !src.is(pc));
1285
- ASSERT((lsb >= 0) && (lsb <= 31));
1286
- ASSERT((width >= 1) && (width <= (32 - lsb)));
1287
- emit(cond | 0xf*B23 | B21 | (width - 1)*B16 | dst.code()*B12 |
1288
- lsb*B7 | B6 | B4 | src.code());
1289
- }
1290
-
1291
-
1292
- // Bit field clear.
1293
- // Sets #width adjacent bits at position #lsb in the destination register
1294
- // to zero, preserving the value of the other bits.
1295
- // bfc dst, #lsb, #width
1296
- void Assembler::bfc(Register dst, int lsb, int width, Condition cond) {
1297
- // v7 and above.
1298
- ASSERT(CpuFeatures::IsSupported(ARMv7));
1299
- ASSERT(!dst.is(pc));
1300
- ASSERT((lsb >= 0) && (lsb <= 31));
1301
- ASSERT((width >= 1) && (width <= (32 - lsb)));
1302
- int msb = lsb + width - 1;
1303
- emit(cond | 0x1f*B22 | msb*B16 | dst.code()*B12 | lsb*B7 | B4 | 0xf);
1304
- }
1305
-
1306
-
1307
- // Bit field insert.
1308
- // Inserts #width adjacent bits from the low bits of the source register
1309
- // into position #lsb of the destination register.
1310
- // bfi dst, src, #lsb, #width
1311
- void Assembler::bfi(Register dst,
1312
- Register src,
1313
- int lsb,
1314
- int width,
1315
- Condition cond) {
1316
- // v7 and above.
1317
- ASSERT(CpuFeatures::IsSupported(ARMv7));
1318
- ASSERT(!dst.is(pc) && !src.is(pc));
1319
- ASSERT((lsb >= 0) && (lsb <= 31));
1320
- ASSERT((width >= 1) && (width <= (32 - lsb)));
1321
- int msb = lsb + width - 1;
1322
- emit(cond | 0x1f*B22 | msb*B16 | dst.code()*B12 | lsb*B7 | B4 |
1323
- src.code());
1324
- }
1325
-
1326
-
1327
- // Status register access instructions.
1328
- void Assembler::mrs(Register dst, SRegister s, Condition cond) {
1329
- ASSERT(!dst.is(pc));
1330
- emit(cond | B24 | s | 15*B16 | dst.code()*B12);
1331
- }
1332
-
1333
-
1334
- void Assembler::msr(SRegisterFieldMask fields, const Operand& src,
1335
- Condition cond) {
1336
- ASSERT(fields >= B16 && fields < B20); // at least one field set
1337
- Instr instr;
1338
- if (!src.rm_.is_valid()) {
1339
- // Immediate.
1340
- uint32_t rotate_imm;
1341
- uint32_t immed_8;
1342
- if (MustUseConstantPool(src.rmode_) ||
1343
- !fits_shifter(src.imm32_, &rotate_imm, &immed_8, NULL)) {
1344
- // Immediate operand cannot be encoded, load it first to register ip.
1345
- RecordRelocInfo(src.rmode_, src.imm32_);
1346
- ldr(ip, MemOperand(pc, 0), cond);
1347
- msr(fields, Operand(ip), cond);
1348
- return;
1349
- }
1350
- instr = I | rotate_imm*B8 | immed_8;
1351
- } else {
1352
- ASSERT(!src.rs_.is_valid() && src.shift_imm_ == 0); // only rm allowed
1353
- instr = src.rm_.code();
1354
- }
1355
- emit(cond | instr | B24 | B21 | fields | 15*B12);
1356
- }
1357
-
1358
-
1359
- // Load/Store instructions.
1360
- void Assembler::ldr(Register dst, const MemOperand& src, Condition cond) {
1361
- if (dst.is(pc)) {
1362
- WriteRecordedPositions();
1363
- }
1364
- addrmod2(cond | B26 | L, dst, src);
1365
-
1366
- // Eliminate pattern: push(ry), pop(rx)
1367
- // str(ry, MemOperand(sp, 4, NegPreIndex), al)
1368
- // ldr(rx, MemOperand(sp, 4, PostIndex), al)
1369
- // Both instructions can be eliminated if ry = rx.
1370
- // If ry != rx, a register copy from ry to rx is inserted
1371
- // after eliminating the push and the pop instructions.
1372
- if (can_peephole_optimize(2)) {
1373
- Instr push_instr = instr_at(pc_ - 2 * kInstrSize);
1374
- Instr pop_instr = instr_at(pc_ - 1 * kInstrSize);
1375
-
1376
- if (IsPush(push_instr) && IsPop(pop_instr)) {
1377
- if ((pop_instr & kRdMask) != (push_instr & kRdMask)) {
1378
- // For consecutive push and pop on different registers,
1379
- // we delete both the push & pop and insert a register move.
1380
- // push ry, pop rx --> mov rx, ry
1381
- Register reg_pushed, reg_popped;
1382
- reg_pushed = GetRd(push_instr);
1383
- reg_popped = GetRd(pop_instr);
1384
- pc_ -= 2 * kInstrSize;
1385
- // Insert a mov instruction, which is better than a pair of push & pop
1386
- mov(reg_popped, reg_pushed);
1387
- if (FLAG_print_peephole_optimization) {
1388
- PrintF("%x push/pop (diff reg) replaced by a reg move\n",
1389
- pc_offset());
1390
- }
1391
- } else {
1392
- // For consecutive push and pop on the same register,
1393
- // both the push and the pop can be deleted.
1394
- pc_ -= 2 * kInstrSize;
1395
- if (FLAG_print_peephole_optimization) {
1396
- PrintF("%x push/pop (same reg) eliminated\n", pc_offset());
1397
- }
1398
- }
1399
- }
1400
- }
1401
-
1402
- if (can_peephole_optimize(2)) {
1403
- Instr str_instr = instr_at(pc_ - 2 * kInstrSize);
1404
- Instr ldr_instr = instr_at(pc_ - 1 * kInstrSize);
1405
-
1406
- if ((IsStrRegFpOffset(str_instr) &&
1407
- IsLdrRegFpOffset(ldr_instr)) ||
1408
- (IsStrRegFpNegOffset(str_instr) &&
1409
- IsLdrRegFpNegOffset(ldr_instr))) {
1410
- if ((ldr_instr & kLdrStrInstrArgumentMask) ==
1411
- (str_instr & kLdrStrInstrArgumentMask)) {
1412
- // Pattern: Ldr/str same fp+offset, same register.
1413
- //
1414
- // The following:
1415
- // str rx, [fp, #-12]
1416
- // ldr rx, [fp, #-12]
1417
- //
1418
- // Becomes:
1419
- // str rx, [fp, #-12]
1420
-
1421
- pc_ -= 1 * kInstrSize;
1422
- if (FLAG_print_peephole_optimization) {
1423
- PrintF("%x str/ldr (fp + same offset), same reg\n", pc_offset());
1424
- }
1425
- } else if ((ldr_instr & kLdrStrOffsetMask) ==
1426
- (str_instr & kLdrStrOffsetMask)) {
1427
- // Pattern: Ldr/str same fp+offset, different register.
1428
- //
1429
- // The following:
1430
- // str rx, [fp, #-12]
1431
- // ldr ry, [fp, #-12]
1432
- //
1433
- // Becomes:
1434
- // str rx, [fp, #-12]
1435
- // mov ry, rx
1436
-
1437
- Register reg_stored, reg_loaded;
1438
- reg_stored = GetRd(str_instr);
1439
- reg_loaded = GetRd(ldr_instr);
1440
- pc_ -= 1 * kInstrSize;
1441
- // Insert a mov instruction, which is better than ldr.
1442
- mov(reg_loaded, reg_stored);
1443
- if (FLAG_print_peephole_optimization) {
1444
- PrintF("%x str/ldr (fp + same offset), diff reg \n", pc_offset());
1445
- }
1446
- }
1447
- }
1448
- }
1449
-
1450
- if (can_peephole_optimize(3)) {
1451
- Instr mem_write_instr = instr_at(pc_ - 3 * kInstrSize);
1452
- Instr ldr_instr = instr_at(pc_ - 2 * kInstrSize);
1453
- Instr mem_read_instr = instr_at(pc_ - 1 * kInstrSize);
1454
- if (IsPush(mem_write_instr) &&
1455
- IsPop(mem_read_instr)) {
1456
- if ((IsLdrRegFpOffset(ldr_instr) ||
1457
- IsLdrRegFpNegOffset(ldr_instr))) {
1458
- if ((mem_write_instr & kRdMask) ==
1459
- (mem_read_instr & kRdMask)) {
1460
- // Pattern: push & pop from/to same register,
1461
- // with a fp+offset ldr in between
1462
- //
1463
- // The following:
1464
- // str rx, [sp, #-4]!
1465
- // ldr rz, [fp, #-24]
1466
- // ldr rx, [sp], #+4
1467
- //
1468
- // Becomes:
1469
- // if(rx == rz)
1470
- // delete all
1471
- // else
1472
- // ldr rz, [fp, #-24]
1473
-
1474
- if ((mem_write_instr & kRdMask) == (ldr_instr & kRdMask)) {
1475
- pc_ -= 3 * kInstrSize;
1476
- } else {
1477
- pc_ -= 3 * kInstrSize;
1478
- // Reinsert back the ldr rz.
1479
- emit(ldr_instr);
1480
- }
1481
- if (FLAG_print_peephole_optimization) {
1482
- PrintF("%x push/pop -dead ldr fp+offset in middle\n", pc_offset());
1483
- }
1484
- } else {
1485
- // Pattern: push & pop from/to different registers
1486
- // with a fp+offset ldr in between
1487
- //
1488
- // The following:
1489
- // str rx, [sp, #-4]!
1490
- // ldr rz, [fp, #-24]
1491
- // ldr ry, [sp], #+4
1492
- //
1493
- // Becomes:
1494
- // if(ry == rz)
1495
- // mov ry, rx;
1496
- // else if(rx != rz)
1497
- // ldr rz, [fp, #-24]
1498
- // mov ry, rx
1499
- // else if((ry != rz) || (rx == rz)) becomes:
1500
- // mov ry, rx
1501
- // ldr rz, [fp, #-24]
1502
-
1503
- Register reg_pushed, reg_popped;
1504
- if ((mem_read_instr & kRdMask) == (ldr_instr & kRdMask)) {
1505
- reg_pushed = GetRd(mem_write_instr);
1506
- reg_popped = GetRd(mem_read_instr);
1507
- pc_ -= 3 * kInstrSize;
1508
- mov(reg_popped, reg_pushed);
1509
- } else if ((mem_write_instr & kRdMask)
1510
- != (ldr_instr & kRdMask)) {
1511
- reg_pushed = GetRd(mem_write_instr);
1512
- reg_popped = GetRd(mem_read_instr);
1513
- pc_ -= 3 * kInstrSize;
1514
- emit(ldr_instr);
1515
- mov(reg_popped, reg_pushed);
1516
- } else if (((mem_read_instr & kRdMask)
1517
- != (ldr_instr & kRdMask)) ||
1518
- ((mem_write_instr & kRdMask)
1519
- == (ldr_instr & kRdMask)) ) {
1520
- reg_pushed = GetRd(mem_write_instr);
1521
- reg_popped = GetRd(mem_read_instr);
1522
- pc_ -= 3 * kInstrSize;
1523
- mov(reg_popped, reg_pushed);
1524
- emit(ldr_instr);
1525
- }
1526
- if (FLAG_print_peephole_optimization) {
1527
- PrintF("%x push/pop (ldr fp+off in middle)\n", pc_offset());
1528
- }
1529
- }
1530
- }
1531
- }
1532
- }
1533
- }
1534
-
1535
-
1536
- void Assembler::str(Register src, const MemOperand& dst, Condition cond) {
1537
- addrmod2(cond | B26, src, dst);
1538
-
1539
- // Eliminate pattern: pop(), push(r)
1540
- // add sp, sp, #4 LeaveCC, al; str r, [sp, #-4], al
1541
- // -> str r, [sp, 0], al
1542
- if (can_peephole_optimize(2) &&
1543
- // Pattern.
1544
- instr_at(pc_ - 1 * kInstrSize) == (kPushRegPattern | src.code() * B12) &&
1545
- instr_at(pc_ - 2 * kInstrSize) == kPopInstruction) {
1546
- pc_ -= 2 * kInstrSize;
1547
- emit(al | B26 | 0 | Offset | sp.code() * B16 | src.code() * B12);
1548
- if (FLAG_print_peephole_optimization) {
1549
- PrintF("%x pop()/push(reg) eliminated\n", pc_offset());
1550
- }
1551
- }
1552
- }
1553
-
1554
-
1555
- void Assembler::ldrb(Register dst, const MemOperand& src, Condition cond) {
1556
- addrmod2(cond | B26 | B | L, dst, src);
1557
- }
1558
-
1559
-
1560
- void Assembler::strb(Register src, const MemOperand& dst, Condition cond) {
1561
- addrmod2(cond | B26 | B, src, dst);
1562
- }
1563
-
1564
-
1565
- void Assembler::ldrh(Register dst, const MemOperand& src, Condition cond) {
1566
- addrmod3(cond | L | B7 | H | B4, dst, src);
1567
- }
1568
-
1569
-
1570
- void Assembler::strh(Register src, const MemOperand& dst, Condition cond) {
1571
- addrmod3(cond | B7 | H | B4, src, dst);
1572
- }
1573
-
1574
-
1575
- void Assembler::ldrsb(Register dst, const MemOperand& src, Condition cond) {
1576
- addrmod3(cond | L | B7 | S6 | B4, dst, src);
1577
- }
1578
-
1579
-
1580
- void Assembler::ldrsh(Register dst, const MemOperand& src, Condition cond) {
1581
- addrmod3(cond | L | B7 | S6 | H | B4, dst, src);
1582
- }
1583
-
1584
-
1585
- void Assembler::ldrd(Register dst1, Register dst2,
1586
- const MemOperand& src, Condition cond) {
1587
- ASSERT(CpuFeatures::IsEnabled(ARMv7));
1588
- ASSERT(src.rm().is(no_reg));
1589
- ASSERT(!dst1.is(lr)); // r14.
1590
- ASSERT_EQ(0, dst1.code() % 2);
1591
- ASSERT_EQ(dst1.code() + 1, dst2.code());
1592
- addrmod3(cond | B7 | B6 | B4, dst1, src);
1593
- }
1594
-
1595
-
1596
- void Assembler::strd(Register src1, Register src2,
1597
- const MemOperand& dst, Condition cond) {
1598
- ASSERT(dst.rm().is(no_reg));
1599
- ASSERT(!src1.is(lr)); // r14.
1600
- ASSERT_EQ(0, src1.code() % 2);
1601
- ASSERT_EQ(src1.code() + 1, src2.code());
1602
- ASSERT(CpuFeatures::IsEnabled(ARMv7));
1603
- addrmod3(cond | B7 | B6 | B5 | B4, src1, dst);
1604
- }
1605
-
1606
- // Load/Store multiple instructions.
1607
- void Assembler::ldm(BlockAddrMode am,
1608
- Register base,
1609
- RegList dst,
1610
- Condition cond) {
1611
- // ABI stack constraint: ldmxx base, {..sp..} base != sp is not restartable.
1612
- ASSERT(base.is(sp) || (dst & sp.bit()) == 0);
1613
-
1614
- addrmod4(cond | B27 | am | L, base, dst);
1615
-
1616
- // Emit the constant pool after a function return implemented by ldm ..{..pc}.
1617
- if (cond == al && (dst & pc.bit()) != 0) {
1618
- // There is a slight chance that the ldm instruction was actually a call,
1619
- // in which case it would be wrong to return into the constant pool; we
1620
- // recognize this case by checking if the emission of the pool was blocked
1621
- // at the pc of the ldm instruction by a mov lr, pc instruction; if this is
1622
- // the case, we emit a jump over the pool.
1623
- CheckConstPool(true, no_const_pool_before_ == pc_offset() - kInstrSize);
1624
- }
1625
- }
1626
-
1627
-
1628
- void Assembler::stm(BlockAddrMode am,
1629
- Register base,
1630
- RegList src,
1631
- Condition cond) {
1632
- addrmod4(cond | B27 | am, base, src);
1633
- }
1634
-
1635
-
1636
- // Exception-generating instructions and debugging support.
1637
- void Assembler::stop(const char* msg) {
1638
- #ifndef __arm__
1639
- // The simulator handles these special instructions and stops execution.
1640
- emit(15 << 28 | ((intptr_t) msg));
1641
- #else // def __arm__
1642
- #ifdef CAN_USE_ARMV5_INSTRUCTIONS
1643
- bkpt(0);
1644
- #else // ndef CAN_USE_ARMV5_INSTRUCTIONS
1645
- swi(0x9f0001);
1646
- #endif // ndef CAN_USE_ARMV5_INSTRUCTIONS
1647
- #endif // def __arm__
1648
- }
1649
-
1650
-
1651
- void Assembler::bkpt(uint32_t imm16) { // v5 and above
1652
- ASSERT(is_uint16(imm16));
1653
- emit(al | B24 | B21 | (imm16 >> 4)*B8 | 7*B4 | (imm16 & 0xf));
1654
- }
1655
-
1656
-
1657
- void Assembler::swi(uint32_t imm24, Condition cond) {
1658
- ASSERT(is_uint24(imm24));
1659
- emit(cond | 15*B24 | imm24);
1660
- }
1661
-
1662
-
1663
- // Coprocessor instructions.
1664
- void Assembler::cdp(Coprocessor coproc,
1665
- int opcode_1,
1666
- CRegister crd,
1667
- CRegister crn,
1668
- CRegister crm,
1669
- int opcode_2,
1670
- Condition cond) {
1671
- ASSERT(is_uint4(opcode_1) && is_uint3(opcode_2));
1672
- emit(cond | B27 | B26 | B25 | (opcode_1 & 15)*B20 | crn.code()*B16 |
1673
- crd.code()*B12 | coproc*B8 | (opcode_2 & 7)*B5 | crm.code());
1674
- }
1675
-
1676
-
1677
- void Assembler::cdp2(Coprocessor coproc,
1678
- int opcode_1,
1679
- CRegister crd,
1680
- CRegister crn,
1681
- CRegister crm,
1682
- int opcode_2) { // v5 and above
1683
- cdp(coproc, opcode_1, crd, crn, crm, opcode_2, static_cast<Condition>(nv));
1684
- }
1685
-
1686
-
1687
- void Assembler::mcr(Coprocessor coproc,
1688
- int opcode_1,
1689
- Register rd,
1690
- CRegister crn,
1691
- CRegister crm,
1692
- int opcode_2,
1693
- Condition cond) {
1694
- ASSERT(is_uint3(opcode_1) && is_uint3(opcode_2));
1695
- emit(cond | B27 | B26 | B25 | (opcode_1 & 7)*B21 | crn.code()*B16 |
1696
- rd.code()*B12 | coproc*B8 | (opcode_2 & 7)*B5 | B4 | crm.code());
1697
- }
1698
-
1699
-
1700
- void Assembler::mcr2(Coprocessor coproc,
1701
- int opcode_1,
1702
- Register rd,
1703
- CRegister crn,
1704
- CRegister crm,
1705
- int opcode_2) { // v5 and above
1706
- mcr(coproc, opcode_1, rd, crn, crm, opcode_2, static_cast<Condition>(nv));
1707
- }
1708
-
1709
-
1710
- void Assembler::mrc(Coprocessor coproc,
1711
- int opcode_1,
1712
- Register rd,
1713
- CRegister crn,
1714
- CRegister crm,
1715
- int opcode_2,
1716
- Condition cond) {
1717
- ASSERT(is_uint3(opcode_1) && is_uint3(opcode_2));
1718
- emit(cond | B27 | B26 | B25 | (opcode_1 & 7)*B21 | L | crn.code()*B16 |
1719
- rd.code()*B12 | coproc*B8 | (opcode_2 & 7)*B5 | B4 | crm.code());
1720
- }
1721
-
1722
-
1723
- void Assembler::mrc2(Coprocessor coproc,
1724
- int opcode_1,
1725
- Register rd,
1726
- CRegister crn,
1727
- CRegister crm,
1728
- int opcode_2) { // v5 and above
1729
- mrc(coproc, opcode_1, rd, crn, crm, opcode_2, static_cast<Condition>(nv));
1730
- }
1731
-
1732
-
1733
- void Assembler::ldc(Coprocessor coproc,
1734
- CRegister crd,
1735
- const MemOperand& src,
1736
- LFlag l,
1737
- Condition cond) {
1738
- addrmod5(cond | B27 | B26 | l | L | coproc*B8, crd, src);
1739
- }
1740
-
1741
-
1742
- void Assembler::ldc(Coprocessor coproc,
1743
- CRegister crd,
1744
- Register rn,
1745
- int option,
1746
- LFlag l,
1747
- Condition cond) {
1748
- // Unindexed addressing.
1749
- ASSERT(is_uint8(option));
1750
- emit(cond | B27 | B26 | U | l | L | rn.code()*B16 | crd.code()*B12 |
1751
- coproc*B8 | (option & 255));
1752
- }
1753
-
1754
-
1755
- void Assembler::ldc2(Coprocessor coproc,
1756
- CRegister crd,
1757
- const MemOperand& src,
1758
- LFlag l) { // v5 and above
1759
- ldc(coproc, crd, src, l, static_cast<Condition>(nv));
1760
- }
1761
-
1762
-
1763
- void Assembler::ldc2(Coprocessor coproc,
1764
- CRegister crd,
1765
- Register rn,
1766
- int option,
1767
- LFlag l) { // v5 and above
1768
- ldc(coproc, crd, rn, option, l, static_cast<Condition>(nv));
1769
- }
1770
-
1771
-
1772
- void Assembler::stc(Coprocessor coproc,
1773
- CRegister crd,
1774
- const MemOperand& dst,
1775
- LFlag l,
1776
- Condition cond) {
1777
- addrmod5(cond | B27 | B26 | l | coproc*B8, crd, dst);
1778
- }
1779
-
1780
-
1781
- void Assembler::stc(Coprocessor coproc,
1782
- CRegister crd,
1783
- Register rn,
1784
- int option,
1785
- LFlag l,
1786
- Condition cond) {
1787
- // Unindexed addressing.
1788
- ASSERT(is_uint8(option));
1789
- emit(cond | B27 | B26 | U | l | rn.code()*B16 | crd.code()*B12 |
1790
- coproc*B8 | (option & 255));
1791
- }
1792
-
1793
-
1794
- void Assembler::stc2(Coprocessor
1795
- coproc, CRegister crd,
1796
- const MemOperand& dst,
1797
- LFlag l) { // v5 and above
1798
- stc(coproc, crd, dst, l, static_cast<Condition>(nv));
1799
- }
1800
-
1801
-
1802
- void Assembler::stc2(Coprocessor coproc,
1803
- CRegister crd,
1804
- Register rn,
1805
- int option,
1806
- LFlag l) { // v5 and above
1807
- stc(coproc, crd, rn, option, l, static_cast<Condition>(nv));
1808
- }
1809
-
1810
-
1811
- // Support for VFP.
1812
- void Assembler::vldr(const DwVfpRegister dst,
1813
- const Register base,
1814
- int offset,
1815
- const Condition cond) {
1816
- // Ddst = MEM(Rbase + offset).
1817
- // Instruction details available in ARM DDI 0406A, A8-628.
1818
- // cond(31-28) | 1101(27-24)| 1001(23-20) | Rbase(19-16) |
1819
- // Vdst(15-12) | 1011(11-8) | offset
1820
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1821
- ASSERT(offset % 4 == 0);
1822
- ASSERT((offset / 4) < 256);
1823
- emit(cond | 0xD9*B20 | base.code()*B16 | dst.code()*B12 |
1824
- 0xB*B8 | ((offset / 4) & 255));
1825
- }
1826
-
1827
-
1828
- void Assembler::vldr(const SwVfpRegister dst,
1829
- const Register base,
1830
- int offset,
1831
- const Condition cond) {
1832
- // Sdst = MEM(Rbase + offset).
1833
- // Instruction details available in ARM DDI 0406A, A8-628.
1834
- // cond(31-28) | 1101(27-24)| 1001(23-20) | Rbase(19-16) |
1835
- // Vdst(15-12) | 1010(11-8) | offset
1836
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1837
- ASSERT(offset % 4 == 0);
1838
- ASSERT((offset / 4) < 256);
1839
- emit(cond | 0xD9*B20 | base.code()*B16 | dst.code()*B12 |
1840
- 0xA*B8 | ((offset / 4) & 255));
1841
- }
1842
-
1843
-
1844
- void Assembler::vstr(const DwVfpRegister src,
1845
- const Register base,
1846
- int offset,
1847
- const Condition cond) {
1848
- // MEM(Rbase + offset) = Dsrc.
1849
- // Instruction details available in ARM DDI 0406A, A8-786.
1850
- // cond(31-28) | 1101(27-24)| 1000(23-20) | | Rbase(19-16) |
1851
- // Vsrc(15-12) | 1011(11-8) | (offset/4)
1852
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1853
- ASSERT(offset % 4 == 0);
1854
- ASSERT((offset / 4) < 256);
1855
- emit(cond | 0xD8*B20 | base.code()*B16 | src.code()*B12 |
1856
- 0xB*B8 | ((offset / 4) & 255));
1857
- }
1858
-
1859
-
1860
- static void DoubleAsTwoUInt32(double d, uint32_t* lo, uint32_t* hi) {
1861
- uint64_t i;
1862
- memcpy(&i, &d, 8);
1863
-
1864
- *lo = i & 0xffffffff;
1865
- *hi = i >> 32;
1866
- }
1867
-
1868
- // Only works for little endian floating point formats.
1869
- // We don't support VFP on the mixed endian floating point platform.
1870
- static bool FitsVMOVDoubleImmediate(double d, uint32_t *encoding) {
1871
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1872
-
1873
- // VMOV can accept an immediate of the form:
1874
- //
1875
- // +/- m * 2^(-n) where 16 <= m <= 31 and 0 <= n <= 7
1876
- //
1877
- // The immediate is encoded using an 8-bit quantity, comprised of two
1878
- // 4-bit fields. For an 8-bit immediate of the form:
1879
- //
1880
- // [abcdefgh]
1881
- //
1882
- // where a is the MSB and h is the LSB, an immediate 64-bit double can be
1883
- // created of the form:
1884
- //
1885
- // [aBbbbbbb,bbcdefgh,00000000,00000000,
1886
- // 00000000,00000000,00000000,00000000]
1887
- //
1888
- // where B = ~b.
1889
- //
1890
-
1891
- uint32_t lo, hi;
1892
- DoubleAsTwoUInt32(d, &lo, &hi);
1893
-
1894
- // The most obvious constraint is the long block of zeroes.
1895
- if ((lo != 0) || ((hi & 0xffff) != 0)) {
1896
- return false;
1897
- }
1898
-
1899
- // Bits 62:55 must be all clear or all set.
1900
- if (((hi & 0x3fc00000) != 0) && ((hi & 0x3fc00000) != 0x3fc00000)) {
1901
- return false;
1902
- }
1903
-
1904
- // Bit 63 must be NOT bit 62.
1905
- if (((hi ^ (hi << 1)) & (0x40000000)) == 0) {
1906
- return false;
1907
- }
1908
-
1909
- // Create the encoded immediate in the form:
1910
- // [00000000,0000abcd,00000000,0000efgh]
1911
- *encoding = (hi >> 16) & 0xf; // Low nybble.
1912
- *encoding |= (hi >> 4) & 0x70000; // Low three bits of the high nybble.
1913
- *encoding |= (hi >> 12) & 0x80000; // Top bit of the high nybble.
1914
-
1915
- return true;
1916
- }
1917
-
1918
-
1919
- void Assembler::vmov(const DwVfpRegister dst,
1920
- double imm,
1921
- const Condition cond) {
1922
- // Dd = immediate
1923
- // Instruction details available in ARM DDI 0406B, A8-640.
1924
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1925
-
1926
- uint32_t enc;
1927
- if (FitsVMOVDoubleImmediate(imm, &enc)) {
1928
- // The double can be encoded in the instruction.
1929
- emit(cond | 0xE*B24 | 0xB*B20 | dst.code()*B12 | 0xB*B8 | enc);
1930
- } else {
1931
- // Synthesise the double from ARM immediates. This could be implemented
1932
- // using vldr from a constant pool.
1933
- uint32_t lo, hi;
1934
- DoubleAsTwoUInt32(imm, &lo, &hi);
1935
-
1936
- if (lo == hi) {
1937
- // If the lo and hi parts of the double are equal, the literal is easier
1938
- // to create. This is the case with 0.0.
1939
- mov(ip, Operand(lo));
1940
- vmov(dst, ip, ip);
1941
- } else {
1942
- // Move the low part of the double into the lower of the corresponsing S
1943
- // registers of D register dst.
1944
- mov(ip, Operand(lo));
1945
- vmov(dst.low(), ip, cond);
1946
-
1947
- // Move the high part of the double into the higher of the corresponsing S
1948
- // registers of D register dst.
1949
- mov(ip, Operand(hi));
1950
- vmov(dst.high(), ip, cond);
1951
- }
1952
- }
1953
- }
1954
-
1955
-
1956
- void Assembler::vmov(const SwVfpRegister dst,
1957
- const SwVfpRegister src,
1958
- const Condition cond) {
1959
- // Sd = Sm
1960
- // Instruction details available in ARM DDI 0406B, A8-642.
1961
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1962
- emit(cond | 0xE*B24 | 0xB*B20 |
1963
- dst.code()*B12 | 0x5*B9 | B6 | src.code());
1964
- }
1965
-
1966
-
1967
- void Assembler::vmov(const DwVfpRegister dst,
1968
- const DwVfpRegister src,
1969
- const Condition cond) {
1970
- // Dd = Dm
1971
- // Instruction details available in ARM DDI 0406B, A8-642.
1972
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1973
- emit(cond | 0xE*B24 | 0xB*B20 |
1974
- dst.code()*B12 | 0x5*B9 | B8 | B6 | src.code());
1975
- }
1976
-
1977
-
1978
- void Assembler::vmov(const DwVfpRegister dst,
1979
- const Register src1,
1980
- const Register src2,
1981
- const Condition cond) {
1982
- // Dm = <Rt,Rt2>.
1983
- // Instruction details available in ARM DDI 0406A, A8-646.
1984
- // cond(31-28) | 1100(27-24)| 010(23-21) | op=0(20) | Rt2(19-16) |
1985
- // Rt(15-12) | 1011(11-8) | 00(7-6) | M(5) | 1(4) | Vm
1986
- ASSERT(CpuFeatures::IsEnabled(VFP3));
1987
- ASSERT(!src1.is(pc) && !src2.is(pc));
1988
- emit(cond | 0xC*B24 | B22 | src2.code()*B16 |
1989
- src1.code()*B12 | 0xB*B8 | B4 | dst.code());
1990
- }
1991
-
1992
-
1993
- void Assembler::vmov(const Register dst1,
1994
- const Register dst2,
1995
- const DwVfpRegister src,
1996
- const Condition cond) {
1997
- // <Rt,Rt2> = Dm.
1998
- // Instruction details available in ARM DDI 0406A, A8-646.
1999
- // cond(31-28) | 1100(27-24)| 010(23-21) | op=1(20) | Rt2(19-16) |
2000
- // Rt(15-12) | 1011(11-8) | 00(7-6) | M(5) | 1(4) | Vm
2001
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2002
- ASSERT(!dst1.is(pc) && !dst2.is(pc));
2003
- emit(cond | 0xC*B24 | B22 | B20 | dst2.code()*B16 |
2004
- dst1.code()*B12 | 0xB*B8 | B4 | src.code());
2005
- }
2006
-
2007
-
2008
- void Assembler::vmov(const SwVfpRegister dst,
2009
- const Register src,
2010
- const Condition cond) {
2011
- // Sn = Rt.
2012
- // Instruction details available in ARM DDI 0406A, A8-642.
2013
- // cond(31-28) | 1110(27-24)| 000(23-21) | op=0(20) | Vn(19-16) |
2014
- // Rt(15-12) | 1010(11-8) | N(7)=0 | 00(6-5) | 1(4) | 0000(3-0)
2015
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2016
- ASSERT(!src.is(pc));
2017
- emit(cond | 0xE*B24 | (dst.code() >> 1)*B16 |
2018
- src.code()*B12 | 0xA*B8 | (0x1 & dst.code())*B7 | B4);
2019
- }
2020
-
2021
-
2022
- void Assembler::vmov(const Register dst,
2023
- const SwVfpRegister src,
2024
- const Condition cond) {
2025
- // Rt = Sn.
2026
- // Instruction details available in ARM DDI 0406A, A8-642.
2027
- // cond(31-28) | 1110(27-24)| 000(23-21) | op=1(20) | Vn(19-16) |
2028
- // Rt(15-12) | 1010(11-8) | N(7)=0 | 00(6-5) | 1(4) | 0000(3-0)
2029
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2030
- ASSERT(!dst.is(pc));
2031
- emit(cond | 0xE*B24 | B20 | (src.code() >> 1)*B16 |
2032
- dst.code()*B12 | 0xA*B8 | (0x1 & src.code())*B7 | B4);
2033
- }
2034
-
2035
-
2036
- // Type of data to read from or write to VFP register.
2037
- // Used as specifier in generic vcvt instruction.
2038
- enum VFPType { S32, U32, F32, F64 };
2039
-
2040
-
2041
- static bool IsSignedVFPType(VFPType type) {
2042
- switch (type) {
2043
- case S32:
2044
- return true;
2045
- case U32:
2046
- return false;
2047
- default:
2048
- UNREACHABLE();
2049
- return false;
2050
- }
2051
- }
2052
-
2053
-
2054
- static bool IsIntegerVFPType(VFPType type) {
2055
- switch (type) {
2056
- case S32:
2057
- case U32:
2058
- return true;
2059
- case F32:
2060
- case F64:
2061
- return false;
2062
- default:
2063
- UNREACHABLE();
2064
- return false;
2065
- }
2066
- }
2067
-
2068
-
2069
- static bool IsDoubleVFPType(VFPType type) {
2070
- switch (type) {
2071
- case F32:
2072
- return false;
2073
- case F64:
2074
- return true;
2075
- default:
2076
- UNREACHABLE();
2077
- return false;
2078
- }
2079
- }
2080
-
2081
-
2082
- // Depending on split_last_bit split binary representation of reg_code into Vm:M
2083
- // or M:Vm form (where M is single bit).
2084
- static void SplitRegCode(bool split_last_bit,
2085
- int reg_code,
2086
- int* vm,
2087
- int* m) {
2088
- if (split_last_bit) {
2089
- *m = reg_code & 0x1;
2090
- *vm = reg_code >> 1;
2091
- } else {
2092
- *m = (reg_code & 0x10) >> 4;
2093
- *vm = reg_code & 0x0F;
2094
- }
2095
- }
2096
-
2097
-
2098
- // Encode vcvt.src_type.dst_type instruction.
2099
- static Instr EncodeVCVT(const VFPType dst_type,
2100
- const int dst_code,
2101
- const VFPType src_type,
2102
- const int src_code,
2103
- const Condition cond) {
2104
- if (IsIntegerVFPType(dst_type) || IsIntegerVFPType(src_type)) {
2105
- // Conversion between IEEE floating point and 32-bit integer.
2106
- // Instruction details available in ARM DDI 0406B, A8.6.295.
2107
- // cond(31-28) | 11101(27-23)| D(22) | 11(21-20) | 1(19) | opc2(18-16) |
2108
- // Vd(15-12) | 101(11-9) | sz(8) | op(7) | 1(6) | M(5) | 0(4) | Vm(3-0)
2109
- ASSERT(!IsIntegerVFPType(dst_type) || !IsIntegerVFPType(src_type));
2110
-
2111
- int sz, opc2, D, Vd, M, Vm, op;
2112
-
2113
- if (IsIntegerVFPType(dst_type)) {
2114
- opc2 = IsSignedVFPType(dst_type) ? 0x5 : 0x4;
2115
- sz = IsDoubleVFPType(src_type) ? 0x1 : 0x0;
2116
- op = 1; // round towards zero
2117
- SplitRegCode(!IsDoubleVFPType(src_type), src_code, &Vm, &M);
2118
- SplitRegCode(true, dst_code, &Vd, &D);
2119
- } else {
2120
- ASSERT(IsIntegerVFPType(src_type));
2121
-
2122
- opc2 = 0x0;
2123
- sz = IsDoubleVFPType(dst_type) ? 0x1 : 0x0;
2124
- op = IsSignedVFPType(src_type) ? 0x1 : 0x0;
2125
- SplitRegCode(true, src_code, &Vm, &M);
2126
- SplitRegCode(!IsDoubleVFPType(dst_type), dst_code, &Vd, &D);
2127
- }
2128
-
2129
- return (cond | 0xE*B24 | B23 | D*B22 | 0x3*B20 | B19 | opc2*B16 |
2130
- Vd*B12 | 0x5*B9 | sz*B8 | op*B7 | B6 | M*B5 | Vm);
2131
- } else {
2132
- // Conversion between IEEE double and single precision.
2133
- // Instruction details available in ARM DDI 0406B, A8.6.298.
2134
- // cond(31-28) | 11101(27-23)| D(22) | 11(21-20) | 0111(19-16) |
2135
- // Vd(15-12) | 101(11-9) | sz(8) | 1(7) | 1(6) | M(5) | 0(4) | Vm(3-0)
2136
- int sz, D, Vd, M, Vm;
2137
-
2138
- ASSERT(IsDoubleVFPType(dst_type) != IsDoubleVFPType(src_type));
2139
- sz = IsDoubleVFPType(src_type) ? 0x1 : 0x0;
2140
- SplitRegCode(IsDoubleVFPType(src_type), dst_code, &Vd, &D);
2141
- SplitRegCode(!IsDoubleVFPType(src_type), src_code, &Vm, &M);
2142
-
2143
- return (cond | 0xE*B24 | B23 | D*B22 | 0x3*B20 | 0x7*B16 |
2144
- Vd*B12 | 0x5*B9 | sz*B8 | B7 | B6 | M*B5 | Vm);
2145
- }
2146
- }
2147
-
2148
-
2149
- void Assembler::vcvt_f64_s32(const DwVfpRegister dst,
2150
- const SwVfpRegister src,
2151
- const Condition cond) {
2152
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2153
- emit(EncodeVCVT(F64, dst.code(), S32, src.code(), cond));
2154
- }
2155
-
2156
-
2157
- void Assembler::vcvt_f32_s32(const SwVfpRegister dst,
2158
- const SwVfpRegister src,
2159
- const Condition cond) {
2160
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2161
- emit(EncodeVCVT(F32, dst.code(), S32, src.code(), cond));
2162
- }
2163
-
2164
-
2165
- void Assembler::vcvt_f64_u32(const DwVfpRegister dst,
2166
- const SwVfpRegister src,
2167
- const Condition cond) {
2168
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2169
- emit(EncodeVCVT(F64, dst.code(), U32, src.code(), cond));
2170
- }
2171
-
2172
-
2173
- void Assembler::vcvt_s32_f64(const SwVfpRegister dst,
2174
- const DwVfpRegister src,
2175
- const Condition cond) {
2176
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2177
- emit(EncodeVCVT(S32, dst.code(), F64, src.code(), cond));
2178
- }
2179
-
2180
-
2181
- void Assembler::vcvt_u32_f64(const SwVfpRegister dst,
2182
- const DwVfpRegister src,
2183
- const Condition cond) {
2184
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2185
- emit(EncodeVCVT(U32, dst.code(), F64, src.code(), cond));
2186
- }
2187
-
2188
-
2189
- void Assembler::vcvt_f64_f32(const DwVfpRegister dst,
2190
- const SwVfpRegister src,
2191
- const Condition cond) {
2192
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2193
- emit(EncodeVCVT(F64, dst.code(), F32, src.code(), cond));
2194
- }
2195
-
2196
-
2197
- void Assembler::vcvt_f32_f64(const SwVfpRegister dst,
2198
- const DwVfpRegister src,
2199
- const Condition cond) {
2200
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2201
- emit(EncodeVCVT(F32, dst.code(), F64, src.code(), cond));
2202
- }
2203
-
2204
-
2205
- void Assembler::vadd(const DwVfpRegister dst,
2206
- const DwVfpRegister src1,
2207
- const DwVfpRegister src2,
2208
- const Condition cond) {
2209
- // Dd = vadd(Dn, Dm) double precision floating point addition.
2210
- // Dd = D:Vd; Dm=M:Vm; Dn=N:Vm.
2211
- // Instruction details available in ARM DDI 0406A, A8-536.
2212
- // cond(31-28) | 11100(27-23)| D=?(22) | 11(21-20) | Vn(19-16) |
2213
- // Vd(15-12) | 101(11-9) | sz(8)=1 | N(7)=0 | 0(6) | M=?(5) | 0(4) | Vm(3-0)
2214
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2215
- emit(cond | 0xE*B24 | 0x3*B20 | src1.code()*B16 |
2216
- dst.code()*B12 | 0x5*B9 | B8 | src2.code());
2217
- }
2218
-
2219
-
2220
- void Assembler::vsub(const DwVfpRegister dst,
2221
- const DwVfpRegister src1,
2222
- const DwVfpRegister src2,
2223
- const Condition cond) {
2224
- // Dd = vsub(Dn, Dm) double precision floating point subtraction.
2225
- // Dd = D:Vd; Dm=M:Vm; Dn=N:Vm.
2226
- // Instruction details available in ARM DDI 0406A, A8-784.
2227
- // cond(31-28) | 11100(27-23)| D=?(22) | 11(21-20) | Vn(19-16) |
2228
- // Vd(15-12) | 101(11-9) | sz(8)=1 | N(7)=0 | 1(6) | M=?(5) | 0(4) | Vm(3-0)
2229
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2230
- emit(cond | 0xE*B24 | 0x3*B20 | src1.code()*B16 |
2231
- dst.code()*B12 | 0x5*B9 | B8 | B6 | src2.code());
2232
- }
2233
-
2234
-
2235
- void Assembler::vmul(const DwVfpRegister dst,
2236
- const DwVfpRegister src1,
2237
- const DwVfpRegister src2,
2238
- const Condition cond) {
2239
- // Dd = vmul(Dn, Dm) double precision floating point multiplication.
2240
- // Dd = D:Vd; Dm=M:Vm; Dn=N:Vm.
2241
- // Instruction details available in ARM DDI 0406A, A8-784.
2242
- // cond(31-28) | 11100(27-23)| D=?(22) | 10(21-20) | Vn(19-16) |
2243
- // Vd(15-12) | 101(11-9) | sz(8)=1 | N(7)=0 | 0(6) | M=?(5) | 0(4) | Vm(3-0)
2244
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2245
- emit(cond | 0xE*B24 | 0x2*B20 | src1.code()*B16 |
2246
- dst.code()*B12 | 0x5*B9 | B8 | src2.code());
2247
- }
2248
-
2249
-
2250
- void Assembler::vdiv(const DwVfpRegister dst,
2251
- const DwVfpRegister src1,
2252
- const DwVfpRegister src2,
2253
- const Condition cond) {
2254
- // Dd = vdiv(Dn, Dm) double precision floating point division.
2255
- // Dd = D:Vd; Dm=M:Vm; Dn=N:Vm.
2256
- // Instruction details available in ARM DDI 0406A, A8-584.
2257
- // cond(31-28) | 11101(27-23)| D=?(22) | 00(21-20) | Vn(19-16) |
2258
- // Vd(15-12) | 101(11-9) | sz(8)=1 | N(7)=? | 0(6) | M=?(5) | 0(4) | Vm(3-0)
2259
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2260
- emit(cond | 0xE*B24 | B23 | src1.code()*B16 |
2261
- dst.code()*B12 | 0x5*B9 | B8 | src2.code());
2262
- }
2263
-
2264
-
2265
- void Assembler::vcmp(const DwVfpRegister src1,
2266
- const DwVfpRegister src2,
2267
- const SBit s,
2268
- const Condition cond) {
2269
- // vcmp(Dd, Dm) double precision floating point comparison.
2270
- // Instruction details available in ARM DDI 0406A, A8-570.
2271
- // cond(31-28) | 11101 (27-23)| D=?(22) | 11 (21-20) | 0100 (19-16) |
2272
- // Vd(15-12) | 101(11-9) | sz(8)=1 | E(7)=? | 1(6) | M(5)=? | 0(4) | Vm(3-0)
2273
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2274
- emit(cond | 0xE*B24 |B23 | 0x3*B20 | B18 |
2275
- src1.code()*B12 | 0x5*B9 | B8 | B6 | src2.code());
2276
- }
2277
-
2278
-
2279
- void Assembler::vmrs(Register dst, Condition cond) {
2280
- // Instruction details available in ARM DDI 0406A, A8-652.
2281
- // cond(31-28) | 1110 (27-24) | 1111(23-20)| 0001 (19-16) |
2282
- // Rt(15-12) | 1010 (11-8) | 0(7) | 00 (6-5) | 1(4) | 0000(3-0)
2283
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2284
- emit(cond | 0xE*B24 | 0xF*B20 | B16 |
2285
- dst.code()*B12 | 0xA*B8 | B4);
2286
- }
2287
-
2288
-
2289
-
2290
- void Assembler::vsqrt(const DwVfpRegister dst,
2291
- const DwVfpRegister src,
2292
- const Condition cond) {
2293
- // cond(31-28) | 11101 (27-23)| D=?(22) | 11 (21-20) | 0001 (19-16) |
2294
- // Vd(15-12) | 101(11-9) | sz(8)=1 | 11 (7-6) | M(5)=? | 0(4) | Vm(3-0)
2295
- ASSERT(CpuFeatures::IsEnabled(VFP3));
2296
- emit(cond | 0xE*B24 | B23 | 0x3*B20 | B16 |
2297
- dst.code()*B12 | 0x5*B9 | B8 | 3*B6 | src.code());
2298
- }
2299
-
2300
-
2301
- // Pseudo instructions.
2302
- void Assembler::nop(int type) {
2303
- // This is mov rx, rx.
2304
- ASSERT(0 <= type && type <= 14); // mov pc, pc is not a nop.
2305
- emit(al | 13*B21 | type*B12 | type);
2306
- }
2307
-
2308
-
2309
- bool Assembler::ImmediateFitsAddrMode1Instruction(int32_t imm32) {
2310
- uint32_t dummy1;
2311
- uint32_t dummy2;
2312
- return fits_shifter(imm32, &dummy1, &dummy2, NULL);
2313
- }
2314
-
2315
-
2316
- void Assembler::BlockConstPoolFor(int instructions) {
2317
- BlockConstPoolBefore(pc_offset() + instructions * kInstrSize);
2318
- }
2319
-
2320
-
2321
- // Debugging.
2322
- void Assembler::RecordJSReturn() {
2323
- WriteRecordedPositions();
2324
- CheckBuffer();
2325
- RecordRelocInfo(RelocInfo::JS_RETURN);
2326
- }
2327
-
2328
-
2329
- void Assembler::RecordDebugBreakSlot() {
2330
- WriteRecordedPositions();
2331
- CheckBuffer();
2332
- RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT);
2333
- }
2334
-
2335
-
2336
- void Assembler::RecordComment(const char* msg) {
2337
- if (FLAG_debug_code) {
2338
- CheckBuffer();
2339
- RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg));
2340
- }
2341
- }
2342
-
2343
-
2344
- void Assembler::RecordPosition(int pos) {
2345
- if (pos == RelocInfo::kNoPosition) return;
2346
- ASSERT(pos >= 0);
2347
- current_position_ = pos;
2348
- }
2349
-
2350
-
2351
- void Assembler::RecordStatementPosition(int pos) {
2352
- if (pos == RelocInfo::kNoPosition) return;
2353
- ASSERT(pos >= 0);
2354
- current_statement_position_ = pos;
2355
- }
2356
-
2357
-
2358
- bool Assembler::WriteRecordedPositions() {
2359
- bool written = false;
2360
-
2361
- // Write the statement position if it is different from what was written last
2362
- // time.
2363
- if (current_statement_position_ != written_statement_position_) {
2364
- CheckBuffer();
2365
- RecordRelocInfo(RelocInfo::STATEMENT_POSITION, current_statement_position_);
2366
- written_statement_position_ = current_statement_position_;
2367
- written = true;
2368
- }
2369
-
2370
- // Write the position if it is different from what was written last time and
2371
- // also different from the written statement position.
2372
- if (current_position_ != written_position_ &&
2373
- current_position_ != written_statement_position_) {
2374
- CheckBuffer();
2375
- RecordRelocInfo(RelocInfo::POSITION, current_position_);
2376
- written_position_ = current_position_;
2377
- written = true;
2378
- }
2379
-
2380
- // Return whether something was written.
2381
- return written;
2382
- }
2383
-
2384
-
2385
- void Assembler::GrowBuffer() {
2386
- if (!own_buffer_) FATAL("external code buffer is too small");
2387
-
2388
- // Compute new buffer size.
2389
- CodeDesc desc; // the new buffer
2390
- if (buffer_size_ < 4*KB) {
2391
- desc.buffer_size = 4*KB;
2392
- } else if (buffer_size_ < 1*MB) {
2393
- desc.buffer_size = 2*buffer_size_;
2394
- } else {
2395
- desc.buffer_size = buffer_size_ + 1*MB;
2396
- }
2397
- CHECK_GT(desc.buffer_size, 0); // no overflow
2398
-
2399
- // Setup new buffer.
2400
- desc.buffer = NewArray<byte>(desc.buffer_size);
2401
-
2402
- desc.instr_size = pc_offset();
2403
- desc.reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos();
2404
-
2405
- // Copy the data.
2406
- int pc_delta = desc.buffer - buffer_;
2407
- int rc_delta = (desc.buffer + desc.buffer_size) - (buffer_ + buffer_size_);
2408
- memmove(desc.buffer, buffer_, desc.instr_size);
2409
- memmove(reloc_info_writer.pos() + rc_delta,
2410
- reloc_info_writer.pos(), desc.reloc_size);
2411
-
2412
- // Switch buffers.
2413
- DeleteArray(buffer_);
2414
- buffer_ = desc.buffer;
2415
- buffer_size_ = desc.buffer_size;
2416
- pc_ += pc_delta;
2417
- reloc_info_writer.Reposition(reloc_info_writer.pos() + rc_delta,
2418
- reloc_info_writer.last_pc() + pc_delta);
2419
-
2420
- // None of our relocation types are pc relative pointing outside the code
2421
- // buffer nor pc absolute pointing inside the code buffer, so there is no need
2422
- // to relocate any emitted relocation entries.
2423
-
2424
- // Relocate pending relocation entries.
2425
- for (int i = 0; i < num_prinfo_; i++) {
2426
- RelocInfo& rinfo = prinfo_[i];
2427
- ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
2428
- rinfo.rmode() != RelocInfo::POSITION);
2429
- if (rinfo.rmode() != RelocInfo::JS_RETURN) {
2430
- rinfo.set_pc(rinfo.pc() + pc_delta);
2431
- }
2432
- }
2433
- }
2434
-
2435
-
2436
- void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
2437
- RelocInfo rinfo(pc_, rmode, data); // we do not try to reuse pool constants
2438
- if (rmode >= RelocInfo::JS_RETURN && rmode <= RelocInfo::DEBUG_BREAK_SLOT) {
2439
- // Adjust code for new modes.
2440
- ASSERT(RelocInfo::IsDebugBreakSlot(rmode)
2441
- || RelocInfo::IsJSReturn(rmode)
2442
- || RelocInfo::IsComment(rmode)
2443
- || RelocInfo::IsPosition(rmode));
2444
- // These modes do not need an entry in the constant pool.
2445
- } else {
2446
- ASSERT(num_prinfo_ < kMaxNumPRInfo);
2447
- prinfo_[num_prinfo_++] = rinfo;
2448
- // Make sure the constant pool is not emitted in place of the next
2449
- // instruction for which we just recorded relocation info.
2450
- BlockConstPoolBefore(pc_offset() + kInstrSize);
2451
- }
2452
- if (rinfo.rmode() != RelocInfo::NONE) {
2453
- // Don't record external references unless the heap will be serialized.
2454
- if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
2455
- #ifdef DEBUG
2456
- if (!Serializer::enabled()) {
2457
- Serializer::TooLateToEnableNow();
2458
- }
2459
- #endif
2460
- if (!Serializer::enabled() && !FLAG_debug_code) {
2461
- return;
2462
- }
2463
- }
2464
- ASSERT(buffer_space() >= kMaxRelocSize); // too late to grow buffer here
2465
- reloc_info_writer.Write(&rinfo);
2466
- }
2467
- }
2468
-
2469
-
2470
- void Assembler::CheckConstPool(bool force_emit, bool require_jump) {
2471
- // Calculate the offset of the next check. It will be overwritten
2472
- // when a const pool is generated or when const pools are being
2473
- // blocked for a specific range.
2474
- next_buffer_check_ = pc_offset() + kCheckConstInterval;
2475
-
2476
- // There is nothing to do if there are no pending relocation info entries.
2477
- if (num_prinfo_ == 0) return;
2478
-
2479
- // We emit a constant pool at regular intervals of about kDistBetweenPools
2480
- // or when requested by parameter force_emit (e.g. after each function).
2481
- // We prefer not to emit a jump unless the max distance is reached or if we
2482
- // are running low on slots, which can happen if a lot of constants are being
2483
- // emitted (e.g. --debug-code and many static references).
2484
- int dist = pc_offset() - last_const_pool_end_;
2485
- if (!force_emit && dist < kMaxDistBetweenPools &&
2486
- (require_jump || dist < kDistBetweenPools) &&
2487
- // TODO(1236125): Cleanup the "magic" number below. We know that
2488
- // the code generation will test every kCheckConstIntervalInst.
2489
- // Thus we are safe as long as we generate less than 7 constant
2490
- // entries per instruction.
2491
- (num_prinfo_ < (kMaxNumPRInfo - (7 * kCheckConstIntervalInst)))) {
2492
- return;
2493
- }
2494
-
2495
- // If we did not return by now, we need to emit the constant pool soon.
2496
-
2497
- // However, some small sequences of instructions must not be broken up by the
2498
- // insertion of a constant pool; such sequences are protected by setting
2499
- // either const_pool_blocked_nesting_ or no_const_pool_before_, which are
2500
- // both checked here. Also, recursive calls to CheckConstPool are blocked by
2501
- // no_const_pool_before_.
2502
- if (const_pool_blocked_nesting_ > 0 || pc_offset() < no_const_pool_before_) {
2503
- // Emission is currently blocked; make sure we try again as soon as
2504
- // possible.
2505
- if (const_pool_blocked_nesting_ > 0) {
2506
- next_buffer_check_ = pc_offset() + kInstrSize;
2507
- } else {
2508
- next_buffer_check_ = no_const_pool_before_;
2509
- }
2510
-
2511
- // Something is wrong if emission is forced and blocked at the same time.
2512
- ASSERT(!force_emit);
2513
- return;
2514
- }
2515
-
2516
- int jump_instr = require_jump ? kInstrSize : 0;
2517
-
2518
- // Check that the code buffer is large enough before emitting the constant
2519
- // pool and relocation information (include the jump over the pool and the
2520
- // constant pool marker).
2521
- int max_needed_space =
2522
- jump_instr + kInstrSize + num_prinfo_*(kInstrSize + kMaxRelocSize);
2523
- while (buffer_space() <= (max_needed_space + kGap)) GrowBuffer();
2524
-
2525
- // Block recursive calls to CheckConstPool.
2526
- BlockConstPoolBefore(pc_offset() + jump_instr + kInstrSize +
2527
- num_prinfo_*kInstrSize);
2528
- // Don't bother to check for the emit calls below.
2529
- next_buffer_check_ = no_const_pool_before_;
2530
-
2531
- // Emit jump over constant pool if necessary.
2532
- Label after_pool;
2533
- if (require_jump) b(&after_pool);
2534
-
2535
- RecordComment("[ Constant Pool");
2536
-
2537
- // Put down constant pool marker "Undefined instruction" as specified by
2538
- // A3.1 Instruction set encoding.
2539
- emit(0x03000000 | num_prinfo_);
2540
-
2541
- // Emit constant pool entries.
2542
- for (int i = 0; i < num_prinfo_; i++) {
2543
- RelocInfo& rinfo = prinfo_[i];
2544
- ASSERT(rinfo.rmode() != RelocInfo::COMMENT &&
2545
- rinfo.rmode() != RelocInfo::POSITION &&
2546
- rinfo.rmode() != RelocInfo::STATEMENT_POSITION);
2547
- Instr instr = instr_at(rinfo.pc());
2548
-
2549
- // Instruction to patch must be a ldr/str [pc, #offset].
2550
- // P and U set, B and W clear, Rn == pc, offset12 still 0.
2551
- ASSERT((instr & (7*B25 | P | U | B | W | 15*B16 | Off12Mask)) ==
2552
- (2*B25 | P | U | pc.code()*B16));
2553
- int delta = pc_ - rinfo.pc() - 8;
2554
- ASSERT(delta >= -4); // instr could be ldr pc, [pc, #-4] followed by targ32
2555
- if (delta < 0) {
2556
- instr &= ~U;
2557
- delta = -delta;
2558
- }
2559
- ASSERT(is_uint12(delta));
2560
- instr_at_put(rinfo.pc(), instr + delta);
2561
- emit(rinfo.data());
2562
- }
2563
- num_prinfo_ = 0;
2564
- last_const_pool_end_ = pc_offset();
2565
-
2566
- RecordComment("]");
2567
-
2568
- if (after_pool.is_linked()) {
2569
- bind(&after_pool);
2570
- }
2571
-
2572
- // Since a constant pool was just emitted, move the check offset forward by
2573
- // the standard interval.
2574
- next_buffer_check_ = pc_offset() + kCheckConstInterval;
2575
- }
2576
-
2577
-
2578
- } } // namespace v8::internal
2579
-
2580
- #endif // V8_TARGET_ARCH_ARM