therubyracer 0.9.0beta4 → 0.9.0beta5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of therubyracer might be problematic. Click here for more details.

Files changed (771) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +0 -11
  3. data/ext/v8/extconf.rb +9 -9
  4. data/ext/v8/v8_external.cpp +40 -10
  5. data/lib/v8/cli.rb +2 -1
  6. data/lib/v8/version.rb +1 -1
  7. data/spec/redjs/.gitignore +1 -0
  8. data/therubyracer.gemspec +2 -3
  9. metadata +33 -779
  10. data/ext/v8/upstream/Makefile +0 -38
  11. data/ext/v8/upstream/detect_cpu.rb +0 -27
  12. data/ext/v8/upstream/fpic-on-linux-amd64.patch +0 -13
  13. data/ext/v8/upstream/scons/CHANGES.txt +0 -5183
  14. data/ext/v8/upstream/scons/LICENSE.txt +0 -20
  15. data/ext/v8/upstream/scons/MANIFEST +0 -202
  16. data/ext/v8/upstream/scons/PKG-INFO +0 -13
  17. data/ext/v8/upstream/scons/README.txt +0 -273
  18. data/ext/v8/upstream/scons/RELEASE.txt +0 -1040
  19. data/ext/v8/upstream/scons/engine/SCons/Action.py +0 -1256
  20. data/ext/v8/upstream/scons/engine/SCons/Builder.py +0 -868
  21. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +0 -217
  22. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +0 -794
  23. data/ext/v8/upstream/scons/engine/SCons/Debug.py +0 -237
  24. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +0 -485
  25. data/ext/v8/upstream/scons/engine/SCons/Environment.py +0 -2327
  26. data/ext/v8/upstream/scons/engine/SCons/Errors.py +0 -207
  27. data/ext/v8/upstream/scons/engine/SCons/Executor.py +0 -636
  28. data/ext/v8/upstream/scons/engine/SCons/Job.py +0 -435
  29. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +0 -292
  30. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +0 -153
  31. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +0 -3220
  32. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +0 -128
  33. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +0 -1341
  34. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +0 -50
  35. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +0 -50
  36. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +0 -50
  37. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +0 -50
  38. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +0 -76
  39. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +0 -74
  40. data/ext/v8/upstream/scons/engine/SCons/PathList.py +0 -232
  41. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +0 -236
  42. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +0 -70
  43. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +0 -55
  44. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +0 -46
  45. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +0 -46
  46. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +0 -44
  47. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +0 -58
  48. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +0 -264
  49. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +0 -50
  50. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +0 -386
  51. data/ext/v8/upstream/scons/engine/SCons/SConf.py +0 -1038
  52. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +0 -381
  53. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +0 -132
  54. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +0 -74
  55. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +0 -111
  56. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +0 -320
  57. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +0 -48
  58. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +0 -378
  59. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +0 -103
  60. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +0 -55
  61. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +0 -415
  62. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +0 -386
  63. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +0 -1360
  64. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +0 -944
  65. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +0 -642
  66. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +0 -414
  67. data/ext/v8/upstream/scons/engine/SCons/Sig.py +0 -63
  68. data/ext/v8/upstream/scons/engine/SCons/Subst.py +0 -911
  69. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +0 -1030
  70. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +0 -61
  71. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +0 -65
  72. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +0 -73
  73. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +0 -247
  74. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +0 -324
  75. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +0 -56
  76. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +0 -61
  77. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +0 -210
  78. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +0 -84
  79. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +0 -321
  80. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +0 -367
  81. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +0 -497
  82. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +0 -104
  83. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +0 -138
  84. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +0 -64
  85. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +0 -64
  86. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +0 -71
  87. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +0 -675
  88. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +0 -82
  89. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +0 -74
  90. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +0 -80
  91. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +0 -76
  92. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +0 -71
  93. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +0 -63
  94. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +0 -78
  95. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +0 -82
  96. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +0 -99
  97. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +0 -114
  98. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +0 -58
  99. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +0 -50
  100. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +0 -224
  101. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +0 -64
  102. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +0 -125
  103. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +0 -94
  104. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +0 -62
  105. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +0 -62
  106. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +0 -63
  107. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +0 -98
  108. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +0 -63
  109. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +0 -90
  110. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +0 -73
  111. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +0 -53
  112. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +0 -80
  113. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +0 -64
  114. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +0 -63
  115. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +0 -81
  116. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +0 -85
  117. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +0 -53
  118. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +0 -77
  119. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +0 -59
  120. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +0 -52
  121. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +0 -72
  122. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +0 -90
  123. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +0 -59
  124. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +0 -60
  125. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +0 -229
  126. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +0 -490
  127. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +0 -71
  128. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +0 -110
  129. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +0 -234
  130. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +0 -138
  131. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +0 -79
  132. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +0 -99
  133. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +0 -121
  134. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +0 -112
  135. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +0 -63
  136. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +0 -77
  137. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +0 -90
  138. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +0 -159
  139. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +0 -64
  140. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +0 -266
  141. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +0 -50
  142. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +0 -269
  143. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +0 -1439
  144. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +0 -208
  145. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +0 -107
  146. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +0 -72
  147. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +0 -314
  148. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +0 -185
  149. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +0 -526
  150. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +0 -367
  151. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +0 -43
  152. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +0 -43
  153. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +0 -43
  154. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +0 -44
  155. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +0 -44
  156. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +0 -44
  157. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +0 -78
  158. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +0 -83
  159. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +0 -108
  160. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +0 -336
  161. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +0 -121
  162. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +0 -70
  163. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +0 -132
  164. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +0 -68
  165. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +0 -58
  166. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +0 -53
  167. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +0 -63
  168. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +0 -67
  169. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +0 -142
  170. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +0 -58
  171. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +0 -63
  172. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +0 -64
  173. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +0 -64
  174. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +0 -77
  175. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +0 -186
  176. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +0 -73
  177. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +0 -805
  178. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +0 -175
  179. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +0 -53
  180. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +0 -100
  181. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +0 -131
  182. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +0 -100
  183. data/ext/v8/upstream/scons/engine/SCons/Util.py +0 -1645
  184. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +0 -91
  185. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +0 -107
  186. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +0 -139
  187. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +0 -109
  188. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +0 -147
  189. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +0 -317
  190. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +0 -228
  191. data/ext/v8/upstream/scons/engine/SCons/__init__.py +0 -49
  192. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +0 -302
  193. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +0 -98
  194. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +0 -91
  195. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +0 -124
  196. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +0 -1725
  197. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +0 -583
  198. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +0 -176
  199. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +0 -325
  200. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +0 -1296
  201. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +0 -382
  202. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +0 -187
  203. data/ext/v8/upstream/scons/engine/SCons/cpp.py +0 -598
  204. data/ext/v8/upstream/scons/engine/SCons/dblite.py +0 -248
  205. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +0 -77
  206. data/ext/v8/upstream/scons/os_spawnv_fix.diff +0 -83
  207. data/ext/v8/upstream/scons/scons-time.1 +0 -1017
  208. data/ext/v8/upstream/scons/scons.1 +0 -15179
  209. data/ext/v8/upstream/scons/sconsign.1 +0 -208
  210. data/ext/v8/upstream/scons/script/scons +0 -184
  211. data/ext/v8/upstream/scons/script/scons-time +0 -1529
  212. data/ext/v8/upstream/scons/script/scons.bat +0 -31
  213. data/ext/v8/upstream/scons/script/sconsign +0 -508
  214. data/ext/v8/upstream/scons/setup.cfg +0 -6
  215. data/ext/v8/upstream/scons/setup.py +0 -427
  216. data/ext/v8/upstream/v8/.gitignore +0 -33
  217. data/ext/v8/upstream/v8/AUTHORS +0 -42
  218. data/ext/v8/upstream/v8/ChangeLog +0 -2663
  219. data/ext/v8/upstream/v8/LICENSE +0 -52
  220. data/ext/v8/upstream/v8/LICENSE.strongtalk +0 -29
  221. data/ext/v8/upstream/v8/LICENSE.v8 +0 -26
  222. data/ext/v8/upstream/v8/LICENSE.valgrind +0 -45
  223. data/ext/v8/upstream/v8/SConstruct +0 -1473
  224. data/ext/v8/upstream/v8/build/README.txt +0 -25
  225. data/ext/v8/upstream/v8/build/all.gyp +0 -18
  226. data/ext/v8/upstream/v8/build/armu.gypi +0 -32
  227. data/ext/v8/upstream/v8/build/common.gypi +0 -82
  228. data/ext/v8/upstream/v8/build/gyp_v8 +0 -145
  229. data/ext/v8/upstream/v8/include/v8-debug.h +0 -394
  230. data/ext/v8/upstream/v8/include/v8-preparser.h +0 -116
  231. data/ext/v8/upstream/v8/include/v8-profiler.h +0 -505
  232. data/ext/v8/upstream/v8/include/v8-testing.h +0 -104
  233. data/ext/v8/upstream/v8/include/v8.h +0 -4000
  234. data/ext/v8/upstream/v8/include/v8stdint.h +0 -53
  235. data/ext/v8/upstream/v8/preparser/SConscript +0 -38
  236. data/ext/v8/upstream/v8/preparser/preparser-process.cc +0 -169
  237. data/ext/v8/upstream/v8/src/SConscript +0 -380
  238. data/ext/v8/upstream/v8/src/accessors.cc +0 -766
  239. data/ext/v8/upstream/v8/src/accessors.h +0 -121
  240. data/ext/v8/upstream/v8/src/allocation-inl.h +0 -49
  241. data/ext/v8/upstream/v8/src/allocation.cc +0 -122
  242. data/ext/v8/upstream/v8/src/allocation.h +0 -143
  243. data/ext/v8/upstream/v8/src/api.cc +0 -5678
  244. data/ext/v8/upstream/v8/src/api.h +0 -572
  245. data/ext/v8/upstream/v8/src/apinatives.js +0 -110
  246. data/ext/v8/upstream/v8/src/apiutils.h +0 -73
  247. data/ext/v8/upstream/v8/src/arguments.h +0 -116
  248. data/ext/v8/upstream/v8/src/arm/assembler-arm-inl.h +0 -353
  249. data/ext/v8/upstream/v8/src/arm/assembler-arm.cc +0 -2877
  250. data/ext/v8/upstream/v8/src/arm/assembler-arm.h +0 -1382
  251. data/ext/v8/upstream/v8/src/arm/builtins-arm.cc +0 -1634
  252. data/ext/v8/upstream/v8/src/arm/code-stubs-arm.cc +0 -6917
  253. data/ext/v8/upstream/v8/src/arm/code-stubs-arm.h +0 -623
  254. data/ext/v8/upstream/v8/src/arm/codegen-arm-inl.h +0 -48
  255. data/ext/v8/upstream/v8/src/arm/codegen-arm.cc +0 -7437
  256. data/ext/v8/upstream/v8/src/arm/codegen-arm.h +0 -595
  257. data/ext/v8/upstream/v8/src/arm/constants-arm.cc +0 -152
  258. data/ext/v8/upstream/v8/src/arm/constants-arm.h +0 -778
  259. data/ext/v8/upstream/v8/src/arm/cpu-arm.cc +0 -149
  260. data/ext/v8/upstream/v8/src/arm/debug-arm.cc +0 -317
  261. data/ext/v8/upstream/v8/src/arm/deoptimizer-arm.cc +0 -737
  262. data/ext/v8/upstream/v8/src/arm/disasm-arm.cc +0 -1503
  263. data/ext/v8/upstream/v8/src/arm/frames-arm.cc +0 -45
  264. data/ext/v8/upstream/v8/src/arm/frames-arm.h +0 -168
  265. data/ext/v8/upstream/v8/src/arm/full-codegen-arm.cc +0 -4374
  266. data/ext/v8/upstream/v8/src/arm/ic-arm.cc +0 -1793
  267. data/ext/v8/upstream/v8/src/arm/jump-target-arm.cc +0 -174
  268. data/ext/v8/upstream/v8/src/arm/lithium-arm.cc +0 -2120
  269. data/ext/v8/upstream/v8/src/arm/lithium-arm.h +0 -2179
  270. data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.cc +0 -4132
  271. data/ext/v8/upstream/v8/src/arm/lithium-codegen-arm.h +0 -329
  272. data/ext/v8/upstream/v8/src/arm/lithium-gap-resolver-arm.cc +0 -305
  273. data/ext/v8/upstream/v8/src/arm/lithium-gap-resolver-arm.h +0 -84
  274. data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.cc +0 -2939
  275. data/ext/v8/upstream/v8/src/arm/macro-assembler-arm.h +0 -1071
  276. data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.cc +0 -1287
  277. data/ext/v8/upstream/v8/src/arm/regexp-macro-assembler-arm.h +0 -253
  278. data/ext/v8/upstream/v8/src/arm/register-allocator-arm-inl.h +0 -100
  279. data/ext/v8/upstream/v8/src/arm/register-allocator-arm.cc +0 -63
  280. data/ext/v8/upstream/v8/src/arm/register-allocator-arm.h +0 -44
  281. data/ext/v8/upstream/v8/src/arm/simulator-arm.cc +0 -3288
  282. data/ext/v8/upstream/v8/src/arm/simulator-arm.h +0 -413
  283. data/ext/v8/upstream/v8/src/arm/stub-cache-arm.cc +0 -4034
  284. data/ext/v8/upstream/v8/src/arm/virtual-frame-arm-inl.h +0 -59
  285. data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.cc +0 -843
  286. data/ext/v8/upstream/v8/src/arm/virtual-frame-arm.h +0 -523
  287. data/ext/v8/upstream/v8/src/array.js +0 -1249
  288. data/ext/v8/upstream/v8/src/assembler.cc +0 -1067
  289. data/ext/v8/upstream/v8/src/assembler.h +0 -823
  290. data/ext/v8/upstream/v8/src/ast-inl.h +0 -112
  291. data/ext/v8/upstream/v8/src/ast.cc +0 -1078
  292. data/ext/v8/upstream/v8/src/ast.h +0 -2234
  293. data/ext/v8/upstream/v8/src/atomicops.h +0 -167
  294. data/ext/v8/upstream/v8/src/atomicops_internals_arm_gcc.h +0 -145
  295. data/ext/v8/upstream/v8/src/atomicops_internals_mips_gcc.h +0 -169
  296. data/ext/v8/upstream/v8/src/atomicops_internals_x86_gcc.cc +0 -126
  297. data/ext/v8/upstream/v8/src/atomicops_internals_x86_gcc.h +0 -287
  298. data/ext/v8/upstream/v8/src/atomicops_internals_x86_macosx.h +0 -301
  299. data/ext/v8/upstream/v8/src/atomicops_internals_x86_msvc.h +0 -203
  300. data/ext/v8/upstream/v8/src/bignum-dtoa.cc +0 -655
  301. data/ext/v8/upstream/v8/src/bignum-dtoa.h +0 -81
  302. data/ext/v8/upstream/v8/src/bignum.cc +0 -768
  303. data/ext/v8/upstream/v8/src/bignum.h +0 -140
  304. data/ext/v8/upstream/v8/src/bootstrapper.cc +0 -2138
  305. data/ext/v8/upstream/v8/src/bootstrapper.h +0 -185
  306. data/ext/v8/upstream/v8/src/builtins.cc +0 -1708
  307. data/ext/v8/upstream/v8/src/builtins.h +0 -368
  308. data/ext/v8/upstream/v8/src/bytecodes-irregexp.h +0 -105
  309. data/ext/v8/upstream/v8/src/cached-powers.cc +0 -177
  310. data/ext/v8/upstream/v8/src/cached-powers.h +0 -65
  311. data/ext/v8/upstream/v8/src/char-predicates-inl.h +0 -94
  312. data/ext/v8/upstream/v8/src/char-predicates.h +0 -65
  313. data/ext/v8/upstream/v8/src/checks.cc +0 -110
  314. data/ext/v8/upstream/v8/src/checks.h +0 -296
  315. data/ext/v8/upstream/v8/src/circular-queue-inl.h +0 -53
  316. data/ext/v8/upstream/v8/src/circular-queue.cc +0 -122
  317. data/ext/v8/upstream/v8/src/circular-queue.h +0 -103
  318. data/ext/v8/upstream/v8/src/code-stubs.cc +0 -240
  319. data/ext/v8/upstream/v8/src/code-stubs.h +0 -971
  320. data/ext/v8/upstream/v8/src/code.h +0 -68
  321. data/ext/v8/upstream/v8/src/codegen-inl.h +0 -68
  322. data/ext/v8/upstream/v8/src/codegen.cc +0 -505
  323. data/ext/v8/upstream/v8/src/codegen.h +0 -245
  324. data/ext/v8/upstream/v8/src/compilation-cache.cc +0 -540
  325. data/ext/v8/upstream/v8/src/compilation-cache.h +0 -287
  326. data/ext/v8/upstream/v8/src/compiler.cc +0 -792
  327. data/ext/v8/upstream/v8/src/compiler.h +0 -307
  328. data/ext/v8/upstream/v8/src/contexts.cc +0 -327
  329. data/ext/v8/upstream/v8/src/contexts.h +0 -382
  330. data/ext/v8/upstream/v8/src/conversions-inl.h +0 -110
  331. data/ext/v8/upstream/v8/src/conversions.cc +0 -1125
  332. data/ext/v8/upstream/v8/src/conversions.h +0 -122
  333. data/ext/v8/upstream/v8/src/counters.cc +0 -93
  334. data/ext/v8/upstream/v8/src/counters.h +0 -254
  335. data/ext/v8/upstream/v8/src/cpu-profiler-inl.h +0 -101
  336. data/ext/v8/upstream/v8/src/cpu-profiler.cc +0 -606
  337. data/ext/v8/upstream/v8/src/cpu-profiler.h +0 -305
  338. data/ext/v8/upstream/v8/src/cpu.h +0 -67
  339. data/ext/v8/upstream/v8/src/d8-debug.cc +0 -367
  340. data/ext/v8/upstream/v8/src/d8-debug.h +0 -158
  341. data/ext/v8/upstream/v8/src/d8-posix.cc +0 -695
  342. data/ext/v8/upstream/v8/src/d8-readline.cc +0 -128
  343. data/ext/v8/upstream/v8/src/d8-windows.cc +0 -42
  344. data/ext/v8/upstream/v8/src/d8.cc +0 -796
  345. data/ext/v8/upstream/v8/src/d8.gyp +0 -88
  346. data/ext/v8/upstream/v8/src/d8.h +0 -231
  347. data/ext/v8/upstream/v8/src/d8.js +0 -2798
  348. data/ext/v8/upstream/v8/src/data-flow.cc +0 -545
  349. data/ext/v8/upstream/v8/src/data-flow.h +0 -379
  350. data/ext/v8/upstream/v8/src/date.js +0 -1103
  351. data/ext/v8/upstream/v8/src/dateparser-inl.h +0 -125
  352. data/ext/v8/upstream/v8/src/dateparser.cc +0 -178
  353. data/ext/v8/upstream/v8/src/dateparser.h +0 -265
  354. data/ext/v8/upstream/v8/src/debug-agent.cc +0 -447
  355. data/ext/v8/upstream/v8/src/debug-agent.h +0 -129
  356. data/ext/v8/upstream/v8/src/debug-debugger.js +0 -2569
  357. data/ext/v8/upstream/v8/src/debug.cc +0 -3188
  358. data/ext/v8/upstream/v8/src/debug.h +0 -1055
  359. data/ext/v8/upstream/v8/src/deoptimizer.cc +0 -1296
  360. data/ext/v8/upstream/v8/src/deoptimizer.h +0 -629
  361. data/ext/v8/upstream/v8/src/disasm.h +0 -80
  362. data/ext/v8/upstream/v8/src/disassembler.cc +0 -339
  363. data/ext/v8/upstream/v8/src/disassembler.h +0 -56
  364. data/ext/v8/upstream/v8/src/diy-fp.cc +0 -58
  365. data/ext/v8/upstream/v8/src/diy-fp.h +0 -117
  366. data/ext/v8/upstream/v8/src/double.h +0 -238
  367. data/ext/v8/upstream/v8/src/dtoa.cc +0 -103
  368. data/ext/v8/upstream/v8/src/dtoa.h +0 -85
  369. data/ext/v8/upstream/v8/src/execution.cc +0 -791
  370. data/ext/v8/upstream/v8/src/execution.h +0 -291
  371. data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.cc +0 -250
  372. data/ext/v8/upstream/v8/src/extensions/experimental/break-iterator.h +0 -89
  373. data/ext/v8/upstream/v8/src/extensions/experimental/experimental.gyp +0 -55
  374. data/ext/v8/upstream/v8/src/extensions/experimental/i18n-extension.cc +0 -284
  375. data/ext/v8/upstream/v8/src/extensions/experimental/i18n-extension.h +0 -64
  376. data/ext/v8/upstream/v8/src/extensions/externalize-string-extension.cc +0 -141
  377. data/ext/v8/upstream/v8/src/extensions/externalize-string-extension.h +0 -50
  378. data/ext/v8/upstream/v8/src/extensions/gc-extension.cc +0 -58
  379. data/ext/v8/upstream/v8/src/extensions/gc-extension.h +0 -49
  380. data/ext/v8/upstream/v8/src/factory.cc +0 -1194
  381. data/ext/v8/upstream/v8/src/factory.h +0 -436
  382. data/ext/v8/upstream/v8/src/fast-dtoa.cc +0 -736
  383. data/ext/v8/upstream/v8/src/fast-dtoa.h +0 -83
  384. data/ext/v8/upstream/v8/src/fixed-dtoa.cc +0 -405
  385. data/ext/v8/upstream/v8/src/fixed-dtoa.h +0 -55
  386. data/ext/v8/upstream/v8/src/flag-definitions.h +0 -556
  387. data/ext/v8/upstream/v8/src/flags.cc +0 -551
  388. data/ext/v8/upstream/v8/src/flags.h +0 -79
  389. data/ext/v8/upstream/v8/src/frame-element.cc +0 -37
  390. data/ext/v8/upstream/v8/src/frame-element.h +0 -269
  391. data/ext/v8/upstream/v8/src/frames-inl.h +0 -236
  392. data/ext/v8/upstream/v8/src/frames.cc +0 -1273
  393. data/ext/v8/upstream/v8/src/frames.h +0 -854
  394. data/ext/v8/upstream/v8/src/full-codegen.cc +0 -1385
  395. data/ext/v8/upstream/v8/src/full-codegen.h +0 -753
  396. data/ext/v8/upstream/v8/src/func-name-inferrer.cc +0 -91
  397. data/ext/v8/upstream/v8/src/func-name-inferrer.h +0 -111
  398. data/ext/v8/upstream/v8/src/gdb-jit.cc +0 -1548
  399. data/ext/v8/upstream/v8/src/gdb-jit.h +0 -138
  400. data/ext/v8/upstream/v8/src/global-handles.cc +0 -596
  401. data/ext/v8/upstream/v8/src/global-handles.h +0 -239
  402. data/ext/v8/upstream/v8/src/globals.h +0 -325
  403. data/ext/v8/upstream/v8/src/handles-inl.h +0 -177
  404. data/ext/v8/upstream/v8/src/handles.cc +0 -965
  405. data/ext/v8/upstream/v8/src/handles.h +0 -372
  406. data/ext/v8/upstream/v8/src/hashmap.cc +0 -230
  407. data/ext/v8/upstream/v8/src/hashmap.h +0 -121
  408. data/ext/v8/upstream/v8/src/heap-inl.h +0 -703
  409. data/ext/v8/upstream/v8/src/heap-profiler.cc +0 -1173
  410. data/ext/v8/upstream/v8/src/heap-profiler.h +0 -396
  411. data/ext/v8/upstream/v8/src/heap.cc +0 -5856
  412. data/ext/v8/upstream/v8/src/heap.h +0 -2264
  413. data/ext/v8/upstream/v8/src/hydrogen-instructions.cc +0 -1639
  414. data/ext/v8/upstream/v8/src/hydrogen-instructions.h +0 -3657
  415. data/ext/v8/upstream/v8/src/hydrogen.cc +0 -6011
  416. data/ext/v8/upstream/v8/src/hydrogen.h +0 -1137
  417. data/ext/v8/upstream/v8/src/ia32/assembler-ia32-inl.h +0 -430
  418. data/ext/v8/upstream/v8/src/ia32/assembler-ia32.cc +0 -2846
  419. data/ext/v8/upstream/v8/src/ia32/assembler-ia32.h +0 -1159
  420. data/ext/v8/upstream/v8/src/ia32/builtins-ia32.cc +0 -1596
  421. data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.cc +0 -6549
  422. data/ext/v8/upstream/v8/src/ia32/code-stubs-ia32.h +0 -495
  423. data/ext/v8/upstream/v8/src/ia32/codegen-ia32-inl.h +0 -46
  424. data/ext/v8/upstream/v8/src/ia32/codegen-ia32.cc +0 -10385
  425. data/ext/v8/upstream/v8/src/ia32/codegen-ia32.h +0 -801
  426. data/ext/v8/upstream/v8/src/ia32/cpu-ia32.cc +0 -88
  427. data/ext/v8/upstream/v8/src/ia32/debug-ia32.cc +0 -312
  428. data/ext/v8/upstream/v8/src/ia32/deoptimizer-ia32.cc +0 -774
  429. data/ext/v8/upstream/v8/src/ia32/disasm-ia32.cc +0 -1620
  430. data/ext/v8/upstream/v8/src/ia32/frames-ia32.cc +0 -45
  431. data/ext/v8/upstream/v8/src/ia32/frames-ia32.h +0 -140
  432. data/ext/v8/upstream/v8/src/ia32/full-codegen-ia32.cc +0 -4357
  433. data/ext/v8/upstream/v8/src/ia32/ic-ia32.cc +0 -1779
  434. data/ext/v8/upstream/v8/src/ia32/jump-target-ia32.cc +0 -437
  435. data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.cc +0 -4158
  436. data/ext/v8/upstream/v8/src/ia32/lithium-codegen-ia32.h +0 -318
  437. data/ext/v8/upstream/v8/src/ia32/lithium-gap-resolver-ia32.cc +0 -466
  438. data/ext/v8/upstream/v8/src/ia32/lithium-gap-resolver-ia32.h +0 -110
  439. data/ext/v8/upstream/v8/src/ia32/lithium-ia32.cc +0 -2181
  440. data/ext/v8/upstream/v8/src/ia32/lithium-ia32.h +0 -2235
  441. data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.cc +0 -2056
  442. data/ext/v8/upstream/v8/src/ia32/macro-assembler-ia32.h +0 -807
  443. data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.cc +0 -1264
  444. data/ext/v8/upstream/v8/src/ia32/regexp-macro-assembler-ia32.h +0 -216
  445. data/ext/v8/upstream/v8/src/ia32/register-allocator-ia32-inl.h +0 -82
  446. data/ext/v8/upstream/v8/src/ia32/register-allocator-ia32.cc +0 -157
  447. data/ext/v8/upstream/v8/src/ia32/register-allocator-ia32.h +0 -43
  448. data/ext/v8/upstream/v8/src/ia32/simulator-ia32.cc +0 -30
  449. data/ext/v8/upstream/v8/src/ia32/simulator-ia32.h +0 -72
  450. data/ext/v8/upstream/v8/src/ia32/stub-cache-ia32.cc +0 -3711
  451. data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.cc +0 -1366
  452. data/ext/v8/upstream/v8/src/ia32/virtual-frame-ia32.h +0 -650
  453. data/ext/v8/upstream/v8/src/ic-inl.h +0 -130
  454. data/ext/v8/upstream/v8/src/ic.cc +0 -2389
  455. data/ext/v8/upstream/v8/src/ic.h +0 -675
  456. data/ext/v8/upstream/v8/src/inspector.cc +0 -63
  457. data/ext/v8/upstream/v8/src/inspector.h +0 -62
  458. data/ext/v8/upstream/v8/src/interpreter-irregexp.cc +0 -659
  459. data/ext/v8/upstream/v8/src/interpreter-irregexp.h +0 -49
  460. data/ext/v8/upstream/v8/src/isolate.cc +0 -883
  461. data/ext/v8/upstream/v8/src/isolate.h +0 -1306
  462. data/ext/v8/upstream/v8/src/json.js +0 -342
  463. data/ext/v8/upstream/v8/src/jsregexp.cc +0 -5371
  464. data/ext/v8/upstream/v8/src/jsregexp.h +0 -1483
  465. data/ext/v8/upstream/v8/src/jump-target-heavy-inl.h +0 -51
  466. data/ext/v8/upstream/v8/src/jump-target-heavy.cc +0 -427
  467. data/ext/v8/upstream/v8/src/jump-target-heavy.h +0 -238
  468. data/ext/v8/upstream/v8/src/jump-target-inl.h +0 -48
  469. data/ext/v8/upstream/v8/src/jump-target-light-inl.h +0 -56
  470. data/ext/v8/upstream/v8/src/jump-target-light.cc +0 -111
  471. data/ext/v8/upstream/v8/src/jump-target-light.h +0 -193
  472. data/ext/v8/upstream/v8/src/jump-target.cc +0 -91
  473. data/ext/v8/upstream/v8/src/jump-target.h +0 -90
  474. data/ext/v8/upstream/v8/src/list-inl.h +0 -206
  475. data/ext/v8/upstream/v8/src/list.h +0 -164
  476. data/ext/v8/upstream/v8/src/lithium-allocator-inl.h +0 -142
  477. data/ext/v8/upstream/v8/src/lithium-allocator.cc +0 -2105
  478. data/ext/v8/upstream/v8/src/lithium-allocator.h +0 -630
  479. data/ext/v8/upstream/v8/src/lithium.cc +0 -169
  480. data/ext/v8/upstream/v8/src/lithium.h +0 -592
  481. data/ext/v8/upstream/v8/src/liveedit-debugger.js +0 -1082
  482. data/ext/v8/upstream/v8/src/liveedit.cc +0 -1693
  483. data/ext/v8/upstream/v8/src/liveedit.h +0 -179
  484. data/ext/v8/upstream/v8/src/liveobjectlist-inl.h +0 -126
  485. data/ext/v8/upstream/v8/src/liveobjectlist.cc +0 -2589
  486. data/ext/v8/upstream/v8/src/liveobjectlist.h +0 -322
  487. data/ext/v8/upstream/v8/src/log-inl.h +0 -59
  488. data/ext/v8/upstream/v8/src/log-utils.cc +0 -423
  489. data/ext/v8/upstream/v8/src/log-utils.h +0 -229
  490. data/ext/v8/upstream/v8/src/log.cc +0 -1666
  491. data/ext/v8/upstream/v8/src/log.h +0 -446
  492. data/ext/v8/upstream/v8/src/macro-assembler.h +0 -120
  493. data/ext/v8/upstream/v8/src/macros.py +0 -178
  494. data/ext/v8/upstream/v8/src/mark-compact.cc +0 -3092
  495. data/ext/v8/upstream/v8/src/mark-compact.h +0 -506
  496. data/ext/v8/upstream/v8/src/math.js +0 -264
  497. data/ext/v8/upstream/v8/src/messages.cc +0 -166
  498. data/ext/v8/upstream/v8/src/messages.h +0 -114
  499. data/ext/v8/upstream/v8/src/messages.js +0 -1090
  500. data/ext/v8/upstream/v8/src/mips/assembler-mips-inl.h +0 -335
  501. data/ext/v8/upstream/v8/src/mips/assembler-mips.cc +0 -2093
  502. data/ext/v8/upstream/v8/src/mips/assembler-mips.h +0 -1066
  503. data/ext/v8/upstream/v8/src/mips/builtins-mips.cc +0 -148
  504. data/ext/v8/upstream/v8/src/mips/code-stubs-mips.cc +0 -752
  505. data/ext/v8/upstream/v8/src/mips/code-stubs-mips.h +0 -511
  506. data/ext/v8/upstream/v8/src/mips/codegen-mips-inl.h +0 -64
  507. data/ext/v8/upstream/v8/src/mips/codegen-mips.cc +0 -1213
  508. data/ext/v8/upstream/v8/src/mips/codegen-mips.h +0 -633
  509. data/ext/v8/upstream/v8/src/mips/constants-mips.cc +0 -352
  510. data/ext/v8/upstream/v8/src/mips/constants-mips.h +0 -723
  511. data/ext/v8/upstream/v8/src/mips/cpu-mips.cc +0 -90
  512. data/ext/v8/upstream/v8/src/mips/debug-mips.cc +0 -155
  513. data/ext/v8/upstream/v8/src/mips/deoptimizer-mips.cc +0 -91
  514. data/ext/v8/upstream/v8/src/mips/disasm-mips.cc +0 -1023
  515. data/ext/v8/upstream/v8/src/mips/frames-mips.cc +0 -48
  516. data/ext/v8/upstream/v8/src/mips/frames-mips.h +0 -179
  517. data/ext/v8/upstream/v8/src/mips/full-codegen-mips.cc +0 -727
  518. data/ext/v8/upstream/v8/src/mips/ic-mips.cc +0 -244
  519. data/ext/v8/upstream/v8/src/mips/jump-target-mips.cc +0 -80
  520. data/ext/v8/upstream/v8/src/mips/lithium-codegen-mips.h +0 -65
  521. data/ext/v8/upstream/v8/src/mips/lithium-mips.h +0 -304
  522. data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.cc +0 -3327
  523. data/ext/v8/upstream/v8/src/mips/macro-assembler-mips.h +0 -1058
  524. data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.cc +0 -478
  525. data/ext/v8/upstream/v8/src/mips/regexp-macro-assembler-mips.h +0 -250
  526. data/ext/v8/upstream/v8/src/mips/register-allocator-mips-inl.h +0 -134
  527. data/ext/v8/upstream/v8/src/mips/register-allocator-mips.cc +0 -63
  528. data/ext/v8/upstream/v8/src/mips/register-allocator-mips.h +0 -47
  529. data/ext/v8/upstream/v8/src/mips/simulator-mips.cc +0 -2438
  530. data/ext/v8/upstream/v8/src/mips/simulator-mips.h +0 -394
  531. data/ext/v8/upstream/v8/src/mips/stub-cache-mips.cc +0 -601
  532. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips-inl.h +0 -58
  533. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.cc +0 -307
  534. data/ext/v8/upstream/v8/src/mips/virtual-frame-mips.h +0 -530
  535. data/ext/v8/upstream/v8/src/mirror-debugger.js +0 -2381
  536. data/ext/v8/upstream/v8/src/mksnapshot.cc +0 -256
  537. data/ext/v8/upstream/v8/src/natives.h +0 -63
  538. data/ext/v8/upstream/v8/src/objects-debug.cc +0 -722
  539. data/ext/v8/upstream/v8/src/objects-inl.h +0 -4166
  540. data/ext/v8/upstream/v8/src/objects-printer.cc +0 -801
  541. data/ext/v8/upstream/v8/src/objects-visiting.cc +0 -142
  542. data/ext/v8/upstream/v8/src/objects-visiting.h +0 -422
  543. data/ext/v8/upstream/v8/src/objects.cc +0 -10296
  544. data/ext/v8/upstream/v8/src/objects.h +0 -6662
  545. data/ext/v8/upstream/v8/src/parser.cc +0 -5168
  546. data/ext/v8/upstream/v8/src/parser.h +0 -823
  547. data/ext/v8/upstream/v8/src/platform-cygwin.cc +0 -811
  548. data/ext/v8/upstream/v8/src/platform-freebsd.cc +0 -854
  549. data/ext/v8/upstream/v8/src/platform-linux.cc +0 -1120
  550. data/ext/v8/upstream/v8/src/platform-macos.cc +0 -865
  551. data/ext/v8/upstream/v8/src/platform-nullos.cc +0 -504
  552. data/ext/v8/upstream/v8/src/platform-openbsd.cc +0 -672
  553. data/ext/v8/upstream/v8/src/platform-posix.cc +0 -424
  554. data/ext/v8/upstream/v8/src/platform-solaris.cc +0 -796
  555. data/ext/v8/upstream/v8/src/platform-tls-mac.h +0 -62
  556. data/ext/v8/upstream/v8/src/platform-tls-win32.h +0 -62
  557. data/ext/v8/upstream/v8/src/platform-tls.h +0 -50
  558. data/ext/v8/upstream/v8/src/platform-win32.cc +0 -2072
  559. data/ext/v8/upstream/v8/src/platform.h +0 -693
  560. data/ext/v8/upstream/v8/src/preparse-data.cc +0 -185
  561. data/ext/v8/upstream/v8/src/preparse-data.h +0 -249
  562. data/ext/v8/upstream/v8/src/preparser-api.cc +0 -219
  563. data/ext/v8/upstream/v8/src/preparser.cc +0 -1205
  564. data/ext/v8/upstream/v8/src/preparser.h +0 -278
  565. data/ext/v8/upstream/v8/src/prettyprinter.cc +0 -1530
  566. data/ext/v8/upstream/v8/src/prettyprinter.h +0 -223
  567. data/ext/v8/upstream/v8/src/profile-generator-inl.h +0 -128
  568. data/ext/v8/upstream/v8/src/profile-generator.cc +0 -3095
  569. data/ext/v8/upstream/v8/src/profile-generator.h +0 -1125
  570. data/ext/v8/upstream/v8/src/property.cc +0 -102
  571. data/ext/v8/upstream/v8/src/property.h +0 -348
  572. data/ext/v8/upstream/v8/src/regexp-macro-assembler-irregexp-inl.h +0 -78
  573. data/ext/v8/upstream/v8/src/regexp-macro-assembler-irregexp.cc +0 -470
  574. data/ext/v8/upstream/v8/src/regexp-macro-assembler-irregexp.h +0 -142
  575. data/ext/v8/upstream/v8/src/regexp-macro-assembler-tracer.cc +0 -373
  576. data/ext/v8/upstream/v8/src/regexp-macro-assembler-tracer.h +0 -104
  577. data/ext/v8/upstream/v8/src/regexp-macro-assembler.cc +0 -266
  578. data/ext/v8/upstream/v8/src/regexp-macro-assembler.h +0 -236
  579. data/ext/v8/upstream/v8/src/regexp-stack.cc +0 -111
  580. data/ext/v8/upstream/v8/src/regexp-stack.h +0 -147
  581. data/ext/v8/upstream/v8/src/regexp.js +0 -483
  582. data/ext/v8/upstream/v8/src/register-allocator-inl.h +0 -141
  583. data/ext/v8/upstream/v8/src/register-allocator.cc +0 -98
  584. data/ext/v8/upstream/v8/src/register-allocator.h +0 -310
  585. data/ext/v8/upstream/v8/src/rewriter.cc +0 -1024
  586. data/ext/v8/upstream/v8/src/rewriter.h +0 -59
  587. data/ext/v8/upstream/v8/src/runtime-profiler.cc +0 -478
  588. data/ext/v8/upstream/v8/src/runtime-profiler.h +0 -192
  589. data/ext/v8/upstream/v8/src/runtime.cc +0 -11949
  590. data/ext/v8/upstream/v8/src/runtime.h +0 -643
  591. data/ext/v8/upstream/v8/src/runtime.js +0 -643
  592. data/ext/v8/upstream/v8/src/safepoint-table.cc +0 -256
  593. data/ext/v8/upstream/v8/src/safepoint-table.h +0 -269
  594. data/ext/v8/upstream/v8/src/scanner-base.cc +0 -964
  595. data/ext/v8/upstream/v8/src/scanner-base.h +0 -664
  596. data/ext/v8/upstream/v8/src/scanner.cc +0 -584
  597. data/ext/v8/upstream/v8/src/scanner.h +0 -196
  598. data/ext/v8/upstream/v8/src/scopeinfo.cc +0 -631
  599. data/ext/v8/upstream/v8/src/scopeinfo.h +0 -249
  600. data/ext/v8/upstream/v8/src/scopes.cc +0 -1093
  601. data/ext/v8/upstream/v8/src/scopes.h +0 -508
  602. data/ext/v8/upstream/v8/src/serialize.cc +0 -1574
  603. data/ext/v8/upstream/v8/src/serialize.h +0 -589
  604. data/ext/v8/upstream/v8/src/shell.h +0 -55
  605. data/ext/v8/upstream/v8/src/simulator.h +0 -43
  606. data/ext/v8/upstream/v8/src/small-pointer-list.h +0 -163
  607. data/ext/v8/upstream/v8/src/smart-pointer.h +0 -109
  608. data/ext/v8/upstream/v8/src/snapshot-common.cc +0 -82
  609. data/ext/v8/upstream/v8/src/snapshot-empty.cc +0 -50
  610. data/ext/v8/upstream/v8/src/snapshot.h +0 -73
  611. data/ext/v8/upstream/v8/src/spaces-inl.h +0 -529
  612. data/ext/v8/upstream/v8/src/spaces.cc +0 -3147
  613. data/ext/v8/upstream/v8/src/spaces.h +0 -2368
  614. data/ext/v8/upstream/v8/src/splay-tree-inl.h +0 -310
  615. data/ext/v8/upstream/v8/src/splay-tree.h +0 -203
  616. data/ext/v8/upstream/v8/src/string-search.cc +0 -41
  617. data/ext/v8/upstream/v8/src/string-search.h +0 -568
  618. data/ext/v8/upstream/v8/src/string-stream.cc +0 -592
  619. data/ext/v8/upstream/v8/src/string-stream.h +0 -191
  620. data/ext/v8/upstream/v8/src/string.js +0 -915
  621. data/ext/v8/upstream/v8/src/strtod.cc +0 -440
  622. data/ext/v8/upstream/v8/src/strtod.h +0 -40
  623. data/ext/v8/upstream/v8/src/stub-cache.cc +0 -1940
  624. data/ext/v8/upstream/v8/src/stub-cache.h +0 -866
  625. data/ext/v8/upstream/v8/src/third_party/valgrind/valgrind.h +0 -3925
  626. data/ext/v8/upstream/v8/src/token.cc +0 -63
  627. data/ext/v8/upstream/v8/src/token.h +0 -288
  628. data/ext/v8/upstream/v8/src/top.cc +0 -983
  629. data/ext/v8/upstream/v8/src/type-info.cc +0 -472
  630. data/ext/v8/upstream/v8/src/type-info.h +0 -290
  631. data/ext/v8/upstream/v8/src/unbound-queue-inl.h +0 -95
  632. data/ext/v8/upstream/v8/src/unbound-queue.h +0 -67
  633. data/ext/v8/upstream/v8/src/unicode-inl.h +0 -238
  634. data/ext/v8/upstream/v8/src/unicode.cc +0 -1624
  635. data/ext/v8/upstream/v8/src/unicode.h +0 -280
  636. data/ext/v8/upstream/v8/src/uri.js +0 -402
  637. data/ext/v8/upstream/v8/src/utils.cc +0 -371
  638. data/ext/v8/upstream/v8/src/utils.h +0 -796
  639. data/ext/v8/upstream/v8/src/v8-counters.cc +0 -62
  640. data/ext/v8/upstream/v8/src/v8-counters.h +0 -311
  641. data/ext/v8/upstream/v8/src/v8.cc +0 -215
  642. data/ext/v8/upstream/v8/src/v8.h +0 -130
  643. data/ext/v8/upstream/v8/src/v8checks.h +0 -64
  644. data/ext/v8/upstream/v8/src/v8dll-main.cc +0 -39
  645. data/ext/v8/upstream/v8/src/v8globals.h +0 -486
  646. data/ext/v8/upstream/v8/src/v8memory.h +0 -82
  647. data/ext/v8/upstream/v8/src/v8natives.js +0 -1293
  648. data/ext/v8/upstream/v8/src/v8preparserdll-main.cc +0 -39
  649. data/ext/v8/upstream/v8/src/v8threads.cc +0 -453
  650. data/ext/v8/upstream/v8/src/v8threads.h +0 -164
  651. data/ext/v8/upstream/v8/src/v8utils.h +0 -317
  652. data/ext/v8/upstream/v8/src/variables.cc +0 -132
  653. data/ext/v8/upstream/v8/src/variables.h +0 -212
  654. data/ext/v8/upstream/v8/src/version.cc +0 -116
  655. data/ext/v8/upstream/v8/src/version.h +0 -68
  656. data/ext/v8/upstream/v8/src/virtual-frame-heavy-inl.h +0 -190
  657. data/ext/v8/upstream/v8/src/virtual-frame-heavy.cc +0 -312
  658. data/ext/v8/upstream/v8/src/virtual-frame-inl.h +0 -39
  659. data/ext/v8/upstream/v8/src/virtual-frame-light-inl.h +0 -171
  660. data/ext/v8/upstream/v8/src/virtual-frame-light.cc +0 -52
  661. data/ext/v8/upstream/v8/src/virtual-frame.cc +0 -49
  662. data/ext/v8/upstream/v8/src/virtual-frame.h +0 -59
  663. data/ext/v8/upstream/v8/src/vm-state-inl.h +0 -138
  664. data/ext/v8/upstream/v8/src/vm-state.h +0 -70
  665. data/ext/v8/upstream/v8/src/win32-headers.h +0 -96
  666. data/ext/v8/upstream/v8/src/x64/assembler-x64-inl.h +0 -456
  667. data/ext/v8/upstream/v8/src/x64/assembler-x64.cc +0 -2954
  668. data/ext/v8/upstream/v8/src/x64/assembler-x64.h +0 -1630
  669. data/ext/v8/upstream/v8/src/x64/builtins-x64.cc +0 -1493
  670. data/ext/v8/upstream/v8/src/x64/code-stubs-x64.cc +0 -5132
  671. data/ext/v8/upstream/v8/src/x64/code-stubs-x64.h +0 -477
  672. data/ext/v8/upstream/v8/src/x64/codegen-x64-inl.h +0 -46
  673. data/ext/v8/upstream/v8/src/x64/codegen-x64.cc +0 -8843
  674. data/ext/v8/upstream/v8/src/x64/codegen-x64.h +0 -753
  675. data/ext/v8/upstream/v8/src/x64/cpu-x64.cc +0 -88
  676. data/ext/v8/upstream/v8/src/x64/debug-x64.cc +0 -318
  677. data/ext/v8/upstream/v8/src/x64/deoptimizer-x64.cc +0 -815
  678. data/ext/v8/upstream/v8/src/x64/disasm-x64.cc +0 -1752
  679. data/ext/v8/upstream/v8/src/x64/frames-x64.cc +0 -45
  680. data/ext/v8/upstream/v8/src/x64/frames-x64.h +0 -130
  681. data/ext/v8/upstream/v8/src/x64/full-codegen-x64.cc +0 -4339
  682. data/ext/v8/upstream/v8/src/x64/ic-x64.cc +0 -1752
  683. data/ext/v8/upstream/v8/src/x64/jump-target-x64.cc +0 -437
  684. data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.cc +0 -3970
  685. data/ext/v8/upstream/v8/src/x64/lithium-codegen-x64.h +0 -318
  686. data/ext/v8/upstream/v8/src/x64/lithium-gap-resolver-x64.cc +0 -320
  687. data/ext/v8/upstream/v8/src/x64/lithium-gap-resolver-x64.h +0 -74
  688. data/ext/v8/upstream/v8/src/x64/lithium-x64.cc +0 -2115
  689. data/ext/v8/upstream/v8/src/x64/lithium-x64.h +0 -2161
  690. data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.cc +0 -2911
  691. data/ext/v8/upstream/v8/src/x64/macro-assembler-x64.h +0 -1984
  692. data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.cc +0 -1398
  693. data/ext/v8/upstream/v8/src/x64/regexp-macro-assembler-x64.h +0 -282
  694. data/ext/v8/upstream/v8/src/x64/register-allocator-x64-inl.h +0 -87
  695. data/ext/v8/upstream/v8/src/x64/register-allocator-x64.cc +0 -95
  696. data/ext/v8/upstream/v8/src/x64/register-allocator-x64.h +0 -43
  697. data/ext/v8/upstream/v8/src/x64/simulator-x64.cc +0 -27
  698. data/ext/v8/upstream/v8/src/x64/simulator-x64.h +0 -71
  699. data/ext/v8/upstream/v8/src/x64/stub-cache-x64.cc +0 -3460
  700. data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.cc +0 -1296
  701. data/ext/v8/upstream/v8/src/x64/virtual-frame-x64.h +0 -597
  702. data/ext/v8/upstream/v8/src/zone-inl.h +0 -129
  703. data/ext/v8/upstream/v8/src/zone.cc +0 -196
  704. data/ext/v8/upstream/v8/src/zone.h +0 -236
  705. data/ext/v8/upstream/v8/tools/codemap.js +0 -265
  706. data/ext/v8/upstream/v8/tools/consarray.js +0 -93
  707. data/ext/v8/upstream/v8/tools/csvparser.js +0 -78
  708. data/ext/v8/upstream/v8/tools/disasm.py +0 -92
  709. data/ext/v8/upstream/v8/tools/freebsd-tick-processor +0 -10
  710. data/ext/v8/upstream/v8/tools/gc-nvp-trace-processor.py +0 -328
  711. data/ext/v8/upstream/v8/tools/generate-ten-powers.scm +0 -286
  712. data/ext/v8/upstream/v8/tools/grokdump.py +0 -840
  713. data/ext/v8/upstream/v8/tools/gyp/v8.gyp +0 -844
  714. data/ext/v8/upstream/v8/tools/js2c.py +0 -380
  715. data/ext/v8/upstream/v8/tools/jsmin.py +0 -280
  716. data/ext/v8/upstream/v8/tools/linux-tick-processor +0 -35
  717. data/ext/v8/upstream/v8/tools/ll_prof.py +0 -919
  718. data/ext/v8/upstream/v8/tools/logreader.js +0 -185
  719. data/ext/v8/upstream/v8/tools/mac-nm +0 -18
  720. data/ext/v8/upstream/v8/tools/mac-tick-processor +0 -6
  721. data/ext/v8/upstream/v8/tools/oom_dump/README +0 -31
  722. data/ext/v8/upstream/v8/tools/oom_dump/SConstruct +0 -42
  723. data/ext/v8/upstream/v8/tools/oom_dump/oom_dump.cc +0 -288
  724. data/ext/v8/upstream/v8/tools/presubmit.py +0 -305
  725. data/ext/v8/upstream/v8/tools/process-heap-prof.py +0 -120
  726. data/ext/v8/upstream/v8/tools/profile.js +0 -751
  727. data/ext/v8/upstream/v8/tools/profile_view.js +0 -219
  728. data/ext/v8/upstream/v8/tools/run-valgrind.py +0 -77
  729. data/ext/v8/upstream/v8/tools/splaytree.js +0 -316
  730. data/ext/v8/upstream/v8/tools/stats-viewer.py +0 -468
  731. data/ext/v8/upstream/v8/tools/test.py +0 -1490
  732. data/ext/v8/upstream/v8/tools/tickprocessor-driver.js +0 -59
  733. data/ext/v8/upstream/v8/tools/tickprocessor.js +0 -877
  734. data/ext/v8/upstream/v8/tools/utils.py +0 -96
  735. data/ext/v8/upstream/v8/tools/visual_studio/README.txt +0 -70
  736. data/ext/v8/upstream/v8/tools/visual_studio/arm.vsprops +0 -14
  737. data/ext/v8/upstream/v8/tools/visual_studio/common.vsprops +0 -34
  738. data/ext/v8/upstream/v8/tools/visual_studio/d8.vcproj +0 -193
  739. data/ext/v8/upstream/v8/tools/visual_studio/d8_arm.vcproj +0 -193
  740. data/ext/v8/upstream/v8/tools/visual_studio/d8_x64.vcproj +0 -209
  741. data/ext/v8/upstream/v8/tools/visual_studio/d8js2c.cmd +0 -6
  742. data/ext/v8/upstream/v8/tools/visual_studio/debug.vsprops +0 -17
  743. data/ext/v8/upstream/v8/tools/visual_studio/ia32.vsprops +0 -17
  744. data/ext/v8/upstream/v8/tools/visual_studio/js2c.cmd +0 -6
  745. data/ext/v8/upstream/v8/tools/visual_studio/release.vsprops +0 -24
  746. data/ext/v8/upstream/v8/tools/visual_studio/v8.sln +0 -101
  747. data/ext/v8/upstream/v8/tools/visual_studio/v8.vcproj +0 -227
  748. data/ext/v8/upstream/v8/tools/visual_studio/v8_arm.sln +0 -74
  749. data/ext/v8/upstream/v8/tools/visual_studio/v8_arm.vcproj +0 -227
  750. data/ext/v8/upstream/v8/tools/visual_studio/v8_base.vcproj +0 -1308
  751. data/ext/v8/upstream/v8/tools/visual_studio/v8_base_arm.vcproj +0 -1238
  752. data/ext/v8/upstream/v8/tools/visual_studio/v8_base_x64.vcproj +0 -1300
  753. data/ext/v8/upstream/v8/tools/visual_studio/v8_cctest.vcproj +0 -265
  754. data/ext/v8/upstream/v8/tools/visual_studio/v8_cctest_arm.vcproj +0 -249
  755. data/ext/v8/upstream/v8/tools/visual_studio/v8_cctest_x64.vcproj +0 -257
  756. data/ext/v8/upstream/v8/tools/visual_studio/v8_mksnapshot.vcproj +0 -145
  757. data/ext/v8/upstream/v8/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -145
  758. data/ext/v8/upstream/v8/tools/visual_studio/v8_process_sample.vcproj +0 -145
  759. data/ext/v8/upstream/v8/tools/visual_studio/v8_process_sample_arm.vcproj +0 -145
  760. data/ext/v8/upstream/v8/tools/visual_studio/v8_process_sample_x64.vcproj +0 -161
  761. data/ext/v8/upstream/v8/tools/visual_studio/v8_shell_sample.vcproj +0 -147
  762. data/ext/v8/upstream/v8/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -147
  763. data/ext/v8/upstream/v8/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -163
  764. data/ext/v8/upstream/v8/tools/visual_studio/v8_snapshot.vcproj +0 -142
  765. data/ext/v8/upstream/v8/tools/visual_studio/v8_snapshot_cc.vcproj +0 -92
  766. data/ext/v8/upstream/v8/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -92
  767. data/ext/v8/upstream/v8/tools/visual_studio/v8_snapshot_x64.vcproj +0 -142
  768. data/ext/v8/upstream/v8/tools/visual_studio/v8_x64.sln +0 -101
  769. data/ext/v8/upstream/v8/tools/visual_studio/v8_x64.vcproj +0 -227
  770. data/ext/v8/upstream/v8/tools/visual_studio/x64.vsprops +0 -18
  771. data/ext/v8/upstream/v8/tools/windows-tick-processor.bat +0 -30
@@ -1,436 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
- #ifndef V8_FACTORY_H_
29
- #define V8_FACTORY_H_
30
-
31
- #include "globals.h"
32
- #include "handles.h"
33
- #include "heap.h"
34
-
35
- namespace v8 {
36
- namespace internal {
37
-
38
- // Interface for handle based allocation.
39
-
40
- class Factory {
41
- public:
42
- // Allocate a new fixed array with undefined entries.
43
- Handle<FixedArray> NewFixedArray(
44
- int size,
45
- PretenureFlag pretenure = NOT_TENURED);
46
-
47
- // Allocate a new fixed array with non-existing entries (the hole).
48
- Handle<FixedArray> NewFixedArrayWithHoles(
49
- int size,
50
- PretenureFlag pretenure = NOT_TENURED);
51
-
52
- Handle<NumberDictionary> NewNumberDictionary(int at_least_space_for);
53
-
54
- Handle<StringDictionary> NewStringDictionary(int at_least_space_for);
55
-
56
- Handle<DescriptorArray> NewDescriptorArray(int number_of_descriptors);
57
- Handle<DeoptimizationInputData> NewDeoptimizationInputData(
58
- int deopt_entry_count,
59
- PretenureFlag pretenure);
60
- Handle<DeoptimizationOutputData> NewDeoptimizationOutputData(
61
- int deopt_entry_count,
62
- PretenureFlag pretenure);
63
-
64
- Handle<String> LookupSymbol(Vector<const char> str);
65
- Handle<String> LookupAsciiSymbol(Vector<const char> str);
66
- Handle<String> LookupTwoByteSymbol(Vector<const uc16> str);
67
- Handle<String> LookupAsciiSymbol(const char* str) {
68
- return LookupSymbol(CStrVector(str));
69
- }
70
-
71
-
72
- // String creation functions. Most of the string creation functions take
73
- // a Heap::PretenureFlag argument to optionally request that they be
74
- // allocated in the old generation. The pretenure flag defaults to
75
- // DONT_TENURE.
76
- //
77
- // Creates a new String object. There are two String encodings: ASCII and
78
- // two byte. One should choose between the three string factory functions
79
- // based on the encoding of the string buffer that the string is
80
- // initialized from.
81
- // - ...FromAscii initializes the string from a buffer that is ASCII
82
- // encoded (it does not check that the buffer is ASCII encoded) and
83
- // the result will be ASCII encoded.
84
- // - ...FromUtf8 initializes the string from a buffer that is UTF-8
85
- // encoded. If the characters are all single-byte characters, the
86
- // result will be ASCII encoded, otherwise it will converted to two
87
- // byte.
88
- // - ...FromTwoByte initializes the string from a buffer that is two
89
- // byte encoded. If the characters are all single-byte characters,
90
- // the result will be converted to ASCII, otherwise it will be left as
91
- // two byte.
92
- //
93
- // ASCII strings are pretenured when used as keys in the SourceCodeCache.
94
- Handle<String> NewStringFromAscii(
95
- Vector<const char> str,
96
- PretenureFlag pretenure = NOT_TENURED);
97
-
98
- // UTF8 strings are pretenured when used for regexp literal patterns and
99
- // flags in the parser.
100
- Handle<String> NewStringFromUtf8(
101
- Vector<const char> str,
102
- PretenureFlag pretenure = NOT_TENURED);
103
-
104
- Handle<String> NewStringFromTwoByte(
105
- Vector<const uc16> str,
106
- PretenureFlag pretenure = NOT_TENURED);
107
-
108
- // Allocates and partially initializes an ASCII or TwoByte String. The
109
- // characters of the string are uninitialized. Currently used in regexp code
110
- // only, where they are pretenured.
111
- Handle<String> NewRawAsciiString(
112
- int length,
113
- PretenureFlag pretenure = NOT_TENURED);
114
- Handle<String> NewRawTwoByteString(
115
- int length,
116
- PretenureFlag pretenure = NOT_TENURED);
117
-
118
- // Create a new cons string object which consists of a pair of strings.
119
- Handle<String> NewConsString(Handle<String> first,
120
- Handle<String> second);
121
-
122
- // Create a new string object which holds a substring of a string.
123
- Handle<String> NewSubString(Handle<String> str,
124
- int begin,
125
- int end);
126
-
127
- // Creates a new external String object. There are two String encodings
128
- // in the system: ASCII and two byte. Unlike other String types, it does
129
- // not make sense to have a UTF-8 factory function for external strings,
130
- // because we cannot change the underlying buffer.
131
- Handle<String> NewExternalStringFromAscii(
132
- ExternalAsciiString::Resource* resource);
133
- Handle<String> NewExternalStringFromTwoByte(
134
- ExternalTwoByteString::Resource* resource);
135
-
136
- // Create a global (but otherwise uninitialized) context.
137
- Handle<Context> NewGlobalContext();
138
-
139
- // Create a function context.
140
- Handle<Context> NewFunctionContext(int length,
141
- Handle<JSFunction> closure);
142
-
143
- // Create a 'with' context.
144
- Handle<Context> NewWithContext(Handle<Context> previous,
145
- Handle<JSObject> extension,
146
- bool is_catch_context);
147
-
148
- // Return the Symbol matching the passed in string.
149
- Handle<String> SymbolFromString(Handle<String> value);
150
-
151
- // Allocate a new struct. The struct is pretenured (allocated directly in
152
- // the old generation).
153
- Handle<Struct> NewStruct(InstanceType type);
154
-
155
- Handle<AccessorInfo> NewAccessorInfo();
156
-
157
- Handle<Script> NewScript(Handle<String> source);
158
-
159
- // Proxies are pretenured when allocated by the bootstrapper.
160
- Handle<Proxy> NewProxy(Address addr,
161
- PretenureFlag pretenure = NOT_TENURED);
162
-
163
- // Allocate a new proxy. The proxy is pretenured (allocated directly in
164
- // the old generation).
165
- Handle<Proxy> NewProxy(const AccessorDescriptor* proxy);
166
-
167
- Handle<ByteArray> NewByteArray(int length,
168
- PretenureFlag pretenure = NOT_TENURED);
169
-
170
- Handle<ExternalArray> NewExternalArray(
171
- int length,
172
- ExternalArrayType array_type,
173
- void* external_pointer,
174
- PretenureFlag pretenure = NOT_TENURED);
175
-
176
- Handle<JSGlobalPropertyCell> NewJSGlobalPropertyCell(
177
- Handle<Object> value);
178
-
179
- Handle<Map> NewMap(InstanceType type, int instance_size);
180
-
181
- Handle<JSObject> NewFunctionPrototype(Handle<JSFunction> function);
182
-
183
- Handle<Map> CopyMapDropDescriptors(Handle<Map> map);
184
-
185
- // Copy the map adding more inobject properties if possible without
186
- // overflowing the instance size.
187
- Handle<Map> CopyMap(Handle<Map> map, int extra_inobject_props);
188
-
189
- Handle<Map> CopyMapDropTransitions(Handle<Map> map);
190
-
191
- Handle<Map> GetFastElementsMap(Handle<Map> map);
192
-
193
- Handle<Map> GetSlowElementsMap(Handle<Map> map);
194
-
195
- Handle<Map> GetExternalArrayElementsMap(Handle<Map> map,
196
- ExternalArrayType array_type,
197
- bool safe_to_add_transition);
198
-
199
- Handle<FixedArray> CopyFixedArray(Handle<FixedArray> array);
200
-
201
- // Numbers (eg, literals) are pretenured by the parser.
202
- Handle<Object> NewNumber(double value,
203
- PretenureFlag pretenure = NOT_TENURED);
204
-
205
- Handle<Object> NewNumberFromInt(int value);
206
- Handle<Object> NewNumberFromUint(uint32_t value);
207
-
208
- // These objects are used by the api to create env-independent data
209
- // structures in the heap.
210
- Handle<JSObject> NewNeanderObject();
211
-
212
- Handle<JSObject> NewArgumentsObject(Handle<Object> callee, int length);
213
-
214
- // JS objects are pretenured when allocated by the bootstrapper and
215
- // runtime.
216
- Handle<JSObject> NewJSObject(Handle<JSFunction> constructor,
217
- PretenureFlag pretenure = NOT_TENURED);
218
-
219
- // Global objects are pretenured.
220
- Handle<GlobalObject> NewGlobalObject(Handle<JSFunction> constructor);
221
-
222
- // JS objects are pretenured when allocated by the bootstrapper and
223
- // runtime.
224
- Handle<JSObject> NewJSObjectFromMap(Handle<Map> map);
225
-
226
- // JS arrays are pretenured when allocated by the parser.
227
- Handle<JSArray> NewJSArray(int capacity,
228
- PretenureFlag pretenure = NOT_TENURED);
229
-
230
- Handle<JSArray> NewJSArrayWithElements(
231
- Handle<FixedArray> elements,
232
- PretenureFlag pretenure = NOT_TENURED);
233
-
234
- Handle<JSFunction> NewFunction(Handle<String> name,
235
- Handle<Object> prototype);
236
-
237
- Handle<JSFunction> NewFunctionWithoutPrototype(
238
- Handle<String> name,
239
- StrictModeFlag strict_mode);
240
-
241
- Handle<JSFunction> NewFunction(Handle<Object> super, bool is_global);
242
-
243
- Handle<JSFunction> BaseNewFunctionFromSharedFunctionInfo(
244
- Handle<SharedFunctionInfo> function_info,
245
- Handle<Map> function_map,
246
- PretenureFlag pretenure);
247
-
248
- Handle<JSFunction> NewFunctionFromSharedFunctionInfo(
249
- Handle<SharedFunctionInfo> function_info,
250
- Handle<Context> context,
251
- PretenureFlag pretenure = TENURED);
252
-
253
- Handle<Code> NewCode(const CodeDesc& desc,
254
- Code::Flags flags,
255
- Handle<Object> self_reference,
256
- bool immovable = false);
257
-
258
- Handle<Code> CopyCode(Handle<Code> code);
259
-
260
- Handle<Code> CopyCode(Handle<Code> code, Vector<byte> reloc_info);
261
-
262
- Handle<Object> ToObject(Handle<Object> object);
263
- Handle<Object> ToObject(Handle<Object> object,
264
- Handle<Context> global_context);
265
-
266
- // Interface for creating error objects.
267
-
268
- Handle<Object> NewError(const char* maker, const char* type,
269
- Handle<JSArray> args);
270
- Handle<Object> NewError(const char* maker, const char* type,
271
- Vector< Handle<Object> > args);
272
- Handle<Object> NewError(const char* type,
273
- Vector< Handle<Object> > args);
274
- Handle<Object> NewError(Handle<String> message);
275
- Handle<Object> NewError(const char* constructor,
276
- Handle<String> message);
277
-
278
- Handle<Object> NewTypeError(const char* type,
279
- Vector< Handle<Object> > args);
280
- Handle<Object> NewTypeError(Handle<String> message);
281
-
282
- Handle<Object> NewRangeError(const char* type,
283
- Vector< Handle<Object> > args);
284
- Handle<Object> NewRangeError(Handle<String> message);
285
-
286
- Handle<Object> NewSyntaxError(const char* type, Handle<JSArray> args);
287
- Handle<Object> NewSyntaxError(Handle<String> message);
288
-
289
- Handle<Object> NewReferenceError(const char* type,
290
- Vector< Handle<Object> > args);
291
- Handle<Object> NewReferenceError(Handle<String> message);
292
-
293
- Handle<Object> NewEvalError(const char* type,
294
- Vector< Handle<Object> > args);
295
-
296
-
297
- Handle<JSFunction> NewFunction(Handle<String> name,
298
- InstanceType type,
299
- int instance_size,
300
- Handle<Code> code,
301
- bool force_initial_map);
302
-
303
- Handle<JSFunction> NewFunction(Handle<Map> function_map,
304
- Handle<SharedFunctionInfo> shared, Handle<Object> prototype);
305
-
306
-
307
- Handle<JSFunction> NewFunctionWithPrototype(Handle<String> name,
308
- InstanceType type,
309
- int instance_size,
310
- Handle<JSObject> prototype,
311
- Handle<Code> code,
312
- bool force_initial_map);
313
-
314
- Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
315
- Handle<Code> code);
316
-
317
- Handle<DescriptorArray> CopyAppendProxyDescriptor(
318
- Handle<DescriptorArray> array,
319
- Handle<String> key,
320
- Handle<Object> value,
321
- PropertyAttributes attributes);
322
-
323
- Handle<String> NumberToString(Handle<Object> number);
324
-
325
- enum ApiInstanceType {
326
- JavaScriptObject,
327
- InnerGlobalObject,
328
- OuterGlobalObject
329
- };
330
-
331
- Handle<JSFunction> CreateApiFunction(
332
- Handle<FunctionTemplateInfo> data,
333
- ApiInstanceType type = JavaScriptObject);
334
-
335
- Handle<JSFunction> InstallMembers(Handle<JSFunction> function);
336
-
337
- // Installs interceptors on the instance. 'desc' is a function template,
338
- // and instance is an object instance created by the function of this
339
- // function template.
340
- void ConfigureInstance(Handle<FunctionTemplateInfo> desc,
341
- Handle<JSObject> instance,
342
- bool* pending_exception);
343
-
344
- #define ROOT_ACCESSOR(type, name, camel_name) \
345
- inline Handle<type> name() { \
346
- return Handle<type>(BitCast<type**>( \
347
- &isolate()->heap()->roots_[Heap::k##camel_name##RootIndex])); \
348
- }
349
- ROOT_LIST(ROOT_ACCESSOR)
350
- #undef ROOT_ACCESSOR_ACCESSOR
351
-
352
- #define SYMBOL_ACCESSOR(name, str) \
353
- inline Handle<String> name() { \
354
- return Handle<String>(BitCast<String**>( \
355
- &isolate()->heap()->roots_[Heap::k##name##RootIndex])); \
356
- }
357
- SYMBOL_LIST(SYMBOL_ACCESSOR)
358
- #undef SYMBOL_ACCESSOR
359
-
360
- Handle<String> hidden_symbol() {
361
- return Handle<String>(&isolate()->heap()->hidden_symbol_);
362
- }
363
-
364
- Handle<SharedFunctionInfo> NewSharedFunctionInfo(
365
- Handle<String> name,
366
- int number_of_literals,
367
- Handle<Code> code,
368
- Handle<SerializedScopeInfo> scope_info);
369
- Handle<SharedFunctionInfo> NewSharedFunctionInfo(Handle<String> name);
370
-
371
- Handle<JSMessageObject> NewJSMessageObject(
372
- Handle<String> type,
373
- Handle<JSArray> arguments,
374
- int start_position,
375
- int end_position,
376
- Handle<Object> script,
377
- Handle<Object> stack_trace,
378
- Handle<Object> stack_frames);
379
-
380
- Handle<NumberDictionary> DictionaryAtNumberPut(
381
- Handle<NumberDictionary>,
382
- uint32_t key,
383
- Handle<Object> value);
384
-
385
- #ifdef ENABLE_DEBUGGER_SUPPORT
386
- Handle<DebugInfo> NewDebugInfo(Handle<SharedFunctionInfo> shared);
387
- #endif
388
-
389
- // Return a map using the map cache in the global context.
390
- // The key the an ordered set of property names.
391
- Handle<Map> ObjectLiteralMapFromCache(Handle<Context> context,
392
- Handle<FixedArray> keys);
393
-
394
- // Creates a new FixedArray that holds the data associated with the
395
- // atom regexp and stores it in the regexp.
396
- void SetRegExpAtomData(Handle<JSRegExp> regexp,
397
- JSRegExp::Type type,
398
- Handle<String> source,
399
- JSRegExp::Flags flags,
400
- Handle<Object> match_pattern);
401
-
402
- // Creates a new FixedArray that holds the data associated with the
403
- // irregexp regexp and stores it in the regexp.
404
- void SetRegExpIrregexpData(Handle<JSRegExp> regexp,
405
- JSRegExp::Type type,
406
- Handle<String> source,
407
- JSRegExp::Flags flags,
408
- int capture_count);
409
-
410
- private:
411
- Isolate* isolate() { return reinterpret_cast<Isolate*>(this); }
412
-
413
- Handle<JSFunction> NewFunctionHelper(Handle<String> name,
414
- Handle<Object> prototype);
415
-
416
- Handle<JSFunction> NewFunctionWithoutPrototypeHelper(
417
- Handle<String> name,
418
- StrictModeFlag strict_mode);
419
-
420
- Handle<DescriptorArray> CopyAppendCallbackDescriptors(
421
- Handle<DescriptorArray> array,
422
- Handle<Object> descriptors);
423
-
424
- // Create a new map cache.
425
- Handle<MapCache> NewMapCache(int at_least_space_for);
426
-
427
- // Update the map cache in the global context with (keys, map)
428
- Handle<MapCache> AddToMapCache(Handle<Context> context,
429
- Handle<FixedArray> keys,
430
- Handle<Map> map);
431
- };
432
-
433
-
434
- } } // namespace v8::internal
435
-
436
- #endif // V8_FACTORY_H_
@@ -1,736 +0,0 @@
1
- // Copyright 2010 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
-
28
- #include "v8.h"
29
-
30
- #include "fast-dtoa.h"
31
-
32
- #include "cached-powers.h"
33
- #include "diy-fp.h"
34
- #include "double.h"
35
-
36
- namespace v8 {
37
- namespace internal {
38
-
39
- // The minimal and maximal target exponent define the range of w's binary
40
- // exponent, where 'w' is the result of multiplying the input by a cached power
41
- // of ten.
42
- //
43
- // A different range might be chosen on a different platform, to optimize digit
44
- // generation, but a smaller range requires more powers of ten to be cached.
45
- static const int kMinimalTargetExponent = -60;
46
- static const int kMaximalTargetExponent = -32;
47
-
48
-
49
- // Adjusts the last digit of the generated number, and screens out generated
50
- // solutions that may be inaccurate. A solution may be inaccurate if it is
51
- // outside the safe interval, or if we ctannot prove that it is closer to the
52
- // input than a neighboring representation of the same length.
53
- //
54
- // Input: * buffer containing the digits of too_high / 10^kappa
55
- // * the buffer's length
56
- // * distance_too_high_w == (too_high - w).f() * unit
57
- // * unsafe_interval == (too_high - too_low).f() * unit
58
- // * rest = (too_high - buffer * 10^kappa).f() * unit
59
- // * ten_kappa = 10^kappa * unit
60
- // * unit = the common multiplier
61
- // Output: returns true if the buffer is guaranteed to contain the closest
62
- // representable number to the input.
63
- // Modifies the generated digits in the buffer to approach (round towards) w.
64
- static bool RoundWeed(Vector<char> buffer,
65
- int length,
66
- uint64_t distance_too_high_w,
67
- uint64_t unsafe_interval,
68
- uint64_t rest,
69
- uint64_t ten_kappa,
70
- uint64_t unit) {
71
- uint64_t small_distance = distance_too_high_w - unit;
72
- uint64_t big_distance = distance_too_high_w + unit;
73
- // Let w_low = too_high - big_distance, and
74
- // w_high = too_high - small_distance.
75
- // Note: w_low < w < w_high
76
- //
77
- // The real w (* unit) must lie somewhere inside the interval
78
- // ]w_low; w_high[ (often written as "(w_low; w_high)")
79
-
80
- // Basically the buffer currently contains a number in the unsafe interval
81
- // ]too_low; too_high[ with too_low < w < too_high
82
- //
83
- // too_high - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
84
- // ^v 1 unit ^ ^ ^ ^
85
- // boundary_high --------------------- . . . .
86
- // ^v 1 unit . . . .
87
- // - - - - - - - - - - - - - - - - - - - + - - + - - - - - - . .
88
- // . . ^ . .
89
- // . big_distance . . .
90
- // . . . . rest
91
- // small_distance . . . .
92
- // v . . . .
93
- // w_high - - - - - - - - - - - - - - - - - - . . . .
94
- // ^v 1 unit . . . .
95
- // w ---------------------------------------- . . . .
96
- // ^v 1 unit v . . .
97
- // w_low - - - - - - - - - - - - - - - - - - - - - . . .
98
- // . . v
99
- // buffer --------------------------------------------------+-------+--------
100
- // . .
101
- // safe_interval .
102
- // v .
103
- // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .
104
- // ^v 1 unit .
105
- // boundary_low ------------------------- unsafe_interval
106
- // ^v 1 unit v
107
- // too_low - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
108
- //
109
- //
110
- // Note that the value of buffer could lie anywhere inside the range too_low
111
- // to too_high.
112
- //
113
- // boundary_low, boundary_high and w are approximations of the real boundaries
114
- // and v (the input number). They are guaranteed to be precise up to one unit.
115
- // In fact the error is guaranteed to be strictly less than one unit.
116
- //
117
- // Anything that lies outside the unsafe interval is guaranteed not to round
118
- // to v when read again.
119
- // Anything that lies inside the safe interval is guaranteed to round to v
120
- // when read again.
121
- // If the number inside the buffer lies inside the unsafe interval but not
122
- // inside the safe interval then we simply do not know and bail out (returning
123
- // false).
124
- //
125
- // Similarly we have to take into account the imprecision of 'w' when finding
126
- // the closest representation of 'w'. If we have two potential
127
- // representations, and one is closer to both w_low and w_high, then we know
128
- // it is closer to the actual value v.
129
- //
130
- // By generating the digits of too_high we got the largest (closest to
131
- // too_high) buffer that is still in the unsafe interval. In the case where
132
- // w_high < buffer < too_high we try to decrement the buffer.
133
- // This way the buffer approaches (rounds towards) w.
134
- // There are 3 conditions that stop the decrementation process:
135
- // 1) the buffer is already below w_high
136
- // 2) decrementing the buffer would make it leave the unsafe interval
137
- // 3) decrementing the buffer would yield a number below w_high and farther
138
- // away than the current number. In other words:
139
- // (buffer{-1} < w_high) && w_high - buffer{-1} > buffer - w_high
140
- // Instead of using the buffer directly we use its distance to too_high.
141
- // Conceptually rest ~= too_high - buffer
142
- // We need to do the following tests in this order to avoid over- and
143
- // underflows.
144
- ASSERT(rest <= unsafe_interval);
145
- while (rest < small_distance && // Negated condition 1
146
- unsafe_interval - rest >= ten_kappa && // Negated condition 2
147
- (rest + ten_kappa < small_distance || // buffer{-1} > w_high
148
- small_distance - rest >= rest + ten_kappa - small_distance)) {
149
- buffer[length - 1]--;
150
- rest += ten_kappa;
151
- }
152
-
153
- // We have approached w+ as much as possible. We now test if approaching w-
154
- // would require changing the buffer. If yes, then we have two possible
155
- // representations close to w, but we cannot decide which one is closer.
156
- if (rest < big_distance &&
157
- unsafe_interval - rest >= ten_kappa &&
158
- (rest + ten_kappa < big_distance ||
159
- big_distance - rest > rest + ten_kappa - big_distance)) {
160
- return false;
161
- }
162
-
163
- // Weeding test.
164
- // The safe interval is [too_low + 2 ulp; too_high - 2 ulp]
165
- // Since too_low = too_high - unsafe_interval this is equivalent to
166
- // [too_high - unsafe_interval + 4 ulp; too_high - 2 ulp]
167
- // Conceptually we have: rest ~= too_high - buffer
168
- return (2 * unit <= rest) && (rest <= unsafe_interval - 4 * unit);
169
- }
170
-
171
-
172
- // Rounds the buffer upwards if the result is closer to v by possibly adding
173
- // 1 to the buffer. If the precision of the calculation is not sufficient to
174
- // round correctly, return false.
175
- // The rounding might shift the whole buffer in which case the kappa is
176
- // adjusted. For example "99", kappa = 3 might become "10", kappa = 4.
177
- //
178
- // If 2*rest > ten_kappa then the buffer needs to be round up.
179
- // rest can have an error of +/- 1 unit. This function accounts for the
180
- // imprecision and returns false, if the rounding direction cannot be
181
- // unambiguously determined.
182
- //
183
- // Precondition: rest < ten_kappa.
184
- static bool RoundWeedCounted(Vector<char> buffer,
185
- int length,
186
- uint64_t rest,
187
- uint64_t ten_kappa,
188
- uint64_t unit,
189
- int* kappa) {
190
- ASSERT(rest < ten_kappa);
191
- // The following tests are done in a specific order to avoid overflows. They
192
- // will work correctly with any uint64 values of rest < ten_kappa and unit.
193
- //
194
- // If the unit is too big, then we don't know which way to round. For example
195
- // a unit of 50 means that the real number lies within rest +/- 50. If
196
- // 10^kappa == 40 then there is no way to tell which way to round.
197
- if (unit >= ten_kappa) return false;
198
- // Even if unit is just half the size of 10^kappa we are already completely
199
- // lost. (And after the previous test we know that the expression will not
200
- // over/underflow.)
201
- if (ten_kappa - unit <= unit) return false;
202
- // If 2 * (rest + unit) <= 10^kappa we can safely round down.
203
- if ((ten_kappa - rest > rest) && (ten_kappa - 2 * rest >= 2 * unit)) {
204
- return true;
205
- }
206
- // If 2 * (rest - unit) >= 10^kappa, then we can safely round up.
207
- if ((rest > unit) && (ten_kappa - (rest - unit) <= (rest - unit))) {
208
- // Increment the last digit recursively until we find a non '9' digit.
209
- buffer[length - 1]++;
210
- for (int i = length - 1; i > 0; --i) {
211
- if (buffer[i] != '0' + 10) break;
212
- buffer[i] = '0';
213
- buffer[i - 1]++;
214
- }
215
- // If the first digit is now '0'+ 10 we had a buffer with all '9's. With the
216
- // exception of the first digit all digits are now '0'. Simply switch the
217
- // first digit to '1' and adjust the kappa. Example: "99" becomes "10" and
218
- // the power (the kappa) is increased.
219
- if (buffer[0] == '0' + 10) {
220
- buffer[0] = '1';
221
- (*kappa) += 1;
222
- }
223
- return true;
224
- }
225
- return false;
226
- }
227
-
228
-
229
- static const uint32_t kTen4 = 10000;
230
- static const uint32_t kTen5 = 100000;
231
- static const uint32_t kTen6 = 1000000;
232
- static const uint32_t kTen7 = 10000000;
233
- static const uint32_t kTen8 = 100000000;
234
- static const uint32_t kTen9 = 1000000000;
235
-
236
- // Returns the biggest power of ten that is less than or equal than the given
237
- // number. We furthermore receive the maximum number of bits 'number' has.
238
- // If number_bits == 0 then 0^-1 is returned
239
- // The number of bits must be <= 32.
240
- // Precondition: number < (1 << (number_bits + 1)).
241
- static void BiggestPowerTen(uint32_t number,
242
- int number_bits,
243
- uint32_t* power,
244
- int* exponent) {
245
- switch (number_bits) {
246
- case 32:
247
- case 31:
248
- case 30:
249
- if (kTen9 <= number) {
250
- *power = kTen9;
251
- *exponent = 9;
252
- break;
253
- } // else fallthrough
254
- case 29:
255
- case 28:
256
- case 27:
257
- if (kTen8 <= number) {
258
- *power = kTen8;
259
- *exponent = 8;
260
- break;
261
- } // else fallthrough
262
- case 26:
263
- case 25:
264
- case 24:
265
- if (kTen7 <= number) {
266
- *power = kTen7;
267
- *exponent = 7;
268
- break;
269
- } // else fallthrough
270
- case 23:
271
- case 22:
272
- case 21:
273
- case 20:
274
- if (kTen6 <= number) {
275
- *power = kTen6;
276
- *exponent = 6;
277
- break;
278
- } // else fallthrough
279
- case 19:
280
- case 18:
281
- case 17:
282
- if (kTen5 <= number) {
283
- *power = kTen5;
284
- *exponent = 5;
285
- break;
286
- } // else fallthrough
287
- case 16:
288
- case 15:
289
- case 14:
290
- if (kTen4 <= number) {
291
- *power = kTen4;
292
- *exponent = 4;
293
- break;
294
- } // else fallthrough
295
- case 13:
296
- case 12:
297
- case 11:
298
- case 10:
299
- if (1000 <= number) {
300
- *power = 1000;
301
- *exponent = 3;
302
- break;
303
- } // else fallthrough
304
- case 9:
305
- case 8:
306
- case 7:
307
- if (100 <= number) {
308
- *power = 100;
309
- *exponent = 2;
310
- break;
311
- } // else fallthrough
312
- case 6:
313
- case 5:
314
- case 4:
315
- if (10 <= number) {
316
- *power = 10;
317
- *exponent = 1;
318
- break;
319
- } // else fallthrough
320
- case 3:
321
- case 2:
322
- case 1:
323
- if (1 <= number) {
324
- *power = 1;
325
- *exponent = 0;
326
- break;
327
- } // else fallthrough
328
- case 0:
329
- *power = 0;
330
- *exponent = -1;
331
- break;
332
- default:
333
- // Following assignments are here to silence compiler warnings.
334
- *power = 0;
335
- *exponent = 0;
336
- UNREACHABLE();
337
- }
338
- }
339
-
340
-
341
- // Generates the digits of input number w.
342
- // w is a floating-point number (DiyFp), consisting of a significand and an
343
- // exponent. Its exponent is bounded by kMinimalTargetExponent and
344
- // kMaximalTargetExponent.
345
- // Hence -60 <= w.e() <= -32.
346
- //
347
- // Returns false if it fails, in which case the generated digits in the buffer
348
- // should not be used.
349
- // Preconditions:
350
- // * low, w and high are correct up to 1 ulp (unit in the last place). That
351
- // is, their error must be less than a unit of their last digits.
352
- // * low.e() == w.e() == high.e()
353
- // * low < w < high, and taking into account their error: low~ <= high~
354
- // * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent
355
- // Postconditions: returns false if procedure fails.
356
- // otherwise:
357
- // * buffer is not null-terminated, but len contains the number of digits.
358
- // * buffer contains the shortest possible decimal digit-sequence
359
- // such that LOW < buffer * 10^kappa < HIGH, where LOW and HIGH are the
360
- // correct values of low and high (without their error).
361
- // * if more than one decimal representation gives the minimal number of
362
- // decimal digits then the one closest to W (where W is the correct value
363
- // of w) is chosen.
364
- // Remark: this procedure takes into account the imprecision of its input
365
- // numbers. If the precision is not enough to guarantee all the postconditions
366
- // then false is returned. This usually happens rarely (~0.5%).
367
- //
368
- // Say, for the sake of example, that
369
- // w.e() == -48, and w.f() == 0x1234567890abcdef
370
- // w's value can be computed by w.f() * 2^w.e()
371
- // We can obtain w's integral digits by simply shifting w.f() by -w.e().
372
- // -> w's integral part is 0x1234
373
- // w's fractional part is therefore 0x567890abcdef.
374
- // Printing w's integral part is easy (simply print 0x1234 in decimal).
375
- // In order to print its fraction we repeatedly multiply the fraction by 10 and
376
- // get each digit. Example the first digit after the point would be computed by
377
- // (0x567890abcdef * 10) >> 48. -> 3
378
- // The whole thing becomes slightly more complicated because we want to stop
379
- // once we have enough digits. That is, once the digits inside the buffer
380
- // represent 'w' we can stop. Everything inside the interval low - high
381
- // represents w. However we have to pay attention to low, high and w's
382
- // imprecision.
383
- static bool DigitGen(DiyFp low,
384
- DiyFp w,
385
- DiyFp high,
386
- Vector<char> buffer,
387
- int* length,
388
- int* kappa) {
389
- ASSERT(low.e() == w.e() && w.e() == high.e());
390
- ASSERT(low.f() + 1 <= high.f() - 1);
391
- ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent);
392
- // low, w and high are imprecise, but by less than one ulp (unit in the last
393
- // place).
394
- // If we remove (resp. add) 1 ulp from low (resp. high) we are certain that
395
- // the new numbers are outside of the interval we want the final
396
- // representation to lie in.
397
- // Inversely adding (resp. removing) 1 ulp from low (resp. high) would yield
398
- // numbers that are certain to lie in the interval. We will use this fact
399
- // later on.
400
- // We will now start by generating the digits within the uncertain
401
- // interval. Later we will weed out representations that lie outside the safe
402
- // interval and thus _might_ lie outside the correct interval.
403
- uint64_t unit = 1;
404
- DiyFp too_low = DiyFp(low.f() - unit, low.e());
405
- DiyFp too_high = DiyFp(high.f() + unit, high.e());
406
- // too_low and too_high are guaranteed to lie outside the interval we want the
407
- // generated number in.
408
- DiyFp unsafe_interval = DiyFp::Minus(too_high, too_low);
409
- // We now cut the input number into two parts: the integral digits and the
410
- // fractionals. We will not write any decimal separator though, but adapt
411
- // kappa instead.
412
- // Reminder: we are currently computing the digits (stored inside the buffer)
413
- // such that: too_low < buffer * 10^kappa < too_high
414
- // We use too_high for the digit_generation and stop as soon as possible.
415
- // If we stop early we effectively round down.
416
- DiyFp one = DiyFp(static_cast<uint64_t>(1) << -w.e(), w.e());
417
- // Division by one is a shift.
418
- uint32_t integrals = static_cast<uint32_t>(too_high.f() >> -one.e());
419
- // Modulo by one is an and.
420
- uint64_t fractionals = too_high.f() & (one.f() - 1);
421
- uint32_t divisor;
422
- int divisor_exponent;
423
- BiggestPowerTen(integrals, DiyFp::kSignificandSize - (-one.e()),
424
- &divisor, &divisor_exponent);
425
- *kappa = divisor_exponent + 1;
426
- *length = 0;
427
- // Loop invariant: buffer = too_high / 10^kappa (integer division)
428
- // The invariant holds for the first iteration: kappa has been initialized
429
- // with the divisor exponent + 1. And the divisor is the biggest power of ten
430
- // that is smaller than integrals.
431
- while (*kappa > 0) {
432
- int digit = integrals / divisor;
433
- buffer[*length] = '0' + digit;
434
- (*length)++;
435
- integrals %= divisor;
436
- (*kappa)--;
437
- // Note that kappa now equals the exponent of the divisor and that the
438
- // invariant thus holds again.
439
- uint64_t rest =
440
- (static_cast<uint64_t>(integrals) << -one.e()) + fractionals;
441
- // Invariant: too_high = buffer * 10^kappa + DiyFp(rest, one.e())
442
- // Reminder: unsafe_interval.e() == one.e()
443
- if (rest < unsafe_interval.f()) {
444
- // Rounding down (by not emitting the remaining digits) yields a number
445
- // that lies within the unsafe interval.
446
- return RoundWeed(buffer, *length, DiyFp::Minus(too_high, w).f(),
447
- unsafe_interval.f(), rest,
448
- static_cast<uint64_t>(divisor) << -one.e(), unit);
449
- }
450
- divisor /= 10;
451
- }
452
-
453
- // The integrals have been generated. We are at the point of the decimal
454
- // separator. In the following loop we simply multiply the remaining digits by
455
- // 10 and divide by one. We just need to pay attention to multiply associated
456
- // data (like the interval or 'unit'), too.
457
- // Note that the multiplication by 10 does not overflow, because w.e >= -60
458
- // and thus one.e >= -60.
459
- ASSERT(one.e() >= -60);
460
- ASSERT(fractionals < one.f());
461
- ASSERT(V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f());
462
- while (true) {
463
- fractionals *= 10;
464
- unit *= 10;
465
- unsafe_interval.set_f(unsafe_interval.f() * 10);
466
- // Integer division by one.
467
- int digit = static_cast<int>(fractionals >> -one.e());
468
- buffer[*length] = '0' + digit;
469
- (*length)++;
470
- fractionals &= one.f() - 1; // Modulo by one.
471
- (*kappa)--;
472
- if (fractionals < unsafe_interval.f()) {
473
- return RoundWeed(buffer, *length, DiyFp::Minus(too_high, w).f() * unit,
474
- unsafe_interval.f(), fractionals, one.f(), unit);
475
- }
476
- }
477
- }
478
-
479
-
480
-
481
- // Generates (at most) requested_digits of input number w.
482
- // w is a floating-point number (DiyFp), consisting of a significand and an
483
- // exponent. Its exponent is bounded by kMinimalTargetExponent and
484
- // kMaximalTargetExponent.
485
- // Hence -60 <= w.e() <= -32.
486
- //
487
- // Returns false if it fails, in which case the generated digits in the buffer
488
- // should not be used.
489
- // Preconditions:
490
- // * w is correct up to 1 ulp (unit in the last place). That
491
- // is, its error must be strictly less than a unit of its last digit.
492
- // * kMinimalTargetExponent <= w.e() <= kMaximalTargetExponent
493
- //
494
- // Postconditions: returns false if procedure fails.
495
- // otherwise:
496
- // * buffer is not null-terminated, but length contains the number of
497
- // digits.
498
- // * the representation in buffer is the most precise representation of
499
- // requested_digits digits.
500
- // * buffer contains at most requested_digits digits of w. If there are less
501
- // than requested_digits digits then some trailing '0's have been removed.
502
- // * kappa is such that
503
- // w = buffer * 10^kappa + eps with |eps| < 10^kappa / 2.
504
- //
505
- // Remark: This procedure takes into account the imprecision of its input
506
- // numbers. If the precision is not enough to guarantee all the postconditions
507
- // then false is returned. This usually happens rarely, but the failure-rate
508
- // increases with higher requested_digits.
509
- static bool DigitGenCounted(DiyFp w,
510
- int requested_digits,
511
- Vector<char> buffer,
512
- int* length,
513
- int* kappa) {
514
- ASSERT(kMinimalTargetExponent <= w.e() && w.e() <= kMaximalTargetExponent);
515
- ASSERT(kMinimalTargetExponent >= -60);
516
- ASSERT(kMaximalTargetExponent <= -32);
517
- // w is assumed to have an error less than 1 unit. Whenever w is scaled we
518
- // also scale its error.
519
- uint64_t w_error = 1;
520
- // We cut the input number into two parts: the integral digits and the
521
- // fractional digits. We don't emit any decimal separator, but adapt kappa
522
- // instead. Example: instead of writing "1.2" we put "12" into the buffer and
523
- // increase kappa by 1.
524
- DiyFp one = DiyFp(static_cast<uint64_t>(1) << -w.e(), w.e());
525
- // Division by one is a shift.
526
- uint32_t integrals = static_cast<uint32_t>(w.f() >> -one.e());
527
- // Modulo by one is an and.
528
- uint64_t fractionals = w.f() & (one.f() - 1);
529
- uint32_t divisor;
530
- int divisor_exponent;
531
- BiggestPowerTen(integrals, DiyFp::kSignificandSize - (-one.e()),
532
- &divisor, &divisor_exponent);
533
- *kappa = divisor_exponent + 1;
534
- *length = 0;
535
-
536
- // Loop invariant: buffer = w / 10^kappa (integer division)
537
- // The invariant holds for the first iteration: kappa has been initialized
538
- // with the divisor exponent + 1. And the divisor is the biggest power of ten
539
- // that is smaller than 'integrals'.
540
- while (*kappa > 0) {
541
- int digit = integrals / divisor;
542
- buffer[*length] = '0' + digit;
543
- (*length)++;
544
- requested_digits--;
545
- integrals %= divisor;
546
- (*kappa)--;
547
- // Note that kappa now equals the exponent of the divisor and that the
548
- // invariant thus holds again.
549
- if (requested_digits == 0) break;
550
- divisor /= 10;
551
- }
552
-
553
- if (requested_digits == 0) {
554
- uint64_t rest =
555
- (static_cast<uint64_t>(integrals) << -one.e()) + fractionals;
556
- return RoundWeedCounted(buffer, *length, rest,
557
- static_cast<uint64_t>(divisor) << -one.e(), w_error,
558
- kappa);
559
- }
560
-
561
- // The integrals have been generated. We are at the point of the decimal
562
- // separator. In the following loop we simply multiply the remaining digits by
563
- // 10 and divide by one. We just need to pay attention to multiply associated
564
- // data (the 'unit'), too.
565
- // Note that the multiplication by 10 does not overflow, because w.e >= -60
566
- // and thus one.e >= -60.
567
- ASSERT(one.e() >= -60);
568
- ASSERT(fractionals < one.f());
569
- ASSERT(V8_2PART_UINT64_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f());
570
- while (requested_digits > 0 && fractionals > w_error) {
571
- fractionals *= 10;
572
- w_error *= 10;
573
- // Integer division by one.
574
- int digit = static_cast<int>(fractionals >> -one.e());
575
- buffer[*length] = '0' + digit;
576
- (*length)++;
577
- requested_digits--;
578
- fractionals &= one.f() - 1; // Modulo by one.
579
- (*kappa)--;
580
- }
581
- if (requested_digits != 0) return false;
582
- return RoundWeedCounted(buffer, *length, fractionals, one.f(), w_error,
583
- kappa);
584
- }
585
-
586
-
587
- // Provides a decimal representation of v.
588
- // Returns true if it succeeds, otherwise the result cannot be trusted.
589
- // There will be *length digits inside the buffer (not null-terminated).
590
- // If the function returns true then
591
- // v == (double) (buffer * 10^decimal_exponent).
592
- // The digits in the buffer are the shortest representation possible: no
593
- // 0.09999999999999999 instead of 0.1. The shorter representation will even be
594
- // chosen even if the longer one would be closer to v.
595
- // The last digit will be closest to the actual v. That is, even if several
596
- // digits might correctly yield 'v' when read again, the closest will be
597
- // computed.
598
- static bool Grisu3(double v,
599
- Vector<char> buffer,
600
- int* length,
601
- int* decimal_exponent) {
602
- DiyFp w = Double(v).AsNormalizedDiyFp();
603
- // boundary_minus and boundary_plus are the boundaries between v and its
604
- // closest floating-point neighbors. Any number strictly between
605
- // boundary_minus and boundary_plus will round to v when convert to a double.
606
- // Grisu3 will never output representations that lie exactly on a boundary.
607
- DiyFp boundary_minus, boundary_plus;
608
- Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
609
- ASSERT(boundary_plus.e() == w.e());
610
- DiyFp ten_mk; // Cached power of ten: 10^-k
611
- int mk; // -k
612
- int ten_mk_minimal_binary_exponent =
613
- kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize);
614
- int ten_mk_maximal_binary_exponent =
615
- kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize);
616
- PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
617
- ten_mk_minimal_binary_exponent,
618
- ten_mk_maximal_binary_exponent,
619
- &ten_mk, &mk);
620
- ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() +
621
- DiyFp::kSignificandSize) &&
622
- (kMaximalTargetExponent >= w.e() + ten_mk.e() +
623
- DiyFp::kSignificandSize));
624
- // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a
625
- // 64 bit significand and ten_mk is thus only precise up to 64 bits.
626
-
627
- // The DiyFp::Times procedure rounds its result, and ten_mk is approximated
628
- // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now
629
- // off by a small amount.
630
- // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w.
631
- // In other words: let f = scaled_w.f() and e = scaled_w.e(), then
632
- // (f-1) * 2^e < w*10^k < (f+1) * 2^e
633
- DiyFp scaled_w = DiyFp::Times(w, ten_mk);
634
- ASSERT(scaled_w.e() ==
635
- boundary_plus.e() + ten_mk.e() + DiyFp::kSignificandSize);
636
- // In theory it would be possible to avoid some recomputations by computing
637
- // the difference between w and boundary_minus/plus (a power of 2) and to
638
- // compute scaled_boundary_minus/plus by subtracting/adding from
639
- // scaled_w. However the code becomes much less readable and the speed
640
- // enhancements are not terriffic.
641
- DiyFp scaled_boundary_minus = DiyFp::Times(boundary_minus, ten_mk);
642
- DiyFp scaled_boundary_plus = DiyFp::Times(boundary_plus, ten_mk);
643
-
644
- // DigitGen will generate the digits of scaled_w. Therefore we have
645
- // v == (double) (scaled_w * 10^-mk).
646
- // Set decimal_exponent == -mk and pass it to DigitGen. If scaled_w is not an
647
- // integer than it will be updated. For instance if scaled_w == 1.23 then
648
- // the buffer will be filled with "123" und the decimal_exponent will be
649
- // decreased by 2.
650
- int kappa;
651
- bool result = DigitGen(scaled_boundary_minus, scaled_w, scaled_boundary_plus,
652
- buffer, length, &kappa);
653
- *decimal_exponent = -mk + kappa;
654
- return result;
655
- }
656
-
657
-
658
- // The "counted" version of grisu3 (see above) only generates requested_digits
659
- // number of digits. This version does not generate the shortest representation,
660
- // and with enough requested digits 0.1 will at some point print as 0.9999999...
661
- // Grisu3 is too imprecise for real halfway cases (1.5 will not work) and
662
- // therefore the rounding strategy for halfway cases is irrelevant.
663
- static bool Grisu3Counted(double v,
664
- int requested_digits,
665
- Vector<char> buffer,
666
- int* length,
667
- int* decimal_exponent) {
668
- DiyFp w = Double(v).AsNormalizedDiyFp();
669
- DiyFp ten_mk; // Cached power of ten: 10^-k
670
- int mk; // -k
671
- int ten_mk_minimal_binary_exponent =
672
- kMinimalTargetExponent - (w.e() + DiyFp::kSignificandSize);
673
- int ten_mk_maximal_binary_exponent =
674
- kMaximalTargetExponent - (w.e() + DiyFp::kSignificandSize);
675
- PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
676
- ten_mk_minimal_binary_exponent,
677
- ten_mk_maximal_binary_exponent,
678
- &ten_mk, &mk);
679
- ASSERT((kMinimalTargetExponent <= w.e() + ten_mk.e() +
680
- DiyFp::kSignificandSize) &&
681
- (kMaximalTargetExponent >= w.e() + ten_mk.e() +
682
- DiyFp::kSignificandSize));
683
- // Note that ten_mk is only an approximation of 10^-k. A DiyFp only contains a
684
- // 64 bit significand and ten_mk is thus only precise up to 64 bits.
685
-
686
- // The DiyFp::Times procedure rounds its result, and ten_mk is approximated
687
- // too. The variable scaled_w (as well as scaled_boundary_minus/plus) are now
688
- // off by a small amount.
689
- // In fact: scaled_w - w*10^k < 1ulp (unit in the last place) of scaled_w.
690
- // In other words: let f = scaled_w.f() and e = scaled_w.e(), then
691
- // (f-1) * 2^e < w*10^k < (f+1) * 2^e
692
- DiyFp scaled_w = DiyFp::Times(w, ten_mk);
693
-
694
- // We now have (double) (scaled_w * 10^-mk).
695
- // DigitGen will generate the first requested_digits digits of scaled_w and
696
- // return together with a kappa such that scaled_w ~= buffer * 10^kappa. (It
697
- // will not always be exactly the same since DigitGenCounted only produces a
698
- // limited number of digits.)
699
- int kappa;
700
- bool result = DigitGenCounted(scaled_w, requested_digits,
701
- buffer, length, &kappa);
702
- *decimal_exponent = -mk + kappa;
703
- return result;
704
- }
705
-
706
-
707
- bool FastDtoa(double v,
708
- FastDtoaMode mode,
709
- int requested_digits,
710
- Vector<char> buffer,
711
- int* length,
712
- int* decimal_point) {
713
- ASSERT(v > 0);
714
- ASSERT(!Double(v).IsSpecial());
715
-
716
- bool result = false;
717
- int decimal_exponent = 0;
718
- switch (mode) {
719
- case FAST_DTOA_SHORTEST:
720
- result = Grisu3(v, buffer, length, &decimal_exponent);
721
- break;
722
- case FAST_DTOA_PRECISION:
723
- result = Grisu3Counted(v, requested_digits,
724
- buffer, length, &decimal_exponent);
725
- break;
726
- default:
727
- UNREACHABLE();
728
- }
729
- if (result) {
730
- *decimal_point = *length + decimal_exponent;
731
- buffer[*length] = '\0';
732
- }
733
- return result;
734
- }
735
-
736
- } } // namespace v8::internal