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