libv8 3.3.10.4 → 3.5.10.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (538) hide show
  1. data/lib/libv8/scons/CHANGES.txt +24 -231
  2. data/lib/libv8/scons/LICENSE.txt +1 -1
  3. data/lib/libv8/scons/MANIFEST +0 -1
  4. data/lib/libv8/scons/PKG-INFO +1 -1
  5. data/lib/libv8/scons/README.txt +9 -9
  6. data/lib/libv8/scons/RELEASE.txt +75 -77
  7. data/lib/libv8/scons/engine/SCons/Action.py +6 -22
  8. data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
  9. data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
  10. data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
  11. data/lib/libv8/scons/engine/SCons/Defaults.py +10 -24
  12. data/lib/libv8/scons/engine/SCons/Environment.py +19 -118
  13. data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
  14. data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
  15. data/lib/libv8/scons/engine/SCons/Job.py +2 -2
  16. data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
  17. data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
  18. data/lib/libv8/scons/engine/SCons/Node/FS.py +121 -281
  19. data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
  20. data/lib/libv8/scons/engine/SCons/Node/__init__.py +5 -6
  21. data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
  22. data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
  23. data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
  24. data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
  25. data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
  26. data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
  27. data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
  28. data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
  29. data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
  30. data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
  31. data/lib/libv8/scons/engine/SCons/Platform/darwin.py +3 -27
  32. data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
  33. data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
  34. data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
  35. data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
  36. data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
  37. data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
  38. data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
  39. data/lib/libv8/scons/engine/SCons/SConsign.py +3 -9
  40. data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
  41. data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
  42. data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
  43. data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
  44. data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
  45. data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +2 -5
  46. data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
  47. data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
  48. data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
  49. data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
  50. data/lib/libv8/scons/engine/SCons/Script/Main.py +11 -82
  51. data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
  52. data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
  53. data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
  54. data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
  55. data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
  56. data/lib/libv8/scons/engine/SCons/Taskmaster.py +2 -10
  57. data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
  58. data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
  59. data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
  60. data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +2 -19
  61. data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
  62. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
  63. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
  64. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
  65. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
  66. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
  67. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +6 -9
  68. data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +2 -29
  69. data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
  70. data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
  71. data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
  72. data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
  73. data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
  74. data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
  75. data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
  76. data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
  77. data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
  78. data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
  79. data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
  80. data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
  81. data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
  82. data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
  83. data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
  84. data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
  85. data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
  86. data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
  87. data/lib/libv8/scons/engine/SCons/Tool/dmd.py +7 -24
  88. data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
  89. data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +2 -3
  90. data/lib/libv8/scons/engine/SCons/Tool/dvips.py +2 -3
  91. data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
  92. data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
  93. data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
  94. data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
  95. data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
  96. data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
  97. data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
  98. data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
  99. data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
  100. data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
  101. data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +3 -2
  102. data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
  103. data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
  104. data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
  105. data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
  106. data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
  107. data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
  108. data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
  109. data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
  110. data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
  111. data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
  112. data/lib/libv8/scons/engine/SCons/Tool/install.py +3 -57
  113. data/lib/libv8/scons/engine/SCons/Tool/intelc.py +25 -65
  114. data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
  115. data/lib/libv8/scons/engine/SCons/Tool/jar.py +3 -9
  116. data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
  117. data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
  118. data/lib/libv8/scons/engine/SCons/Tool/latex.py +2 -3
  119. data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
  120. data/lib/libv8/scons/engine/SCons/Tool/link.py +5 -6
  121. data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
  122. data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
  123. data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
  124. data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
  125. data/lib/libv8/scons/engine/SCons/Tool/mingw.py +10 -31
  126. data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
  127. data/lib/libv8/scons/engine/SCons/Tool/mslink.py +9 -61
  128. data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
  129. data/lib/libv8/scons/engine/SCons/Tool/msvc.py +11 -21
  130. data/lib/libv8/scons/engine/SCons/Tool/msvs.py +59 -477
  131. data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
  132. data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
  133. data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
  134. data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
  135. data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
  136. data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
  137. data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
  138. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
  139. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
  140. data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
  141. data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
  142. data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
  143. data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
  144. data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
  145. data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +2 -3
  146. data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +2 -3
  147. data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
  148. data/lib/libv8/scons/engine/SCons/Tool/rmic.py +3 -9
  149. data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
  150. data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
  151. data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
  152. data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
  153. data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
  154. data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +3 -2
  155. data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
  156. data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
  157. data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
  158. data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
  159. data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
  160. data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
  161. data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +3 -2
  162. data/lib/libv8/scons/engine/SCons/Tool/swig.py +5 -6
  163. data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
  164. data/lib/libv8/scons/engine/SCons/Tool/tex.py +43 -96
  165. data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
  166. data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
  167. data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
  168. data/lib/libv8/scons/engine/SCons/Tool/yacc.py +2 -12
  169. data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
  170. data/lib/libv8/scons/engine/SCons/Util.py +3 -3
  171. data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
  172. data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
  173. data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
  174. data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
  175. data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
  176. data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
  177. data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
  178. data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
  179. data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
  180. data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
  181. data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
  182. data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
  183. data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
  184. data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
  185. data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
  186. data/lib/libv8/scons/engine/SCons/dblite.py +1 -4
  187. data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
  188. data/lib/libv8/scons/scons-time.1 +3 -3
  189. data/lib/libv8/scons/scons.1 +1164 -1170
  190. data/lib/libv8/scons/sconsign.1 +3 -3
  191. data/lib/libv8/scons/script/scons +22 -22
  192. data/lib/libv8/scons/script/scons-time +2 -2
  193. data/lib/libv8/scons/script/scons.bat +4 -7
  194. data/lib/libv8/scons/script/sconsign +20 -21
  195. data/lib/libv8/scons/setup.cfg +1 -0
  196. data/lib/libv8/scons/setup.py +40 -38
  197. data/lib/libv8/v8/.gitignore +1 -1
  198. data/lib/libv8/v8/AUTHORS +2 -0
  199. data/lib/libv8/v8/ChangeLog +387 -0
  200. data/lib/libv8/v8/Makefile +171 -0
  201. data/lib/libv8/v8/SConstruct +124 -51
  202. data/lib/libv8/v8/build/README.txt +31 -14
  203. data/lib/libv8/v8/build/all.gyp +11 -4
  204. data/lib/libv8/v8/build/armu.gypi +6 -2
  205. data/lib/libv8/v8/build/common.gypi +240 -94
  206. data/lib/libv8/v8/build/gyp_v8 +32 -4
  207. data/lib/libv8/v8/build/standalone.gypi +200 -0
  208. data/lib/libv8/v8/include/v8-debug.h +0 -0
  209. data/lib/libv8/v8/include/v8-profiler.h +8 -11
  210. data/lib/libv8/v8/include/v8.h +191 -108
  211. data/lib/libv8/v8/preparser/SConscript +2 -2
  212. data/lib/libv8/v8/preparser/preparser-process.cc +3 -3
  213. data/lib/libv8/v8/preparser/preparser.gyp +42 -0
  214. data/lib/libv8/v8/src/SConscript +33 -8
  215. data/lib/libv8/v8/src/accessors.cc +77 -43
  216. data/lib/libv8/v8/src/api.cc +393 -191
  217. data/lib/libv8/v8/src/api.h +4 -8
  218. data/lib/libv8/v8/src/apinatives.js +15 -3
  219. data/lib/libv8/v8/src/arguments.h +8 -0
  220. data/lib/libv8/v8/src/arm/assembler-arm.cc +120 -120
  221. data/lib/libv8/v8/src/arm/assembler-arm.h +92 -43
  222. data/lib/libv8/v8/src/arm/builtins-arm.cc +32 -39
  223. data/lib/libv8/v8/src/arm/code-stubs-arm.cc +572 -351
  224. data/lib/libv8/v8/src/arm/code-stubs-arm.h +8 -77
  225. data/lib/libv8/v8/src/arm/codegen-arm.h +0 -2
  226. data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +50 -30
  227. data/lib/libv8/v8/src/arm/disasm-arm.cc +1 -1
  228. data/lib/libv8/v8/src/arm/frames-arm.h +9 -5
  229. data/lib/libv8/v8/src/arm/full-codegen-arm.cc +331 -432
  230. data/lib/libv8/v8/src/arm/ic-arm.cc +192 -124
  231. data/lib/libv8/v8/src/arm/lithium-arm.cc +216 -232
  232. data/lib/libv8/v8/src/arm/lithium-arm.h +106 -259
  233. data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +633 -642
  234. data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +4 -4
  235. data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +1 -3
  236. data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +260 -185
  237. data/lib/libv8/v8/src/arm/macro-assembler-arm.h +45 -25
  238. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +25 -13
  239. data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +3 -0
  240. data/lib/libv8/v8/src/arm/stub-cache-arm.cc +413 -226
  241. data/lib/libv8/v8/src/array.js +38 -18
  242. data/lib/libv8/v8/src/assembler.cc +12 -5
  243. data/lib/libv8/v8/src/assembler.h +15 -9
  244. data/lib/libv8/v8/src/ast-inl.h +34 -25
  245. data/lib/libv8/v8/src/ast.cc +141 -72
  246. data/lib/libv8/v8/src/ast.h +255 -181
  247. data/lib/libv8/v8/src/bignum.cc +3 -4
  248. data/lib/libv8/v8/src/bootstrapper.cc +55 -11
  249. data/lib/libv8/v8/src/bootstrapper.h +3 -2
  250. data/lib/libv8/v8/src/builtins.cc +8 -2
  251. data/lib/libv8/v8/src/builtins.h +4 -0
  252. data/lib/libv8/v8/src/cached-powers.cc +8 -4
  253. data/lib/libv8/v8/src/checks.h +3 -3
  254. data/lib/libv8/v8/src/code-stubs.cc +173 -28
  255. data/lib/libv8/v8/src/code-stubs.h +104 -148
  256. data/lib/libv8/v8/src/codegen.cc +8 -8
  257. data/lib/libv8/v8/src/compilation-cache.cc +2 -47
  258. data/lib/libv8/v8/src/compilation-cache.h +0 -10
  259. data/lib/libv8/v8/src/compiler.cc +27 -16
  260. data/lib/libv8/v8/src/compiler.h +13 -18
  261. data/lib/libv8/v8/src/contexts.cc +107 -72
  262. data/lib/libv8/v8/src/contexts.h +70 -34
  263. data/lib/libv8/v8/src/conversions-inl.h +572 -14
  264. data/lib/libv8/v8/src/conversions.cc +9 -707
  265. data/lib/libv8/v8/src/conversions.h +23 -12
  266. data/lib/libv8/v8/src/cpu-profiler-inl.h +2 -19
  267. data/lib/libv8/v8/src/cpu-profiler.cc +4 -21
  268. data/lib/libv8/v8/src/cpu-profiler.h +8 -17
  269. data/lib/libv8/v8/src/d8-debug.cc +5 -3
  270. data/lib/libv8/v8/src/d8-debug.h +6 -7
  271. data/lib/libv8/v8/src/d8-posix.cc +1 -10
  272. data/lib/libv8/v8/src/d8.cc +721 -219
  273. data/lib/libv8/v8/src/d8.gyp +37 -12
  274. data/lib/libv8/v8/src/d8.h +141 -19
  275. data/lib/libv8/v8/src/d8.js +17 -8
  276. data/lib/libv8/v8/src/date.js +16 -5
  277. data/lib/libv8/v8/src/dateparser-inl.h +242 -39
  278. data/lib/libv8/v8/src/dateparser.cc +38 -4
  279. data/lib/libv8/v8/src/dateparser.h +170 -28
  280. data/lib/libv8/v8/src/debug-agent.cc +5 -3
  281. data/lib/libv8/v8/src/debug-agent.h +11 -7
  282. data/lib/libv8/v8/src/debug-debugger.js +65 -34
  283. data/lib/libv8/v8/src/debug.cc +30 -60
  284. data/lib/libv8/v8/src/debug.h +5 -3
  285. data/lib/libv8/v8/src/deoptimizer.cc +227 -10
  286. data/lib/libv8/v8/src/deoptimizer.h +133 -9
  287. data/lib/libv8/v8/src/disassembler.cc +22 -14
  288. data/lib/libv8/v8/src/diy-fp.cc +4 -3
  289. data/lib/libv8/v8/src/diy-fp.h +3 -3
  290. data/lib/libv8/v8/src/elements.cc +634 -0
  291. data/lib/libv8/v8/src/elements.h +95 -0
  292. data/lib/libv8/v8/src/execution.cc +5 -21
  293. data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +3 -1
  294. data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +1 -1
  295. data/lib/libv8/v8/src/extensions/experimental/collator.cc +6 -2
  296. data/lib/libv8/v8/src/extensions/experimental/collator.h +1 -2
  297. data/lib/libv8/v8/src/extensions/experimental/datetime-format.cc +384 -0
  298. data/lib/libv8/v8/src/extensions/experimental/datetime-format.h +83 -0
  299. data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +18 -7
  300. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +12 -16
  301. data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +1 -1
  302. data/lib/libv8/v8/src/extensions/experimental/i18n-js2c.py +126 -0
  303. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +3 -4
  304. data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +1 -1
  305. data/lib/libv8/v8/src/{shell.h → extensions/experimental/i18n-natives.h} +8 -20
  306. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +45 -1
  307. data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +21 -1
  308. data/lib/libv8/v8/src/extensions/experimental/i18n.js +211 -11
  309. data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +4 -3
  310. data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +1 -1
  311. data/lib/libv8/v8/src/extensions/experimental/number-format.cc +374 -0
  312. data/lib/libv8/v8/src/extensions/experimental/number-format.h +71 -0
  313. data/lib/libv8/v8/src/factory.cc +89 -18
  314. data/lib/libv8/v8/src/factory.h +36 -8
  315. data/lib/libv8/v8/src/flag-definitions.h +11 -44
  316. data/lib/libv8/v8/src/frames-inl.h +8 -1
  317. data/lib/libv8/v8/src/frames.cc +39 -3
  318. data/lib/libv8/v8/src/frames.h +10 -3
  319. data/lib/libv8/v8/src/full-codegen.cc +311 -293
  320. data/lib/libv8/v8/src/full-codegen.h +183 -143
  321. data/lib/libv8/v8/src/func-name-inferrer.cc +29 -15
  322. data/lib/libv8/v8/src/func-name-inferrer.h +19 -9
  323. data/lib/libv8/v8/src/gdb-jit.cc +658 -55
  324. data/lib/libv8/v8/src/gdb-jit.h +6 -2
  325. data/lib/libv8/v8/src/global-handles.cc +368 -312
  326. data/lib/libv8/v8/src/global-handles.h +29 -36
  327. data/lib/libv8/v8/src/globals.h +3 -1
  328. data/lib/libv8/v8/src/handles.cc +43 -69
  329. data/lib/libv8/v8/src/handles.h +21 -16
  330. data/lib/libv8/v8/src/heap-inl.h +11 -13
  331. data/lib/libv8/v8/src/heap-profiler.cc +0 -999
  332. data/lib/libv8/v8/src/heap-profiler.h +0 -303
  333. data/lib/libv8/v8/src/heap.cc +366 -141
  334. data/lib/libv8/v8/src/heap.h +87 -26
  335. data/lib/libv8/v8/src/hydrogen-instructions.cc +192 -81
  336. data/lib/libv8/v8/src/hydrogen-instructions.h +711 -482
  337. data/lib/libv8/v8/src/hydrogen.cc +1146 -629
  338. data/lib/libv8/v8/src/hydrogen.h +100 -64
  339. data/lib/libv8/v8/src/ia32/assembler-ia32.cc +19 -0
  340. data/lib/libv8/v8/src/ia32/assembler-ia32.h +15 -2
  341. data/lib/libv8/v8/src/ia32/builtins-ia32.cc +34 -39
  342. data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +675 -377
  343. data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +8 -69
  344. data/lib/libv8/v8/src/ia32/codegen-ia32.cc +1 -0
  345. data/lib/libv8/v8/src/ia32/codegen-ia32.h +0 -2
  346. data/lib/libv8/v8/src/ia32/cpu-ia32.cc +3 -2
  347. data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +28 -3
  348. data/lib/libv8/v8/src/ia32/disasm-ia32.cc +21 -10
  349. data/lib/libv8/v8/src/ia32/frames-ia32.h +6 -5
  350. data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +459 -465
  351. data/lib/libv8/v8/src/ia32/ic-ia32.cc +196 -147
  352. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +575 -650
  353. data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +19 -21
  354. data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +7 -2
  355. data/lib/libv8/v8/src/ia32/lithium-ia32.cc +261 -256
  356. data/lib/libv8/v8/src/ia32/lithium-ia32.h +234 -335
  357. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +224 -67
  358. data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +63 -19
  359. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +22 -8
  360. data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +3 -0
  361. data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +380 -239
  362. data/lib/libv8/v8/src/ic.cc +198 -234
  363. data/lib/libv8/v8/src/ic.h +32 -30
  364. data/lib/libv8/v8/src/interpreter-irregexp.cc +6 -4
  365. data/lib/libv8/v8/src/isolate.cc +112 -95
  366. data/lib/libv8/v8/src/isolate.h +55 -71
  367. data/lib/libv8/v8/src/json-parser.h +486 -48
  368. data/lib/libv8/v8/src/json.js +28 -23
  369. data/lib/libv8/v8/src/jsregexp.cc +163 -208
  370. data/lib/libv8/v8/src/jsregexp.h +0 -1
  371. data/lib/libv8/v8/src/lithium-allocator-inl.h +29 -27
  372. data/lib/libv8/v8/src/lithium-allocator.cc +22 -17
  373. data/lib/libv8/v8/src/lithium-allocator.h +8 -8
  374. data/lib/libv8/v8/src/lithium.cc +16 -11
  375. data/lib/libv8/v8/src/lithium.h +31 -34
  376. data/lib/libv8/v8/src/liveedit.cc +111 -15
  377. data/lib/libv8/v8/src/liveedit.h +3 -4
  378. data/lib/libv8/v8/src/liveobjectlist.cc +116 -80
  379. data/lib/libv8/v8/src/liveobjectlist.h +2 -2
  380. data/lib/libv8/v8/src/log-inl.h +0 -4
  381. data/lib/libv8/v8/src/log-utils.cc +25 -143
  382. data/lib/libv8/v8/src/log-utils.h +13 -92
  383. data/lib/libv8/v8/src/log.cc +26 -249
  384. data/lib/libv8/v8/src/log.h +6 -17
  385. data/lib/libv8/v8/src/macros.py +9 -6
  386. data/lib/libv8/v8/src/mark-compact.cc +276 -56
  387. data/lib/libv8/v8/src/mark-compact.h +20 -0
  388. data/lib/libv8/v8/src/messages.js +93 -39
  389. data/lib/libv8/v8/src/mips/assembler-mips-inl.h +9 -3
  390. data/lib/libv8/v8/src/mips/assembler-mips.cc +297 -189
  391. data/lib/libv8/v8/src/mips/assembler-mips.h +121 -54
  392. data/lib/libv8/v8/src/mips/builtins-mips.cc +23 -24
  393. data/lib/libv8/v8/src/mips/code-stubs-mips.cc +484 -263
  394. data/lib/libv8/v8/src/mips/code-stubs-mips.h +8 -83
  395. data/lib/libv8/v8/src/mips/codegen-mips.h +0 -2
  396. data/lib/libv8/v8/src/mips/constants-mips.h +37 -11
  397. data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +6 -1
  398. data/lib/libv8/v8/src/mips/frames-mips.h +8 -7
  399. data/lib/libv8/v8/src/mips/full-codegen-mips.cc +258 -419
  400. data/lib/libv8/v8/src/mips/ic-mips.cc +181 -121
  401. data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +640 -382
  402. data/lib/libv8/v8/src/mips/macro-assembler-mips.h +94 -89
  403. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +23 -10
  404. data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +6 -1
  405. data/lib/libv8/v8/src/mips/simulator-mips.cc +249 -49
  406. data/lib/libv8/v8/src/mips/simulator-mips.h +25 -1
  407. data/lib/libv8/v8/src/mips/stub-cache-mips.cc +373 -161
  408. data/lib/libv8/v8/src/mirror-debugger.js +55 -8
  409. data/lib/libv8/v8/src/misc-intrinsics.h +89 -0
  410. data/lib/libv8/v8/src/mksnapshot.cc +36 -4
  411. data/lib/libv8/v8/src/natives.h +5 -2
  412. data/lib/libv8/v8/src/objects-debug.cc +73 -6
  413. data/lib/libv8/v8/src/objects-inl.h +529 -164
  414. data/lib/libv8/v8/src/objects-printer.cc +67 -12
  415. data/lib/libv8/v8/src/objects-visiting.cc +13 -2
  416. data/lib/libv8/v8/src/objects-visiting.h +41 -1
  417. data/lib/libv8/v8/src/objects.cc +2200 -1177
  418. data/lib/libv8/v8/src/objects.h +912 -283
  419. data/lib/libv8/v8/src/parser.cc +566 -371
  420. data/lib/libv8/v8/src/parser.h +35 -33
  421. data/lib/libv8/v8/src/platform-cygwin.cc +10 -25
  422. data/lib/libv8/v8/src/platform-freebsd.cc +4 -29
  423. data/lib/libv8/v8/src/platform-linux.cc +60 -57
  424. data/lib/libv8/v8/src/platform-macos.cc +4 -27
  425. data/lib/libv8/v8/src/platform-nullos.cc +3 -16
  426. data/lib/libv8/v8/src/platform-openbsd.cc +247 -85
  427. data/lib/libv8/v8/src/platform-posix.cc +43 -1
  428. data/lib/libv8/v8/src/platform-solaris.cc +151 -112
  429. data/lib/libv8/v8/src/platform-tls.h +1 -1
  430. data/lib/libv8/v8/src/platform-win32.cc +65 -39
  431. data/lib/libv8/v8/src/platform.h +17 -14
  432. data/lib/libv8/v8/src/preparse-data-format.h +2 -2
  433. data/lib/libv8/v8/src/preparse-data.h +8 -2
  434. data/lib/libv8/v8/src/preparser-api.cc +2 -18
  435. data/lib/libv8/v8/src/preparser.cc +106 -65
  436. data/lib/libv8/v8/src/preparser.h +26 -5
  437. data/lib/libv8/v8/src/prettyprinter.cc +25 -43
  438. data/lib/libv8/v8/src/profile-generator-inl.h +0 -4
  439. data/lib/libv8/v8/src/profile-generator.cc +213 -34
  440. data/lib/libv8/v8/src/profile-generator.h +9 -9
  441. data/lib/libv8/v8/src/property.h +1 -0
  442. data/lib/libv8/v8/src/proxy.js +74 -4
  443. data/lib/libv8/v8/src/regexp-macro-assembler.cc +10 -6
  444. data/lib/libv8/v8/src/regexp.js +16 -11
  445. data/lib/libv8/v8/src/rewriter.cc +24 -133
  446. data/lib/libv8/v8/src/runtime-profiler.cc +27 -151
  447. data/lib/libv8/v8/src/runtime-profiler.h +5 -31
  448. data/lib/libv8/v8/src/runtime.cc +1450 -681
  449. data/lib/libv8/v8/src/runtime.h +47 -31
  450. data/lib/libv8/v8/src/runtime.js +2 -1
  451. data/lib/libv8/v8/src/scanner-base.cc +358 -220
  452. data/lib/libv8/v8/src/scanner-base.h +30 -138
  453. data/lib/libv8/v8/src/scanner.cc +0 -18
  454. data/lib/libv8/v8/src/scanner.h +0 -15
  455. data/lib/libv8/v8/src/scopeinfo.cc +3 -1
  456. data/lib/libv8/v8/src/scopeinfo.h +1 -6
  457. data/lib/libv8/v8/src/scopes.cc +243 -253
  458. data/lib/libv8/v8/src/scopes.h +58 -109
  459. data/lib/libv8/v8/src/serialize.cc +12 -54
  460. data/lib/libv8/v8/src/serialize.h +47 -0
  461. data/lib/libv8/v8/src/small-pointer-list.h +25 -0
  462. data/lib/libv8/v8/src/spaces-inl.h +4 -50
  463. data/lib/libv8/v8/src/spaces.cc +64 -131
  464. data/lib/libv8/v8/src/spaces.h +19 -70
  465. data/lib/libv8/v8/src/string-stream.cc +3 -1
  466. data/lib/libv8/v8/src/string.js +10 -6
  467. data/lib/libv8/v8/src/strtod.cc +7 -3
  468. data/lib/libv8/v8/src/stub-cache.cc +59 -129
  469. data/lib/libv8/v8/src/stub-cache.h +42 -54
  470. data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +1447 -1339
  471. data/lib/libv8/v8/src/token.cc +4 -4
  472. data/lib/libv8/v8/src/token.h +6 -5
  473. data/lib/libv8/v8/src/type-info.cc +173 -129
  474. data/lib/libv8/v8/src/type-info.h +40 -22
  475. data/lib/libv8/v8/src/utils.cc +25 -304
  476. data/lib/libv8/v8/src/utils.h +118 -3
  477. data/lib/libv8/v8/src/v8-counters.h +3 -6
  478. data/lib/libv8/v8/src/v8.cc +34 -27
  479. data/lib/libv8/v8/src/v8.h +7 -7
  480. data/lib/libv8/v8/src/v8conversions.cc +129 -0
  481. data/lib/libv8/v8/src/v8conversions.h +60 -0
  482. data/lib/libv8/v8/src/v8globals.h +15 -6
  483. data/lib/libv8/v8/src/v8natives.js +300 -78
  484. data/lib/libv8/v8/src/v8threads.cc +14 -6
  485. data/lib/libv8/v8/src/v8threads.h +4 -1
  486. data/lib/libv8/v8/src/v8utils.cc +360 -0
  487. data/lib/libv8/v8/src/v8utils.h +17 -66
  488. data/lib/libv8/v8/src/variables.cc +7 -12
  489. data/lib/libv8/v8/src/variables.h +12 -10
  490. data/lib/libv8/v8/src/version.cc +2 -2
  491. data/lib/libv8/v8/src/vm-state-inl.h +0 -41
  492. data/lib/libv8/v8/src/vm-state.h +0 -11
  493. data/lib/libv8/v8/src/weakmap.js +103 -0
  494. data/lib/libv8/v8/src/x64/assembler-x64.h +6 -3
  495. data/lib/libv8/v8/src/x64/builtins-x64.cc +25 -22
  496. data/lib/libv8/v8/src/x64/code-stubs-x64.cc +523 -250
  497. data/lib/libv8/v8/src/x64/code-stubs-x64.h +8 -71
  498. data/lib/libv8/v8/src/x64/codegen-x64.cc +1 -0
  499. data/lib/libv8/v8/src/x64/codegen-x64.h +0 -2
  500. data/lib/libv8/v8/src/x64/cpu-x64.cc +2 -1
  501. data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +40 -8
  502. data/lib/libv8/v8/src/x64/disasm-x64.cc +12 -10
  503. data/lib/libv8/v8/src/x64/frames-x64.h +7 -6
  504. data/lib/libv8/v8/src/x64/full-codegen-x64.cc +310 -415
  505. data/lib/libv8/v8/src/x64/ic-x64.cc +180 -117
  506. data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +411 -523
  507. data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +11 -6
  508. data/lib/libv8/v8/src/x64/lithium-x64.cc +191 -216
  509. data/lib/libv8/v8/src/x64/lithium-x64.h +112 -263
  510. data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +177 -61
  511. data/lib/libv8/v8/src/x64/macro-assembler-x64.h +23 -7
  512. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +21 -9
  513. data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +6 -0
  514. data/lib/libv8/v8/src/x64/stub-cache-x64.cc +273 -107
  515. data/lib/libv8/v8/src/zone.cc +31 -22
  516. data/lib/libv8/v8/src/zone.h +12 -6
  517. data/lib/libv8/v8/tools/codemap.js +8 -0
  518. data/lib/libv8/v8/tools/gcmole/Makefile +43 -0
  519. data/lib/libv8/v8/tools/gcmole/gcmole.lua +0 -2
  520. data/lib/libv8/v8/tools/gdb-v8-support.py +154 -0
  521. data/lib/libv8/v8/tools/grokdump.py +44 -35
  522. data/lib/libv8/v8/tools/gyp/v8.gyp +94 -248
  523. data/lib/libv8/v8/tools/js2c.py +83 -52
  524. data/lib/libv8/v8/tools/linux-tick-processor +4 -6
  525. data/lib/libv8/v8/tools/ll_prof.py +3 -3
  526. data/lib/libv8/v8/tools/oom_dump/README +3 -1
  527. data/lib/libv8/v8/tools/presubmit.py +11 -4
  528. data/lib/libv8/v8/tools/profile.js +46 -2
  529. data/lib/libv8/v8/tools/splaytree.js +11 -0
  530. data/lib/libv8/v8/tools/stats-viewer.py +15 -11
  531. data/lib/libv8/v8/tools/test-wrapper-gypbuild.py +227 -0
  532. data/lib/libv8/v8/tools/test.py +28 -8
  533. data/lib/libv8/v8/tools/tickprocessor.js +0 -16
  534. data/lib/libv8/version.rb +1 -1
  535. data/libv8.gemspec +2 -2
  536. metadata +31 -19
  537. data/lib/libv8/scons/engine/SCons/Tool/f03.py +0 -63
  538. data/lib/libv8/v8/src/json-parser.cc +0 -504
@@ -78,7 +78,6 @@ class SlidingStateWindow;
78
78
  class Ticker;
79
79
 
80
80
  #undef LOG
81
- #ifdef ENABLE_LOGGING_AND_PROFILING
82
81
  #define LOG(isolate, Call) \
83
82
  do { \
84
83
  v8::internal::Logger* logger = \
@@ -86,9 +85,6 @@ class Ticker;
86
85
  if (logger->is_logging()) \
87
86
  logger->Call; \
88
87
  } while (false)
89
- #else
90
- #define LOG(isolate, Call) ((void) 0)
91
- #endif
92
88
 
93
89
  #define LOG_EVENTS_AND_TAGS_LIST(V) \
94
90
  V(CODE_CREATION_EVENT, "code-creation") \
@@ -161,7 +157,9 @@ class Logger {
161
157
  Sampler* sampler();
162
158
 
163
159
  // Frees resources acquired in Setup.
164
- void TearDown();
160
+ // When a temporary file is used for the log, returns its stream descriptor,
161
+ // leaving the file open.
162
+ FILE* TearDown();
165
163
 
166
164
  // Enable the computation of a sliding window of states.
167
165
  void EnableSlidingStateWindow();
@@ -272,7 +270,6 @@ class Logger {
272
270
  // Log an event reported from generated code
273
271
  void LogRuntime(Vector<const char> format, JSArray* args);
274
272
 
275
- #ifdef ENABLE_LOGGING_AND_PROFILING
276
273
  bool is_logging() {
277
274
  return logging_nesting_ > 0;
278
275
  }
@@ -280,13 +277,9 @@ class Logger {
280
277
  // Pause/Resume collection of profiling data.
281
278
  // When data collection is paused, CPU Tick events are discarded until
282
279
  // data collection is Resumed.
283
- void PauseProfiler(int flags, int tag);
284
- void ResumeProfiler(int flags, int tag);
285
- int GetActiveProfilerModules();
286
-
287
- // If logging is performed into a memory buffer, allows to
288
- // retrieve previously written messages. See v8.h.
289
- int GetLogLines(int from_pos, char* dest_buf, int max_size);
280
+ void PauseProfiler();
281
+ void ResumeProfiler();
282
+ bool IsProfilerPaused();
290
283
 
291
284
  // Logs all compiled functions found in the heap.
292
285
  void LogCompiledFunctions();
@@ -401,7 +394,6 @@ class Logger {
401
394
 
402
395
  int logging_nesting_;
403
396
  int cpu_profiler_nesting_;
404
- int heap_profiler_nesting_;
405
397
 
406
398
  Log* log_;
407
399
 
@@ -425,9 +417,6 @@ class Logger {
425
417
  Address prev_code_;
426
418
 
427
419
  friend class CpuProfiler;
428
- #else
429
- bool is_logging() { return false; }
430
- #endif
431
420
  };
432
421
 
433
422
 
@@ -38,12 +38,13 @@ const GETTER = 0;
38
38
  const SETTER = 1;
39
39
 
40
40
  # These definitions must match the index of the properties in objects.h.
41
- const kApiTagOffset = 0;
42
- const kApiPropertyListOffset = 1;
43
- const kApiSerialNumberOffset = 2;
44
- const kApiConstructorOffset = 2;
45
- const kApiPrototypeTemplateOffset = 5;
46
- const kApiParentTemplateOffset = 6;
41
+ const kApiTagOffset = 0;
42
+ const kApiPropertyListOffset = 1;
43
+ const kApiSerialNumberOffset = 2;
44
+ const kApiConstructorOffset = 2;
45
+ const kApiPrototypeTemplateOffset = 5;
46
+ const kApiParentTemplateOffset = 6;
47
+ const kApiFlagOffset = 14;
47
48
 
48
49
  const NO_HINT = 0;
49
50
  const NUMBER_HINT = 1;
@@ -64,6 +65,7 @@ const msPerMonth = 2592000000;
64
65
 
65
66
  # For apinatives.js
66
67
  const kUninitialized = -1;
68
+ const kReadOnlyPrototypeBit = 3; # For FunctionTemplateInfo, matches objects.h
67
69
 
68
70
  # Note: kDayZeroInJulianDay = ToJulianDay(1970, 0, 1).
69
71
  const kInvalidDate = 'Invalid Date';
@@ -128,6 +130,7 @@ macro TO_UINT32(arg) = (arg >>> 0);
128
130
  macro TO_STRING_INLINE(arg) = (IS_STRING(%IS_VAR(arg)) ? arg : NonStringToString(arg));
129
131
  macro TO_NUMBER_INLINE(arg) = (IS_NUMBER(%IS_VAR(arg)) ? arg : NonNumberToNumber(arg));
130
132
  macro TO_OBJECT_INLINE(arg) = (IS_SPEC_OBJECT(%IS_VAR(arg)) ? arg : ToObject(arg));
133
+ macro JSON_NUMBER_TO_STRING(arg) = ((%_IsSmi(%IS_VAR(arg)) || arg - arg == 0) ? %_NumberToString(arg) : "null");
131
134
 
132
135
  # Macros implemented in Python.
133
136
  python macro CHAR_CODE(str) = ord(str[1]);
@@ -64,13 +64,15 @@ MarkCompactCollector::MarkCompactCollector() : // NOLINT
64
64
  live_bytes_(0),
65
65
  #endif
66
66
  heap_(NULL),
67
- code_flusher_(NULL) { }
67
+ code_flusher_(NULL),
68
+ encountered_weak_maps_(NULL) { }
68
69
 
69
70
 
70
71
  void MarkCompactCollector::CollectGarbage() {
71
72
  // Make sure that Prepare() has been called. The individual steps below will
72
73
  // update the state as they proceed.
73
74
  ASSERT(state_ == PREPARE_GC);
75
+ ASSERT(encountered_weak_maps_ == Smi::FromInt(0));
74
76
 
75
77
  // Prepare has selected whether to compact the old generation or not.
76
78
  // Tell the tracer.
@@ -80,6 +82,8 @@ void MarkCompactCollector::CollectGarbage() {
80
82
 
81
83
  if (FLAG_collect_maps) ClearNonLiveTransitions();
82
84
 
85
+ ClearWeakMaps();
86
+
83
87
  SweepLargeObjectSpace();
84
88
 
85
89
  if (IsCompacting()) {
@@ -390,12 +394,18 @@ class StaticMarkingVisitor : public StaticVisitorBase {
390
394
  ConsString::BodyDescriptor,
391
395
  void>::Visit);
392
396
 
397
+ table_.Register(kVisitSlicedString,
398
+ &FixedBodyVisitor<StaticMarkingVisitor,
399
+ SlicedString::BodyDescriptor,
400
+ void>::Visit);
393
401
 
394
402
  table_.Register(kVisitFixedArray,
395
403
  &FlexibleBodyVisitor<StaticMarkingVisitor,
396
404
  FixedArray::BodyDescriptor,
397
405
  void>::Visit);
398
406
 
407
+ table_.Register(kVisitFixedDoubleArray, DataObjectVisitor::Visit);
408
+
399
409
  table_.Register(kVisitGlobalContext,
400
410
  &FixedBodyVisitor<StaticMarkingVisitor,
401
411
  Context::MarkCompactBodyDescriptor,
@@ -405,6 +415,8 @@ class StaticMarkingVisitor : public StaticVisitorBase {
405
415
  table_.Register(kVisitSeqAsciiString, &DataObjectVisitor::Visit);
406
416
  table_.Register(kVisitSeqTwoByteString, &DataObjectVisitor::Visit);
407
417
 
418
+ table_.Register(kVisitJSWeakMap, &VisitJSWeakMap);
419
+
408
420
  table_.Register(kVisitOddball,
409
421
  &FixedBodyVisitor<StaticMarkingVisitor,
410
422
  Oddball::BodyDescriptor,
@@ -422,6 +434,9 @@ class StaticMarkingVisitor : public StaticVisitorBase {
422
434
  table_.Register(kVisitJSFunction,
423
435
  &VisitJSFunctionAndFlushCode);
424
436
 
437
+ table_.Register(kVisitJSRegExp,
438
+ &VisitRegExpAndFlushCode);
439
+
425
440
  table_.Register(kVisitPropertyCell,
426
441
  &FixedBodyVisitor<StaticMarkingVisitor,
427
442
  JSGlobalPropertyCell::BodyDescriptor,
@@ -551,6 +566,34 @@ class StaticMarkingVisitor : public StaticVisitorBase {
551
566
  StructBodyDescriptor,
552
567
  void> StructObjectVisitor;
553
568
 
569
+ static void VisitJSWeakMap(Map* map, HeapObject* object) {
570
+ MarkCompactCollector* collector = map->heap()->mark_compact_collector();
571
+ JSWeakMap* weak_map = reinterpret_cast<JSWeakMap*>(object);
572
+
573
+ // Enqueue weak map in linked list of encountered weak maps.
574
+ ASSERT(weak_map->next() == Smi::FromInt(0));
575
+ weak_map->set_next(collector->encountered_weak_maps());
576
+ collector->set_encountered_weak_maps(weak_map);
577
+
578
+ // Skip visiting the backing hash table containing the mappings.
579
+ int object_size = JSWeakMap::BodyDescriptor::SizeOf(map, object);
580
+ BodyVisitorBase<StaticMarkingVisitor>::IteratePointers(
581
+ map->heap(),
582
+ object,
583
+ JSWeakMap::BodyDescriptor::kStartOffset,
584
+ JSWeakMap::kTableOffset);
585
+ BodyVisitorBase<StaticMarkingVisitor>::IteratePointers(
586
+ map->heap(),
587
+ object,
588
+ JSWeakMap::kTableOffset + kPointerSize,
589
+ object_size);
590
+
591
+ // Mark the backing hash table without pushing it on the marking stack.
592
+ ASSERT(!weak_map->unchecked_table()->IsMarked());
593
+ ASSERT(weak_map->unchecked_table()->map()->IsMarked());
594
+ collector->SetMark(weak_map->unchecked_table());
595
+ }
596
+
554
597
  static void VisitCode(Map* map, HeapObject* object) {
555
598
  reinterpret_cast<Code*>(object)->CodeIterateBody<StaticMarkingVisitor>(
556
599
  map->heap());
@@ -562,6 +605,8 @@ class StaticMarkingVisitor : public StaticVisitorBase {
562
605
  // flushed.
563
606
  static const int kCodeAgeThreshold = 5;
564
607
 
608
+ static const int kRegExpCodeThreshold = 5;
609
+
565
610
  inline static bool HasSourceCode(Heap* heap, SharedFunctionInfo* info) {
566
611
  Object* undefined = heap->raw_unchecked_undefined_value();
567
612
  return (info->script() != undefined) &&
@@ -670,8 +715,9 @@ class StaticMarkingVisitor : public StaticVisitorBase {
670
715
 
671
716
  Map* map = SafeMap(ctx);
672
717
  Heap* heap = map->heap();
673
- if (!(map == heap->raw_unchecked_context_map() ||
718
+ if (!(map == heap->raw_unchecked_function_context_map() ||
674
719
  map == heap->raw_unchecked_catch_context_map() ||
720
+ map == heap->raw_unchecked_with_context_map() ||
675
721
  map == heap->raw_unchecked_global_context_map())) {
676
722
  return false;
677
723
  }
@@ -697,6 +743,68 @@ class StaticMarkingVisitor : public StaticVisitorBase {
697
743
  }
698
744
 
699
745
 
746
+ static void UpdateRegExpCodeAgeAndFlush(Heap* heap,
747
+ JSRegExp* re,
748
+ bool is_ascii) {
749
+ // Make sure that the fixed array is in fact initialized on the RegExp.
750
+ // We could potentially trigger a GC when initializing the RegExp.
751
+ if (SafeMap(re->data())->instance_type() != FIXED_ARRAY_TYPE) return;
752
+
753
+ // Make sure this is a RegExp that actually contains code.
754
+ if (re->TypeTagUnchecked() != JSRegExp::IRREGEXP) return;
755
+
756
+ Object* code = re->DataAtUnchecked(JSRegExp::code_index(is_ascii));
757
+ if (!code->IsSmi() && SafeMap(code)->instance_type() == CODE_TYPE) {
758
+ // Save a copy that can be reinstated if we need the code again.
759
+ re->SetDataAtUnchecked(JSRegExp::saved_code_index(is_ascii),
760
+ code,
761
+ heap);
762
+ // Set a number in the 0-255 range to guarantee no smi overflow.
763
+ re->SetDataAtUnchecked(JSRegExp::code_index(is_ascii),
764
+ Smi::FromInt(heap->sweep_generation() & 0xff),
765
+ heap);
766
+ } else if (code->IsSmi()) {
767
+ int value = Smi::cast(code)->value();
768
+ // The regexp has not been compiled yet or there was a compilation error.
769
+ if (value == JSRegExp::kUninitializedValue ||
770
+ value == JSRegExp::kCompilationErrorValue) {
771
+ return;
772
+ }
773
+
774
+ // Check if we should flush now.
775
+ if (value == ((heap->sweep_generation() - kRegExpCodeThreshold) & 0xff)) {
776
+ re->SetDataAtUnchecked(JSRegExp::code_index(is_ascii),
777
+ Smi::FromInt(JSRegExp::kUninitializedValue),
778
+ heap);
779
+ re->SetDataAtUnchecked(JSRegExp::saved_code_index(is_ascii),
780
+ Smi::FromInt(JSRegExp::kUninitializedValue),
781
+ heap);
782
+ }
783
+ }
784
+ }
785
+
786
+
787
+ // Works by setting the current sweep_generation (as a smi) in the
788
+ // code object place in the data array of the RegExp and keeps a copy
789
+ // around that can be reinstated if we reuse the RegExp before flushing.
790
+ // If we did not use the code for kRegExpCodeThreshold mark sweep GCs
791
+ // we flush the code.
792
+ static void VisitRegExpAndFlushCode(Map* map, HeapObject* object) {
793
+ Heap* heap = map->heap();
794
+ MarkCompactCollector* collector = heap->mark_compact_collector();
795
+ if (!collector->is_code_flushing_enabled()) {
796
+ VisitJSRegExpFields(map, object);
797
+ return;
798
+ }
799
+ JSRegExp* re = reinterpret_cast<JSRegExp*>(object);
800
+ // Flush code or set age on both ascii and two byte code.
801
+ UpdateRegExpCodeAgeAndFlush(heap, re, true);
802
+ UpdateRegExpCodeAgeAndFlush(heap, re, false);
803
+ // Visit the fields of the RegExp, including the updated FixedArray.
804
+ VisitJSRegExpFields(map, object);
805
+ }
806
+
807
+
700
808
  static void VisitSharedFunctionInfoAndFlushCode(Map* map,
701
809
  HeapObject* object) {
702
810
  MarkCompactCollector* collector = map->heap()->mark_compact_collector();
@@ -827,6 +935,15 @@ class StaticMarkingVisitor : public StaticVisitorBase {
827
935
  // Don't visit the next function list field as it is a weak reference.
828
936
  }
829
937
 
938
+ static inline void VisitJSRegExpFields(Map* map,
939
+ HeapObject* object) {
940
+ int last_property_offset =
941
+ JSRegExp::kSize + kPointerSize * map->inobject_properties();
942
+ VisitPointers(map->heap(),
943
+ SLOT_ADDR(object, JSRegExp::kPropertiesOffset),
944
+ SLOT_ADDR(object, last_property_offset));
945
+ }
946
+
830
947
 
831
948
  static void VisitSharedFunctionInfoFields(Heap* heap,
832
949
  HeapObject* object,
@@ -866,18 +983,6 @@ class MarkingVisitor : public ObjectVisitor {
866
983
  StaticMarkingVisitor::VisitPointers(heap_, start, end);
867
984
  }
868
985
 
869
- void VisitCodeTarget(Heap* heap, RelocInfo* rinfo) {
870
- StaticMarkingVisitor::VisitCodeTarget(heap, rinfo);
871
- }
872
-
873
- void VisitGlobalPropertyCell(Heap* heap, RelocInfo* rinfo) {
874
- StaticMarkingVisitor::VisitGlobalPropertyCell(heap, rinfo);
875
- }
876
-
877
- void VisitDebugTarget(Heap* heap, RelocInfo* rinfo) {
878
- StaticMarkingVisitor::VisitDebugTarget(heap, rinfo);
879
- }
880
-
881
986
  private:
882
987
  Heap* heap_;
883
988
  };
@@ -1030,6 +1135,7 @@ class SymbolTableCleaner : public ObjectVisitor {
1030
1135
  int PointersRemoved() {
1031
1136
  return pointers_removed_;
1032
1137
  }
1138
+
1033
1139
  private:
1034
1140
  Heap* heap_;
1035
1141
  int pointers_removed_;
@@ -1060,9 +1166,12 @@ void MarkCompactCollector::MarkUnmarkedObject(HeapObject* object) {
1060
1166
  map->ClearCodeCache(heap());
1061
1167
  }
1062
1168
  SetMark(map);
1063
- if (FLAG_collect_maps &&
1064
- map->instance_type() >= FIRST_JS_OBJECT_TYPE &&
1065
- map->instance_type() <= JS_FUNCTION_TYPE) {
1169
+
1170
+ // When map collection is enabled we have to mark through map's transitions
1171
+ // in a special way to make transition links weak.
1172
+ // Only maps for subclasses of JSReceiver can have transitions.
1173
+ STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE);
1174
+ if (FLAG_collect_maps && map->instance_type() >= FIRST_JS_RECEIVER_TYPE) {
1066
1175
  MarkMapContents(map);
1067
1176
  } else {
1068
1177
  marking_stack_.Push(map);
@@ -1144,8 +1253,8 @@ void MarkCompactCollector::CreateBackPointers() {
1144
1253
  next_object != NULL; next_object = iterator.next()) {
1145
1254
  if (next_object->IsMap()) { // Could also be ByteArray on free list.
1146
1255
  Map* map = Map::cast(next_object);
1147
- if (map->instance_type() >= FIRST_JS_OBJECT_TYPE &&
1148
- map->instance_type() <= JS_FUNCTION_TYPE) {
1256
+ STATIC_ASSERT(LAST_TYPE == LAST_CALLABLE_SPEC_OBJECT_TYPE);
1257
+ if (map->instance_type() >= FIRST_JS_RECEIVER_TYPE) {
1149
1258
  map->CreateBackPointers();
1150
1259
  } else {
1151
1260
  ASSERT(map->instance_descriptors() == heap()->empty_descriptor_array());
@@ -1298,20 +1407,26 @@ void MarkCompactCollector::MarkImplicitRefGroups() {
1298
1407
  // marking stack have been marked, or are overflowed in the heap.
1299
1408
  void MarkCompactCollector::EmptyMarkingStack() {
1300
1409
  while (!marking_stack_.is_empty()) {
1301
- HeapObject* object = marking_stack_.Pop();
1302
- ASSERT(object->IsHeapObject());
1303
- ASSERT(heap()->Contains(object));
1304
- ASSERT(object->IsMarked());
1305
- ASSERT(!object->IsOverflowed());
1306
-
1307
- // Because the object is marked, we have to recover the original map
1308
- // pointer and use it to mark the object's body.
1309
- MapWord map_word = object->map_word();
1310
- map_word.ClearMark();
1311
- Map* map = map_word.ToMap();
1312
- MarkObject(map);
1410
+ while (!marking_stack_.is_empty()) {
1411
+ HeapObject* object = marking_stack_.Pop();
1412
+ ASSERT(object->IsHeapObject());
1413
+ ASSERT(heap()->Contains(object));
1414
+ ASSERT(object->IsMarked());
1415
+ ASSERT(!object->IsOverflowed());
1313
1416
 
1314
- StaticMarkingVisitor::IterateBody(map, object);
1417
+ // Because the object is marked, we have to recover the original map
1418
+ // pointer and use it to mark the object's body.
1419
+ MapWord map_word = object->map_word();
1420
+ map_word.ClearMark();
1421
+ Map* map = map_word.ToMap();
1422
+ MarkObject(map);
1423
+
1424
+ StaticMarkingVisitor::IterateBody(map, object);
1425
+ }
1426
+
1427
+ // Process encountered weak maps, mark objects only reachable by those
1428
+ // weak maps and repeat until fix-point is reached.
1429
+ ProcessWeakMaps();
1315
1430
  }
1316
1431
  }
1317
1432
 
@@ -1429,6 +1544,12 @@ void MarkCompactCollector::MarkLiveObjects() {
1429
1544
  // reachable from the weak roots.
1430
1545
  ProcessExternalMarking();
1431
1546
 
1547
+ // Object literal map caches reference symbols (cache keys) and maps
1548
+ // (cache values). At this point still useful maps have already been
1549
+ // marked. Mark the keys for the alive values before we process the
1550
+ // symbol table.
1551
+ ProcessMapCaches();
1552
+
1432
1553
  // Prune the symbol table removing all symbols only pointed to by the
1433
1554
  // symbol table. Cannot use symbol_table() here because the symbol
1434
1555
  // table is marked.
@@ -1457,6 +1578,57 @@ void MarkCompactCollector::MarkLiveObjects() {
1457
1578
  }
1458
1579
 
1459
1580
 
1581
+ void MarkCompactCollector::ProcessMapCaches() {
1582
+ Object* raw_context = heap()->global_contexts_list_;
1583
+ while (raw_context != heap()->undefined_value()) {
1584
+ Context* context = reinterpret_cast<Context*>(raw_context);
1585
+ if (context->IsMarked()) {
1586
+ HeapObject* raw_map_cache =
1587
+ HeapObject::cast(context->get(Context::MAP_CACHE_INDEX));
1588
+ // A map cache may be reachable from the stack. In this case
1589
+ // it's already transitively marked and it's too late to clean
1590
+ // up its parts.
1591
+ if (!raw_map_cache->IsMarked() &&
1592
+ raw_map_cache != heap()->undefined_value()) {
1593
+ MapCache* map_cache = reinterpret_cast<MapCache*>(raw_map_cache);
1594
+ int existing_elements = map_cache->NumberOfElements();
1595
+ int used_elements = 0;
1596
+ for (int i = MapCache::kElementsStartIndex;
1597
+ i < map_cache->length();
1598
+ i += MapCache::kEntrySize) {
1599
+ Object* raw_key = map_cache->get(i);
1600
+ if (raw_key == heap()->undefined_value() ||
1601
+ raw_key == heap()->null_value()) continue;
1602
+ STATIC_ASSERT(MapCache::kEntrySize == 2);
1603
+ Object* raw_map = map_cache->get(i + 1);
1604
+ if (raw_map->IsHeapObject() &&
1605
+ HeapObject::cast(raw_map)->IsMarked()) {
1606
+ ++used_elements;
1607
+ } else {
1608
+ // Delete useless entries with unmarked maps.
1609
+ ASSERT(raw_map->IsMap());
1610
+ map_cache->set_null_unchecked(heap(), i);
1611
+ map_cache->set_null_unchecked(heap(), i + 1);
1612
+ }
1613
+ }
1614
+ if (used_elements == 0) {
1615
+ context->set(Context::MAP_CACHE_INDEX, heap()->undefined_value());
1616
+ } else {
1617
+ // Note: we don't actually shrink the cache here to avoid
1618
+ // extra complexity during GC. We rely on subsequent cache
1619
+ // usages (EnsureCapacity) to do this.
1620
+ map_cache->ElementsRemoved(existing_elements - used_elements);
1621
+ MarkObject(map_cache);
1622
+ }
1623
+ }
1624
+ }
1625
+ // Move to next element in the list.
1626
+ raw_context = context->get(Context::NEXT_CONTEXT_LINK);
1627
+ }
1628
+ ProcessMarkingStack();
1629
+ }
1630
+
1631
+
1460
1632
  #ifdef DEBUG
1461
1633
  void MarkCompactCollector::UpdateLiveObjectCount(HeapObject* obj) {
1462
1634
  live_bytes_ += obj->Size();
@@ -1521,8 +1693,8 @@ void MarkCompactCollector::ClearNonLiveTransitions() {
1521
1693
 
1522
1694
  ASSERT(SafeIsMap(map));
1523
1695
  // Only JSObject and subtypes have map transitions and back pointers.
1524
- if (map->instance_type() < FIRST_JS_OBJECT_TYPE) continue;
1525
- if (map->instance_type() > JS_FUNCTION_TYPE) continue;
1696
+ STATIC_ASSERT(LAST_TYPE == LAST_CALLABLE_SPEC_OBJECT_TYPE);
1697
+ if (map->instance_type() < FIRST_JS_RECEIVER_TYPE) continue;
1526
1698
 
1527
1699
  if (map->IsMarked() && map->attached_to_shared_function_info()) {
1528
1700
  // This map is used for inobject slack tracking and has been detached
@@ -1532,38 +1704,48 @@ void MarkCompactCollector::ClearNonLiveTransitions() {
1532
1704
  }
1533
1705
 
1534
1706
  // Clear dead prototype transitions.
1535
- FixedArray* prototype_transitions = map->unchecked_prototype_transitions();
1536
- if (prototype_transitions->length() > 0) {
1537
- int finger = Smi::cast(prototype_transitions->get(0))->value();
1538
- int new_finger = 1;
1539
- for (int i = 1; i < finger; i += 2) {
1540
- Object* prototype = prototype_transitions->get(i);
1541
- Object* cached_map = prototype_transitions->get(i + 1);
1707
+ int number_of_transitions = map->NumberOfProtoTransitions();
1708
+ if (number_of_transitions > 0) {
1709
+ FixedArray* prototype_transitions =
1710
+ map->unchecked_prototype_transitions();
1711
+ int new_number_of_transitions = 0;
1712
+ const int header = Map::kProtoTransitionHeaderSize;
1713
+ const int proto_offset =
1714
+ header + Map::kProtoTransitionPrototypeOffset;
1715
+ const int map_offset = header + Map::kProtoTransitionMapOffset;
1716
+ const int step = Map::kProtoTransitionElementsPerEntry;
1717
+ for (int i = 0; i < number_of_transitions; i++) {
1718
+ Object* prototype = prototype_transitions->get(proto_offset + i * step);
1719
+ Object* cached_map = prototype_transitions->get(map_offset + i * step);
1542
1720
  if (HeapObject::cast(prototype)->IsMarked() &&
1543
1721
  HeapObject::cast(cached_map)->IsMarked()) {
1544
- if (new_finger != i) {
1545
- prototype_transitions->set_unchecked(heap_,
1546
- new_finger,
1547
- prototype,
1548
- UPDATE_WRITE_BARRIER);
1549
- prototype_transitions->set_unchecked(heap_,
1550
- new_finger + 1,
1551
- cached_map,
1552
- SKIP_WRITE_BARRIER);
1722
+ if (new_number_of_transitions != i) {
1723
+ prototype_transitions->set_unchecked(
1724
+ heap_,
1725
+ proto_offset + new_number_of_transitions * step,
1726
+ prototype,
1727
+ UPDATE_WRITE_BARRIER);
1728
+ prototype_transitions->set_unchecked(
1729
+ heap_,
1730
+ map_offset + new_number_of_transitions * step,
1731
+ cached_map,
1732
+ SKIP_WRITE_BARRIER);
1553
1733
  }
1554
- new_finger += 2;
1734
+ new_number_of_transitions++;
1555
1735
  }
1556
1736
  }
1557
1737
 
1558
1738
  // Fill slots that became free with undefined value.
1559
1739
  Object* undefined = heap()->raw_unchecked_undefined_value();
1560
- for (int i = new_finger; i < finger; i++) {
1740
+ for (int i = new_number_of_transitions * step;
1741
+ i < number_of_transitions * step;
1742
+ i++) {
1561
1743
  prototype_transitions->set_unchecked(heap_,
1562
- i,
1744
+ header + i,
1563
1745
  undefined,
1564
1746
  SKIP_WRITE_BARRIER);
1565
1747
  }
1566
- prototype_transitions->set_unchecked(0, Smi::FromInt(new_finger));
1748
+ map->SetNumberOfProtoTransitions(new_number_of_transitions);
1567
1749
  }
1568
1750
 
1569
1751
  // Follow the chain of back pointers to find the prototype.
@@ -1597,6 +1779,45 @@ void MarkCompactCollector::ClearNonLiveTransitions() {
1597
1779
  }
1598
1780
  }
1599
1781
 
1782
+
1783
+ void MarkCompactCollector::ProcessWeakMaps() {
1784
+ Object* weak_map_obj = encountered_weak_maps();
1785
+ while (weak_map_obj != Smi::FromInt(0)) {
1786
+ ASSERT(HeapObject::cast(weak_map_obj)->IsMarked());
1787
+ JSWeakMap* weak_map = reinterpret_cast<JSWeakMap*>(weak_map_obj);
1788
+ ObjectHashTable* table = weak_map->unchecked_table();
1789
+ for (int i = 0; i < table->Capacity(); i++) {
1790
+ if (HeapObject::cast(table->KeyAt(i))->IsMarked()) {
1791
+ Object* value = table->get(table->EntryToValueIndex(i));
1792
+ StaticMarkingVisitor::MarkObjectByPointer(heap(), &value);
1793
+ table->set_unchecked(heap(),
1794
+ table->EntryToValueIndex(i),
1795
+ value,
1796
+ UPDATE_WRITE_BARRIER);
1797
+ }
1798
+ }
1799
+ weak_map_obj = weak_map->next();
1800
+ }
1801
+ }
1802
+
1803
+
1804
+ void MarkCompactCollector::ClearWeakMaps() {
1805
+ Object* weak_map_obj = encountered_weak_maps();
1806
+ while (weak_map_obj != Smi::FromInt(0)) {
1807
+ ASSERT(HeapObject::cast(weak_map_obj)->IsMarked());
1808
+ JSWeakMap* weak_map = reinterpret_cast<JSWeakMap*>(weak_map_obj);
1809
+ ObjectHashTable* table = weak_map->unchecked_table();
1810
+ for (int i = 0; i < table->Capacity(); i++) {
1811
+ if (!HeapObject::cast(table->KeyAt(i))->IsMarked()) {
1812
+ table->RemoveEntry(i, heap());
1813
+ }
1814
+ }
1815
+ weak_map_obj = weak_map->next();
1816
+ weak_map->set_next(Smi::FromInt(0));
1817
+ }
1818
+ set_encountered_weak_maps(Smi::FromInt(0));
1819
+ }
1820
+
1600
1821
  // -------------------------------------------------------------------------
1601
1822
  // Phase 2: Encode forwarding addresses.
1602
1823
  // When compacting, forwarding addresses for objects in old space and map
@@ -1925,6 +2146,7 @@ class PointersToNewGenUpdatingVisitor: public ObjectVisitor {
1925
2146
  VisitPointer(&target);
1926
2147
  rinfo->set_call_address(Code::cast(target)->instruction_start());
1927
2148
  }
2149
+
1928
2150
  private:
1929
2151
  Heap* heap_;
1930
2152
  };
@@ -3119,11 +3341,9 @@ void MarkCompactCollector::ReportDeleteIfNeeded(HeapObject* obj,
3119
3341
  GDBJITInterface::RemoveCode(reinterpret_cast<Code*>(obj));
3120
3342
  }
3121
3343
  #endif
3122
- #ifdef ENABLE_LOGGING_AND_PROFILING
3123
3344
  if (obj->IsCode()) {
3124
3345
  PROFILE(isolate, CodeDeleteEvent(obj->address()));
3125
3346
  }
3126
- #endif
3127
3347
  }
3128
3348
 
3129
3349