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,361 +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
-
29
- // Declares a Simulator for ARM instructions if we are not generating a native
30
- // ARM binary. This Simulator allows us to run and debug ARM code generation on
31
- // regular desktop machines.
32
- // V8 calls into generated code by "calling" the CALL_GENERATED_CODE macro,
33
- // which will start execution in the Simulator or forwards to the real entry
34
- // on a ARM HW platform.
35
-
36
- #ifndef V8_ARM_SIMULATOR_ARM_H_
37
- #define V8_ARM_SIMULATOR_ARM_H_
38
-
39
- #include "allocation.h"
40
-
41
- #if defined(__arm__)
42
-
43
- // When running without a simulator we call the entry directly.
44
- #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
45
- (entry(p0, p1, p2, p3, p4))
46
-
47
- // The stack limit beyond which we will throw stack overflow errors in
48
- // generated code. Because generated code on arm uses the C stack, we
49
- // just use the C stack limit.
50
- class SimulatorStack : public v8::internal::AllStatic {
51
- public:
52
- static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
53
- return c_limit;
54
- }
55
-
56
- static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
57
- return try_catch_address;
58
- }
59
-
60
- static inline void UnregisterCTryCatch() { }
61
- };
62
-
63
-
64
- // Call the generated regexp code directly. The entry function pointer should
65
- // expect eight int/pointer sized arguments and return an int.
66
- #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
67
- entry(p0, p1, p2, p3, p4, p5, p6)
68
-
69
- #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
70
- reinterpret_cast<TryCatch*>(try_catch_address)
71
-
72
-
73
- #else // defined(__arm__)
74
-
75
- // When running with the simulator transition into simulated execution at this
76
- // point.
77
- #define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
78
- reinterpret_cast<Object*>( \
79
- assembler::arm::Simulator::current()->Call(FUNCTION_ADDR(entry), 5, \
80
- p0, p1, p2, p3, p4))
81
-
82
- #define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6) \
83
- assembler::arm::Simulator::current()->Call( \
84
- FUNCTION_ADDR(entry), 7, p0, p1, p2, p3, p4, p5, p6)
85
-
86
- #define TRY_CATCH_FROM_ADDRESS(try_catch_address) \
87
- try_catch_address == NULL ? \
88
- NULL : *(reinterpret_cast<TryCatch**>(try_catch_address))
89
-
90
-
91
- #include "constants-arm.h"
92
- #include "hashmap.h"
93
-
94
-
95
- namespace assembler {
96
- namespace arm {
97
-
98
- class CachePage {
99
- public:
100
- static const int LINE_VALID = 0;
101
- static const int LINE_INVALID = 1;
102
-
103
- static const int kPageShift = 12;
104
- static const int kPageSize = 1 << kPageShift;
105
- static const int kPageMask = kPageSize - 1;
106
- static const int kLineShift = 2; // The cache line is only 4 bytes right now.
107
- static const int kLineLength = 1 << kLineShift;
108
- static const int kLineMask = kLineLength - 1;
109
-
110
- CachePage() {
111
- memset(&validity_map_, LINE_INVALID, sizeof(validity_map_));
112
- }
113
-
114
- char* ValidityByte(int offset) {
115
- return &validity_map_[offset >> kLineShift];
116
- }
117
-
118
- char* CachedData(int offset) {
119
- return &data_[offset];
120
- }
121
-
122
- private:
123
- char data_[kPageSize]; // The cached data.
124
- static const int kValidityMapSize = kPageSize >> kLineShift;
125
- char validity_map_[kValidityMapSize]; // One byte per line.
126
- };
127
-
128
-
129
- class Simulator {
130
- public:
131
- friend class Debugger;
132
- enum Register {
133
- no_reg = -1,
134
- r0 = 0, r1, r2, r3, r4, r5, r6, r7,
135
- r8, r9, r10, r11, r12, r13, r14, r15,
136
- num_registers,
137
- sp = 13,
138
- lr = 14,
139
- pc = 15,
140
- s0 = 0, s1, s2, s3, s4, s5, s6, s7,
141
- s8, s9, s10, s11, s12, s13, s14, s15,
142
- s16, s17, s18, s19, s20, s21, s22, s23,
143
- s24, s25, s26, s27, s28, s29, s30, s31,
144
- num_s_registers = 32,
145
- d0 = 0, d1, d2, d3, d4, d5, d6, d7,
146
- d8, d9, d10, d11, d12, d13, d14, d15,
147
- num_d_registers = 16
148
- };
149
-
150
- Simulator();
151
- ~Simulator();
152
-
153
- // The currently executing Simulator instance. Potentially there can be one
154
- // for each native thread.
155
- static Simulator* current();
156
-
157
- // Accessors for register state. Reading the pc value adheres to the ARM
158
- // architecture specification and is off by a 8 from the currently executing
159
- // instruction.
160
- void set_register(int reg, int32_t value);
161
- int32_t get_register(int reg) const;
162
- void set_dw_register(int dreg, const int* dbl);
163
-
164
- // Support for VFP.
165
- void set_s_register(int reg, unsigned int value);
166
- unsigned int get_s_register(int reg) const;
167
- void set_d_register_from_double(int dreg, const double& dbl);
168
- double get_double_from_d_register(int dreg);
169
- void set_s_register_from_float(int sreg, const float dbl);
170
- float get_float_from_s_register(int sreg);
171
- void set_s_register_from_sinteger(int reg, const int value);
172
- int get_sinteger_from_s_register(int reg);
173
-
174
- // Special case of set_register and get_register to access the raw PC value.
175
- void set_pc(int32_t value);
176
- int32_t get_pc() const;
177
-
178
- // Accessor to the internal simulator stack area.
179
- uintptr_t StackLimit() const;
180
-
181
- // Executes ARM instructions until the PC reaches end_sim_pc.
182
- void Execute();
183
-
184
- // Call on program start.
185
- static void Initialize();
186
-
187
- // V8 generally calls into generated JS code with 5 parameters and into
188
- // generated RegExp code with 7 parameters. This is a convenience function,
189
- // which sets up the simulator state and grabs the result on return.
190
- int32_t Call(byte* entry, int argument_count, ...);
191
-
192
- // Push an address onto the JS stack.
193
- uintptr_t PushAddress(uintptr_t address);
194
-
195
- // Pop an address from the JS stack.
196
- uintptr_t PopAddress();
197
-
198
- // ICache checking.
199
- static void FlushICache(void* start, size_t size);
200
-
201
- private:
202
- enum special_values {
203
- // Known bad pc value to ensure that the simulator does not execute
204
- // without being properly setup.
205
- bad_lr = -1,
206
- // A pc value used to signal the simulator to stop execution. Generally
207
- // the lr is set to this value on transition from native C code to
208
- // simulated execution, so that the simulator can "return" to the native
209
- // C code.
210
- end_sim_pc = -2
211
- };
212
-
213
- // Unsupported instructions use Format to print an error and stop execution.
214
- void Format(Instr* instr, const char* format);
215
-
216
- // Checks if the current instruction should be executed based on its
217
- // condition bits.
218
- bool ConditionallyExecute(Instr* instr);
219
-
220
- // Helper functions to set the conditional flags in the architecture state.
221
- void SetNZFlags(int32_t val);
222
- void SetCFlag(bool val);
223
- void SetVFlag(bool val);
224
- bool CarryFrom(int32_t left, int32_t right);
225
- bool BorrowFrom(int32_t left, int32_t right);
226
- bool OverflowFrom(int32_t alu_out,
227
- int32_t left,
228
- int32_t right,
229
- bool addition);
230
-
231
- // Support for VFP.
232
- void Compute_FPSCR_Flags(double val1, double val2);
233
- void Copy_FPSCR_to_APSR();
234
-
235
- // Helper functions to decode common "addressing" modes
236
- int32_t GetShiftRm(Instr* instr, bool* carry_out);
237
- int32_t GetImm(Instr* instr, bool* carry_out);
238
- void HandleRList(Instr* instr, bool load);
239
- void SoftwareInterrupt(Instr* instr);
240
-
241
- // Read and write memory.
242
- inline uint8_t ReadBU(int32_t addr);
243
- inline int8_t ReadB(int32_t addr);
244
- inline void WriteB(int32_t addr, uint8_t value);
245
- inline void WriteB(int32_t addr, int8_t value);
246
-
247
- inline uint16_t ReadHU(int32_t addr, Instr* instr);
248
- inline int16_t ReadH(int32_t addr, Instr* instr);
249
- // Note: Overloaded on the sign of the value.
250
- inline void WriteH(int32_t addr, uint16_t value, Instr* instr);
251
- inline void WriteH(int32_t addr, int16_t value, Instr* instr);
252
-
253
- inline int ReadW(int32_t addr, Instr* instr);
254
- inline void WriteW(int32_t addr, int value, Instr* instr);
255
-
256
- int32_t* ReadDW(int32_t addr);
257
- void WriteDW(int32_t addr, int32_t value1, int32_t value2);
258
-
259
- // Executing is handled based on the instruction type.
260
- void DecodeType01(Instr* instr); // both type 0 and type 1 rolled into one
261
- void DecodeType2(Instr* instr);
262
- void DecodeType3(Instr* instr);
263
- void DecodeType4(Instr* instr);
264
- void DecodeType5(Instr* instr);
265
- void DecodeType6(Instr* instr);
266
- void DecodeType7(Instr* instr);
267
- void DecodeUnconditional(Instr* instr);
268
-
269
- // Support for VFP.
270
- void DecodeTypeVFP(Instr* instr);
271
- void DecodeType6CoprocessorIns(Instr* instr);
272
-
273
- void DecodeVMOVBetweenCoreAndSinglePrecisionRegisters(Instr* instr);
274
- void DecodeVCMP(Instr* instr);
275
- void DecodeVCVTBetweenDoubleAndSingle(Instr* instr);
276
- void DecodeVCVTBetweenFloatingPointAndInteger(Instr* instr);
277
-
278
- // Executes one instruction.
279
- void InstructionDecode(Instr* instr);
280
-
281
- // ICache.
282
- static void CheckICache(Instr* instr);
283
- static void FlushOnePage(intptr_t start, int size);
284
- static CachePage* GetCachePage(void* page);
285
-
286
- // Runtime call support.
287
- static void* RedirectExternalReference(void* external_function,
288
- bool fp_return);
289
-
290
- // For use in calls that take two double values, constructed from r0, r1, r2
291
- // and r3.
292
- void GetFpArgs(double* x, double* y);
293
- void SetFpResult(const double& result);
294
- void TrashCallerSaveRegisters();
295
-
296
- // Architecture state.
297
- // Saturating instructions require a Q flag to indicate saturation.
298
- // There is currently no way to read the CPSR directly, and thus read the Q
299
- // flag, so this is left unimplemented.
300
- int32_t registers_[16];
301
- bool n_flag_;
302
- bool z_flag_;
303
- bool c_flag_;
304
- bool v_flag_;
305
-
306
- // VFP architecture state.
307
- unsigned int vfp_register[num_s_registers];
308
- bool n_flag_FPSCR_;
309
- bool z_flag_FPSCR_;
310
- bool c_flag_FPSCR_;
311
- bool v_flag_FPSCR_;
312
-
313
- // VFP FP exception flags architecture state.
314
- bool inv_op_vfp_flag_;
315
- bool div_zero_vfp_flag_;
316
- bool overflow_vfp_flag_;
317
- bool underflow_vfp_flag_;
318
- bool inexact_vfp_flag_;
319
-
320
- // Simulator support.
321
- char* stack_;
322
- bool pc_modified_;
323
- int icount_;
324
- static bool initialized_;
325
-
326
- // Icache simulation
327
- static v8::internal::HashMap* i_cache_;
328
-
329
- // Registered breakpoints.
330
- Instr* break_pc_;
331
- instr_t break_instr_;
332
- };
333
-
334
- } } // namespace assembler::arm
335
-
336
-
337
- // The simulator has its own stack. Thus it has a different stack limit from
338
- // the C-based native code. Setting the c_limit to indicate a very small
339
- // stack cause stack overflow errors, since the simulator ignores the input.
340
- // This is unlikely to be an issue in practice, though it might cause testing
341
- // trouble down the line.
342
- class SimulatorStack : public v8::internal::AllStatic {
343
- public:
344
- static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) {
345
- return assembler::arm::Simulator::current()->StackLimit();
346
- }
347
-
348
- static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) {
349
- assembler::arm::Simulator* sim = assembler::arm::Simulator::current();
350
- return sim->PushAddress(try_catch_address);
351
- }
352
-
353
- static inline void UnregisterCTryCatch() {
354
- assembler::arm::Simulator::current()->PopAddress();
355
- }
356
- };
357
-
358
-
359
- #endif // defined(__arm__)
360
-
361
- #endif // V8_ARM_SIMULATOR_ARM_H_
@@ -1,2387 +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_ARM)
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
- ExternalReference key_offset(SCTableReference::keyReference(table));
48
- ExternalReference value_offset(SCTableReference::valueReference(table));
49
-
50
- Label miss;
51
-
52
- // Save the offset on the stack.
53
- __ push(offset);
54
-
55
- // Check that the key in the entry matches the name.
56
- __ mov(ip, Operand(key_offset));
57
- __ ldr(ip, MemOperand(ip, offset, LSL, 1));
58
- __ cmp(name, ip);
59
- __ b(ne, &miss);
60
-
61
- // Get the code entry from the cache.
62
- __ mov(ip, Operand(value_offset));
63
- __ ldr(offset, MemOperand(ip, offset, LSL, 1));
64
-
65
- // Check that the flags match what we're looking for.
66
- __ ldr(offset, FieldMemOperand(offset, Code::kFlagsOffset));
67
- __ and_(offset, offset, Operand(~Code::kFlagsNotUsedInLookup));
68
- __ cmp(offset, Operand(flags));
69
- __ b(ne, &miss);
70
-
71
- // Restore offset and re-load code entry from cache.
72
- __ pop(offset);
73
- __ mov(ip, Operand(value_offset));
74
- __ ldr(offset, MemOperand(ip, offset, LSL, 1));
75
-
76
- // Jump to the first instruction in the code stub.
77
- __ add(offset, offset, Operand(Code::kHeaderSize - kHeapObjectTag));
78
- __ Jump(offset);
79
-
80
- // Miss: Restore offset and fall through.
81
- __ bind(&miss);
82
- __ pop(offset);
83
- }
84
-
85
-
86
- // Helper function used to check that the dictionary doesn't contain
87
- // the property. This function may return false negatives, so miss_label
88
- // must always call a backup property check that is complete.
89
- // This function is safe to call if the receiver has fast properties.
90
- // Name must be a symbol and receiver must be a heap object.
91
- static void GenerateDictionaryNegativeLookup(MacroAssembler* masm,
92
- Label* miss_label,
93
- Register receiver,
94
- String* name,
95
- Register scratch0,
96
- Register scratch1) {
97
- ASSERT(name->IsSymbol());
98
- __ IncrementCounter(&Counters::negative_lookups, 1, scratch0, scratch1);
99
- __ IncrementCounter(&Counters::negative_lookups_miss, 1, scratch0, scratch1);
100
-
101
- Label done;
102
-
103
- const int kInterceptorOrAccessCheckNeededMask =
104
- (1 << Map::kHasNamedInterceptor) | (1 << Map::kIsAccessCheckNeeded);
105
-
106
- // Bail out if the receiver has a named interceptor or requires access checks.
107
- Register map = scratch1;
108
- __ ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset));
109
- __ ldrb(scratch0, FieldMemOperand(map, Map::kBitFieldOffset));
110
- __ tst(scratch0, Operand(kInterceptorOrAccessCheckNeededMask));
111
- __ b(ne, miss_label);
112
-
113
- // Check that receiver is a JSObject.
114
- __ ldrb(scratch0, FieldMemOperand(map, Map::kInstanceTypeOffset));
115
- __ cmp(scratch0, Operand(FIRST_JS_OBJECT_TYPE));
116
- __ b(lt, miss_label);
117
-
118
- // Load properties array.
119
- Register properties = scratch0;
120
- __ ldr(properties, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
121
- // Check that the properties array is a dictionary.
122
- __ ldr(map, FieldMemOperand(properties, HeapObject::kMapOffset));
123
- Register tmp = properties;
124
- __ LoadRoot(tmp, Heap::kHashTableMapRootIndex);
125
- __ cmp(map, tmp);
126
- __ b(ne, miss_label);
127
-
128
- // Restore the temporarily used register.
129
- __ ldr(properties, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
130
-
131
- // Compute the capacity mask.
132
- const int kCapacityOffset =
133
- StringDictionary::kHeaderSize +
134
- StringDictionary::kCapacityIndex * kPointerSize;
135
-
136
- // Generate an unrolled loop that performs a few probes before
137
- // giving up.
138
- static const int kProbes = 4;
139
- const int kElementsStartOffset =
140
- StringDictionary::kHeaderSize +
141
- StringDictionary::kElementsStartIndex * kPointerSize;
142
-
143
- // If names of slots in range from 1 to kProbes - 1 for the hash value are
144
- // not equal to the name and kProbes-th slot is not used (its name is the
145
- // undefined value), it guarantees the hash table doesn't contain the
146
- // property. It's true even if some slots represent deleted properties
147
- // (their names are the null value).
148
- for (int i = 0; i < kProbes; i++) {
149
- // scratch0 points to properties hash.
150
- // Compute the masked index: (hash + i + i * i) & mask.
151
- Register index = scratch1;
152
- // Capacity is smi 2^n.
153
- __ ldr(index, FieldMemOperand(properties, kCapacityOffset));
154
- __ sub(index, index, Operand(1));
155
- __ and_(index, index, Operand(
156
- Smi::FromInt(name->Hash() + StringDictionary::GetProbeOffset(i))));
157
-
158
- // Scale the index by multiplying by the entry size.
159
- ASSERT(StringDictionary::kEntrySize == 3);
160
- __ add(index, index, Operand(index, LSL, 1)); // index *= 3.
161
-
162
- Register entity_name = scratch1;
163
- // Having undefined at this place means the name is not contained.
164
- ASSERT_EQ(kSmiTagSize, 1);
165
- Register tmp = properties;
166
- __ add(tmp, properties, Operand(index, LSL, 1));
167
- __ ldr(entity_name, FieldMemOperand(tmp, kElementsStartOffset));
168
-
169
- ASSERT(!tmp.is(entity_name));
170
- __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex);
171
- __ cmp(entity_name, tmp);
172
- if (i != kProbes - 1) {
173
- __ b(eq, &done);
174
-
175
- // Stop if found the property.
176
- __ cmp(entity_name, Operand(Handle<String>(name)));
177
- __ b(eq, miss_label);
178
-
179
- // Check if the entry name is not a symbol.
180
- __ ldr(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
181
- __ ldrb(entity_name,
182
- FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
183
- __ tst(entity_name, Operand(kIsSymbolMask));
184
- __ b(eq, miss_label);
185
-
186
- // Restore the properties.
187
- __ ldr(properties,
188
- FieldMemOperand(receiver, JSObject::kPropertiesOffset));
189
- } else {
190
- // Give up probing if still not found the undefined value.
191
- __ b(ne, miss_label);
192
- }
193
- }
194
- __ bind(&done);
195
- __ DecrementCounter(&Counters::negative_lookups_miss, 1, scratch0, scratch1);
196
- }
197
-
198
-
199
- void StubCache::GenerateProbe(MacroAssembler* masm,
200
- Code::Flags flags,
201
- Register receiver,
202
- Register name,
203
- Register scratch,
204
- Register extra) {
205
- Label miss;
206
-
207
- // Make sure that code is valid. The shifting code relies on the
208
- // entry size being 8.
209
- ASSERT(sizeof(Entry) == 8);
210
-
211
- // Make sure the flags does not name a specific type.
212
- ASSERT(Code::ExtractTypeFromFlags(flags) == 0);
213
-
214
- // Make sure that there are no register conflicts.
215
- ASSERT(!scratch.is(receiver));
216
- ASSERT(!scratch.is(name));
217
-
218
- // Check that the receiver isn't a smi.
219
- __ tst(receiver, Operand(kSmiTagMask));
220
- __ b(eq, &miss);
221
-
222
- // Get the map of the receiver and compute the hash.
223
- __ ldr(scratch, FieldMemOperand(name, String::kHashFieldOffset));
224
- __ ldr(ip, FieldMemOperand(receiver, HeapObject::kMapOffset));
225
- __ add(scratch, scratch, Operand(ip));
226
- __ eor(scratch, scratch, Operand(flags));
227
- __ and_(scratch,
228
- scratch,
229
- Operand((kPrimaryTableSize - 1) << kHeapObjectTagSize));
230
-
231
- // Probe the primary table.
232
- ProbeTable(masm, flags, kPrimary, name, scratch);
233
-
234
- // Primary miss: Compute hash for secondary probe.
235
- __ sub(scratch, scratch, Operand(name));
236
- __ add(scratch, scratch, Operand(flags));
237
- __ and_(scratch,
238
- scratch,
239
- Operand((kSecondaryTableSize - 1) << kHeapObjectTagSize));
240
-
241
- // Probe the secondary table.
242
- ProbeTable(masm, flags, kSecondary, name, scratch);
243
-
244
- // Cache miss: Fall-through and let caller handle the miss by
245
- // entering the runtime system.
246
- __ bind(&miss);
247
- }
248
-
249
-
250
- void StubCompiler::GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm,
251
- int index,
252
- Register prototype) {
253
- // Load the global or builtins object from the current context.
254
- __ ldr(prototype, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_INDEX)));
255
- // Load the global context from the global or builtins object.
256
- __ ldr(prototype,
257
- FieldMemOperand(prototype, GlobalObject::kGlobalContextOffset));
258
- // Load the function from the global context.
259
- __ ldr(prototype, MemOperand(prototype, Context::SlotOffset(index)));
260
- // Load the initial map. The global functions all have initial maps.
261
- __ ldr(prototype,
262
- FieldMemOperand(prototype, JSFunction::kPrototypeOrInitialMapOffset));
263
- // Load the prototype from the initial map.
264
- __ ldr(prototype, FieldMemOperand(prototype, Map::kPrototypeOffset));
265
- }
266
-
267
-
268
- void StubCompiler::GenerateDirectLoadGlobalFunctionPrototype(
269
- MacroAssembler* masm, int index, Register prototype) {
270
- // Get the global function with the given index.
271
- JSFunction* function = JSFunction::cast(Top::global_context()->get(index));
272
- // Load its initial map. The global functions all have initial maps.
273
- __ Move(prototype, Handle<Map>(function->initial_map()));
274
- // Load the prototype from the initial map.
275
- __ ldr(prototype, FieldMemOperand(prototype, Map::kPrototypeOffset));
276
- }
277
-
278
-
279
- // Load a fast property out of a holder object (src). In-object properties
280
- // are loaded directly otherwise the property is loaded from the properties
281
- // fixed array.
282
- void StubCompiler::GenerateFastPropertyLoad(MacroAssembler* masm,
283
- Register dst, Register src,
284
- JSObject* holder, int index) {
285
- // Adjust for the number of properties stored in the holder.
286
- index -= holder->map()->inobject_properties();
287
- if (index < 0) {
288
- // Get the property straight out of the holder.
289
- int offset = holder->map()->instance_size() + (index * kPointerSize);
290
- __ ldr(dst, FieldMemOperand(src, offset));
291
- } else {
292
- // Calculate the offset into the properties array.
293
- int offset = index * kPointerSize + FixedArray::kHeaderSize;
294
- __ ldr(dst, FieldMemOperand(src, JSObject::kPropertiesOffset));
295
- __ ldr(dst, FieldMemOperand(dst, offset));
296
- }
297
- }
298
-
299
-
300
- void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm,
301
- Register receiver,
302
- Register scratch,
303
- Label* miss_label) {
304
- // Check that the receiver isn't a smi.
305
- __ tst(receiver, Operand(kSmiTagMask));
306
- __ b(eq, miss_label);
307
-
308
- // Check that the object is a JS array.
309
- __ CompareObjectType(receiver, scratch, scratch, JS_ARRAY_TYPE);
310
- __ b(ne, miss_label);
311
-
312
- // Load length directly from the JS array.
313
- __ ldr(r0, FieldMemOperand(receiver, JSArray::kLengthOffset));
314
- __ Ret();
315
- }
316
-
317
-
318
- // Generate code to check if an object is a string. If the object is a
319
- // heap object, its map's instance type is left in the scratch1 register.
320
- // If this is not needed, scratch1 and scratch2 may be the same register.
321
- static void GenerateStringCheck(MacroAssembler* masm,
322
- Register receiver,
323
- Register scratch1,
324
- Register scratch2,
325
- Label* smi,
326
- Label* non_string_object) {
327
- // Check that the receiver isn't a smi.
328
- __ tst(receiver, Operand(kSmiTagMask));
329
- __ b(eq, smi);
330
-
331
- // Check that the object is a string.
332
- __ ldr(scratch1, FieldMemOperand(receiver, HeapObject::kMapOffset));
333
- __ ldrb(scratch1, FieldMemOperand(scratch1, Map::kInstanceTypeOffset));
334
- __ and_(scratch2, scratch1, Operand(kIsNotStringMask));
335
- // The cast is to resolve the overload for the argument of 0x0.
336
- __ cmp(scratch2, Operand(static_cast<int32_t>(kStringTag)));
337
- __ b(ne, non_string_object);
338
- }
339
-
340
-
341
- // Generate code to load the length from a string object and return the length.
342
- // If the receiver object is not a string or a wrapped string object the
343
- // execution continues at the miss label. The register containing the
344
- // receiver is potentially clobbered.
345
- void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
346
- Register receiver,
347
- Register scratch1,
348
- Register scratch2,
349
- Label* miss) {
350
- Label check_wrapper;
351
-
352
- // Check if the object is a string leaving the instance type in the
353
- // scratch1 register.
354
- GenerateStringCheck(masm, receiver, scratch1, scratch2, miss, &check_wrapper);
355
-
356
- // Load length directly from the string.
357
- __ ldr(r0, FieldMemOperand(receiver, String::kLengthOffset));
358
- __ Ret();
359
-
360
- // Check if the object is a JSValue wrapper.
361
- __ bind(&check_wrapper);
362
- __ cmp(scratch1, Operand(JS_VALUE_TYPE));
363
- __ b(ne, miss);
364
-
365
- // Unwrap the value and check if the wrapped value is a string.
366
- __ ldr(scratch1, FieldMemOperand(receiver, JSValue::kValueOffset));
367
- GenerateStringCheck(masm, scratch1, scratch2, scratch2, miss, miss);
368
- __ ldr(r0, FieldMemOperand(scratch1, String::kLengthOffset));
369
- __ Ret();
370
- }
371
-
372
-
373
- void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm,
374
- Register receiver,
375
- Register scratch1,
376
- Register scratch2,
377
- Label* miss_label) {
378
- __ TryGetFunctionPrototype(receiver, scratch1, scratch2, miss_label);
379
- __ mov(r0, scratch1);
380
- __ Ret();
381
- }
382
-
383
-
384
- // Generate StoreField code, value is passed in r0 register.
385
- // When leaving generated code after success, the receiver_reg and name_reg
386
- // may be clobbered. Upon branch to miss_label, the receiver and name
387
- // registers have their original values.
388
- void StubCompiler::GenerateStoreField(MacroAssembler* masm,
389
- JSObject* object,
390
- int index,
391
- Map* transition,
392
- Register receiver_reg,
393
- Register name_reg,
394
- Register scratch,
395
- Label* miss_label) {
396
- // r0 : value
397
- Label exit;
398
-
399
- // Check that the receiver isn't a smi.
400
- __ tst(receiver_reg, Operand(kSmiTagMask));
401
- __ b(eq, miss_label);
402
-
403
- // Check that the map of the receiver hasn't changed.
404
- __ ldr(scratch, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
405
- __ cmp(scratch, Operand(Handle<Map>(object->map())));
406
- __ b(ne, miss_label);
407
-
408
- // Perform global security token check if needed.
409
- if (object->IsJSGlobalProxy()) {
410
- __ CheckAccessGlobalProxy(receiver_reg, scratch, miss_label);
411
- }
412
-
413
- // Stub never generated for non-global objects that require access
414
- // checks.
415
- ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
416
-
417
- // Perform map transition for the receiver if necessary.
418
- if ((transition != NULL) && (object->map()->unused_property_fields() == 0)) {
419
- // The properties must be extended before we can store the value.
420
- // We jump to a runtime call that extends the properties array.
421
- __ push(receiver_reg);
422
- __ mov(r2, Operand(Handle<Map>(transition)));
423
- __ Push(r2, r0);
424
- __ TailCallExternalReference(
425
- ExternalReference(IC_Utility(IC::kSharedStoreIC_ExtendStorage)),
426
- 3, 1);
427
- return;
428
- }
429
-
430
- if (transition != NULL) {
431
- // Update the map of the object; no write barrier updating is
432
- // needed because the map is never in new space.
433
- __ mov(ip, Operand(Handle<Map>(transition)));
434
- __ str(ip, FieldMemOperand(receiver_reg, HeapObject::kMapOffset));
435
- }
436
-
437
- // Adjust for the number of properties stored in the object. Even in the
438
- // face of a transition we can use the old map here because the size of the
439
- // object and the number of in-object properties is not going to change.
440
- index -= object->map()->inobject_properties();
441
-
442
- if (index < 0) {
443
- // Set the property straight into the object.
444
- int offset = object->map()->instance_size() + (index * kPointerSize);
445
- __ str(r0, FieldMemOperand(receiver_reg, offset));
446
-
447
- // Skip updating write barrier if storing a smi.
448
- __ tst(r0, Operand(kSmiTagMask));
449
- __ b(eq, &exit);
450
-
451
- // Update the write barrier for the array address.
452
- // Pass the now unused name_reg as a scratch register.
453
- __ RecordWrite(receiver_reg, Operand(offset), name_reg, scratch);
454
- } else {
455
- // Write to the properties array.
456
- int offset = index * kPointerSize + FixedArray::kHeaderSize;
457
- // Get the properties array
458
- __ ldr(scratch, FieldMemOperand(receiver_reg, JSObject::kPropertiesOffset));
459
- __ str(r0, FieldMemOperand(scratch, offset));
460
-
461
- // Skip updating write barrier if storing a smi.
462
- __ tst(r0, Operand(kSmiTagMask));
463
- __ b(eq, &exit);
464
-
465
- // Update the write barrier for the array address.
466
- // Ok to clobber receiver_reg and name_reg, since we return.
467
- __ RecordWrite(scratch, Operand(offset), name_reg, receiver_reg);
468
- }
469
-
470
- // Return the value (register r0).
471
- __ bind(&exit);
472
- __ Ret();
473
- }
474
-
475
-
476
- void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) {
477
- ASSERT(kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC);
478
- Code* code = NULL;
479
- if (kind == Code::LOAD_IC) {
480
- code = Builtins::builtin(Builtins::LoadIC_Miss);
481
- } else {
482
- code = Builtins::builtin(Builtins::KeyedLoadIC_Miss);
483
- }
484
-
485
- Handle<Code> ic(code);
486
- __ Jump(ic, RelocInfo::CODE_TARGET);
487
- }
488
-
489
-
490
- static void GenerateCallFunction(MacroAssembler* masm,
491
- Object* object,
492
- const ParameterCount& arguments,
493
- Label* miss) {
494
- // ----------- S t a t e -------------
495
- // -- r0: receiver
496
- // -- r1: function to call
497
- // -----------------------------------
498
-
499
- // Check that the function really is a function.
500
- __ BranchOnSmi(r1, miss);
501
- __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
502
- __ b(ne, miss);
503
-
504
- // Patch the receiver on the stack with the global proxy if
505
- // necessary.
506
- if (object->IsGlobalObject()) {
507
- __ ldr(r3, FieldMemOperand(r0, GlobalObject::kGlobalReceiverOffset));
508
- __ str(r3, MemOperand(sp, arguments.immediate() * kPointerSize));
509
- }
510
-
511
- // Invoke the function.
512
- __ InvokeFunction(r1, arguments, JUMP_FUNCTION);
513
- }
514
-
515
-
516
- static void PushInterceptorArguments(MacroAssembler* masm,
517
- Register receiver,
518
- Register holder,
519
- Register name,
520
- JSObject* holder_obj) {
521
- __ push(name);
522
- InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor();
523
- ASSERT(!Heap::InNewSpace(interceptor));
524
- Register scratch = name;
525
- __ mov(scratch, Operand(Handle<Object>(interceptor)));
526
- __ push(scratch);
527
- __ push(receiver);
528
- __ push(holder);
529
- __ ldr(scratch, FieldMemOperand(scratch, InterceptorInfo::kDataOffset));
530
- __ push(scratch);
531
- }
532
-
533
-
534
- static void CompileCallLoadPropertyWithInterceptor(MacroAssembler* masm,
535
- Register receiver,
536
- Register holder,
537
- Register name,
538
- JSObject* holder_obj) {
539
- PushInterceptorArguments(masm, receiver, holder, name, holder_obj);
540
-
541
- ExternalReference ref =
542
- ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly));
543
- __ mov(r0, Operand(5));
544
- __ mov(r1, Operand(ref));
545
-
546
- CEntryStub stub(1);
547
- __ CallStub(&stub);
548
- }
549
-
550
-
551
- // Reserves space for the extra arguments to FastHandleApiCall in the
552
- // caller's frame.
553
- //
554
- // These arguments are set by CheckPrototypes and GenerateFastApiCall.
555
- static void ReserveSpaceForFastApiCall(MacroAssembler* masm,
556
- Register scratch) {
557
- __ mov(scratch, Operand(Smi::FromInt(0)));
558
- __ push(scratch);
559
- __ push(scratch);
560
- __ push(scratch);
561
- __ push(scratch);
562
- }
563
-
564
-
565
- // Undoes the effects of ReserveSpaceForFastApiCall.
566
- static void FreeSpaceForFastApiCall(MacroAssembler* masm) {
567
- __ Drop(4);
568
- }
569
-
570
-
571
- // Generates call to FastHandleApiCall builtin.
572
- static void GenerateFastApiCall(MacroAssembler* masm,
573
- const CallOptimization& optimization,
574
- int argc) {
575
- // Get the function and setup the context.
576
- JSFunction* function = optimization.constant_function();
577
- __ mov(r7, Operand(Handle<JSFunction>(function)));
578
- __ ldr(cp, FieldMemOperand(r7, JSFunction::kContextOffset));
579
-
580
- // Pass the additional arguments FastHandleApiCall expects.
581
- bool info_loaded = false;
582
- Object* callback = optimization.api_call_info()->callback();
583
- if (Heap::InNewSpace(callback)) {
584
- info_loaded = true;
585
- __ Move(r0, Handle<CallHandlerInfo>(optimization.api_call_info()));
586
- __ ldr(r6, FieldMemOperand(r0, CallHandlerInfo::kCallbackOffset));
587
- } else {
588
- __ Move(r6, Handle<Object>(callback));
589
- }
590
- Object* call_data = optimization.api_call_info()->data();
591
- if (Heap::InNewSpace(call_data)) {
592
- if (!info_loaded) {
593
- __ Move(r0, Handle<CallHandlerInfo>(optimization.api_call_info()));
594
- }
595
- __ ldr(r5, FieldMemOperand(r0, CallHandlerInfo::kDataOffset));
596
- } else {
597
- __ Move(r5, Handle<Object>(call_data));
598
- }
599
-
600
- __ add(sp, sp, Operand(1 * kPointerSize));
601
- __ stm(ia, sp, r5.bit() | r6.bit() | r7.bit());
602
- __ sub(sp, sp, Operand(1 * kPointerSize));
603
-
604
- // Set the number of arguments.
605
- __ mov(r0, Operand(argc + 4));
606
-
607
- // Jump to the fast api call builtin (tail call).
608
- Handle<Code> code = Handle<Code>(
609
- Builtins::builtin(Builtins::FastHandleApiCall));
610
- ParameterCount expected(0);
611
- __ InvokeCode(code, expected, expected,
612
- RelocInfo::CODE_TARGET, JUMP_FUNCTION);
613
- }
614
-
615
-
616
- class CallInterceptorCompiler BASE_EMBEDDED {
617
- public:
618
- CallInterceptorCompiler(StubCompiler* stub_compiler,
619
- const ParameterCount& arguments,
620
- Register name)
621
- : stub_compiler_(stub_compiler),
622
- arguments_(arguments),
623
- name_(name) {}
624
-
625
- void Compile(MacroAssembler* masm,
626
- JSObject* object,
627
- JSObject* holder,
628
- String* name,
629
- LookupResult* lookup,
630
- Register receiver,
631
- Register scratch1,
632
- Register scratch2,
633
- Register scratch3,
634
- Label* miss) {
635
- ASSERT(holder->HasNamedInterceptor());
636
- ASSERT(!holder->GetNamedInterceptor()->getter()->IsUndefined());
637
-
638
- // Check that the receiver isn't a smi.
639
- __ BranchOnSmi(receiver, miss);
640
-
641
- CallOptimization optimization(lookup);
642
-
643
- if (optimization.is_constant_call()) {
644
- CompileCacheable(masm,
645
- object,
646
- receiver,
647
- scratch1,
648
- scratch2,
649
- scratch3,
650
- holder,
651
- lookup,
652
- name,
653
- optimization,
654
- miss);
655
- } else {
656
- CompileRegular(masm,
657
- object,
658
- receiver,
659
- scratch1,
660
- scratch2,
661
- scratch3,
662
- name,
663
- holder,
664
- miss);
665
- }
666
- }
667
-
668
- private:
669
- void CompileCacheable(MacroAssembler* masm,
670
- JSObject* object,
671
- Register receiver,
672
- Register scratch1,
673
- Register scratch2,
674
- Register scratch3,
675
- JSObject* interceptor_holder,
676
- LookupResult* lookup,
677
- String* name,
678
- const CallOptimization& optimization,
679
- Label* miss_label) {
680
- ASSERT(optimization.is_constant_call());
681
- ASSERT(!lookup->holder()->IsGlobalObject());
682
-
683
- int depth1 = kInvalidProtoDepth;
684
- int depth2 = kInvalidProtoDepth;
685
- bool can_do_fast_api_call = false;
686
- if (optimization.is_simple_api_call() &&
687
- !lookup->holder()->IsGlobalObject()) {
688
- depth1 =
689
- optimization.GetPrototypeDepthOfExpectedType(object,
690
- interceptor_holder);
691
- if (depth1 == kInvalidProtoDepth) {
692
- depth2 =
693
- optimization.GetPrototypeDepthOfExpectedType(interceptor_holder,
694
- lookup->holder());
695
- }
696
- can_do_fast_api_call = (depth1 != kInvalidProtoDepth) ||
697
- (depth2 != kInvalidProtoDepth);
698
- }
699
-
700
- __ IncrementCounter(&Counters::call_const_interceptor, 1,
701
- scratch1, scratch2);
702
-
703
- if (can_do_fast_api_call) {
704
- __ IncrementCounter(&Counters::call_const_interceptor_fast_api, 1,
705
- scratch1, scratch2);
706
- ReserveSpaceForFastApiCall(masm, scratch1);
707
- }
708
-
709
- // Check that the maps from receiver to interceptor's holder
710
- // haven't changed and thus we can invoke interceptor.
711
- Label miss_cleanup;
712
- Label* miss = can_do_fast_api_call ? &miss_cleanup : miss_label;
713
- Register holder =
714
- stub_compiler_->CheckPrototypes(object, receiver,
715
- interceptor_holder, scratch1,
716
- scratch2, scratch3, name, depth1, miss);
717
-
718
- // Invoke an interceptor and if it provides a value,
719
- // branch to |regular_invoke|.
720
- Label regular_invoke;
721
- LoadWithInterceptor(masm, receiver, holder, interceptor_holder, scratch2,
722
- &regular_invoke);
723
-
724
- // Interceptor returned nothing for this property. Try to use cached
725
- // constant function.
726
-
727
- // Check that the maps from interceptor's holder to constant function's
728
- // holder haven't changed and thus we can use cached constant function.
729
- if (interceptor_holder != lookup->holder()) {
730
- stub_compiler_->CheckPrototypes(interceptor_holder, receiver,
731
- lookup->holder(), scratch1,
732
- scratch2, scratch3, name, depth2, miss);
733
- } else {
734
- // CheckPrototypes has a side effect of fetching a 'holder'
735
- // for API (object which is instanceof for the signature). It's
736
- // safe to omit it here, as if present, it should be fetched
737
- // by the previous CheckPrototypes.
738
- ASSERT(depth2 == kInvalidProtoDepth);
739
- }
740
-
741
- // Invoke function.
742
- if (can_do_fast_api_call) {
743
- GenerateFastApiCall(masm, optimization, arguments_.immediate());
744
- } else {
745
- __ InvokeFunction(optimization.constant_function(), arguments_,
746
- JUMP_FUNCTION);
747
- }
748
-
749
- // Deferred code for fast API call case---clean preallocated space.
750
- if (can_do_fast_api_call) {
751
- __ bind(&miss_cleanup);
752
- FreeSpaceForFastApiCall(masm);
753
- __ b(miss_label);
754
- }
755
-
756
- // Invoke a regular function.
757
- __ bind(&regular_invoke);
758
- if (can_do_fast_api_call) {
759
- FreeSpaceForFastApiCall(masm);
760
- }
761
- }
762
-
763
- void CompileRegular(MacroAssembler* masm,
764
- JSObject* object,
765
- Register receiver,
766
- Register scratch1,
767
- Register scratch2,
768
- Register scratch3,
769
- String* name,
770
- JSObject* interceptor_holder,
771
- Label* miss_label) {
772
- Register holder =
773
- stub_compiler_->CheckPrototypes(object, receiver, interceptor_holder,
774
- scratch1, scratch2, scratch3, name,
775
- miss_label);
776
-
777
- // Call a runtime function to load the interceptor property.
778
- __ EnterInternalFrame();
779
- // Save the name_ register across the call.
780
- __ push(name_);
781
-
782
- PushInterceptorArguments(masm,
783
- receiver,
784
- holder,
785
- name_,
786
- interceptor_holder);
787
-
788
- __ CallExternalReference(
789
- ExternalReference(
790
- IC_Utility(IC::kLoadPropertyWithInterceptorForCall)),
791
- 5);
792
-
793
- // Restore the name_ register.
794
- __ pop(name_);
795
- __ LeaveInternalFrame();
796
- }
797
-
798
- void LoadWithInterceptor(MacroAssembler* masm,
799
- Register receiver,
800
- Register holder,
801
- JSObject* holder_obj,
802
- Register scratch,
803
- Label* interceptor_succeeded) {
804
- __ EnterInternalFrame();
805
- __ Push(holder, name_);
806
-
807
- CompileCallLoadPropertyWithInterceptor(masm,
808
- receiver,
809
- holder,
810
- name_,
811
- holder_obj);
812
-
813
- __ pop(name_); // Restore the name.
814
- __ pop(receiver); // Restore the holder.
815
- __ LeaveInternalFrame();
816
-
817
- // If interceptor returns no-result sentinel, call the constant function.
818
- __ LoadRoot(scratch, Heap::kNoInterceptorResultSentinelRootIndex);
819
- __ cmp(r0, scratch);
820
- __ b(ne, interceptor_succeeded);
821
- }
822
-
823
- StubCompiler* stub_compiler_;
824
- const ParameterCount& arguments_;
825
- Register name_;
826
- };
827
-
828
-
829
- // Generate code to check that a global property cell is empty. Create
830
- // the property cell at compilation time if no cell exists for the
831
- // property.
832
- static Object* GenerateCheckPropertyCell(MacroAssembler* masm,
833
- GlobalObject* global,
834
- String* name,
835
- Register scratch,
836
- Label* miss) {
837
- Object* probe = global->EnsurePropertyCell(name);
838
- if (probe->IsFailure()) return probe;
839
- JSGlobalPropertyCell* cell = JSGlobalPropertyCell::cast(probe);
840
- ASSERT(cell->value()->IsTheHole());
841
- __ mov(scratch, Operand(Handle<Object>(cell)));
842
- __ ldr(scratch,
843
- FieldMemOperand(scratch, JSGlobalPropertyCell::kValueOffset));
844
- __ LoadRoot(ip, Heap::kTheHoleValueRootIndex);
845
- __ cmp(scratch, ip);
846
- __ b(ne, miss);
847
- return cell;
848
- }
849
-
850
-
851
- #undef __
852
- #define __ ACCESS_MASM(masm())
853
-
854
-
855
- Register StubCompiler::CheckPrototypes(JSObject* object,
856
- Register object_reg,
857
- JSObject* holder,
858
- Register holder_reg,
859
- Register scratch1,
860
- Register scratch2,
861
- String* name,
862
- int save_at_depth,
863
- Label* miss) {
864
- // Make sure there's no overlap between holder and object registers.
865
- ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg));
866
- ASSERT(!scratch2.is(object_reg) && !scratch2.is(holder_reg)
867
- && !scratch2.is(scratch1));
868
-
869
- // Keep track of the current object in register reg.
870
- Register reg = object_reg;
871
- int depth = 0;
872
-
873
- if (save_at_depth == depth) {
874
- __ str(reg, MemOperand(sp));
875
- }
876
-
877
- // Check the maps in the prototype chain.
878
- // Traverse the prototype chain from the object and do map checks.
879
- JSObject* current = object;
880
- while (current != holder) {
881
- depth++;
882
-
883
- // Only global objects and objects that do not require access
884
- // checks are allowed in stubs.
885
- ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
886
-
887
- JSObject* prototype = JSObject::cast(current->GetPrototype());
888
- if (!current->HasFastProperties() &&
889
- !current->IsJSGlobalObject() &&
890
- !current->IsJSGlobalProxy()) {
891
- if (!name->IsSymbol()) {
892
- Object* lookup_result = Heap::LookupSymbol(name);
893
- if (lookup_result->IsFailure()) {
894
- set_failure(Failure::cast(lookup_result));
895
- return reg;
896
- } else {
897
- name = String::cast(lookup_result);
898
- }
899
- }
900
- ASSERT(current->property_dictionary()->FindEntry(name) ==
901
- StringDictionary::kNotFound);
902
-
903
- GenerateDictionaryNegativeLookup(masm(),
904
- miss,
905
- reg,
906
- name,
907
- scratch1,
908
- scratch2);
909
- __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
910
- reg = holder_reg; // from now the object is in holder_reg
911
- __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
912
- } else {
913
- // Get the map of the current object.
914
- __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
915
- __ cmp(scratch1, Operand(Handle<Map>(current->map())));
916
-
917
- // Branch on the result of the map check.
918
- __ b(ne, miss);
919
-
920
- // Check access rights to the global object. This has to happen
921
- // after the map check so that we know that the object is
922
- // actually a global object.
923
- if (current->IsJSGlobalProxy()) {
924
- __ CheckAccessGlobalProxy(reg, scratch1, miss);
925
- // Restore scratch register to be the map of the object. In the
926
- // new space case below, we load the prototype from the map in
927
- // the scratch register.
928
- __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
929
- }
930
-
931
- reg = holder_reg; // from now the object is in holder_reg
932
- if (Heap::InNewSpace(prototype)) {
933
- // The prototype is in new space; we cannot store a reference
934
- // to it in the code. Load it from the map.
935
- __ ldr(reg, FieldMemOperand(scratch1, Map::kPrototypeOffset));
936
- } else {
937
- // The prototype is in old space; load it directly.
938
- __ mov(reg, Operand(Handle<JSObject>(prototype)));
939
- }
940
- }
941
-
942
- if (save_at_depth == depth) {
943
- __ str(reg, MemOperand(sp));
944
- }
945
-
946
- // Go to the next object in the prototype chain.
947
- current = prototype;
948
- }
949
-
950
- // Check the holder map.
951
- __ ldr(scratch1, FieldMemOperand(reg, HeapObject::kMapOffset));
952
- __ cmp(scratch1, Operand(Handle<Map>(current->map())));
953
- __ b(ne, miss);
954
-
955
- // Log the check depth.
956
- LOG(IntEvent("check-maps-depth", depth + 1));
957
-
958
- // Perform security check for access to the global object and return
959
- // the holder register.
960
- ASSERT(current == holder);
961
- ASSERT(current->IsJSGlobalProxy() || !current->IsAccessCheckNeeded());
962
- if (current->IsJSGlobalProxy()) {
963
- __ CheckAccessGlobalProxy(reg, scratch1, miss);
964
- }
965
-
966
- // If we've skipped any global objects, it's not enough to verify
967
- // that their maps haven't changed. We also need to check that the
968
- // property cell for the property is still empty.
969
- current = object;
970
- while (current != holder) {
971
- if (current->IsGlobalObject()) {
972
- Object* cell = GenerateCheckPropertyCell(masm(),
973
- GlobalObject::cast(current),
974
- name,
975
- scratch1,
976
- miss);
977
- if (cell->IsFailure()) {
978
- set_failure(Failure::cast(cell));
979
- return reg;
980
- }
981
- }
982
- current = JSObject::cast(current->GetPrototype());
983
- }
984
-
985
- // Return the register containing the holder.
986
- return reg;
987
- }
988
-
989
-
990
- void StubCompiler::GenerateLoadField(JSObject* object,
991
- JSObject* holder,
992
- Register receiver,
993
- Register scratch1,
994
- Register scratch2,
995
- Register scratch3,
996
- int index,
997
- String* name,
998
- Label* miss) {
999
- // Check that the receiver isn't a smi.
1000
- __ tst(receiver, Operand(kSmiTagMask));
1001
- __ b(eq, miss);
1002
-
1003
- // Check that the maps haven't changed.
1004
- Register reg =
1005
- CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3,
1006
- name, miss);
1007
- GenerateFastPropertyLoad(masm(), r0, reg, holder, index);
1008
- __ Ret();
1009
- }
1010
-
1011
-
1012
- void StubCompiler::GenerateLoadConstant(JSObject* object,
1013
- JSObject* holder,
1014
- Register receiver,
1015
- Register scratch1,
1016
- Register scratch2,
1017
- Register scratch3,
1018
- Object* value,
1019
- String* name,
1020
- Label* miss) {
1021
- // Check that the receiver isn't a smi.
1022
- __ tst(receiver, Operand(kSmiTagMask));
1023
- __ b(eq, miss);
1024
-
1025
- // Check that the maps haven't changed.
1026
- Register reg =
1027
- CheckPrototypes(object, receiver, holder,
1028
- scratch1, scratch2, scratch3, name, miss);
1029
-
1030
- // Return the constant value.
1031
- __ mov(r0, Operand(Handle<Object>(value)));
1032
- __ Ret();
1033
- }
1034
-
1035
-
1036
- bool StubCompiler::GenerateLoadCallback(JSObject* object,
1037
- JSObject* holder,
1038
- Register receiver,
1039
- Register name_reg,
1040
- Register scratch1,
1041
- Register scratch2,
1042
- Register scratch3,
1043
- AccessorInfo* callback,
1044
- String* name,
1045
- Label* miss,
1046
- Failure** failure) {
1047
- // Check that the receiver isn't a smi.
1048
- __ tst(receiver, Operand(kSmiTagMask));
1049
- __ b(eq, miss);
1050
-
1051
- // Check that the maps haven't changed.
1052
- Register reg =
1053
- CheckPrototypes(object, receiver, holder, scratch1, scratch2, scratch3,
1054
- name, miss);
1055
-
1056
- // Push the arguments on the JS stack of the caller.
1057
- __ push(receiver); // Receiver.
1058
- __ push(reg); // Holder.
1059
- __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback data
1060
- __ ldr(reg, FieldMemOperand(ip, AccessorInfo::kDataOffset));
1061
- __ Push(ip, reg, name_reg);
1062
-
1063
- // Do tail-call to the runtime system.
1064
- ExternalReference load_callback_property =
1065
- ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
1066
- __ TailCallExternalReference(load_callback_property, 5, 1);
1067
-
1068
- return true;
1069
- }
1070
-
1071
-
1072
- void StubCompiler::GenerateLoadInterceptor(JSObject* object,
1073
- JSObject* interceptor_holder,
1074
- LookupResult* lookup,
1075
- Register receiver,
1076
- Register name_reg,
1077
- Register scratch1,
1078
- Register scratch2,
1079
- Register scratch3,
1080
- String* name,
1081
- Label* miss) {
1082
- ASSERT(interceptor_holder->HasNamedInterceptor());
1083
- ASSERT(!interceptor_holder->GetNamedInterceptor()->getter()->IsUndefined());
1084
-
1085
- // Check that the receiver isn't a smi.
1086
- __ BranchOnSmi(receiver, miss);
1087
-
1088
- // So far the most popular follow ups for interceptor loads are FIELD
1089
- // and CALLBACKS, so inline only them, other cases may be added
1090
- // later.
1091
- bool compile_followup_inline = false;
1092
- if (lookup->IsProperty() && lookup->IsCacheable()) {
1093
- if (lookup->type() == FIELD) {
1094
- compile_followup_inline = true;
1095
- } else if (lookup->type() == CALLBACKS &&
1096
- lookup->GetCallbackObject()->IsAccessorInfo() &&
1097
- AccessorInfo::cast(lookup->GetCallbackObject())->getter() != NULL) {
1098
- compile_followup_inline = true;
1099
- }
1100
- }
1101
-
1102
- if (compile_followup_inline) {
1103
- // Compile the interceptor call, followed by inline code to load the
1104
- // property from further up the prototype chain if the call fails.
1105
- // Check that the maps haven't changed.
1106
- Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
1107
- scratch1, scratch2, scratch3,
1108
- name, miss);
1109
- ASSERT(holder_reg.is(receiver) || holder_reg.is(scratch1));
1110
-
1111
- // Save necessary data before invoking an interceptor.
1112
- // Requires a frame to make GC aware of pushed pointers.
1113
- __ EnterInternalFrame();
1114
-
1115
- if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1116
- // CALLBACKS case needs a receiver to be passed into C++ callback.
1117
- __ Push(receiver, holder_reg, name_reg);
1118
- } else {
1119
- __ Push(holder_reg, name_reg);
1120
- }
1121
-
1122
- // Invoke an interceptor. Note: map checks from receiver to
1123
- // interceptor's holder has been compiled before (see a caller
1124
- // of this method.)
1125
- CompileCallLoadPropertyWithInterceptor(masm(),
1126
- receiver,
1127
- holder_reg,
1128
- name_reg,
1129
- interceptor_holder);
1130
-
1131
- // Check if interceptor provided a value for property. If it's
1132
- // the case, return immediately.
1133
- Label interceptor_failed;
1134
- __ LoadRoot(scratch1, Heap::kNoInterceptorResultSentinelRootIndex);
1135
- __ cmp(r0, scratch1);
1136
- __ b(eq, &interceptor_failed);
1137
- __ LeaveInternalFrame();
1138
- __ Ret();
1139
-
1140
- __ bind(&interceptor_failed);
1141
- __ pop(name_reg);
1142
- __ pop(holder_reg);
1143
- if (lookup->type() == CALLBACKS && !receiver.is(holder_reg)) {
1144
- __ pop(receiver);
1145
- }
1146
-
1147
- __ LeaveInternalFrame();
1148
-
1149
- // Check that the maps from interceptor's holder to lookup's holder
1150
- // haven't changed. And load lookup's holder into |holder| register.
1151
- if (interceptor_holder != lookup->holder()) {
1152
- holder_reg = CheckPrototypes(interceptor_holder,
1153
- holder_reg,
1154
- lookup->holder(),
1155
- scratch1,
1156
- scratch2,
1157
- scratch3,
1158
- name,
1159
- miss);
1160
- }
1161
-
1162
- if (lookup->type() == FIELD) {
1163
- // We found FIELD property in prototype chain of interceptor's holder.
1164
- // Retrieve a field from field's holder.
1165
- GenerateFastPropertyLoad(masm(), r0, holder_reg,
1166
- lookup->holder(), lookup->GetFieldIndex());
1167
- __ Ret();
1168
- } else {
1169
- // We found CALLBACKS property in prototype chain of interceptor's
1170
- // holder.
1171
- ASSERT(lookup->type() == CALLBACKS);
1172
- ASSERT(lookup->GetCallbackObject()->IsAccessorInfo());
1173
- AccessorInfo* callback = AccessorInfo::cast(lookup->GetCallbackObject());
1174
- ASSERT(callback != NULL);
1175
- ASSERT(callback->getter() != NULL);
1176
-
1177
- // Tail call to runtime.
1178
- // Important invariant in CALLBACKS case: the code above must be
1179
- // structured to never clobber |receiver| register.
1180
- __ Move(scratch2, Handle<AccessorInfo>(callback));
1181
- // holder_reg is either receiver or scratch1.
1182
- if (!receiver.is(holder_reg)) {
1183
- ASSERT(scratch1.is(holder_reg));
1184
- __ Push(receiver, holder_reg, scratch2);
1185
- __ ldr(scratch1,
1186
- FieldMemOperand(holder_reg, AccessorInfo::kDataOffset));
1187
- __ Push(scratch1, name_reg);
1188
- } else {
1189
- __ push(receiver);
1190
- __ ldr(scratch1,
1191
- FieldMemOperand(holder_reg, AccessorInfo::kDataOffset));
1192
- __ Push(holder_reg, scratch2, scratch1, name_reg);
1193
- }
1194
-
1195
- ExternalReference ref =
1196
- ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
1197
- __ TailCallExternalReference(ref, 5, 1);
1198
- }
1199
- } else { // !compile_followup_inline
1200
- // Call the runtime system to load the interceptor.
1201
- // Check that the maps haven't changed.
1202
- Register holder_reg = CheckPrototypes(object, receiver, interceptor_holder,
1203
- scratch1, scratch2, scratch3,
1204
- name, miss);
1205
- PushInterceptorArguments(masm(), receiver, holder_reg,
1206
- name_reg, interceptor_holder);
1207
-
1208
- ExternalReference ref = ExternalReference(
1209
- IC_Utility(IC::kLoadPropertyWithInterceptorForLoad));
1210
- __ TailCallExternalReference(ref, 5, 1);
1211
- }
1212
- }
1213
-
1214
-
1215
- Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
1216
- // ----------- S t a t e -------------
1217
- // -- r1: function
1218
- // -- lr: return address
1219
- // -----------------------------------
1220
-
1221
- // Enter an internal frame.
1222
- __ EnterInternalFrame();
1223
-
1224
- // Preserve the function.
1225
- __ push(r1);
1226
-
1227
- // Push the function on the stack as the argument to the runtime function.
1228
- __ push(r1);
1229
- __ CallRuntime(Runtime::kLazyCompile, 1);
1230
-
1231
- // Calculate the entry point.
1232
- __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag));
1233
-
1234
- // Restore saved function.
1235
- __ pop(r1);
1236
-
1237
- // Tear down temporary frame.
1238
- __ LeaveInternalFrame();
1239
-
1240
- // Do a tail-call of the compiled function.
1241
- __ Jump(r2);
1242
-
1243
- return GetCodeWithFlags(flags, "LazyCompileStub");
1244
- }
1245
-
1246
-
1247
- void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
1248
- if (kind_ == Code::KEYED_CALL_IC) {
1249
- __ cmp(r2, Operand(Handle<String>(name)));
1250
- __ b(ne, miss);
1251
- }
1252
- }
1253
-
1254
-
1255
- void CallStubCompiler::GenerateMissBranch() {
1256
- Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
1257
- __ Jump(ic, RelocInfo::CODE_TARGET);
1258
- }
1259
-
1260
-
1261
- Object* CallStubCompiler::CompileCallField(JSObject* object,
1262
- JSObject* holder,
1263
- int index,
1264
- String* name) {
1265
- // ----------- S t a t e -------------
1266
- // -- r2 : name
1267
- // -- lr : return address
1268
- // -----------------------------------
1269
- Label miss;
1270
-
1271
- GenerateNameCheck(name, &miss);
1272
-
1273
- const int argc = arguments().immediate();
1274
-
1275
- // Get the receiver of the function from the stack into r0.
1276
- __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1277
- // Check that the receiver isn't a smi.
1278
- __ tst(r0, Operand(kSmiTagMask));
1279
- __ b(eq, &miss);
1280
-
1281
- // Do the right check and compute the holder register.
1282
- Register reg = CheckPrototypes(object, r0, holder, r1, r3, r4, name, &miss);
1283
- GenerateFastPropertyLoad(masm(), r1, reg, holder, index);
1284
-
1285
- GenerateCallFunction(masm(), object, arguments(), &miss);
1286
-
1287
- // Handle call cache miss.
1288
- __ bind(&miss);
1289
- GenerateMissBranch();
1290
-
1291
- // Return the generated code.
1292
- return GetCode(FIELD, name);
1293
- }
1294
-
1295
-
1296
- Object* CallStubCompiler::CompileArrayPushCall(Object* object,
1297
- JSObject* holder,
1298
- JSFunction* function,
1299
- String* name,
1300
- CheckType check) {
1301
- // ----------- S t a t e -------------
1302
- // -- r2 : name
1303
- // -- lr : return address
1304
- // -----------------------------------
1305
-
1306
- // If object is not an array, bail out to regular call.
1307
- if (!object->IsJSArray()) {
1308
- return Heap::undefined_value();
1309
- }
1310
-
1311
- // TODO(639): faster implementation.
1312
- ASSERT(check == RECEIVER_MAP_CHECK);
1313
-
1314
- Label miss;
1315
-
1316
- GenerateNameCheck(name, &miss);
1317
-
1318
- // Get the receiver from the stack
1319
- const int argc = arguments().immediate();
1320
- __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1321
-
1322
- // Check that the receiver isn't a smi.
1323
- __ tst(r1, Operand(kSmiTagMask));
1324
- __ b(eq, &miss);
1325
-
1326
- // Check that the maps haven't changed.
1327
- CheckPrototypes(JSObject::cast(object), r1, holder, r3, r0, r4, name, &miss);
1328
-
1329
- if (object->IsGlobalObject()) {
1330
- __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1331
- __ str(r3, MemOperand(sp, argc * kPointerSize));
1332
- }
1333
-
1334
- __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush),
1335
- argc + 1,
1336
- 1);
1337
-
1338
- // Handle call cache miss.
1339
- __ bind(&miss);
1340
- GenerateMissBranch();
1341
-
1342
- // Return the generated code.
1343
- return GetCode(function);
1344
- }
1345
-
1346
-
1347
- Object* CallStubCompiler::CompileArrayPopCall(Object* object,
1348
- JSObject* holder,
1349
- JSFunction* function,
1350
- String* name,
1351
- CheckType check) {
1352
- // ----------- S t a t e -------------
1353
- // -- r2 : name
1354
- // -- lr : return address
1355
- // -----------------------------------
1356
-
1357
- // If object is not an array, bail out to regular call.
1358
- if (!object->IsJSArray()) {
1359
- return Heap::undefined_value();
1360
- }
1361
-
1362
- // TODO(642): faster implementation.
1363
- ASSERT(check == RECEIVER_MAP_CHECK);
1364
-
1365
- Label miss;
1366
-
1367
- GenerateNameCheck(name, &miss);
1368
-
1369
- // Get the receiver from the stack
1370
- const int argc = arguments().immediate();
1371
- __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1372
-
1373
- // Check that the receiver isn't a smi.
1374
- __ tst(r1, Operand(kSmiTagMask));
1375
- __ b(eq, &miss);
1376
-
1377
- // Check that the maps haven't changed.
1378
- CheckPrototypes(JSObject::cast(object), r1, holder, r3, r0, r4, name, &miss);
1379
-
1380
- if (object->IsGlobalObject()) {
1381
- __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1382
- __ str(r3, MemOperand(sp, argc * kPointerSize));
1383
- }
1384
-
1385
- __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop),
1386
- argc + 1,
1387
- 1);
1388
-
1389
- // Handle call cache miss.
1390
- __ bind(&miss);
1391
- GenerateMissBranch();
1392
-
1393
- // Return the generated code.
1394
- return GetCode(function);
1395
- }
1396
-
1397
-
1398
- Object* CallStubCompiler::CompileStringCharCodeAtCall(Object* object,
1399
- JSObject* holder,
1400
- JSFunction* function,
1401
- String* name,
1402
- CheckType check) {
1403
- // TODO(722): implement this.
1404
- return Heap::undefined_value();
1405
- }
1406
-
1407
-
1408
- Object* CallStubCompiler::CompileStringCharAtCall(Object* object,
1409
- JSObject* holder,
1410
- JSFunction* function,
1411
- String* name,
1412
- CheckType check) {
1413
- // TODO(722): implement this.
1414
- return Heap::undefined_value();
1415
- }
1416
-
1417
-
1418
- Object* CallStubCompiler::CompileCallConstant(Object* object,
1419
- JSObject* holder,
1420
- JSFunction* function,
1421
- String* name,
1422
- CheckType check) {
1423
- // ----------- S t a t e -------------
1424
- // -- r2 : name
1425
- // -- lr : return address
1426
- // -----------------------------------
1427
- SharedFunctionInfo* function_info = function->shared();
1428
- if (function_info->HasCustomCallGenerator()) {
1429
- const int id = function_info->custom_call_generator_id();
1430
- Object* result =
1431
- CompileCustomCall(id, object, holder, function, name, check);
1432
- // undefined means bail out to regular compiler.
1433
- if (!result->IsUndefined()) {
1434
- return result;
1435
- }
1436
- }
1437
-
1438
- Label miss_in_smi_check;
1439
-
1440
- GenerateNameCheck(name, &miss_in_smi_check);
1441
-
1442
- // Get the receiver from the stack
1443
- const int argc = arguments().immediate();
1444
- __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1445
-
1446
- // Check that the receiver isn't a smi.
1447
- if (check != NUMBER_CHECK) {
1448
- __ tst(r1, Operand(kSmiTagMask));
1449
- __ b(eq, &miss_in_smi_check);
1450
- }
1451
-
1452
- // Make sure that it's okay not to patch the on stack receiver
1453
- // unless we're doing a receiver map check.
1454
- ASSERT(!object->IsGlobalObject() || check == RECEIVER_MAP_CHECK);
1455
-
1456
- CallOptimization optimization(function);
1457
- int depth = kInvalidProtoDepth;
1458
- Label miss;
1459
-
1460
- switch (check) {
1461
- case RECEIVER_MAP_CHECK:
1462
- __ IncrementCounter(&Counters::call_const, 1, r0, r3);
1463
-
1464
- if (optimization.is_simple_api_call() && !object->IsGlobalObject()) {
1465
- depth = optimization.GetPrototypeDepthOfExpectedType(
1466
- JSObject::cast(object), holder);
1467
- }
1468
-
1469
- if (depth != kInvalidProtoDepth) {
1470
- __ IncrementCounter(&Counters::call_const_fast_api, 1, r0, r3);
1471
- ReserveSpaceForFastApiCall(masm(), r0);
1472
- }
1473
-
1474
- // Check that the maps haven't changed.
1475
- CheckPrototypes(JSObject::cast(object), r1, holder, r0, r3, r4, name,
1476
- depth, &miss);
1477
-
1478
- // Patch the receiver on the stack with the global proxy if
1479
- // necessary.
1480
- if (object->IsGlobalObject()) {
1481
- ASSERT(depth == kInvalidProtoDepth);
1482
- __ ldr(r3, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
1483
- __ str(r3, MemOperand(sp, argc * kPointerSize));
1484
- }
1485
- break;
1486
-
1487
- case STRING_CHECK:
1488
- if (!function->IsBuiltin()) {
1489
- // Calling non-builtins with a value as receiver requires boxing.
1490
- __ jmp(&miss);
1491
- } else {
1492
- // Check that the object is a two-byte string or a symbol.
1493
- __ CompareObjectType(r1, r3, r3, FIRST_NONSTRING_TYPE);
1494
- __ b(hs, &miss);
1495
- // Check that the maps starting from the prototype haven't changed.
1496
- GenerateDirectLoadGlobalFunctionPrototype(
1497
- masm(), Context::STRING_FUNCTION_INDEX, r0);
1498
- CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1499
- r1, r4, name, &miss);
1500
- }
1501
- break;
1502
-
1503
- case NUMBER_CHECK: {
1504
- if (!function->IsBuiltin()) {
1505
- // Calling non-builtins with a value as receiver requires boxing.
1506
- __ jmp(&miss);
1507
- } else {
1508
- Label fast;
1509
- // Check that the object is a smi or a heap number.
1510
- __ tst(r1, Operand(kSmiTagMask));
1511
- __ b(eq, &fast);
1512
- __ CompareObjectType(r1, r0, r0, HEAP_NUMBER_TYPE);
1513
- __ b(ne, &miss);
1514
- __ bind(&fast);
1515
- // Check that the maps starting from the prototype haven't changed.
1516
- GenerateDirectLoadGlobalFunctionPrototype(
1517
- masm(), Context::NUMBER_FUNCTION_INDEX, r0);
1518
- CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1519
- r1, r4, name, &miss);
1520
- }
1521
- break;
1522
- }
1523
-
1524
- case BOOLEAN_CHECK: {
1525
- if (!function->IsBuiltin()) {
1526
- // Calling non-builtins with a value as receiver requires boxing.
1527
- __ jmp(&miss);
1528
- } else {
1529
- Label fast;
1530
- // Check that the object is a boolean.
1531
- __ LoadRoot(ip, Heap::kTrueValueRootIndex);
1532
- __ cmp(r1, ip);
1533
- __ b(eq, &fast);
1534
- __ LoadRoot(ip, Heap::kFalseValueRootIndex);
1535
- __ cmp(r1, ip);
1536
- __ b(ne, &miss);
1537
- __ bind(&fast);
1538
- // Check that the maps starting from the prototype haven't changed.
1539
- GenerateDirectLoadGlobalFunctionPrototype(
1540
- masm(), Context::BOOLEAN_FUNCTION_INDEX, r0);
1541
- CheckPrototypes(JSObject::cast(object->GetPrototype()), r0, holder, r3,
1542
- r1, r4, name, &miss);
1543
- }
1544
- break;
1545
- }
1546
-
1547
- default:
1548
- UNREACHABLE();
1549
- }
1550
-
1551
- if (depth != kInvalidProtoDepth) {
1552
- GenerateFastApiCall(masm(), optimization, argc);
1553
- } else {
1554
- __ InvokeFunction(function, arguments(), JUMP_FUNCTION);
1555
- }
1556
-
1557
- // Handle call cache miss.
1558
- __ bind(&miss);
1559
- if (depth != kInvalidProtoDepth) {
1560
- FreeSpaceForFastApiCall(masm());
1561
- }
1562
-
1563
- __ bind(&miss_in_smi_check);
1564
- GenerateMissBranch();
1565
-
1566
- // Return the generated code.
1567
- return GetCode(function);
1568
- }
1569
-
1570
-
1571
- Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
1572
- JSObject* holder,
1573
- String* name) {
1574
- // ----------- S t a t e -------------
1575
- // -- r2 : name
1576
- // -- lr : return address
1577
- // -----------------------------------
1578
-
1579
- Label miss;
1580
-
1581
- GenerateNameCheck(name, &miss);
1582
-
1583
- // Get the number of arguments.
1584
- const int argc = arguments().immediate();
1585
-
1586
- LookupResult lookup;
1587
- LookupPostInterceptor(holder, name, &lookup);
1588
-
1589
- // Get the receiver from the stack.
1590
- __ ldr(r1, MemOperand(sp, argc * kPointerSize));
1591
-
1592
- CallInterceptorCompiler compiler(this, arguments(), r2);
1593
- compiler.Compile(masm(),
1594
- object,
1595
- holder,
1596
- name,
1597
- &lookup,
1598
- r1,
1599
- r3,
1600
- r4,
1601
- r0,
1602
- &miss);
1603
-
1604
- // Move returned value, the function to call, to r1.
1605
- __ mov(r1, r0);
1606
- // Restore receiver.
1607
- __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1608
-
1609
- GenerateCallFunction(masm(), object, arguments(), &miss);
1610
-
1611
- // Handle call cache miss.
1612
- __ bind(&miss);
1613
- GenerateMissBranch();
1614
-
1615
- // Return the generated code.
1616
- return GetCode(INTERCEPTOR, name);
1617
- }
1618
-
1619
-
1620
- Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
1621
- GlobalObject* holder,
1622
- JSGlobalPropertyCell* cell,
1623
- JSFunction* function,
1624
- String* name) {
1625
- // ----------- S t a t e -------------
1626
- // -- r2 : name
1627
- // -- lr : return address
1628
- // -----------------------------------
1629
- Label miss;
1630
-
1631
- GenerateNameCheck(name, &miss);
1632
-
1633
- // Get the number of arguments.
1634
- const int argc = arguments().immediate();
1635
-
1636
- // Get the receiver from the stack.
1637
- __ ldr(r0, MemOperand(sp, argc * kPointerSize));
1638
-
1639
- // If the object is the holder then we know that it's a global
1640
- // object which can only happen for contextual calls. In this case,
1641
- // the receiver cannot be a smi.
1642
- if (object != holder) {
1643
- __ tst(r0, Operand(kSmiTagMask));
1644
- __ b(eq, &miss);
1645
- }
1646
-
1647
- // Check that the maps haven't changed.
1648
- CheckPrototypes(object, r0, holder, r3, r1, r4, name, &miss);
1649
-
1650
- // Get the value from the cell.
1651
- __ mov(r3, Operand(Handle<JSGlobalPropertyCell>(cell)));
1652
- __ ldr(r1, FieldMemOperand(r3, JSGlobalPropertyCell::kValueOffset));
1653
-
1654
- // Check that the cell contains the same function.
1655
- if (Heap::InNewSpace(function)) {
1656
- // We can't embed a pointer to a function in new space so we have
1657
- // to verify that the shared function info is unchanged. This has
1658
- // the nice side effect that multiple closures based on the same
1659
- // function can all use this call IC. Before we load through the
1660
- // function, we have to verify that it still is a function.
1661
- __ tst(r1, Operand(kSmiTagMask));
1662
- __ b(eq, &miss);
1663
- __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
1664
- __ b(ne, &miss);
1665
-
1666
- // Check the shared function info. Make sure it hasn't changed.
1667
- __ mov(r3, Operand(Handle<SharedFunctionInfo>(function->shared())));
1668
- __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
1669
- __ cmp(r4, r3);
1670
- __ b(ne, &miss);
1671
- } else {
1672
- __ cmp(r1, Operand(Handle<JSFunction>(function)));
1673
- __ b(ne, &miss);
1674
- }
1675
-
1676
- // Patch the receiver on the stack with the global proxy if
1677
- // necessary.
1678
- if (object->IsGlobalObject()) {
1679
- __ ldr(r3, FieldMemOperand(r0, GlobalObject::kGlobalReceiverOffset));
1680
- __ str(r3, MemOperand(sp, argc * kPointerSize));
1681
- }
1682
-
1683
- // Setup the context (function already in r1).
1684
- __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset));
1685
-
1686
- // Jump to the cached code (tail call).
1687
- __ IncrementCounter(&Counters::call_global_inline, 1, r3, r4);
1688
- ASSERT(function->is_compiled());
1689
- Handle<Code> code(function->code());
1690
- ParameterCount expected(function->shared()->formal_parameter_count());
1691
- __ InvokeCode(code, expected, arguments(),
1692
- RelocInfo::CODE_TARGET, JUMP_FUNCTION);
1693
-
1694
- // Handle call cache miss.
1695
- __ bind(&miss);
1696
- __ IncrementCounter(&Counters::call_global_inline_miss, 1, r1, r3);
1697
- GenerateMissBranch();
1698
-
1699
- // Return the generated code.
1700
- return GetCode(NORMAL, name);
1701
- }
1702
-
1703
-
1704
- Object* StoreStubCompiler::CompileStoreField(JSObject* object,
1705
- int index,
1706
- Map* transition,
1707
- String* name) {
1708
- // ----------- S t a t e -------------
1709
- // -- r0 : value
1710
- // -- r1 : receiver
1711
- // -- r2 : name
1712
- // -- lr : return address
1713
- // -----------------------------------
1714
- Label miss;
1715
-
1716
- GenerateStoreField(masm(),
1717
- object,
1718
- index,
1719
- transition,
1720
- r1, r2, r3,
1721
- &miss);
1722
- __ bind(&miss);
1723
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1724
- __ Jump(ic, RelocInfo::CODE_TARGET);
1725
-
1726
- // Return the generated code.
1727
- return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
1728
- }
1729
-
1730
-
1731
- Object* StoreStubCompiler::CompileStoreCallback(JSObject* object,
1732
- AccessorInfo* callback,
1733
- String* name) {
1734
- // ----------- S t a t e -------------
1735
- // -- r0 : value
1736
- // -- r1 : receiver
1737
- // -- r2 : name
1738
- // -- lr : return address
1739
- // -----------------------------------
1740
- Label miss;
1741
-
1742
- // Check that the object isn't a smi.
1743
- __ tst(r1, Operand(kSmiTagMask));
1744
- __ b(eq, &miss);
1745
-
1746
- // Check that the map of the object hasn't changed.
1747
- __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1748
- __ cmp(r3, Operand(Handle<Map>(object->map())));
1749
- __ b(ne, &miss);
1750
-
1751
- // Perform global security token check if needed.
1752
- if (object->IsJSGlobalProxy()) {
1753
- __ CheckAccessGlobalProxy(r1, r3, &miss);
1754
- }
1755
-
1756
- // Stub never generated for non-global objects that require access
1757
- // checks.
1758
- ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
1759
-
1760
- __ push(r1); // receiver
1761
- __ mov(ip, Operand(Handle<AccessorInfo>(callback))); // callback info
1762
- __ Push(ip, r2, r0);
1763
-
1764
- // Do tail-call to the runtime system.
1765
- ExternalReference store_callback_property =
1766
- ExternalReference(IC_Utility(IC::kStoreCallbackProperty));
1767
- __ TailCallExternalReference(store_callback_property, 4, 1);
1768
-
1769
- // Handle store cache miss.
1770
- __ bind(&miss);
1771
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1772
- __ Jump(ic, RelocInfo::CODE_TARGET);
1773
-
1774
- // Return the generated code.
1775
- return GetCode(CALLBACKS, name);
1776
- }
1777
-
1778
-
1779
- Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver,
1780
- String* name) {
1781
- // ----------- S t a t e -------------
1782
- // -- r0 : value
1783
- // -- r1 : receiver
1784
- // -- r2 : name
1785
- // -- lr : return address
1786
- // -----------------------------------
1787
- Label miss;
1788
-
1789
- // Check that the object isn't a smi.
1790
- __ tst(r1, Operand(kSmiTagMask));
1791
- __ b(eq, &miss);
1792
-
1793
- // Check that the map of the object hasn't changed.
1794
- __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1795
- __ cmp(r3, Operand(Handle<Map>(receiver->map())));
1796
- __ b(ne, &miss);
1797
-
1798
- // Perform global security token check if needed.
1799
- if (receiver->IsJSGlobalProxy()) {
1800
- __ CheckAccessGlobalProxy(r1, r3, &miss);
1801
- }
1802
-
1803
- // Stub is never generated for non-global objects that require access
1804
- // checks.
1805
- ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
1806
-
1807
- __ Push(r1, r2, r0); // Receiver, name, value.
1808
-
1809
- // Do tail-call to the runtime system.
1810
- ExternalReference store_ic_property =
1811
- ExternalReference(IC_Utility(IC::kStoreInterceptorProperty));
1812
- __ TailCallExternalReference(store_ic_property, 3, 1);
1813
-
1814
- // Handle store cache miss.
1815
- __ bind(&miss);
1816
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1817
- __ Jump(ic, RelocInfo::CODE_TARGET);
1818
-
1819
- // Return the generated code.
1820
- return GetCode(INTERCEPTOR, name);
1821
- }
1822
-
1823
-
1824
- Object* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object,
1825
- JSGlobalPropertyCell* cell,
1826
- String* name) {
1827
- // ----------- S t a t e -------------
1828
- // -- r0 : value
1829
- // -- r1 : receiver
1830
- // -- r2 : name
1831
- // -- lr : return address
1832
- // -----------------------------------
1833
- Label miss;
1834
-
1835
- // Check that the map of the global has not changed.
1836
- __ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset));
1837
- __ cmp(r3, Operand(Handle<Map>(object->map())));
1838
- __ b(ne, &miss);
1839
-
1840
- // Store the value in the cell.
1841
- __ mov(r2, Operand(Handle<JSGlobalPropertyCell>(cell)));
1842
- __ str(r0, FieldMemOperand(r2, JSGlobalPropertyCell::kValueOffset));
1843
-
1844
- __ IncrementCounter(&Counters::named_store_global_inline, 1, r4, r3);
1845
- __ Ret();
1846
-
1847
- // Handle store cache miss.
1848
- __ bind(&miss);
1849
- __ IncrementCounter(&Counters::named_store_global_inline_miss, 1, r4, r3);
1850
- Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Miss));
1851
- __ Jump(ic, RelocInfo::CODE_TARGET);
1852
-
1853
- // Return the generated code.
1854
- return GetCode(NORMAL, name);
1855
- }
1856
-
1857
-
1858
- Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
1859
- JSObject* object,
1860
- JSObject* last) {
1861
- // ----------- S t a t e -------------
1862
- // -- r0 : receiver
1863
- // -- lr : return address
1864
- // -----------------------------------
1865
- Label miss;
1866
-
1867
- // Check that receiver is not a smi.
1868
- __ tst(r0, Operand(kSmiTagMask));
1869
- __ b(eq, &miss);
1870
-
1871
- // Check the maps of the full prototype chain.
1872
- CheckPrototypes(object, r0, last, r3, r1, r4, name, &miss);
1873
-
1874
- // If the last object in the prototype chain is a global object,
1875
- // check that the global property cell is empty.
1876
- if (last->IsGlobalObject()) {
1877
- Object* cell = GenerateCheckPropertyCell(masm(),
1878
- GlobalObject::cast(last),
1879
- name,
1880
- r1,
1881
- &miss);
1882
- if (cell->IsFailure()) return cell;
1883
- }
1884
-
1885
- // Return undefined if maps of the full prototype chain are still the
1886
- // same and no global property with this name contains a value.
1887
- __ LoadRoot(r0, Heap::kUndefinedValueRootIndex);
1888
- __ Ret();
1889
-
1890
- __ bind(&miss);
1891
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1892
-
1893
- // Return the generated code.
1894
- return GetCode(NONEXISTENT, Heap::empty_string());
1895
- }
1896
-
1897
-
1898
- Object* LoadStubCompiler::CompileLoadField(JSObject* object,
1899
- JSObject* holder,
1900
- int index,
1901
- String* name) {
1902
- // ----------- S t a t e -------------
1903
- // -- r0 : receiver
1904
- // -- r2 : name
1905
- // -- lr : return address
1906
- // -----------------------------------
1907
- Label miss;
1908
-
1909
- GenerateLoadField(object, holder, r0, r3, r1, r4, index, name, &miss);
1910
- __ bind(&miss);
1911
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1912
-
1913
- // Return the generated code.
1914
- return GetCode(FIELD, name);
1915
- }
1916
-
1917
-
1918
- Object* LoadStubCompiler::CompileLoadCallback(String* name,
1919
- JSObject* object,
1920
- JSObject* holder,
1921
- AccessorInfo* callback) {
1922
- // ----------- S t a t e -------------
1923
- // -- r0 : receiver
1924
- // -- r2 : name
1925
- // -- lr : return address
1926
- // -----------------------------------
1927
- Label miss;
1928
-
1929
- Failure* failure = Failure::InternalError();
1930
- bool success = GenerateLoadCallback(object, holder, r0, r2, r3, r1, r4,
1931
- callback, name, &miss, &failure);
1932
- if (!success) return failure;
1933
-
1934
- __ bind(&miss);
1935
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1936
-
1937
- // Return the generated code.
1938
- return GetCode(CALLBACKS, name);
1939
- }
1940
-
1941
-
1942
- Object* LoadStubCompiler::CompileLoadConstant(JSObject* object,
1943
- JSObject* holder,
1944
- Object* value,
1945
- String* name) {
1946
- // ----------- S t a t e -------------
1947
- // -- r0 : receiver
1948
- // -- r2 : name
1949
- // -- lr : return address
1950
- // -----------------------------------
1951
- Label miss;
1952
-
1953
- GenerateLoadConstant(object, holder, r0, r3, r1, r4, value, name, &miss);
1954
- __ bind(&miss);
1955
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1956
-
1957
- // Return the generated code.
1958
- return GetCode(CONSTANT_FUNCTION, name);
1959
- }
1960
-
1961
-
1962
- Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* object,
1963
- JSObject* holder,
1964
- String* name) {
1965
- // ----------- S t a t e -------------
1966
- // -- r0 : receiver
1967
- // -- r2 : name
1968
- // -- lr : return address
1969
- // -----------------------------------
1970
- Label miss;
1971
-
1972
- LookupResult lookup;
1973
- LookupPostInterceptor(holder, name, &lookup);
1974
- GenerateLoadInterceptor(object,
1975
- holder,
1976
- &lookup,
1977
- r0,
1978
- r2,
1979
- r3,
1980
- r1,
1981
- r4,
1982
- name,
1983
- &miss);
1984
- __ bind(&miss);
1985
- GenerateLoadMiss(masm(), Code::LOAD_IC);
1986
-
1987
- // Return the generated code.
1988
- return GetCode(INTERCEPTOR, name);
1989
- }
1990
-
1991
-
1992
- Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object,
1993
- GlobalObject* holder,
1994
- JSGlobalPropertyCell* cell,
1995
- String* name,
1996
- bool is_dont_delete) {
1997
- // ----------- S t a t e -------------
1998
- // -- r0 : receiver
1999
- // -- r2 : name
2000
- // -- lr : return address
2001
- // -----------------------------------
2002
- Label miss;
2003
-
2004
- // If the object is the holder then we know that it's a global
2005
- // object which can only happen for contextual calls. In this case,
2006
- // the receiver cannot be a smi.
2007
- if (object != holder) {
2008
- __ tst(r0, Operand(kSmiTagMask));
2009
- __ b(eq, &miss);
2010
- }
2011
-
2012
- // Check that the map of the global has not changed.
2013
- CheckPrototypes(object, r0, holder, r3, r4, r1, name, &miss);
2014
-
2015
- // Get the value from the cell.
2016
- __ mov(r3, Operand(Handle<JSGlobalPropertyCell>(cell)));
2017
- __ ldr(r4, FieldMemOperand(r3, JSGlobalPropertyCell::kValueOffset));
2018
-
2019
- // Check for deleted property if property can actually be deleted.
2020
- if (!is_dont_delete) {
2021
- __ LoadRoot(ip, Heap::kTheHoleValueRootIndex);
2022
- __ cmp(r4, ip);
2023
- __ b(eq, &miss);
2024
- }
2025
-
2026
- __ mov(r0, r4);
2027
- __ IncrementCounter(&Counters::named_load_global_inline, 1, r1, r3);
2028
- __ Ret();
2029
-
2030
- __ bind(&miss);
2031
- __ IncrementCounter(&Counters::named_load_global_inline_miss, 1, r1, r3);
2032
- GenerateLoadMiss(masm(), Code::LOAD_IC);
2033
-
2034
- // Return the generated code.
2035
- return GetCode(NORMAL, name);
2036
- }
2037
-
2038
-
2039
- Object* KeyedLoadStubCompiler::CompileLoadField(String* name,
2040
- JSObject* receiver,
2041
- JSObject* holder,
2042
- int index) {
2043
- // ----------- S t a t e -------------
2044
- // -- lr : return address
2045
- // -- r0 : key
2046
- // -- r1 : receiver
2047
- // -----------------------------------
2048
- Label miss;
2049
-
2050
- // Check the key is the cached one.
2051
- __ cmp(r0, Operand(Handle<String>(name)));
2052
- __ b(ne, &miss);
2053
-
2054
- GenerateLoadField(receiver, holder, r1, r2, r3, r4, index, name, &miss);
2055
- __ bind(&miss);
2056
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2057
-
2058
- return GetCode(FIELD, name);
2059
- }
2060
-
2061
-
2062
- Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
2063
- JSObject* receiver,
2064
- JSObject* holder,
2065
- AccessorInfo* callback) {
2066
- // ----------- S t a t e -------------
2067
- // -- lr : return address
2068
- // -- r0 : key
2069
- // -- r1 : receiver
2070
- // -----------------------------------
2071
- Label miss;
2072
-
2073
- // Check the key is the cached one.
2074
- __ cmp(r0, Operand(Handle<String>(name)));
2075
- __ b(ne, &miss);
2076
-
2077
- Failure* failure = Failure::InternalError();
2078
- bool success = GenerateLoadCallback(receiver, holder, r1, r0, r2, r3, r4,
2079
- callback, name, &miss, &failure);
2080
- if (!success) return failure;
2081
-
2082
- __ bind(&miss);
2083
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2084
-
2085
- return GetCode(CALLBACKS, name);
2086
- }
2087
-
2088
-
2089
- Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
2090
- JSObject* receiver,
2091
- JSObject* holder,
2092
- Object* value) {
2093
- // ----------- S t a t e -------------
2094
- // -- lr : return address
2095
- // -- r0 : key
2096
- // -- r1 : receiver
2097
- // -----------------------------------
2098
- Label miss;
2099
-
2100
- // Check the key is the cached one.
2101
- __ cmp(r0, Operand(Handle<String>(name)));
2102
- __ b(ne, &miss);
2103
-
2104
- GenerateLoadConstant(receiver, holder, r1, r2, r3, r4, value, name, &miss);
2105
- __ bind(&miss);
2106
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2107
-
2108
- // Return the generated code.
2109
- return GetCode(CONSTANT_FUNCTION, name);
2110
- }
2111
-
2112
-
2113
- Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
2114
- JSObject* holder,
2115
- String* name) {
2116
- // ----------- S t a t e -------------
2117
- // -- lr : return address
2118
- // -- r0 : key
2119
- // -- r1 : receiver
2120
- // -----------------------------------
2121
- Label miss;
2122
-
2123
- // Check the key is the cached one.
2124
- __ cmp(r0, Operand(Handle<String>(name)));
2125
- __ b(ne, &miss);
2126
-
2127
- LookupResult lookup;
2128
- LookupPostInterceptor(holder, name, &lookup);
2129
- GenerateLoadInterceptor(receiver,
2130
- holder,
2131
- &lookup,
2132
- r1,
2133
- r0,
2134
- r2,
2135
- r3,
2136
- r4,
2137
- name,
2138
- &miss);
2139
- __ bind(&miss);
2140
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2141
-
2142
- return GetCode(INTERCEPTOR, name);
2143
- }
2144
-
2145
-
2146
- Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
2147
- // ----------- S t a t e -------------
2148
- // -- lr : return address
2149
- // -- r0 : key
2150
- // -- r1 : receiver
2151
- // -----------------------------------
2152
- Label miss;
2153
-
2154
- // Check the key is the cached one.
2155
- __ cmp(r0, Operand(Handle<String>(name)));
2156
- __ b(ne, &miss);
2157
-
2158
- GenerateLoadArrayLength(masm(), r1, r2, &miss);
2159
- __ bind(&miss);
2160
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2161
-
2162
- return GetCode(CALLBACKS, name);
2163
- }
2164
-
2165
-
2166
- Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
2167
- // ----------- S t a t e -------------
2168
- // -- lr : return address
2169
- // -- r0 : key
2170
- // -- r1 : receiver
2171
- // -----------------------------------
2172
- Label miss;
2173
- __ IncrementCounter(&Counters::keyed_load_string_length, 1, r1, r3);
2174
-
2175
- // Check the key is the cached one.
2176
- __ cmp(r0, Operand(Handle<String>(name)));
2177
- __ b(ne, &miss);
2178
-
2179
- GenerateLoadStringLength(masm(), r1, r2, r3, &miss);
2180
- __ bind(&miss);
2181
- __ DecrementCounter(&Counters::keyed_load_string_length, 1, r1, r3);
2182
-
2183
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2184
-
2185
- return GetCode(CALLBACKS, name);
2186
- }
2187
-
2188
-
2189
- // TODO(1224671): implement the fast case.
2190
- Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
2191
- // ----------- S t a t e -------------
2192
- // -- lr : return address
2193
- // -- r0 : key
2194
- // -- r1 : receiver
2195
- // -----------------------------------
2196
- GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
2197
-
2198
- return GetCode(CALLBACKS, name);
2199
- }
2200
-
2201
-
2202
- Object* KeyedStoreStubCompiler::CompileStoreField(JSObject* object,
2203
- int index,
2204
- Map* transition,
2205
- String* name) {
2206
- // ----------- S t a t e -------------
2207
- // -- r0 : value
2208
- // -- r1 : key
2209
- // -- r2 : receiver
2210
- // -- lr : return address
2211
- // -----------------------------------
2212
- Label miss;
2213
-
2214
- __ IncrementCounter(&Counters::keyed_store_field, 1, r3, r4);
2215
-
2216
- // Check that the name has not changed.
2217
- __ cmp(r1, Operand(Handle<String>(name)));
2218
- __ b(ne, &miss);
2219
-
2220
- // r3 is used as scratch register. r1 and r2 keep their values if a jump to
2221
- // the miss label is generated.
2222
- GenerateStoreField(masm(),
2223
- object,
2224
- index,
2225
- transition,
2226
- r2, r1, r3,
2227
- &miss);
2228
- __ bind(&miss);
2229
-
2230
- __ DecrementCounter(&Counters::keyed_store_field, 1, r3, r4);
2231
- Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Miss));
2232
-
2233
- __ Jump(ic, RelocInfo::CODE_TARGET);
2234
-
2235
- // Return the generated code.
2236
- return GetCode(transition == NULL ? FIELD : MAP_TRANSITION, name);
2237
- }
2238
-
2239
-
2240
- Object* ConstructStubCompiler::CompileConstructStub(
2241
- SharedFunctionInfo* shared) {
2242
- // ----------- S t a t e -------------
2243
- // -- r0 : argc
2244
- // -- r1 : constructor
2245
- // -- lr : return address
2246
- // -- [sp] : last argument
2247
- // -----------------------------------
2248
- Label generic_stub_call;
2249
-
2250
- // Use r7 for holding undefined which is used in several places below.
2251
- __ LoadRoot(r7, Heap::kUndefinedValueRootIndex);
2252
-
2253
- #ifdef ENABLE_DEBUGGER_SUPPORT
2254
- // Check to see whether there are any break points in the function code. If
2255
- // there are jump to the generic constructor stub which calls the actual
2256
- // code for the function thereby hitting the break points.
2257
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
2258
- __ ldr(r2, FieldMemOperand(r2, SharedFunctionInfo::kDebugInfoOffset));
2259
- __ cmp(r2, r7);
2260
- __ b(ne, &generic_stub_call);
2261
- #endif
2262
-
2263
- // Load the initial map and verify that it is in fact a map.
2264
- // r1: constructor function
2265
- // r7: undefined
2266
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset));
2267
- __ tst(r2, Operand(kSmiTagMask));
2268
- __ b(eq, &generic_stub_call);
2269
- __ CompareObjectType(r2, r3, r4, MAP_TYPE);
2270
- __ b(ne, &generic_stub_call);
2271
-
2272
- #ifdef DEBUG
2273
- // Cannot construct functions this way.
2274
- // r0: argc
2275
- // r1: constructor function
2276
- // r2: initial map
2277
- // r7: undefined
2278
- __ CompareInstanceType(r2, r3, JS_FUNCTION_TYPE);
2279
- __ Check(ne, "Function constructed by construct stub.");
2280
- #endif
2281
-
2282
- // Now allocate the JSObject in new space.
2283
- // r0: argc
2284
- // r1: constructor function
2285
- // r2: initial map
2286
- // r7: undefined
2287
- __ ldrb(r3, FieldMemOperand(r2, Map::kInstanceSizeOffset));
2288
- __ AllocateInNewSpace(r3,
2289
- r4,
2290
- r5,
2291
- r6,
2292
- &generic_stub_call,
2293
- SIZE_IN_WORDS);
2294
-
2295
- // Allocated the JSObject, now initialize the fields. Map is set to initial
2296
- // map and properties and elements are set to empty fixed array.
2297
- // r0: argc
2298
- // r1: constructor function
2299
- // r2: initial map
2300
- // r3: object size (in words)
2301
- // r4: JSObject (not tagged)
2302
- // r7: undefined
2303
- __ LoadRoot(r6, Heap::kEmptyFixedArrayRootIndex);
2304
- __ mov(r5, r4);
2305
- ASSERT_EQ(0 * kPointerSize, JSObject::kMapOffset);
2306
- __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2307
- ASSERT_EQ(1 * kPointerSize, JSObject::kPropertiesOffset);
2308
- __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
2309
- ASSERT_EQ(2 * kPointerSize, JSObject::kElementsOffset);
2310
- __ str(r6, MemOperand(r5, kPointerSize, PostIndex));
2311
-
2312
- // Calculate the location of the first argument. The stack contains only the
2313
- // argc arguments.
2314
- __ add(r1, sp, Operand(r0, LSL, kPointerSizeLog2));
2315
-
2316
- // Fill all the in-object properties with undefined.
2317
- // r0: argc
2318
- // r1: first argument
2319
- // r3: object size (in words)
2320
- // r4: JSObject (not tagged)
2321
- // r5: First in-object property of JSObject (not tagged)
2322
- // r7: undefined
2323
- // Fill the initialized properties with a constant value or a passed argument
2324
- // depending on the this.x = ...; assignment in the function.
2325
- for (int i = 0; i < shared->this_property_assignments_count(); i++) {
2326
- if (shared->IsThisPropertyAssignmentArgument(i)) {
2327
- Label not_passed, next;
2328
- // Check if the argument assigned to the property is actually passed.
2329
- int arg_number = shared->GetThisPropertyAssignmentArgument(i);
2330
- __ cmp(r0, Operand(arg_number));
2331
- __ b(le, &not_passed);
2332
- // Argument passed - find it on the stack.
2333
- __ ldr(r2, MemOperand(r1, (arg_number + 1) * -kPointerSize));
2334
- __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2335
- __ b(&next);
2336
- __ bind(&not_passed);
2337
- // Set the property to undefined.
2338
- __ str(r7, MemOperand(r5, kPointerSize, PostIndex));
2339
- __ bind(&next);
2340
- } else {
2341
- // Set the property to the constant value.
2342
- Handle<Object> constant(shared->GetThisPropertyAssignmentConstant(i));
2343
- __ mov(r2, Operand(constant));
2344
- __ str(r2, MemOperand(r5, kPointerSize, PostIndex));
2345
- }
2346
- }
2347
-
2348
- // Fill the unused in-object property fields with undefined.
2349
- for (int i = shared->this_property_assignments_count();
2350
- i < shared->CalculateInObjectProperties();
2351
- i++) {
2352
- __ str(r7, MemOperand(r5, kPointerSize, PostIndex));
2353
- }
2354
-
2355
- // r0: argc
2356
- // r4: JSObject (not tagged)
2357
- // Move argc to r1 and the JSObject to return to r0 and tag it.
2358
- __ mov(r1, r0);
2359
- __ mov(r0, r4);
2360
- __ orr(r0, r0, Operand(kHeapObjectTag));
2361
-
2362
- // r0: JSObject
2363
- // r1: argc
2364
- // Remove caller arguments and receiver from the stack and return.
2365
- __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2));
2366
- __ add(sp, sp, Operand(kPointerSize));
2367
- __ IncrementCounter(&Counters::constructed_objects, 1, r1, r2);
2368
- __ IncrementCounter(&Counters::constructed_objects_stub, 1, r1, r2);
2369
- __ Jump(lr);
2370
-
2371
- // Jump to the generic stub in case the specialized code cannot handle the
2372
- // construction.
2373
- __ bind(&generic_stub_call);
2374
- Code* code = Builtins::builtin(Builtins::JSConstructStubGeneric);
2375
- Handle<Code> generic_construct_stub(code);
2376
- __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET);
2377
-
2378
- // Return the generated code.
2379
- return GetCode();
2380
- }
2381
-
2382
-
2383
- #undef __
2384
-
2385
- } } // namespace v8::internal
2386
-
2387
- #endif // V8_TARGET_ARCH_ARM