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,43 +0,0 @@
1
- // Copyright 2009 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
- #ifndef V8_X64_REGISTER_ALLOCATOR_X64_H_
29
- #define V8_X64_REGISTER_ALLOCATOR_X64_H_
30
-
31
- namespace v8 {
32
- namespace internal {
33
-
34
- class RegisterAllocatorConstants : public AllStatic {
35
- public:
36
- static const int kNumRegisters = 10;
37
- static const int kInvalidRegister = -1;
38
- };
39
-
40
-
41
- } } // namespace v8::internal
42
-
43
- #endif // V8_X64_REGISTER_ALLOCATOR_X64_H_
@@ -1,27 +0,0 @@
1
- // Copyright 2009 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
@@ -1,63 +0,0 @@
1
- // Copyright 2009 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
- #ifndef V8_X64_SIMULATOR_X64_H_
29
- #define V8_X64_SIMULATOR_X64_H_
30
-
31
- #include "allocation.h"
32
-
33
- // Since there is no simulator for the ia32 architecture the only thing we can
34
- // do is to call the entry directly.
35
- // TODO(X64): Don't pass p0, since it isn't used?
36
- #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
37
- entry(p0, p1, p2, p3, p4);
38
-
39
- // The stack limit beyond which we will throw stack overflow errors in
40
- // generated code. Because generated code on x64 uses the C stack, we
41
- // just use the C stack limit.
42
- class SimulatorStack : public v8::internal::AllStatic {
43
- public:
44
- static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
45
- return c_limit;
46
- }
47
-
48
- static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
49
- return try_catch_address;
50
- }
51
-
52
- static inline void UnregisterCTryCatch() { }
53
- };
54
-
55
- // Call the generated regexp code directly. The entry function pointer should
56
- // expect eight int/pointer sized arguments and return an int.
57
- #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
58
- entry(p0, p1, p2, p3, p4, p5, p6)
59
-
60
- #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
61
- reinterpret_cast<TryCatch*>(try_catch_address)
62
-
63
- #endif // V8_X64_SIMULATOR_X64_H_
@@ -1,2560 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
-
29
- #include "v8.h"
30
-
31
- #if defined(V8_TARGET_ARCH_X64)
32
-
33
- #include "ic-inl.h"
34
- #include "codegen-inl.h"
35
- #include "stub-cache.h"
36
- #include "macro-assembler-x64.h"
37
-
38
- namespace v8 {
39
- namespace internal {
40
-
41
- //-----------------------------------------------------------------------------
42
- // StubCompiler static helper functions
43
-
44
- #define __ ACCESS_MASM(masm)
45
-
46
-
47
- static void ProbeTable(MacroAssembler* masm,
48
- Code::Flags flags,
49
- StubCache::Table table,
50
- Register name,
51
- Register offset) {
52
- ASSERT_EQ(8, kPointerSize);
53
- ASSERT_EQ(16, sizeof(StubCache::Entry));
54
- // The offset register holds the entry offset times four (due to masking
55
- // and shifting optimizations).
56
- ExternalReference key_offset(SCTableReference::keyReference(table));
57
- Label miss;
58
-
59
- __ movq(kScratchRegister, key_offset);
60
- // Check that the key in the entry matches the name.
61
- // Multiply entry offset by 16 to get the entry address. Since the
62
- // offset register already holds the entry offset times four, multiply
63
- // by a further four.
64
- __ cmpl(name, Operand(kScratchRegister, offset, times_4, 0));
65
- __ j(not_equal, &miss);
66
- // Get the code entry from the cache.
67
- // Use key_offset + kPointerSize, rather than loading value_offset.
68
- __ movq(kScratchRegister,
69
- Operand(kScratchRegister, offset, times_4, kPointerSize));
70
- // Check that the flags match what we're looking for.
71
- __ movl(offset, FieldOperand(kScratchRegister, Code::kFlagsOffset));
72
- __ and_(offset, Immediate(~Code::kFlagsNotUsedInLookup));
73
- __ cmpl(offset, Immediate(flags));
74
- __ j(not_equal, &miss);
75
-
76
- // Jump to the first instruction in the code stub.
77
- __ addq(kScratchRegister, Immediate(Code::kHeaderSize - kHeapObjectTag));
78
- __ jmp(kScratchRegister);
79
-
80
- __ bind(&miss);
81
- }
82
-
83
-
84
- // Helper function used to check that the dictionary doesn't contain
85
- // the property. This function may return false negatives, so miss_label
86
- // must always call a backup property check that is complete.
87
- // This function is safe to call if the receiver has fast properties.
88
- // Name must be a symbol and receiver must be a heap object.
89
- static void GenerateDictionaryNegativeLookup(MacroAssembler* masm,
90
- Label* miss_label,
91
- Register receiver,
92
- String* name,
93
- Register r0,
94
- Register r1) {
95
- ASSERT(name->IsSymbol());
96
- __ IncrementCounter(&Counters::negative_lookups, 1);
97
- __ IncrementCounter(&Counters::negative_lookups_miss, 1);
98
-
99
- Label done;
100
- __ movq(r0, FieldOperand(receiver, HeapObject::kMapOffset));
101
-
102
- const int kInterceptorOrAccessCheckNeededMask =
103
- (1 << Map::kHasNamedInterceptor) | (1 << Map::kIsAccessCheckNeeded);
104
-
105
- // Bail out if the receiver has a named interceptor or requires access checks.
106
- __ testb(FieldOperand(r0, Map::kBitFieldOffset),
107
- Immediate(kInterceptorOrAccessCheckNeededMask));
108
- __ j(not_zero, miss_label);
109
-
110
- // Check that receiver is a JSObject.
111
- __ CmpInstanceType(r0, FIRST_JS_OBJECT_TYPE);
112
- __ j(below, miss_label);
113
-
114
- // Load properties array.
115
- Register properties = r0;
116
- __ movq(properties, FieldOperand(receiver, JSObject::kPropertiesOffset));
117
-
118
- // Check that the properties array is a dictionary.
119
- __ CompareRoot(FieldOperand(properties, HeapObject::kMapOffset),
120
- Heap::kHashTableMapRootIndex);
121
- __ j(not_equal, miss_label);
122
-
123
- // Compute the capacity mask.
124
- const int kCapacityOffset =
125
- StringDictionary::kHeaderSize +
126
- StringDictionary::kCapacityIndex * kPointerSize;
127
-
128
- // Generate an unrolled loop that performs a few probes before
129
- // giving up.
130
- static const int kProbes = 4;
131
- const int kElementsStartOffset =
132
- StringDictionary::kHeaderSize +
133
- StringDictionary::kElementsStartIndex * kPointerSize;
134
-
135
- // If names of slots in range from 1 to kProbes - 1 for the hash value are
136
- // not equal to the name and kProbes-th slot is not used (its name is the
137
- // undefined value), it guarantees the hash table doesn't contain the
138
- // property. It's true even if some slots represent deleted properties
139
- // (their names are the null value).
140
- for (int i = 0; i < kProbes; i++) {
141
- // r0 points to properties hash.
142
- // Compute the masked index: (hash + i + i * i) & mask.
143
- Register index = r1;
144
- // Capacity is smi 2^n.
145
- __ SmiToInteger32(index, FieldOperand(properties, kCapacityOffset));
146
- __ decl(index);
147
- __ and_(index,
148
- Immediate(name->Hash() + StringDictionary::GetProbeOffset(i)));
149
-
150
- // Scale the index by multiplying by the entry size.
151
- ASSERT(StringDictionary::kEntrySize == 3);
152
- __ lea(index, Operand(index, index, times_2, 0)); // index *= 3.
153
-
154
- Register entity_name = r1;
155
- // Having undefined at this place means the name is not contained.
156
- ASSERT_EQ(kSmiTagSize, 1);
157
- __ movq(entity_name, Operand(properties, index, times_pointer_size,
158
- kElementsStartOffset - kHeapObjectTag));
159
- __ Cmp(entity_name, Factory::undefined_value());
160
- // __ jmp(miss_label);
161
- if (i != kProbes - 1) {
162
- __ j(equal, &done);
163
-
164
- // Stop if found the property.
165
- __ Cmp(entity_name, Handle<String>(name));
166
- __ j(equal, miss_label);
167
-
168
- // Check if the entry name is not a symbol.
169
- __ movq(entity_name, FieldOperand(entity_name, HeapObject::kMapOffset));
170
- __ testb(FieldOperand(entity_name, Map::kInstanceTypeOffset),
171
- Immediate(kIsSymbolMask));
172
- __ j(zero, miss_label);
173
- } else {
174
- // Give up probing if still not found the undefined value.
175
- __ j(not_equal, miss_label);
176
- }
177
- }
178
-
179
- __ bind(&done);
180
- __ DecrementCounter(&Counters::negative_lookups_miss, 1);
181
- }
182
-
183
-
184
- void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) {
185
- ASSERT(kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC);
186
- Code* code = NULL;
187
- if (kind == Code::LOAD_IC) {
188
- code = Builtins::builtin(Builtins::LoadIC_Miss);
189
- } else {
190
- code = Builtins::builtin(Builtins::KeyedLoadIC_Miss);
191
- }
192
-
193
- Handle<Code> ic(code);
194
- __ Jump(ic, RelocInfo::CODE_TARGET);
195
- }
196
-
197
-
198
- void StubCompiler::GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm,
199
- int index,
200
- Register prototype) {
201
- // Load the global or builtins object from the current context.
202
- __ movq(prototype,
203
- Operand(rsi, Context::SlotOffset(Context::GLOBAL_INDEX)));
204
- // Load the global context from the global or builtins object.
205
- __ movq(prototype,
206
- FieldOperand(prototype, GlobalObject::kGlobalContextOffset));
207
- // Load the function from the global context.
208
- __ movq(prototype, Operand(prototype, Context::SlotOffset(index)));
209
- // Load the initial map. The global functions all have initial maps.
210
- __ movq(prototype,
211
- FieldOperand(prototype, JSFunction::kPrototypeOrInitialMapOffset));
212
- // Load the prototype from the initial map.
213
- __ movq(prototype, FieldOperand(prototype, Map::kPrototypeOffset));
214
- }
215
-
216
-
217
- void StubCompiler::GenerateDirectLoadGlobalFunctionPrototype(
218
- MacroAssembler* masm, int index, Register prototype) {
219
- // Get the global function with the given index.
220
- JSFunction* function = JSFunction::cast(Top::global_context()->get(index));
221
- // Load its initial map. The global functions all have initial maps.
222
- __ Move(prototype, Handle<Map>(function->initial_map()));
223
- // Load the prototype from the initial map.
224
- __ movq(prototype, FieldOperand(prototype, Map::kPrototypeOffset));
225
- }
226
-
227
-
228
- // Load a fast property out of a holder object (src). In-object properties
229
- // are loaded directly otherwise the property is loaded from the properties
230
- // fixed array.
231
- void StubCompiler::GenerateFastPropertyLoad(MacroAssembler* masm,
232
- Register dst, Register src,
233
- JSObject* holder, int index) {
234
- // Adjust for the number of properties stored in the holder.
235
- index -= holder->map()->inobject_properties();
236
- if (index < 0) {
237
- // Get the property straight out of the holder.
238
- int offset = holder->map()->instance_size() + (index * kPointerSize);
239
- __ movq(dst, FieldOperand(src, offset));
240
- } else {
241
- // Calculate the offset into the properties array.
242
- int offset = index * kPointerSize + FixedArray::kHeaderSize;
243
- __ movq(dst, FieldOperand(src, JSObject::kPropertiesOffset));
244
- __ movq(dst, FieldOperand(dst, offset));
245
- }
246
- }
247
-
248
-
249
- static void PushInterceptorArguments(MacroAssembler* masm,
250
- Register receiver,
251
- Register holder,
252
- Register name,
253
- JSObject* holder_obj) {
254
- __ push(name);
255
- InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor();
256
- ASSERT(!Heap::InNewSpace(interceptor));
257
- __ Move(kScratchRegister, Handle<Object>(interceptor));
258
- __ push(kScratchRegister);
259
- __ push(receiver);
260
- __ push(holder);
261
- __ push(FieldOperand(kScratchRegister, InterceptorInfo::kDataOffset));
262
- }
263
-
264
-
265
- void StubCache::GenerateProbe(MacroAssembler* masm,
266
- Code::Flags flags,
267
- Register receiver,
268
- Register name,
269
- Register scratch,
270
- Register extra) {
271
- Label miss;
272
- USE(extra); // The register extra is not used on the X64 platform.
273
- // Make sure that code is valid. The shifting code relies on the
274
- // entry size being 16.
275
- ASSERT(sizeof(Entry) == 16);
276
-
277
- // Make sure the flags do not name a specific type.
278
- ASSERT(Code::ExtractTypeFromFlags(flags) == 0);
279
-
280
- // Make sure that there are no register conflicts.
281
- ASSERT(!scratch.is(receiver));
282
- ASSERT(!scratch.is(name));
283
-
284
- // Check that the receiver isn't a smi.
285
- __ JumpIfSmi(receiver, &miss);
286
-
287
- // Get the map of the receiver and compute the hash.
288
- __ movl(scratch, FieldOperand(name, String::kHashFieldOffset));
289
- // Use only the low 32 bits of the map pointer.
290
- __ addl(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
291
- __ xor_(scratch, Immediate(flags));
292
- __ and_(scratch, Immediate((kPrimaryTableSize - 1) << kHeapObjectTagSize));
293
-
294
- // Probe the primary table.
295
- ProbeTable(masm, flags, kPrimary, name, scratch);
296
-
297
- // Primary miss: Compute hash for secondary probe.
298
- __ movl(scratch, FieldOperand(name, String::kHashFieldOffset));
299
- __ addl(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
300
- __ xor_(scratch, Immediate(flags));
301
- __ and_(scratch, Immediate((kPrimaryTableSize - 1) << kHeapObjectTagSize));
302
- __ subl(scratch, name);
303
- __ addl(scratch, Immediate(flags));
304
- __ and_(scratch, Immediate((kSecondaryTableSize - 1) << kHeapObjectTagSize));
305
-
306
- // Probe the secondary table.
307
- ProbeTable(masm, flags, kSecondary, name, scratch);
308
-
309
- // Cache miss: Fall-through and let caller handle the miss by
310
- // entering the runtime system.
311
- __ bind(&miss);
312
- }
313
-
314
-
315
- // Both name_reg and receiver_reg are preserved on jumps to miss_label,
316
- // but may be destroyed if store is successful.
317
- void StubCompiler::GenerateStoreField(MacroAssembler* masm,
318
- JSObject* object,
319
- int index,
320
- Map* transition,
321
- Register receiver_reg,
322
- Register name_reg,
323
- Register scratch,
324
- Label* miss_label) {
325
- // Check that the object isn't a smi.
326
- __ JumpIfSmi(receiver_reg, miss_label);
327
-
328
- // Check that the map of the object hasn't changed.
329
- __ Cmp(FieldOperand(receiver_reg, HeapObject::kMapOffset),
330
- Handle<Map>(object->map()));
331
- __ j(not_equal, miss_label);
332
-
333
- // Perform global security token check if needed.
334
- if (object->IsJSGlobalProxy()) {
335
- __ CheckAccessGlobalProxy(receiver_reg, scratch, miss_label);
336
- }
337
-
338
- // Stub never generated for non-global objects that require access
339
- // checks.
340
- ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
341
-
342
- // Perform map transition for the receiver if necessary.
343
- if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) {
344
- // The properties must be extended before we can store the value.
345
- // We jump to a runtime call that extends the properties array.
346
- __ pop(scratch); // Return address.
347
- __ push(receiver_reg);
348
- __ Push(Handle<Map>(transition));
349
- __ push(rax);
350
- __ push(scratch);
351
- __ TailCallExternalReference(
352
- ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage)), 3, 1);
353
- return;
354
- }
355
-
356
- if (transition != NULL) {
357
- // Update the map of the object; no write barrier updating is
358
- // needed because the map is never in new space.
359
- __ Move(FieldOperand(receiver_reg, HeapObject::kMapOffset),
360
- Handle<Map>(transition));
361
- }
362
-
363
- // Adjust for the number of properties stored in the object. Even in the
364
- // face of a transition we can use the old map here because the size of the
365
- // object and the number of in-object properties is not going to change.
366
- index -= object->map()->inobject_properties();
367
-
368
- if (index < 0) {
369
- // Set the property straight into the object.
370
- int offset = object->map()->instance_size() + (index * kPointerSize);
371
- __ movq(FieldOperand(receiver_reg, offset), rax);
372
-
373
- // Update the write barrier for the array address.
374
- // Pass the value being stored in the now unused name_reg.
375
- __ movq(name_reg, rax);
376
- __ RecordWrite(receiver_reg, offset, name_reg, scratch);
377
- } else {
378
- // Write to the properties array.
379
- int offset = index * kPointerSize + FixedArray::kHeaderSize;
380
- // Get the properties array (optimistically).
381
- __ movq(scratch, FieldOperand(receiver_reg, JSObject::kPropertiesOffset));
382
- __ movq(FieldOperand(scratch, offset), rax);
383
-
384
- // Update the write barrier for the array address.
385
- // Pass the value being stored in the now unused name_reg.
386
- __ movq(name_reg, rax);
387
- __ RecordWrite(scratch, offset, name_reg, receiver_reg);
388
- }
389
-
390
- // Return the value (register rax).
391
- __ ret(0);
392
- }
393
-
394
-
395
- void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm,
396
- Register receiver,
397
- Register scratch,
398
- Label* miss_label) {
399
- // Check that the receiver isn't a smi.
400
- __ JumpIfSmi(receiver, miss_label);
401
-
402
- // Check that the object is a JS array.
403
- __ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch);
404
- __ j(not_equal, miss_label);
405
-
406
- // Load length directly from the JS array.
407
- __ movq(rax, FieldOperand(receiver, JSArray::kLengthOffset));
408
- __ ret(0);
409
- }
410
-
411
-
412
- // Generate code to check if an object is a string. If the object is
413
- // a string, the map's instance type is left in the scratch register.
414
- static void GenerateStringCheck(MacroAssembler* masm,
415
- Register receiver,
416
- Register scratch,
417
- Label* smi,
418
- Label* non_string_object) {
419
- // Check that the object isn't a smi.
420
- __ JumpIfSmi(receiver, smi);
421
-
422
- // Check that the object is a string.
423
- __ movq(scratch, FieldOperand(receiver, HeapObject::kMapOffset));
424
- __ movzxbq(scratch, FieldOperand(scratch, Map::kInstanceTypeOffset));
425
- ASSERT(kNotStringTag != 0);
426
- __ testl(scratch, Immediate(kNotStringTag));
427
- __ j(not_zero, non_string_object);
428
- }
429
-
430
-
431
- void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
432
- Register receiver,
433
- Register scratch1,
434
- Register scratch2,
435
- Label* miss) {
436
- Label check_wrapper;
437
-
438
- // Check if the object is a string leaving the instance type in the
439
- // scratch register.
440
- GenerateStringCheck(masm, receiver, scratch1, miss, &check_wrapper);
441
-
442
- // Load length directly from the string.
443
- __ movq(rax, FieldOperand(receiver, String::kLengthOffset));
444
- __ ret(0);
445
-
446
- // Check if the object is a JSValue wrapper.
447
- __ bind(&check_wrapper);
448
- __ cmpl(scratch1, Immediate(JS_VALUE_TYPE));
449
- __ j(not_equal, miss);
450
-
451
- // Check if the wrapped value is a string and load the length
452
- // directly if it is.
453
- __ movq(scratch2, FieldOperand(receiver, JSValue::kValueOffset));
454
- GenerateStringCheck(masm, scratch2, scratch1, miss, miss);
455
- __ movq(rax, FieldOperand(scratch2, String::kLengthOffset));
456
- __ ret(0);
457
- }
458
-
459
-
460
- static void CompileCallLoadPropertyWithInterceptor(MacroAssembler* masm,
461
- Register receiver,
462
- Register holder,
463
- Register name,
464
- JSObject* holder_obj) {
465
- PushInterceptorArguments(masm, receiver, holder, name, holder_obj);
466
-
467
- ExternalReference ref =
468
- ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly));
469
- __ movq(rax, Immediate(5));
470
- __ movq(rbx, ref);
471
-
472
- CEntryStub stub(1);
473
- __ CallStub(&stub);
474
- }
475
-
476
-
477
-
478
- void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm,
479
- Register receiver,
480
- Register result,
481
- Register scratch,
482
- Label* miss_label) {
483
- __ TryGetFunctionPrototype(receiver, result, miss_label);
484
- if (!result.is(rax)) __ movq(rax, result);
485
- __ ret(0);
486
- }
487
-
488
-
489
- // Reserves space for the extra arguments to FastHandleApiCall in the
490
- // caller's frame.
491
- //
492
- // These arguments are set by CheckPrototypes and GenerateFastApiCall.
493
- static void ReserveSpaceForFastApiCall(MacroAssembler* masm, Register scratch) {
494
- // ----------- S t a t e -------------
495
- // -- rsp[0] : return address
496
- // -- rsp[8] : last argument in the internal frame of the caller
497
- // -----------------------------------
498
- __ movq(scratch, Operand(rsp, 0));
499
- __ subq(rsp, Immediate(4 * kPointerSize));
500
- __ movq(Operand(rsp, 0), scratch);
501
- __ Move(scratch, Smi::FromInt(0));
502
- __ movq(Operand(rsp, 1 * kPointerSize), scratch);
503
- __ movq(Operand(rsp, 2 * kPointerSize), scratch);
504
- __ movq(Operand(rsp, 3 * kPointerSize), scratch);
505
- __ movq(Operand(rsp, 4 * kPointerSize), scratch);
506
- }
507
-
508
-
509
- // Undoes the effects of ReserveSpaceForFastApiCall.
510
- static void FreeSpaceForFastApiCall(MacroAssembler* masm, Register scratch) {
511
- // ----------- S t a t e -------------
512
- // -- rsp[0] : return address
513
- // -- rsp[8] : last fast api call extra argument
514
- // -- ...
515
- // -- rsp[32] : first fast api call extra argument
516
- // -- rsp[40] : last argument in the internal frame
517
- // -----------------------------------
518
- __ movq(scratch, Operand(rsp, 0));
519
- __ movq(Operand(rsp, 4 * kPointerSize), scratch);
520
- __ addq(rsp, Immediate(kPointerSize * 4));
521
- }
522
-
523
-
524
- // Generates call to FastHandleApiCall builtin.
525
- static void GenerateFastApiCall(MacroAssembler* masm,
526
- const CallOptimization& optimization,
527
- int argc) {
528
- // ----------- S t a t e -------------
529
- // -- rsp[0] : return address
530
- // -- rsp[8] : object passing the type check
531
- // (last fast api call extra argument,
532
- // set by CheckPrototypes)
533
- // -- rsp[16] : api call data
534
- // -- rsp[24] : api callback
535
- // -- rsp[32] : api function
536
- // (first fast api call extra argument)
537
- // -- rsp[40] : last argument
538
- // -- ...
539
- // -- rsp[(argc + 5) * 8] : first argument
540
- // -- rsp[(argc + 6) * 8] : receiver
541
- // -----------------------------------
542
-
543
- // Get the function and setup the context.
544
- JSFunction* function = optimization.constant_function();
545
- __ Move(rdi, Handle<JSFunction>(function));
546
- __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset));
547
-
548
- // Pass the additional arguments FastHandleApiCall expects.
549
- __ movq(Operand(rsp, 4 * kPointerSize), rdi);
550
- bool info_loaded = false;
551
- Object* callback = optimization.api_call_info()->callback();
552
- if (Heap::InNewSpace(callback)) {
553
- info_loaded = true;
554
- __ Move(rcx, Handle<CallHandlerInfo>(optimization.api_call_info()));
555
- __ movq(rbx, FieldOperand(rcx, CallHandlerInfo::kCallbackOffset));
556
- __ movq(Operand(rsp, 3 * kPointerSize), rbx);
557
- } else {
558
- __ Move(Operand(rsp, 3 * kPointerSize), Handle<Object>(callback));
559
- }
560
- Object* call_data = optimization.api_call_info()->data();
561
- if (Heap::InNewSpace(call_data)) {
562
- if (!info_loaded) {
563
- __ Move(rcx, Handle<CallHandlerInfo>(optimization.api_call_info()));
564
- }
565
- __ movq(rbx, FieldOperand(rcx, CallHandlerInfo::kDataOffset));
566
- __ movq(Operand(rsp, 2 * kPointerSize), rbx);
567
- } else {
568
- __ Move(Operand(rsp, 2 * kPointerSize), Handle<Object>(call_data));
569
- }
570
-
571
- // Set the number of arguments.
572
- __ movq(rax, Immediate(argc + 4));
573
-
574
- // Jump to the fast api call builtin (tail call).
575
- Handle<Code> code = Handle<Code>(
576
- Builtins::builtin(Builtins::FastHandleApiCall));
577
- ParameterCount expected(0);
578
- __ InvokeCode(code, expected, expected,
579
- RelocInfo::CODE_TARGET, JUMP_FUNCTION);
580
- }
581
-
582
-
583
- class CallInterceptorCompiler BASE_EMBEDDED {
584
- public:
585
- CallInterceptorCompiler(StubCompiler* stub_compiler,
586
- const ParameterCount& arguments,
587
- Register name)
588
- : stub_compiler_(stub_compiler),
589
- arguments_(arguments),
590
- name_(name) {}
591
-
592
- void Compile(MacroAssembler* masm,
593
- JSObject* object,
594
- JSObject* holder,
595
- String* name,
596
- LookupResult* lookup,
597
- Register receiver,
598
- Register scratch1,
599
- Register scratch2,
600
- Register scratch3,
601
- Label* miss) {
602
- ASSERT(holder->HasNamedInterceptor());
603
- ASSERT(!holder->GetNamedInterceptor()->getter()->IsUndefined());
604
-
605
- // Check that the receiver isn't a smi.
606
- __ JumpIfSmi(receiver, miss);
607
-
608
- CallOptimization optimization(lookup);
609
-
610
- if (optimization.is_constant_call()) {
611
- CompileCacheable(masm,
612
- object,
613
- receiver,
614
- scratch1,
615
- scratch2,
616
- scratch3,
617
- holder,
618
- lookup,
619
- name,
620
- optimization,
621
- miss);
622
- } else {
623
- CompileRegular(masm,
624
- object,
625
- receiver,
626
- scratch1,
627
- scratch2,
628
- scratch3,
629
- name,
630
- holder,
631
- miss);
632
- }
633
- }
634
-
635
- private:
636
- void CompileCacheable(MacroAssembler* masm,
637
- JSObject* object,
638
- Register receiver,
639
- Register scratch1,
640
- Register scratch2,
641
- Register scratch3,
642
- JSObject* interceptor_holder,
643
- LookupResult* lookup,
644
- String* name,
645
- const CallOptimization& optimization,
646
- Label* miss_label) {
647
- ASSERT(optimization.is_constant_call());
648
- ASSERT(!lookup->holder()->IsGlobalObject());
649
-
650
- int depth1 = kInvalidProtoDepth;
651
- int depth2 = kInvalidProtoDepth;
652
- bool can_do_fast_api_call = false;
653
- if (optimization.is_simple_api_call() &&
654
- !lookup->holder()->IsGlobalObject()) {
655
- depth1 =
656
- optimization.GetPrototypeDepthOfExpectedType(object,
657
- interceptor_holder);
658
- if (depth1 == kInvalidProtoDepth) {
659
- depth2 =
660
- optimization.GetPrototypeDepthOfExpectedType(interceptor_holder,
661
- lookup->holder());
662
- }
663
- can_do_fast_api_call = (depth1 != kInvalidProtoDepth) ||
664
- (depth2 != kInvalidProtoDepth);
665
- }
666
-
667
- __ IncrementCounter(&Counters::call_const_interceptor, 1);
668
-
669
- if (can_do_fast_api_call) {
670
- __ IncrementCounter(&Counters::call_const_interceptor_fast_api, 1);
671
- ReserveSpaceForFastApiCall(masm, scratch1);
672
- }
673
-
674
- // Check that the maps from receiver to interceptor's holder
675
- // haven't changed and thus we can invoke interceptor.
676
- Label miss_cleanup;
677
- Label* miss = can_do_fast_api_call ? &miss_cleanup : miss_label;
678
- Register holder =
679
- stub_compiler_->CheckPrototypes(object, receiver,
680
- interceptor_holder, scratch1,
681
- scratch2, scratch3, name, depth1, miss);
682
-
683
- // Invoke an interceptor and if it provides a value,
684
- // branch to |regular_invoke|.
685
- Label regular_invoke;
686
- LoadWithInterceptor(masm, receiver, holder, interceptor_holder,
687
- &regular_invoke);
688
-
689
- // Interceptor returned nothing for this property. Try to use cached
690
- // constant function.
691
-
692
- // Check that the maps from interceptor's holder to constant function's
693
- // holder haven't changed and thus we can use cached constant function.
694
- if (interceptor_holder != lookup->holder()) {
695
- stub_compiler_->CheckPrototypes(interceptor_holder, receiver,
696
- lookup->holder(), scratch1,
697
- scratch2, scratch3, name, depth2, miss);
698
- } else {
699
- // CheckPrototypes has a side effect of fetching a 'holder'
700
- // for API (object which is instanceof for the signature). It's
701
- // safe to omit it here, as if present, it should be fetched
702
- // by the previous CheckPrototypes.
703
- ASSERT(depth2 == kInvalidProtoDepth);
704
- }
705
-
706
- // Invoke function.
707
- if (can_do_fast_api_call) {
708
- GenerateFastApiCall(masm, optimization, arguments_.immediate());
709
- } else {
710
- __ InvokeFunction(optimization.constant_function(), arguments_,
711
- JUMP_FUNCTION);
712
- }
713
-
714
- // Deferred code for fast API call case---clean preallocated space.
715
- if (can_do_fast_api_call) {
716
- __ bind(&miss_cleanup);
717
- FreeSpaceForFastApiCall(masm, scratch1);
718
- __ jmp(miss_label);
719
- }
720
-
721
- // Invoke a regular function.
722
- __ bind(&regular_invoke);
723
- if (can_do_fast_api_call) {
724
- FreeSpaceForFastApiCall(masm, scratch1);
725
- }
726
- }
727
-
728
- void CompileRegular(MacroAssembler* masm,
729
- JSObject* object,
730
- Register receiver,
731
- Register scratch1,
732
- Register scratch2,
733
- Register scratch3,
734
- String* name,
735
- JSObject* interceptor_holder,
736
- Label* miss_label) {
737
- Register holder =
738
- stub_compiler_->CheckPrototypes(object, receiver, interceptor_holder,
739
- scratch1, scratch2, scratch3, name,
740
- miss_label);
741
-
742
- __ EnterInternalFrame();
743
- // Save the name_ register across the call.
744
- __ push(name_);
745
-
746
- PushInterceptorArguments(masm,
747
- receiver,
748
- holder,
749
- name_,
750
- interceptor_holder);
751
-
752
- __ CallExternalReference(
753
- ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorForCall)),
754
- 5);
755
-
756
- // Restore the name_ register.
757
- __ pop(name_);
758
- __ LeaveInternalFrame();
759
- }
760
-
761
- void LoadWithInterceptor(MacroAssembler* masm,
762
- Register receiver,
763
- Register holder,
764
- JSObject* holder_obj,
765
- Label* interceptor_succeeded) {
766
- __ EnterInternalFrame();
767
- __ push(holder); // Save the holder.
768
- __ push(name_); // Save the name.
769
-
770
- CompileCallLoadPropertyWithInterceptor(masm,
771
- receiver,
772
- holder,
773
- name_,
774
- holder_obj);
775
-
776
- __ pop(name_); // Restore the name.
777
- __ pop(receiver); // Restore the holder.
778
- __ LeaveInternalFrame();
779
-
780
- __ CompareRoot(rax, Heap::kNoInterceptorResultSentinelRootIndex);
781
- __ j(not_equal, interceptor_succeeded);
782
- }
783
-
784
- StubCompiler* stub_compiler_;
785
- const ParameterCount& arguments_;
786
- Register name_;
787
- };
788
-
789
-
790
- // Generate code to check that a global property cell is empty. Create
791
- // the property cell at compilation time if no cell exists for the
792
- // property.
793
- static Object* GenerateCheckPropertyCell(MacroAssembler* masm,
794
- GlobalObject* global,
795
- String* name,
796
- Register scratch,
797
- Label* miss) {
798
- Object* probe = global->EnsurePropertyCell(name);
799
- if (probe->IsFailure()) return probe;
800
- JSGlobalPropertyCell* cell = JSGlobalPropertyCell::cast(probe);
801
- ASSERT(cell->value()->IsTheHole());
802
- __ Move(scratch, Handle<Object>(cell));
803
- __ Cmp(FieldOperand(scratch, JSGlobalPropertyCell::kValueOffset),
804
- Factory::the_hole_value());
805
- __ j(not_equal, miss);
806
- return cell;
807
- }
808
-
809
-
810
- #undef __
811
-
812
- #define __ ACCESS_MASM((masm()))
813
-
814
-
815
- void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
816
- if (kind_ == Code::KEYED_CALL_IC) {
817
- __ Cmp(rcx, Handle<String>(name));
818
- __ j(not_equal, miss);
819
- }
820
- }
821
-
822
-
823
- void CallStubCompiler::GenerateMissBranch() {
824
- Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
825
- __ Jump(ic, RelocInfo::CODE_TARGET);
826
- }
827
-
828
-
829
- Object* CallStubCompiler::CompileCallConstant(Object* object,
830
- JSObject* holder,
831
- JSFunction* function,
832
- String* name,
833
- StubCompiler::CheckType check) {
834
- // ----------- S t a t e -------------
835
- // rcx : function name
836
- // rsp[0] : return address
837
- // rsp[8] : argument argc
838
- // rsp[16] : argument argc - 1
839
- // ...
840
- // rsp[argc * 8] : argument 1
841
- // rsp[(argc + 1) * 8] : argument 0 = receiver
842
- // -----------------------------------
843
-
844
- SharedFunctionInfo* function_info = function->shared();
845
- if (function_info->HasCustomCallGenerator()) {
846
- const int id = function_info->custom_call_generator_id();
847
- Object* result =
848
- CompileCustomCall(id, object, holder, function, name, check);
849
- // undefined means bail out to regular compiler.
850
- if (!result->IsUndefined()) {
851
- return result;
852
- }
853
- }
854
-
855
- Label miss_in_smi_check;
856
-
857
- GenerateNameCheck(name, &miss_in_smi_check);
858
-
859
- // Get the receiver from the stack.
860
- const int argc = arguments().immediate();
861
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
862
-
863
- // Check that the receiver isn't a smi.
864
- if (check != NUMBER_CHECK) {
865
- __ JumpIfSmi(rdx, &miss_in_smi_check);
866
- }
867
-
868
- // Make sure that it's okay not to patch the on stack receiver
869
- // unless we're doing a receiver map check.
870
- ASSERT(!object->IsGlobalObject() || check == RECEIVER_MAP_CHECK);
871
-
872
- CallOptimization optimization(function);
873
- int depth = kInvalidProtoDepth;
874
- Label miss;
875
-
876
- switch (check) {
877
- case RECEIVER_MAP_CHECK:
878
- __ IncrementCounter(&Counters::call_const, 1);
879
-
880
- if (optimization.is_simple_api_call() && !object->IsGlobalObject()) {
881
- depth = optimization.GetPrototypeDepthOfExpectedType(
882
- JSObject::cast(object), holder);
883
- }
884
-
885
- if (depth != kInvalidProtoDepth) {
886
- __ IncrementCounter(&Counters::call_const_fast_api, 1);
887
- ReserveSpaceForFastApiCall(masm(), rax);
888
- }
889
-
890
- // Check that the maps haven't changed.
891
- CheckPrototypes(JSObject::cast(object), rdx, holder,
892
- rbx, rax, rdi, name, depth, &miss);
893
-
894
- // Patch the receiver on the stack with the global proxy if
895
- // necessary.
896
- if (object->IsGlobalObject()) {
897
- ASSERT(depth == kInvalidProtoDepth);
898
- __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset));
899
- __ movq(Operand(rsp, (argc + 1) * kPointerSize), rdx);
900
- }
901
- break;
902
-
903
- case STRING_CHECK:
904
- if (!function->IsBuiltin()) {
905
- // Calling non-builtins with a value as receiver requires boxing.
906
- __ jmp(&miss);
907
- } else {
908
- // Check that the object is a two-byte string or a symbol.
909
- __ CmpObjectType(rdx, FIRST_NONSTRING_TYPE, rax);
910
- __ j(above_equal, &miss);
911
- // Check that the maps starting from the prototype haven't changed.
912
- GenerateDirectLoadGlobalFunctionPrototype(
913
- masm(), Context::STRING_FUNCTION_INDEX, rax);
914
- CheckPrototypes(JSObject::cast(object->GetPrototype()), rax, holder,
915
- rbx, rdx, rdi, name, &miss);
916
- }
917
- break;
918
-
919
- case NUMBER_CHECK: {
920
- if (!function->IsBuiltin()) {
921
- // Calling non-builtins with a value as receiver requires boxing.
922
- __ jmp(&miss);
923
- } else {
924
- Label fast;
925
- // Check that the object is a smi or a heap number.
926
- __ JumpIfSmi(rdx, &fast);
927
- __ CmpObjectType(rdx, HEAP_NUMBER_TYPE, rax);
928
- __ j(not_equal, &miss);
929
- __ bind(&fast);
930
- // Check that the maps starting from the prototype haven't changed.
931
- GenerateDirectLoadGlobalFunctionPrototype(
932
- masm(), Context::NUMBER_FUNCTION_INDEX, rax);
933
- CheckPrototypes(JSObject::cast(object->GetPrototype()), rax, holder,
934
- rbx, rdx, rdi, name, &miss);
935
- }
936
- break;
937
- }
938
-
939
- case BOOLEAN_CHECK: {
940
- if (!function->IsBuiltin()) {
941
- // Calling non-builtins with a value as receiver requires boxing.
942
- __ jmp(&miss);
943
- } else {
944
- Label fast;
945
- // Check that the object is a boolean.
946
- __ CompareRoot(rdx, Heap::kTrueValueRootIndex);
947
- __ j(equal, &fast);
948
- __ CompareRoot(rdx, Heap::kFalseValueRootIndex);
949
- __ j(not_equal, &miss);
950
- __ bind(&fast);
951
- // Check that the maps starting from the prototype haven't changed.
952
- GenerateDirectLoadGlobalFunctionPrototype(
953
- masm(), Context::BOOLEAN_FUNCTION_INDEX, rax);
954
- CheckPrototypes(JSObject::cast(object->GetPrototype()), rax, holder,
955
- rbx, rdx, rdi, name, &miss);
956
- }
957
- break;
958
- }
959
-
960
- default:
961
- UNREACHABLE();
962
- }
963
-
964
- if (depth != kInvalidProtoDepth) {
965
- GenerateFastApiCall(masm(), optimization, argc);
966
- } else {
967
- __ InvokeFunction(function, arguments(), JUMP_FUNCTION);
968
- }
969
-
970
- // Handle call cache miss.
971
- __ bind(&miss);
972
- if (depth != kInvalidProtoDepth) {
973
- FreeSpaceForFastApiCall(masm(), rax);
974
- }
975
-
976
- // Handle call cache miss.
977
- __ bind(&miss_in_smi_check);
978
- GenerateMissBranch();
979
-
980
- // Return the generated code.
981
- return GetCode(function);
982
- }
983
-
984
-
985
- Object* CallStubCompiler::CompileCallField(JSObject* object,
986
- JSObject* holder,
987
- int index,
988
- String* name) {
989
- // ----------- S t a t e -------------
990
- // rcx : function name
991
- // rsp[0] : return address
992
- // rsp[8] : argument argc
993
- // rsp[16] : argument argc - 1
994
- // ...
995
- // rsp[argc * 8] : argument 1
996
- // rsp[(argc + 1) * 8] : argument 0 = receiver
997
- // -----------------------------------
998
- Label miss;
999
-
1000
- GenerateNameCheck(name, &miss);
1001
-
1002
- // Get the receiver from the stack.
1003
- const int argc = arguments().immediate();
1004
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1005
-
1006
- // Check that the receiver isn't a smi.
1007
- __ JumpIfSmi(rdx, &miss);
1008
-
1009
- // Do the right check and compute the holder register.
1010
- Register reg = CheckPrototypes(object, rdx, holder, rbx, rax, rdi,
1011
- name, &miss);
1012
-
1013
- GenerateFastPropertyLoad(masm(), rdi, reg, holder, index);
1014
-
1015
- // Check that the function really is a function.
1016
- __ JumpIfSmi(rdi, &miss);
1017
- __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rbx);
1018
- __ j(not_equal, &miss);
1019
-
1020
- // Patch the receiver on the stack with the global proxy if
1021
- // necessary.
1022
- if (object->IsGlobalObject()) {
1023
- __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset));
1024
- __ movq(Operand(rsp, (argc + 1) * kPointerSize), rdx);
1025
- }
1026
-
1027
- // Invoke the function.
1028
- __ InvokeFunction(rdi, arguments(), JUMP_FUNCTION);
1029
-
1030
- // Handle call cache miss.
1031
- __ bind(&miss);
1032
- GenerateMissBranch();
1033
-
1034
- // Return the generated code.
1035
- return GetCode(FIELD, name);
1036
- }
1037
-
1038
-
1039
- Object* CallStubCompiler::CompileArrayPushCall(Object* object,
1040
- JSObject* holder,
1041
- JSFunction* function,
1042
- String* name,
1043
- CheckType check) {
1044
- // ----------- S t a t e -------------
1045
- // -- rcx : name
1046
- // -- rsp[0] : return address
1047
- // -- rsp[(argc - n) * 8] : arg[n] (zero-based)
1048
- // -- ...
1049
- // -- rsp[(argc + 1) * 8] : receiver
1050
- // -----------------------------------
1051
- ASSERT(check == RECEIVER_MAP_CHECK);
1052
-
1053
- // If object is not an array, bail out to regular call.
1054
- if (!object->IsJSArray()) {
1055
- return Heap::undefined_value();
1056
- }
1057
-
1058
- Label miss;
1059
-
1060
- GenerateNameCheck(name, &miss);
1061
-
1062
- // Get the receiver from the stack.
1063
- const int argc = arguments().immediate();
1064
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1065
-
1066
- // Check that the receiver isn't a smi.
1067
- __ JumpIfSmi(rdx, &miss);
1068
-
1069
- CheckPrototypes(JSObject::cast(object),
1070
- rdx,
1071
- holder,
1072
- rbx,
1073
- rax,
1074
- rdi,
1075
- name,
1076
- &miss);
1077
-
1078
- if (argc == 0) {
1079
- // Noop, return the length.
1080
- __ movq(rax, FieldOperand(rdx, JSArray::kLengthOffset));
1081
- __ ret((argc + 1) * kPointerSize);
1082
- } else {
1083
- // Get the elements array of the object.
1084
- __ movq(rbx, FieldOperand(rdx, JSArray::kElementsOffset));
1085
-
1086
- // Check that the elements are in fast mode (not dictionary).
1087
- __ Cmp(FieldOperand(rbx, HeapObject::kMapOffset),
1088
- Factory::fixed_array_map());
1089
- __ j(not_equal, &miss);
1090
-
1091
- if (argc == 1) { // Otherwise fall through to call builtin.
1092
- Label call_builtin, exit, with_write_barrier, attempt_to_grow_elements;
1093
-
1094
- // Get the array's length into rax and calculate new length.
1095
- __ SmiToInteger32(rax, FieldOperand(rdx, JSArray::kLengthOffset));
1096
- STATIC_ASSERT(FixedArray::kMaxLength < Smi::kMaxValue);
1097
- __ addl(rax, Immediate(argc));
1098
-
1099
- // Get the element's length into rcx.
1100
- __ SmiToInteger32(rcx, FieldOperand(rbx, FixedArray::kLengthOffset));
1101
-
1102
- // Check if we could survive without allocation.
1103
- __ cmpl(rax, rcx);
1104
- __ j(greater, &attempt_to_grow_elements);
1105
-
1106
- // Save new length.
1107
- __ Integer32ToSmiField(FieldOperand(rdx, JSArray::kLengthOffset), rax);
1108
-
1109
- // Push the element.
1110
- __ movq(rcx, Operand(rsp, argc * kPointerSize));
1111
- __ lea(rdx, FieldOperand(rbx,
1112
- rax, times_pointer_size,
1113
- FixedArray::kHeaderSize - argc * kPointerSize));
1114
- __ movq(Operand(rdx, 0), rcx);
1115
-
1116
- // Check if value is a smi.
1117
- __ Integer32ToSmi(rax, rax); // Return new length as smi.
1118
-
1119
- __ JumpIfNotSmi(rcx, &with_write_barrier);
1120
-
1121
- __ bind(&exit);
1122
- __ ret((argc + 1) * kPointerSize);
1123
-
1124
- __ bind(&with_write_barrier);
1125
-
1126
- __ InNewSpace(rbx, rcx, equal, &exit);
1127
-
1128
- RecordWriteStub stub(rbx, rdx, rcx);
1129
- __ CallStub(&stub);
1130
-
1131
- __ ret((argc + 1) * kPointerSize);
1132
-
1133
- __ bind(&attempt_to_grow_elements);
1134
- ExternalReference new_space_allocation_top =
1135
- ExternalReference::new_space_allocation_top_address();
1136
- ExternalReference new_space_allocation_limit =
1137
- ExternalReference::new_space_allocation_limit_address();
1138
-
1139
- const int kAllocationDelta = 4;
1140
- // Load top.
1141
- __ movq(rcx, new_space_allocation_top);
1142
- __ movq(rcx, Operand(rcx, 0));
1143
-
1144
- // Check if it's the end of elements.
1145
- __ lea(rdx, FieldOperand(rbx,
1146
- rax, times_pointer_size,
1147
- FixedArray::kHeaderSize - argc * kPointerSize));
1148
- __ cmpq(rdx, rcx);
1149
- __ j(not_equal, &call_builtin);
1150
- __ addq(rcx, Immediate(kAllocationDelta * kPointerSize));
1151
- __ movq(kScratchRegister, new_space_allocation_limit);
1152
- __ cmpq(rcx, Operand(kScratchRegister, 0));
1153
- __ j(above, &call_builtin);
1154
-
1155
- // We fit and could grow elements.
1156
- __ movq(kScratchRegister, new_space_allocation_top);
1157
- __ movq(Operand(kScratchRegister, 0), rcx);
1158
- __ movq(rcx, Operand(rsp, argc * kPointerSize));
1159
-
1160
- // Push the argument...
1161
- __ movq(Operand(rdx, 0), rcx);
1162
- // ... and fill the rest with holes.
1163
- __ Move(kScratchRegister, Factory::the_hole_value());
1164
- for (int i = 1; i < kAllocationDelta; i++) {
1165
- __ movq(Operand(rdx, i * kPointerSize), kScratchRegister);
1166
- }
1167
-
1168
- // Restore receiver to rdx as finish sequence assumes it's here.
1169
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1170
-
1171
- // Increment element's and array's sizes.
1172
- __ SmiAddConstant(FieldOperand(rbx, FixedArray::kLengthOffset),
1173
- Smi::FromInt(kAllocationDelta));
1174
- // Make new length a smi before returning it.
1175
- __ Integer32ToSmi(rax, rax);
1176
- __ movq(FieldOperand(rdx, JSArray::kLengthOffset), rax);
1177
- // Elements are in new space, so write barrier is not required.
1178
- __ ret((argc + 1) * kPointerSize);
1179
-
1180
- __ bind(&call_builtin);
1181
- }
1182
-
1183
- __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush),
1184
- argc + 1,
1185
- 1);
1186
- }
1187
-
1188
- __ bind(&miss);
1189
-
1190
- GenerateMissBranch();
1191
-
1192
- // Return the generated code.
1193
- return GetCode(function);
1194
- }
1195
-
1196
-
1197
- Object* CallStubCompiler::CompileArrayPopCall(Object* object,
1198
- JSObject* holder,
1199
- JSFunction* function,
1200
- String* name,
1201
- CheckType check) {
1202
- // ----------- S t a t e -------------
1203
- // -- ecx : name
1204
- // -- esp[0] : return address
1205
- // -- esp[(argc - n) * 4] : arg[n] (zero-based)
1206
- // -- ...
1207
- // -- esp[(argc + 1) * 4] : receiver
1208
- // -----------------------------------
1209
- ASSERT(check == RECEIVER_MAP_CHECK);
1210
-
1211
- // If object is not an array, bail out to regular call.
1212
- if (!object->IsJSArray()) {
1213
- return Heap::undefined_value();
1214
- }
1215
-
1216
- Label miss, return_undefined, call_builtin;
1217
-
1218
- GenerateNameCheck(name, &miss);
1219
-
1220
- // Get the receiver from the stack.
1221
- const int argc = arguments().immediate();
1222
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1223
-
1224
- // Check that the receiver isn't a smi.
1225
- __ JumpIfSmi(rdx, &miss);
1226
-
1227
- CheckPrototypes(JSObject::cast(object), rdx,
1228
- holder, rbx,
1229
- rax, rdi, name, &miss);
1230
-
1231
- // Get the elements array of the object.
1232
- __ movq(rbx, FieldOperand(rdx, JSArray::kElementsOffset));
1233
-
1234
- // Check that the elements are in fast mode (not dictionary).
1235
- __ Cmp(FieldOperand(rbx, HeapObject::kMapOffset), Factory::fixed_array_map());
1236
- __ j(not_equal, &miss);
1237
-
1238
- // Get the array's length into rcx and calculate new length.
1239
- __ SmiToInteger32(rcx, FieldOperand(rdx, JSArray::kLengthOffset));
1240
- __ subl(rcx, Immediate(1));
1241
- __ j(negative, &return_undefined);
1242
-
1243
- // Get the last element.
1244
- __ Move(r9, Factory::the_hole_value());
1245
- __ movq(rax, FieldOperand(rbx,
1246
- rcx, times_pointer_size,
1247
- FixedArray::kHeaderSize));
1248
- // Check if element is already the hole.
1249
- __ cmpq(rax, r9);
1250
- // If so, call slow-case to also check prototypes for value.
1251
- __ j(equal, &call_builtin);
1252
-
1253
- // Set the array's length.
1254
- __ Integer32ToSmiField(FieldOperand(rdx, JSArray::kLengthOffset), rcx);
1255
-
1256
- // Fill with the hole and return original value.
1257
- __ movq(FieldOperand(rbx,
1258
- rcx, times_pointer_size,
1259
- FixedArray::kHeaderSize),
1260
- r9);
1261
- __ ret((argc + 1) * kPointerSize);
1262
-
1263
- __ bind(&return_undefined);
1264
-
1265
- __ Move(rax, Factory::undefined_value());
1266
- __ ret((argc + 1) * kPointerSize);
1267
-
1268
- __ bind(&call_builtin);
1269
- __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop),
1270
- argc + 1,
1271
- 1);
1272
- __ bind(&miss);
1273
-
1274
- GenerateMissBranch();
1275
-
1276
- // Return the generated code.
1277
- return GetCode(function);
1278
- }
1279
-
1280
-
1281
- Object* CallStubCompiler::CompileStringCharAtCall(Object* object,
1282
- JSObject* holder,
1283
- JSFunction* function,
1284
- String* name,
1285
- CheckType check) {
1286
- // TODO(722): implement this.
1287
- return Heap::undefined_value();
1288
- }
1289
-
1290
-
1291
- Object* CallStubCompiler::CompileStringCharCodeAtCall(Object* object,
1292
- JSObject* holder,
1293
- JSFunction* function,
1294
- String* name,
1295
- CheckType check) {
1296
- // TODO(722): implement this.
1297
- return Heap::undefined_value();
1298
- }
1299
-
1300
-
1301
-
1302
- Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
1303
- JSObject* holder,
1304
- String* name) {
1305
- // ----------- S t a t e -------------
1306
- // rcx : function name
1307
- // rsp[0] : return address
1308
- // rsp[8] : argument argc
1309
- // rsp[16] : argument argc - 1
1310
- // ...
1311
- // rsp[argc * 8] : argument 1
1312
- // rsp[(argc + 1) * 8] : argument 0 = receiver
1313
- // -----------------------------------
1314
- Label miss;
1315
-
1316
- GenerateNameCheck(name, &miss);
1317
-
1318
- // Get the number of arguments.
1319
- const int argc = arguments().immediate();
1320
-
1321
- LookupResult lookup;
1322
- LookupPostInterceptor(holder, name, &lookup);
1323
-
1324
- // Get the receiver from the stack.
1325
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1326
-
1327
- CallInterceptorCompiler compiler(this, arguments(), rcx);
1328
- compiler.Compile(masm(),
1329
- object,
1330
- holder,
1331
- name,
1332
- &lookup,
1333
- rdx,
1334
- rbx,
1335
- rdi,
1336
- rax,
1337
- &miss);
1338
-
1339
- // Restore receiver.
1340
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1341
-
1342
- // Check that the function really is a function.
1343
- __ JumpIfSmi(rax, &miss);
1344
- __ CmpObjectType(rax, JS_FUNCTION_TYPE, rbx);
1345
- __ j(not_equal, &miss);
1346
-
1347
- // Patch the receiver on the stack with the global proxy if
1348
- // necessary.
1349
- if (object->IsGlobalObject()) {
1350
- __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset));
1351
- __ movq(Operand(rsp, (argc + 1) * kPointerSize), rdx);
1352
- }
1353
-
1354
- // Invoke the function.
1355
- __ movq(rdi, rax);
1356
- __ InvokeFunction(rdi, arguments(), JUMP_FUNCTION);
1357
-
1358
- // Handle load cache miss.
1359
- __ bind(&miss);
1360
- GenerateMissBranch();
1361
-
1362
- // Return the generated code.
1363
- return GetCode(INTERCEPTOR, name);
1364
- }
1365
-
1366
-
1367
- Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
1368
- GlobalObject* holder,
1369
- JSGlobalPropertyCell* cell,
1370
- JSFunction* function,
1371
- String* name) {
1372
- // ----------- S t a t e -------------
1373
- // -----------------------------------
1374
- // rcx : function name
1375
- // rsp[0] : return address
1376
- // rsp[8] : argument argc
1377
- // rsp[16] : argument argc - 1
1378
- // ...
1379
- // rsp[argc * 8] : argument 1
1380
- // rsp[(argc + 1) * 8] : argument 0 = receiver
1381
- Label miss;
1382
-
1383
- GenerateNameCheck(name, &miss);
1384
-
1385
- // Get the number of arguments.
1386
- const int argc = arguments().immediate();
1387
-
1388
- // Get the receiver from the stack.
1389
- __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1390
-
1391
- // If the object is the holder then we know that it's a global
1392
- // object which can only happen for contextual calls. In this case,
1393
- // the receiver cannot be a smi.
1394
- if (object != holder) {
1395
- __ JumpIfSmi(rdx, &miss);
1396
- }
1397
-
1398
- // Check that the maps haven't changed.
1399
- CheckPrototypes(object, rdx, holder, rbx, rax, rdi, name, &miss);
1400
-
1401
- // Get the value from the cell.
1402
- __ Move(rdi, Handle<JSGlobalPropertyCell>(cell));
1403
- __ movq(rdi, FieldOperand(rdi, JSGlobalPropertyCell::kValueOffset));
1404
-
1405
- // Check that the cell contains the same function.
1406
- if (Heap::InNewSpace(function)) {
1407
- // We can't embed a pointer to a function in new space so we have
1408
- // to verify that the shared function info is unchanged. This has
1409
- // the nice side effect that multiple closures based on the same
1410
- // function can all use this call IC. Before we load through the
1411
- // function, we have to verify that it still is a function.
1412
- __ JumpIfSmi(rdi, &miss);
1413
- __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rax);
1414
- __ j(not_equal, &miss);
1415
-
1416
- // Check the shared function info. Make sure it hasn't changed.
1417
- __ Move(rax, Handle<SharedFunctionInfo>(function->shared()));
1418
- __ cmpq(FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset), rax);
1419
- __ j(not_equal, &miss);
1420
- } else {
1421
- __ Cmp(rdi, Handle<JSFunction>(function));
1422
- __ j(not_equal, &miss);
1423
- }
1424
-
1425
- // Patch the receiver on the stack with the global proxy.
1426
- if (object->IsGlobalObject()) {
1427
- __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset));
1428
- __ movq(Operand(rsp, (argc + 1) * kPointerSize), rdx);
1429
- }
1430
-
1431
- // Setup the context (function already in edi).
1432
- __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset));
1433
-
1434
- // Jump to the cached code (tail call).
1435
- __ IncrementCounter(&Counters::call_global_inline, 1);
1436
- ASSERT(function->is_compiled());
1437
- Handle<Code> code(function->code());
1438
- ParameterCount expected(function->shared()->formal_parameter_count());
1439
- __ InvokeCode(code, expected, arguments(),
1440
- RelocInfo::CODE_TARGET, JUMP_FUNCTION);
1441
-
1442
- // Handle call cache miss.
1443
- __ bind(&miss);
1444
- __ IncrementCounter(&Counters::call_global_inline_miss, 1);
1445
- GenerateMissBranch();
1446
-
1447
- // Return the generated code.
1448
- return GetCode(NORMAL, name);
1449
- }
1450
-
1451
-
1452
- Object* LoadStubCompiler::CompileLoadCallback(String* name,
1453
- JSObject* object,
1454
- JSObject* holder,
1455
- AccessorInfo* callback) {
1456
- // ----------- S t a t e -------------
1457
- // -- rax : receiver
1458
- // -- rcx : name
1459
- // -- rsp[0] : return address
1460
- // -----------------------------------
1461
- Label miss;
1462
-
1463
- Failure* failure = Failure::InternalError();
1464
- bool success = GenerateLoadCallback(object, holder, rax, rcx, rbx, rdx, rdi,
1465
- callback, name, &miss, &failure);
1466
- if (!success) return failure;
1467
-
1468
- __ bind(&miss);
1469
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1470
-
1471
- // Return the generated code.
1472
- return GetCode(CALLBACKS, name);
1473
- }
1474
-
1475
-
1476
- Object* LoadStubCompiler::CompileLoadConstant(JSObject* object,
1477
- JSObject* holder,
1478
- Object* value,
1479
- String* name) {
1480
- // ----------- S t a t e -------------
1481
- // -- rax : receiver
1482
- // -- rcx : name
1483
- // -- rsp[0] : return address
1484
- // -----------------------------------
1485
- Label miss;
1486
-
1487
- GenerateLoadConstant(object, holder, rax, rbx, rdx, rdi, value, name, &miss);
1488
- __ bind(&miss);
1489
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1490
-
1491
- // Return the generated code.
1492
- return GetCode(CONSTANT_FUNCTION, name);
1493
- }
1494
-
1495
-
1496
- Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
1497
- JSObject* object,
1498
- JSObject* last) {
1499
- // ----------- S t a t e -------------
1500
- // -- rax : receiver
1501
- // -- rcx : name
1502
- // -- rsp[0] : return address
1503
- // -----------------------------------
1504
- Label miss;
1505
-
1506
- // Chech that receiver is not a smi.
1507
- __ JumpIfSmi(rax, &miss);
1508
-
1509
- // Check the maps of the full prototype chain. Also check that
1510
- // global property cells up to (but not including) the last object
1511
- // in the prototype chain are empty.
1512
- CheckPrototypes(object, rax, last, rbx, rdx, rdi, name, &miss);
1513
-
1514
- // If the last object in the prototype chain is a global object,
1515
- // check that the global property cell is empty.
1516
- if (last->IsGlobalObject()) {
1517
- Object* cell = GenerateCheckPropertyCell(masm(),
1518
- GlobalObject::cast(last),
1519
- name,
1520
- rdx,
1521
- &miss);
1522
- if (cell->IsFailure()) return cell;
1523
- }
1524
-
1525
- // Return undefined if maps of the full prototype chain are still the
1526
- // same and no global property with this name contains a value.
1527
- __ LoadRoot(rax, Heap::kUndefinedValueRootIndex);
1528
- __ ret(0);
1529
-
1530
- __ bind(&miss);
1531
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1532
-
1533
- // Return the generated code.
1534
- return GetCode(NONEXISTENT, Heap::empty_string());
1535
- }
1536
-
1537
-
1538
- Object* LoadStubCompiler::CompileLoadField(JSObject* object,
1539
- JSObject* holder,
1540
- int index,
1541
- String* name) {
1542
- // ----------- S t a t e -------------
1543
- // -- rax : receiver
1544
- // -- rcx : name
1545
- // -- rsp[0] : return address
1546
- // -----------------------------------
1547
- Label miss;
1548
-
1549
- GenerateLoadField(object, holder, rax, rbx, rdx, rdi, index, name, &miss);
1550
- __ bind(&miss);
1551
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1552
-
1553
- // Return the generated code.
1554
- return GetCode(FIELD, name);
1555
- }
1556
-
1557
-
1558
- Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
1559
- JSObject* holder,
1560
- String* name) {
1561
- // ----------- S t a t e -------------
1562
- // -- rax : receiver
1563
- // -- rcx : name
1564
- // -- rsp[0] : return address
1565
- // -----------------------------------
1566
- Label miss;
1567
-
1568
- LookupResult lookup;
1569
- LookupPostInterceptor(holder, name, &lookup);
1570
-
1571
- // TODO(368): Compile in the whole chain: all the interceptors in
1572
- // prototypes and ultimate answer.
1573
- GenerateLoadInterceptor(receiver,
1574
- holder,
1575
- &lookup,
1576
- rax,
1577
- rcx,
1578
- rdx,
1579
- rbx,
1580
- rdi,
1581
- name,
1582
- &miss);
1583
-
1584
- __ bind(&miss);
1585
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1586
-
1587
- // Return the generated code.
1588
- return GetCode(INTERCEPTOR, name);
1589
- }
1590
-
1591
-
1592
- Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object,
1593
- GlobalObject* holder,
1594
- JSGlobalPropertyCell* cell,
1595
- String* name,
1596
- bool is_dont_delete) {
1597
- // ----------- S t a t e -------------
1598
- // -- rax : receiver
1599
- // -- rcx : name
1600
- // -- rsp[0] : return address
1601
- // -----------------------------------
1602
- Label miss;
1603
-
1604
- // If the object is the holder then we know that it's a global
1605
- // object which can only happen for contextual loads. In this case,
1606
- // the receiver cannot be a smi.
1607
- if (object != holder) {
1608
- __ JumpIfSmi(rax, &miss);
1609
- }
1610
-
1611
- // Check that the maps haven't changed.
1612
- CheckPrototypes(object, rax, holder, rbx, rdx, rdi, name, &miss);
1613
-
1614
- // Get the value from the cell.
1615
- __ Move(rbx, Handle<JSGlobalPropertyCell>(cell));
1616
- __ movq(rbx, FieldOperand(rbx, JSGlobalPropertyCell::kValueOffset));
1617
-
1618
- // Check for deleted property if property can actually be deleted.
1619
- if (!is_dont_delete) {
1620
- __ CompareRoot(rbx, Heap::kTheHoleValueRootIndex);
1621
- __ j(equal, &miss);
1622
- } else if (FLAG_debug_code) {
1623
- __ CompareRoot(rbx, Heap::kTheHoleValueRootIndex);
1624
- __ Check(not_equal, "DontDelete cells can't contain the hole");
1625
- }
1626
-
1627
- __ IncrementCounter(&Counters::named_load_global_inline, 1);
1628
- __ movq(rax, rbx);
1629
- __ ret(0);
1630
-
1631
- __ bind(&miss);
1632
- __ IncrementCounter(&Counters::named_load_global_inline_miss, 1);
1633
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1634
-
1635
- // Return the generated code.
1636
- return GetCode(NORMAL, name);
1637
- }
1638
-
1639
-
1640
- Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
1641
- JSObject* receiver,
1642
- JSObject* holder,
1643
- AccessorInfo* callback) {
1644
- // ----------- S t a t e -------------
1645
- // -- rax : key
1646
- // -- rdx : receiver
1647
- // -- rsp[0] : return address
1648
- // -----------------------------------
1649
- Label miss;
1650
-
1651
- __ IncrementCounter(&Counters::keyed_load_callback, 1);
1652
-
1653
- // Check that the name has not changed.
1654
- __ Cmp(rax, Handle<String>(name));
1655
- __ j(not_equal, &miss);
1656
-
1657
- Failure* failure = Failure::InternalError();
1658
- bool success = GenerateLoadCallback(receiver, holder, rdx, rax, rbx, rcx, rdi,
1659
- callback, name, &miss, &failure);
1660
- if (!success) return failure;
1661
-
1662
- __ bind(&miss);
1663
- __ DecrementCounter(&Counters::keyed_load_callback, 1);
1664
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1665
-
1666
- // Return the generated code.
1667
- return GetCode(CALLBACKS, name);
1668
- }
1669
-
1670
-
1671
- Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
1672
- // ----------- S t a t e -------------
1673
- // -- rax : key
1674
- // -- rdx : receiver
1675
- // -- rsp[0] : return address
1676
- // -----------------------------------
1677
- Label miss;
1678
-
1679
- __ IncrementCounter(&Counters::keyed_load_array_length, 1);
1680
-
1681
- // Check that the name has not changed.
1682
- __ Cmp(rax, Handle<String>(name));
1683
- __ j(not_equal, &miss);
1684
-
1685
- GenerateLoadArrayLength(masm(), rdx, rcx, &miss);
1686
- __ bind(&miss);
1687
- __ DecrementCounter(&Counters::keyed_load_array_length, 1);
1688
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1689
-
1690
- // Return the generated code.
1691
- return GetCode(CALLBACKS, name);
1692
- }
1693
-
1694
-
1695
- Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
1696
- JSObject* receiver,
1697
- JSObject* holder,
1698
- Object* value) {
1699
- // ----------- S t a t e -------------
1700
- // -- rax : key
1701
- // -- rdx : receiver
1702
- // -- rsp[0] : return address
1703
- // -----------------------------------
1704
- Label miss;
1705
-
1706
- __ IncrementCounter(&Counters::keyed_load_constant_function, 1);
1707
-
1708
- // Check that the name has not changed.
1709
- __ Cmp(rax, Handle<String>(name));
1710
- __ j(not_equal, &miss);
1711
-
1712
- GenerateLoadConstant(receiver, holder, rdx, rbx, rcx, rdi,
1713
- value, name, &miss);
1714
- __ bind(&miss);
1715
- __ DecrementCounter(&Counters::keyed_load_constant_function, 1);
1716
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1717
-
1718
- // Return the generated code.
1719
- return GetCode(CONSTANT_FUNCTION, name);
1720
- }
1721
-
1722
-
1723
- Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
1724
- // ----------- S t a t e -------------
1725
- // -- rax : key
1726
- // -- rdx : receiver
1727
- // -- rsp[0] : return address
1728
- // -----------------------------------
1729
- Label miss;
1730
-
1731
- __ IncrementCounter(&Counters::keyed_load_function_prototype, 1);
1732
-
1733
- // Check that the name has not changed.
1734
- __ Cmp(rax, Handle<String>(name));
1735
- __ j(not_equal, &miss);
1736
-
1737
- GenerateLoadFunctionPrototype(masm(), rdx, rcx, rbx, &miss);
1738
- __ bind(&miss);
1739
- __ DecrementCounter(&Counters::keyed_load_function_prototype, 1);
1740
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1741
-
1742
- // Return the generated code.
1743
- return GetCode(CALLBACKS, name);
1744
- }
1745
-
1746
-
1747
- Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
1748
- JSObject* holder,
1749
- String* name) {
1750
- // ----------- S t a t e -------------
1751
- // -- rax : key
1752
- // -- rdx : receiver
1753
- // -- rsp[0] : return address
1754
- // -----------------------------------
1755
- Label miss;
1756
-
1757
- __ IncrementCounter(&Counters::keyed_load_interceptor, 1);
1758
-
1759
- // Check that the name has not changed.
1760
- __ Cmp(rax, Handle<String>(name));
1761
- __ j(not_equal, &miss);
1762
-
1763
- LookupResult lookup;
1764
- LookupPostInterceptor(holder, name, &lookup);
1765
- GenerateLoadInterceptor(receiver,
1766
- holder,
1767
- &lookup,
1768
- rdx,
1769
- rax,
1770
- rcx,
1771
- rbx,
1772
- rdi,
1773
- name,
1774
- &miss);
1775
- __ bind(&miss);
1776
- __ DecrementCounter(&Counters::keyed_load_interceptor, 1);
1777
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1778
-
1779
- // Return the generated code.
1780
- return GetCode(INTERCEPTOR, name);
1781
- }
1782
-
1783
-
1784
- Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
1785
- // ----------- S t a t e -------------
1786
- // -- rax : key
1787
- // -- rdx : receiver
1788
- // -- rsp[0] : return address
1789
- // -----------------------------------
1790
- Label miss;
1791
-
1792
- __ IncrementCounter(&Counters::keyed_load_string_length, 1);
1793
-
1794
- // Check that the name has not changed.
1795
- __ Cmp(rax, Handle<String>(name));
1796
- __ j(not_equal, &miss);
1797
-
1798
- GenerateLoadStringLength(masm(), rdx, rcx, rbx, &miss);
1799
- __ bind(&miss);
1800
- __ DecrementCounter(&Counters::keyed_load_string_length, 1);
1801
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1802
-
1803
- // Return the generated code.
1804
- return GetCode(CALLBACKS, name);
1805
- }
1806
-
1807
-
1808
- Object* StoreStubCompiler::CompileStoreCallback(JSObject* object,
1809
- AccessorInfo* callback,
1810
- String* name) {
1811
- // ----------- S t a t e -------------
1812
- // -- rax : value
1813
- // -- rcx : name
1814
- // -- rdx : receiver
1815
- // -- rsp[0] : return address
1816
- // -----------------------------------
1817
- Label miss;
1818
-
1819
- // Check that the object isn't a smi.
1820
- __ JumpIfSmi(rdx, &miss);
1821
-
1822
- // Check that the map of the object hasn't changed.
1823
- __ Cmp(FieldOperand(rdx, HeapObject::kMapOffset),
1824
- Handle<Map>(object->map()));
1825
- __ j(not_equal, &miss);
1826
-
1827
- // Perform global security token check if needed.
1828
- if (object->IsJSGlobalProxy()) {
1829
- __ CheckAccessGlobalProxy(rdx, rbx, &miss);
1830
- }
1831
-
1832
- // Stub never generated for non-global objects that require access
1833
- // checks.
1834
- ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
1835
-
1836
- __ pop(rbx); // remove the return address
1837
- __ push(rdx); // receiver
1838
- __ Push(Handle<AccessorInfo>(callback)); // callback info
1839
- __ push(rcx); // name
1840
- __ push(rax); // value
1841
- __ push(rbx); // restore return address
1842
-
1843
- // Do tail-call to the runtime system.
1844
- ExternalReference store_callback_property =
1845
- ExternalReference(IC_Utility(IC::kStoreCallbackProperty));
1846
- __ TailCallExternalReference(store_callback_property, 4, 1);
1847
-
1848
- // Handle store cache miss.
1849
- __ bind(&miss);
1850
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1851
- __ Jump(ic, RelocInfo::CODE_TARGET);
1852
-
1853
- // Return the generated code.
1854
- return GetCode(CALLBACKS, name);
1855
- }
1856
-
1857
-
1858
- Object* StoreStubCompiler::CompileStoreField(JSObject* object,
1859
- int index,
1860
- Map* transition,
1861
- String* name) {
1862
- // ----------- S t a t e -------------
1863
- // -- rax : value
1864
- // -- rcx : name
1865
- // -- rdx : receiver
1866
- // -- rsp[0] : return address
1867
- // -----------------------------------
1868
- Label miss;
1869
-
1870
- // Generate store field code. Preserves receiver and name on jump to miss.
1871
- GenerateStoreField(masm(),
1872
- object,
1873
- index,
1874
- transition,
1875
- rdx, rcx, rbx,
1876
- &miss);
1877
-
1878
- // Handle store cache miss.
1879
- __ bind(&miss);
1880
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1881
- __ Jump(ic, RelocInfo::CODE_TARGET);
1882
-
1883
- // Return the generated code.
1884
- return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
1885
- }
1886
-
1887
-
1888
- Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver,
1889
- String* name) {
1890
- // ----------- S t a t e -------------
1891
- // -- rax : value
1892
- // -- rcx : name
1893
- // -- rdx : receiver
1894
- // -- rsp[0] : return address
1895
- // -----------------------------------
1896
- Label miss;
1897
-
1898
- // Check that the object isn't a smi.
1899
- __ JumpIfSmi(rdx, &miss);
1900
-
1901
- // Check that the map of the object hasn't changed.
1902
- __ Cmp(FieldOperand(rdx, HeapObject::kMapOffset),
1903
- Handle<Map>(receiver->map()));
1904
- __ j(not_equal, &miss);
1905
-
1906
- // Perform global security token check if needed.
1907
- if (receiver->IsJSGlobalProxy()) {
1908
- __ CheckAccessGlobalProxy(rdx, rbx, &miss);
1909
- }
1910
-
1911
- // Stub never generated for non-global objects that require access
1912
- // checks.
1913
- ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
1914
-
1915
- __ pop(rbx); // remove the return address
1916
- __ push(rdx); // receiver
1917
- __ push(rcx); // name
1918
- __ push(rax); // value
1919
- __ push(rbx); // restore return address
1920
-
1921
- // Do tail-call to the runtime system.
1922
- ExternalReference store_ic_property =
1923
- ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
1924
- __ TailCallExternalReference(store_ic_property, 3, 1);
1925
-
1926
- // Handle store cache miss.
1927
- __ bind(&miss);
1928
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1929
- __ Jump(ic, RelocInfo::CODE_TARGET);
1930
-
1931
- // Return the generated code.
1932
- return GetCode(INTERCEPTOR, name);
1933
- }
1934
-
1935
-
1936
- Object* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object,
1937
- JSGlobalPropertyCell* cell,
1938
- String* name) {
1939
- // ----------- S t a t e -------------
1940
- // -- rax : value
1941
- // -- rcx : name
1942
- // -- rdx : receiver
1943
- // -- rsp[0] : return address
1944
- // -----------------------------------
1945
- Label miss;
1946
-
1947
- // Check that the map of the global has not changed.
1948
- __ Cmp(FieldOperand(rdx, HeapObject::kMapOffset),
1949
- Handle<Map>(object->map()));
1950
- __ j(not_equal, &miss);
1951
-
1952
- // Store the value in the cell.
1953
- __ Move(rcx, Handle<JSGlobalPropertyCell>(cell));
1954
- __ movq(FieldOperand(rcx, JSGlobalPropertyCell::kValueOffset), rax);
1955
-
1956
- // Return the value (register rax).
1957
- __ IncrementCounter(&Counters::named_store_global_inline, 1);
1958
- __ ret(0);
1959
-
1960
- // Handle store cache miss.
1961
- __ bind(&miss);
1962
- __ IncrementCounter(&Counters::named_store_global_inline_miss, 1);
1963
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1964
- __ Jump(ic, RelocInfo::CODE_TARGET);
1965
-
1966
- // Return the generated code.
1967
- return GetCode(NORMAL, name);
1968
- }
1969
-
1970
-
1971
- Object* KeyedLoadStubCompiler::CompileLoadField(String* name,
1972
- JSObject* receiver,
1973
- JSObject* holder,
1974
- int index) {
1975
- // ----------- S t a t e -------------
1976
- // -- rax : key
1977
- // -- rdx : receiver
1978
- // -- rsp[0] : return address
1979
- // -----------------------------------
1980
- Label miss;
1981
-
1982
- __ IncrementCounter(&Counters::keyed_load_field, 1);
1983
-
1984
- // Check that the name has not changed.
1985
- __ Cmp(rax, Handle<String>(name));
1986
- __ j(not_equal, &miss);
1987
-
1988
- GenerateLoadField(receiver, holder, rdx, rbx, rcx, rdi, index, name, &miss);
1989
-
1990
- __ bind(&miss);
1991
- __ DecrementCounter(&Counters::keyed_load_field, 1);
1992
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1993
-
1994
- // Return the generated code.
1995
- return GetCode(FIELD, name);
1996
- }
1997
-
1998
-
1999
- Object* KeyedStoreStubCompiler::CompileStoreField(JSObject* object,
2000
- int index,
2001
- Map* transition,
2002
- String* name) {
2003
- // ----------- S t a t e -------------
2004
- // -- rax : value
2005
- // -- rcx : key
2006
- // -- rdx : receiver
2007
- // -- rsp[0] : return address
2008
- // -----------------------------------
2009
- Label miss;
2010
-
2011
- __ IncrementCounter(&Counters::keyed_store_field, 1);
2012
-
2013
- // Check that the name has not changed.
2014
- __ Cmp(rcx, Handle<String>(name));
2015
- __ j(not_equal, &miss);
2016
-
2017
- // Generate store field code. Preserves receiver and name on jump to miss.
2018
- GenerateStoreField(masm(),
2019
- object,
2020
- index,
2021
- transition,
2022
- rdx, rcx, rbx,
2023
- &miss);
2024
-
2025
- // Handle store cache miss.
2026
- __ bind(&miss);
2027
- __ DecrementCounter(&Counters::keyed_store_field, 1);
2028
- Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Miss));
2029
- __ Jump(ic, RelocInfo::CODE_TARGET);
2030
-
2031
- // Return the generated code.
2032
- return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
2033
- }
2034
-
2035
-
2036
- // TODO(1241006): Avoid having lazy compile stubs specialized by the
2037
- // number of arguments. It is not needed anymore.
2038
- Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
2039
- // Enter an internal frame.
2040
- __ EnterInternalFrame();
2041
-
2042
- // Push a copy of the function onto the stack.
2043
- __ push(rdi);
2044
-
2045
- __ push(rdi); // function is also the parameter to the runtime call
2046
- __ CallRuntime(Runtime::kLazyCompile, 1);
2047
- __ pop(rdi);
2048
-
2049
- // Tear down temporary frame.
2050
- __ LeaveInternalFrame();
2051
-
2052
- // Do a tail-call of the compiled function.
2053
- __ lea(rcx, FieldOperand(rax, Code::kHeaderSize));
2054
- __ jmp(rcx);
2055
-
2056
- return GetCodeWithFlags(flags, "LazyCompileStub");
2057
- }
2058
-
2059
-
2060
- void StubCompiler::GenerateLoadInterceptor(JSObject* object,
2061
- JSObject* interceptor_holder,
2062
- LookupResult* lookup,
2063
- Register receiver,
2064
- Register name_reg,
2065
- Register scratch1,
2066
- Register scratch2,
2067
- Register scratch3,
2068
- String* name,
2069
- Label* miss) {
2070
- ASSERT(interceptor_holder->HasNamedInterceptor());
2071
- ASSERT(!interceptor_holder->GetNamedInterceptor()->getter()->IsUndefined());
2072
-
2073
- // Check that the receiver isn't a smi.
2074
- __ JumpIfSmi(receiver, miss);
2075
-
2076
- // So far the most popular follow ups for interceptor loads are FIELD
2077
- // and CALLBACKS, so inline only them, other cases may be added
2078
- // later.
2079
- bool compile_followup_inline = false;
2080
- if (lookup->IsProperty() && lookup->IsCacheable()) {
2081
- if (lookup->type() == FIELD) {
2082
- compile_followup_inline = true;
2083
- } else if (lookup->type() == CALLBACKS &&
2084
- lookup->GetCallbackObject()->IsAccessorInfo() &&
2085
- AccessorInfo::cast(lookup->GetCallbackObject())->getter() != NULL) {
2086
- compile_followup_inline = true;
2087
- }
2088
- }
2089
-
2090
- if (compile_followup_inline) {
2091
- // Compile the interceptor call, followed by inline code to load the
2092
- // property from further up the prototype chain if the call fails.
2093
- // Check that the maps haven't changed.
2094
- Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
2095
- scratch1, scratch2, scratch3,
2096
- name, miss);
2097
- ASSERT(holder_reg.is(receiver) || holder_reg.is(scratch1));
2098
-
2099
- // Save necessary data before invoking an interceptor.
2100
- // Requires a frame to make GC aware of pushed pointers.
2101
- __ EnterInternalFrame();
2102
-
2103
- if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
2104
- // CALLBACKS case needs a receiver to be passed into C++ callback.
2105
- __ push(receiver);
2106
- }
2107
- __ push(holder_reg);
2108
- __ push(name_reg);
2109
-
2110
- // Invoke an interceptor. Note: map checks from receiver to
2111
- // interceptor's holder has been compiled before (see a caller
2112
- // of this method.)
2113
- CompileCallLoadPropertyWithInterceptor(masm(),
2114
- receiver,
2115
- holder_reg,
2116
- name_reg,
2117
- interceptor_holder);
2118
-
2119
- // Check if interceptor provided a value for property. If it's
2120
- // the case, return immediately.
2121
- Label interceptor_failed;
2122
- __ CompareRoot(rax, Heap::kNoInterceptorResultSentinelRootIndex);
2123
- __ j(equal, &interceptor_failed);
2124
- __ LeaveInternalFrame();
2125
- __ ret(0);
2126
-
2127
- __ bind(&interceptor_failed);
2128
- __ pop(name_reg);
2129
- __ pop(holder_reg);
2130
- if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
2131
- __ pop(receiver);
2132
- }
2133
-
2134
- __ LeaveInternalFrame();
2135
-
2136
- // Check that the maps from interceptor's holder to lookup's holder
2137
- // haven't changed. And load lookup's holder into |holder| register.
2138
- if (interceptor_holder != lookup->holder()) {
2139
- holder_reg = CheckPrototypes(interceptor_holder,
2140
- holder_reg,
2141
- lookup->holder(),
2142
- scratch1,
2143
- scratch2,
2144
- scratch3,
2145
- name,
2146
- miss);
2147
- }
2148
-
2149
- if (lookup->type() == FIELD) {
2150
- // We found FIELD property in prototype chain of interceptor's holder.
2151
- // Retrieve a field from field's holder.
2152
- GenerateFastPropertyLoad(masm(), rax, holder_reg,
2153
- lookup->holder(), lookup->GetFieldIndex());
2154
- __ ret(0);
2155
- } else {
2156
- // We found CALLBACKS property in prototype chain of interceptor's
2157
- // holder.
2158
- ASSERT(lookup->type() == CALLBACKS);
2159
- ASSERT(lookup->GetCallbackObject()->IsAccessorInfo());
2160
- AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
2161
- ASSERT(callback != NULL);
2162
- ASSERT(callback->getter() != NULL);
2163
-
2164
- // Tail call to runtime.
2165
- // Important invariant in CALLBACKS case: the code above must be
2166
- // structured to never clobber |receiver| register.
2167
- __ pop(scratch2); // return address
2168
- __ push(receiver);
2169
- __ push(holder_reg);
2170
- __ Move(holder_reg, Handle<AccessorInfo>(callback));
2171
- __ push(holder_reg);
2172
- __ push(FieldOperand(holder_reg, AccessorInfo::kDataOffset));
2173
- __ push(name_reg);
2174
- __ push(scratch2); // restore return address
2175
-
2176
- ExternalReference ref =
2177
- ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
2178
- __ TailCallExternalReference(ref, 5, 1);
2179
- }
2180
- } else { // !compile_followup_inline
2181
- // Call the runtime system to load the interceptor.
2182
- // Check that the maps haven't changed.
2183
- Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
2184
- scratch1, scratch2, scratch3,
2185
- name, miss);
2186
- __ pop(scratch2); // save old return address
2187
- PushInterceptorArguments(masm(), receiver, holder_reg,
2188
- name_reg, interceptor_holder);
2189
- __ push(scratch2); // restore old return address
2190
-
2191
- ExternalReference ref = ExternalReference(
2192
- IC_Utility(IC::kLoadPropertyWithInterceptorForLoad));
2193
- __ TailCallExternalReference(ref, 5, 1);
2194
- }
2195
- }
2196
-
2197
-
2198
- bool StubCompiler::GenerateLoadCallback(JSObject* object,
2199
- JSObject* holder,
2200
- Register receiver,
2201
- Register name_reg,
2202
- Register scratch1,
2203
- Register scratch2,
2204
- Register scratch3,
2205
- AccessorInfo* callback,
2206
- String* name,
2207
- Label* miss,
2208
- Failure** failure) {
2209
- // Check that the receiver isn't a smi.
2210
- __ JumpIfSmi(receiver, miss);
2211
-
2212
- // Check that the maps haven't changed.
2213
- Register reg =
2214
- CheckPrototypes(object, receiver, holder,
2215
- scratch1, scratch2, scratch3, name, miss);
2216
-
2217
- // Push the arguments on the JS stack of the caller.
2218
- __ pop(scratch2); // remove return address
2219
- __ push(receiver); // receiver
2220
- __ push(reg); // holder
2221
- __ Move(reg, Handle<AccessorInfo>(callback)); // callback data
2222
- __ push(reg);
2223
- __ push(FieldOperand(reg, AccessorInfo::kDataOffset));
2224
- __ push(name_reg); // name
2225
- __ push(scratch2); // restore return address
2226
-
2227
- // Do tail-call to the runtime system.
2228
- ExternalReference load_callback_property =
2229
- ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
2230
- __ TailCallExternalReference(load_callback_property, 5, 1);
2231
-
2232
- return true;
2233
- }
2234
-
2235
-
2236
- Register StubCompiler::CheckPrototypes(JSObject* object,
2237
- Register object_reg,
2238
- JSObject* holder,
2239
- Register holder_reg,
2240
- Register scratch1,
2241
- Register scratch2,
2242
- String* name,
2243
- int save_at_depth,
2244
- Label* miss) {
2245
- // Make sure there's no overlap between holder and object registers.
2246
- ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg));
2247
- ASSERT(!scratch2.is(object_reg) && !scratch2.is(holder_reg)
2248
- && !scratch2.is(scratch1));
2249
-
2250
- // Keep track of the current object in register reg. On the first
2251
- // iteration, reg is an alias for object_reg, on later iterations,
2252
- // it is an alias for holder_reg.
2253
- Register reg = object_reg;
2254
- int depth = 0;
2255
-
2256
- if (save_at_depth == depth) {
2257
- __ movq(Operand(rsp, kPointerSize), object_reg);
2258
- }
2259
-
2260
- // Check the maps in the prototype chain.
2261
- // Traverse the prototype chain from the object and do map checks.
2262
- JSObject* current = object;
2263
- while (current != holder) {
2264
- depth++;
2265
-
2266
- // Only global objects and objects that do not require access
2267
- // checks are allowed in stubs.
2268
- ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
2269
-
2270
- JSObject* prototype = JSObject::cast(current->GetPrototype());
2271
- if (!current->HasFastProperties() &&
2272
- !current->IsJSGlobalObject() &&
2273
- !current->IsJSGlobalProxy()) {
2274
- if (!name->IsSymbol()) {
2275
- Object* lookup_result = Heap::LookupSymbol(name);
2276
- if (lookup_result->IsFailure()) {
2277
- set_failure(Failure::cast(lookup_result));
2278
- return reg;
2279
- } else {
2280
- name = String::cast(lookup_result);
2281
- }
2282
- }
2283
- ASSERT(current->property_dictionary()->FindEntry(name) ==
2284
- StringDictionary::kNotFound);
2285
-
2286
- GenerateDictionaryNegativeLookup(masm(),
2287
- miss,
2288
- reg,
2289
- name,
2290
- scratch1,
2291
- scratch2);
2292
- __ movq(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
2293
- reg = holder_reg; // from now the object is in holder_reg
2294
- __ movq(reg, FieldOperand(scratch1, Map::kPrototypeOffset));
2295
- } else if (Heap::InNewSpace(prototype)) {
2296
- // Get the map of the current object.
2297
- __ movq(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
2298
- __ Cmp(scratch1, Handle<Map>(current->map()));
2299
- // Branch on the result of the map check.
2300
- __ j(not_equal, miss);
2301
- // Check access rights to the global object. This has to happen
2302
- // after the map check so that we know that the object is
2303
- // actually a global object.
2304
- if (current->IsJSGlobalProxy()) {
2305
- __ CheckAccessGlobalProxy(reg, scratch1, miss);
2306
-
2307
- // Restore scratch register to be the map of the object.
2308
- // We load the prototype from the map in the scratch register.
2309
- __ movq(scratch1, FieldOperand(reg, HeapObject::kMapOffset));
2310
- }
2311
- // The prototype is in new space; we cannot store a reference
2312
- // to it in the code. Load it from the map.
2313
- reg = holder_reg; // from now the object is in holder_reg
2314
- __ movq(reg, FieldOperand(scratch1, Map::kPrototypeOffset));
2315
-
2316
- } else {
2317
- // Check the map of the current object.
2318
- __ Cmp(FieldOperand(reg, HeapObject::kMapOffset),
2319
- Handle<Map>(current->map()));
2320
- // Branch on the result of the map check.
2321
- __ j(not_equal, miss);
2322
- // Check access rights to the global object. This has to happen
2323
- // after the map check so that we know that the object is
2324
- // actually a global object.
2325
- if (current->IsJSGlobalProxy()) {
2326
- __ CheckAccessGlobalProxy(reg, scratch1, miss);
2327
- }
2328
- // The prototype is in old space; load it directly.
2329
- reg = holder_reg; // from now the object is in holder_reg
2330
- __ Move(reg, Handle<JSObject>(prototype));
2331
- }
2332
-
2333
- if (save_at_depth == depth) {
2334
- __ movq(Operand(rsp, kPointerSize), reg);
2335
- }
2336
-
2337
- // Go to the next object in the prototype chain.
2338
- current = prototype;
2339
- }
2340
-
2341
- // Check the holder map.
2342
- __ Cmp(FieldOperand(reg, HeapObject::kMapOffset), Handle<Map>(holder->map()));
2343
- __ j(not_equal, miss);
2344
-
2345
- // Log the check depth.
2346
- LOG(IntEvent("check-maps-depth", depth + 1));
2347
-
2348
- // Perform security check for access to the global object and return
2349
- // the holder register.
2350
- ASSERT(current == holder);
2351
- ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
2352
- if (current->IsJSGlobalProxy()) {
2353
- __ CheckAccessGlobalProxy(reg, scratch1, miss);
2354
- }
2355
-
2356
- // If we've skipped any global objects, it's not enough to verify
2357
- // that their maps haven't changed. We also need to check that the
2358
- // property cell for the property is still empty.
2359
- current = object;
2360
- while (current != holder) {
2361
- if (current->IsGlobalObject()) {
2362
- Object* cell = GenerateCheckPropertyCell(masm(),
2363
- GlobalObject::cast(current),
2364
- name,
2365
- scratch1,
2366
- miss);
2367
- if (cell->IsFailure()) {
2368
- set_failure(Failure::cast(cell));
2369
- return reg;
2370
- }
2371
- }
2372
- current = JSObject::cast(current->GetPrototype());
2373
- }
2374
-
2375
- // Return the register containing the holder.
2376
- return reg;
2377
- }
2378
-
2379
-
2380
- void StubCompiler::GenerateLoadField(JSObject* object,
2381
- JSObject* holder,
2382
- Register receiver,
2383
- Register scratch1,
2384
- Register scratch2,
2385
- Register scratch3,
2386
- int index,
2387
- String* name,
2388
- Label* miss) {
2389
- // Check that the receiver isn't a smi.
2390
- __ JumpIfSmi(receiver, miss);
2391
-
2392
- // Check the prototype chain.
2393
- Register reg =
2394
- CheckPrototypes(object, receiver, holder,
2395
- scratch1, scratch2, scratch3, name, miss);
2396
-
2397
- // Get the value from the properties.
2398
- GenerateFastPropertyLoad(masm(), rax, reg, holder, index);
2399
- __ ret(0);
2400
- }
2401
-
2402
-
2403
- void StubCompiler::GenerateLoadConstant(JSObject* object,
2404
- JSObject* holder,
2405
- Register receiver,
2406
- Register scratch1,
2407
- Register scratch2,
2408
- Register scratch3,
2409
- Object* value,
2410
- String* name,
2411
- Label* miss) {
2412
- // Check that the receiver isn't a smi.
2413
- __ JumpIfSmi(receiver, miss);
2414
-
2415
- // Check that the maps haven't changed.
2416
- Register reg =
2417
- CheckPrototypes(object, receiver, holder,
2418
- scratch1, scratch2, scratch3, name, miss);
2419
-
2420
- // Return the constant value.
2421
- __ Move(rax, Handle<Object>(value));
2422
- __ ret(0);
2423
- }
2424
-
2425
-
2426
- // Specialized stub for constructing objects from functions which only have only
2427
- // simple assignments of the form this.x = ...; in their body.
2428
- Object* ConstructStubCompiler::CompileConstructStub(
2429
- SharedFunctionInfo* shared) {
2430
- // ----------- S t a t e -------------
2431
- // -- rax : argc
2432
- // -- rdi : constructor
2433
- // -- rsp[0] : return address
2434
- // -- rsp[4] : last argument
2435
- // -----------------------------------
2436
- Label generic_stub_call;
2437
-
2438
- // Use r8 for holding undefined which is used in several places below.
2439
- __ Move(r8, Factory::undefined_value());
2440
-
2441
- #ifdef ENABLE_DEBUGGER_SUPPORT
2442
- // Check to see whether there are any break points in the function code. If
2443
- // there are jump to the generic constructor stub which calls the actual
2444
- // code for the function thereby hitting the break points.
2445
- __ movq(rbx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset));
2446
- __ movq(rbx, FieldOperand(rbx, SharedFunctionInfo::kDebugInfoOffset));
2447
- __ cmpq(rbx, r8);
2448
- __ j(not_equal, &generic_stub_call);
2449
- #endif
2450
-
2451
- // Load the initial map and verify that it is in fact a map.
2452
- __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
2453
- // Will both indicate a NULL and a Smi.
2454
- ASSERT(kSmiTag == 0);
2455
- __ JumpIfSmi(rbx, &generic_stub_call);
2456
- __ CmpObjectType(rbx, MAP_TYPE, rcx);
2457
- __ j(not_equal, &generic_stub_call);
2458
-
2459
- #ifdef DEBUG
2460
- // Cannot construct functions this way.
2461
- // rdi: constructor
2462
- // rbx: initial map
2463
- __ CmpInstanceType(rbx, JS_FUNCTION_TYPE);
2464
- __ Assert(not_equal, "Function constructed by construct stub.");
2465
- #endif
2466
-
2467
- // Now allocate the JSObject in new space.
2468
- // rdi: constructor
2469
- // rbx: initial map
2470
- __ movzxbq(rcx, FieldOperand(rbx, Map::kInstanceSizeOffset));
2471
- __ shl(rcx, Immediate(kPointerSizeLog2));
2472
- __ AllocateInNewSpace(rcx,
2473
- rdx,
2474
- rcx,
2475
- no_reg,
2476
- &generic_stub_call,
2477
- NO_ALLOCATION_FLAGS);
2478
-
2479
- // Allocated the JSObject, now initialize the fields and add the heap tag.
2480
- // rbx: initial map
2481
- // rdx: JSObject (untagged)
2482
- __ movq(Operand(rdx, JSObject::kMapOffset), rbx);
2483
- __ Move(rbx, Factory::empty_fixed_array());
2484
- __ movq(Operand(rdx, JSObject::kPropertiesOffset), rbx);
2485
- __ movq(Operand(rdx, JSObject::kElementsOffset), rbx);
2486
-
2487
- // rax: argc
2488
- // rdx: JSObject (untagged)
2489
- // Load the address of the first in-object property into r9.
2490
- __ lea(r9, Operand(rdx, JSObject::kHeaderSize));
2491
- // Calculate the location of the first argument. The stack contains only the
2492
- // return address on top of the argc arguments.
2493
- __ lea(rcx, Operand(rsp, rax, times_pointer_size, 0));
2494
-
2495
- // rax: argc
2496
- // rcx: first argument
2497
- // rdx: JSObject (untagged)
2498
- // r8: undefined
2499
- // r9: first in-object property of the JSObject
2500
- // Fill the initialized properties with a constant value or a passed argument
2501
- // depending on the this.x = ...; assignment in the function.
2502
- for (int i = 0; i < shared->this_property_assignments_count(); i++) {
2503
- if (shared->IsThisPropertyAssignmentArgument(i)) {
2504
- // Check if the argument assigned to the property is actually passed.
2505
- // If argument is not passed the property is set to undefined,
2506
- // otherwise find it on the stack.
2507
- int arg_number = shared->GetThisPropertyAssignmentArgument(i);
2508
- __ movq(rbx, r8);
2509
- __ cmpq(rax, Immediate(arg_number));
2510
- __ cmovq(above, rbx, Operand(rcx, arg_number * -kPointerSize));
2511
- // Store value in the property.
2512
- __ movq(Operand(r9, i * kPointerSize), rbx);
2513
- } else {
2514
- // Set the property to the constant value.
2515
- Handle<Object> constant(shared->GetThisPropertyAssignmentConstant(i));
2516
- __ Move(Operand(r9, i * kPointerSize), constant);
2517
- }
2518
- }
2519
-
2520
- // Fill the unused in-object property fields with undefined.
2521
- for (int i = shared->this_property_assignments_count();
2522
- i < shared->CalculateInObjectProperties();
2523
- i++) {
2524
- __ movq(Operand(r9, i * kPointerSize), r8);
2525
- }
2526
-
2527
- // rax: argc
2528
- // rdx: JSObject (untagged)
2529
- // Move argc to rbx and the JSObject to return to rax and tag it.
2530
- __ movq(rbx, rax);
2531
- __ movq(rax, rdx);
2532
- __ or_(rax, Immediate(kHeapObjectTag));
2533
-
2534
- // rax: JSObject
2535
- // rbx: argc
2536
- // Remove caller arguments and receiver from the stack and return.
2537
- __ pop(rcx);
2538
- __ lea(rsp, Operand(rsp, rbx, times_pointer_size, 1 * kPointerSize));
2539
- __ push(rcx);
2540
- __ IncrementCounter(&Counters::constructed_objects, 1);
2541
- __ IncrementCounter(&Counters::constructed_objects_stub, 1);
2542
- __ ret(0);
2543
-
2544
- // Jump to the generic stub in case the specialized code cannot handle the
2545
- // construction.
2546
- __ bind(&generic_stub_call);
2547
- Code* code = Builtins::builtin(Builtins::JSConstructStubGeneric);
2548
- Handle<Code> generic_construct_stub(code);
2549
- __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET);
2550
-
2551
- // Return the generated code.
2552
- return GetCode();
2553
- }
2554
-
2555
-
2556
- #undef __
2557
-
2558
- } } // namespace v8::internal
2559
-
2560
- #endif // V8_TARGET_ARCH_X64