libv8 3.3.10.4 → 3.5.10.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/libv8/scons/CHANGES.txt +24 -231
- data/lib/libv8/scons/LICENSE.txt +1 -1
- data/lib/libv8/scons/MANIFEST +0 -1
- data/lib/libv8/scons/PKG-INFO +1 -1
- data/lib/libv8/scons/README.txt +9 -9
- data/lib/libv8/scons/RELEASE.txt +75 -77
- data/lib/libv8/scons/engine/SCons/Action.py +6 -22
- data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
- data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
- data/lib/libv8/scons/engine/SCons/Defaults.py +10 -24
- data/lib/libv8/scons/engine/SCons/Environment.py +19 -118
- data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
- data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
- data/lib/libv8/scons/engine/SCons/Job.py +2 -2
- data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/FS.py +121 -281
- data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/__init__.py +5 -6
- data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/darwin.py +3 -27
- data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConsign.py +3 -9
- data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +2 -5
- data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
- data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Main.py +11 -82
- data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
- data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
- data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
- data/lib/libv8/scons/engine/SCons/Taskmaster.py +2 -10
- data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +2 -19
- data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +6 -9
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +2 -29
- data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dmd.py +7 -24
- data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/dvips.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/install.py +3 -57
- data/lib/libv8/scons/engine/SCons/Tool/intelc.py +25 -65
- data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/jar.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/latex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/link.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mingw.py +10 -31
- data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mslink.py +9 -61
- data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/msvc.py +11 -21
- data/lib/libv8/scons/engine/SCons/Tool/msvs.py +59 -477
- data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rmic.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/swig.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tex.py +43 -96
- data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/yacc.py +2 -12
- data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Util.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
- data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
- data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
- data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
- data/lib/libv8/scons/engine/SCons/dblite.py +1 -4
- data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
- data/lib/libv8/scons/scons-time.1 +3 -3
- data/lib/libv8/scons/scons.1 +1164 -1170
- data/lib/libv8/scons/sconsign.1 +3 -3
- data/lib/libv8/scons/script/scons +22 -22
- data/lib/libv8/scons/script/scons-time +2 -2
- data/lib/libv8/scons/script/scons.bat +4 -7
- data/lib/libv8/scons/script/sconsign +20 -21
- data/lib/libv8/scons/setup.cfg +1 -0
- data/lib/libv8/scons/setup.py +40 -38
- data/lib/libv8/v8/.gitignore +1 -1
- data/lib/libv8/v8/AUTHORS +2 -0
- data/lib/libv8/v8/ChangeLog +387 -0
- data/lib/libv8/v8/Makefile +171 -0
- data/lib/libv8/v8/SConstruct +124 -51
- data/lib/libv8/v8/build/README.txt +31 -14
- data/lib/libv8/v8/build/all.gyp +11 -4
- data/lib/libv8/v8/build/armu.gypi +6 -2
- data/lib/libv8/v8/build/common.gypi +240 -94
- data/lib/libv8/v8/build/gyp_v8 +32 -4
- data/lib/libv8/v8/build/standalone.gypi +200 -0
- data/lib/libv8/v8/include/v8-debug.h +0 -0
- data/lib/libv8/v8/include/v8-profiler.h +8 -11
- data/lib/libv8/v8/include/v8.h +191 -108
- data/lib/libv8/v8/preparser/SConscript +2 -2
- data/lib/libv8/v8/preparser/preparser-process.cc +3 -3
- data/lib/libv8/v8/preparser/preparser.gyp +42 -0
- data/lib/libv8/v8/src/SConscript +33 -8
- data/lib/libv8/v8/src/accessors.cc +77 -43
- data/lib/libv8/v8/src/api.cc +393 -191
- data/lib/libv8/v8/src/api.h +4 -8
- data/lib/libv8/v8/src/apinatives.js +15 -3
- data/lib/libv8/v8/src/arguments.h +8 -0
- data/lib/libv8/v8/src/arm/assembler-arm.cc +120 -120
- data/lib/libv8/v8/src/arm/assembler-arm.h +92 -43
- data/lib/libv8/v8/src/arm/builtins-arm.cc +32 -39
- data/lib/libv8/v8/src/arm/code-stubs-arm.cc +572 -351
- data/lib/libv8/v8/src/arm/code-stubs-arm.h +8 -77
- data/lib/libv8/v8/src/arm/codegen-arm.h +0 -2
- data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +50 -30
- data/lib/libv8/v8/src/arm/disasm-arm.cc +1 -1
- data/lib/libv8/v8/src/arm/frames-arm.h +9 -5
- data/lib/libv8/v8/src/arm/full-codegen-arm.cc +331 -432
- data/lib/libv8/v8/src/arm/ic-arm.cc +192 -124
- data/lib/libv8/v8/src/arm/lithium-arm.cc +216 -232
- data/lib/libv8/v8/src/arm/lithium-arm.h +106 -259
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +633 -642
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +4 -4
- data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +1 -3
- data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +260 -185
- data/lib/libv8/v8/src/arm/macro-assembler-arm.h +45 -25
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +25 -13
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +3 -0
- data/lib/libv8/v8/src/arm/stub-cache-arm.cc +413 -226
- data/lib/libv8/v8/src/array.js +38 -18
- data/lib/libv8/v8/src/assembler.cc +12 -5
- data/lib/libv8/v8/src/assembler.h +15 -9
- data/lib/libv8/v8/src/ast-inl.h +34 -25
- data/lib/libv8/v8/src/ast.cc +141 -72
- data/lib/libv8/v8/src/ast.h +255 -181
- data/lib/libv8/v8/src/bignum.cc +3 -4
- data/lib/libv8/v8/src/bootstrapper.cc +55 -11
- data/lib/libv8/v8/src/bootstrapper.h +3 -2
- data/lib/libv8/v8/src/builtins.cc +8 -2
- data/lib/libv8/v8/src/builtins.h +4 -0
- data/lib/libv8/v8/src/cached-powers.cc +8 -4
- data/lib/libv8/v8/src/checks.h +3 -3
- data/lib/libv8/v8/src/code-stubs.cc +173 -28
- data/lib/libv8/v8/src/code-stubs.h +104 -148
- data/lib/libv8/v8/src/codegen.cc +8 -8
- data/lib/libv8/v8/src/compilation-cache.cc +2 -47
- data/lib/libv8/v8/src/compilation-cache.h +0 -10
- data/lib/libv8/v8/src/compiler.cc +27 -16
- data/lib/libv8/v8/src/compiler.h +13 -18
- data/lib/libv8/v8/src/contexts.cc +107 -72
- data/lib/libv8/v8/src/contexts.h +70 -34
- data/lib/libv8/v8/src/conversions-inl.h +572 -14
- data/lib/libv8/v8/src/conversions.cc +9 -707
- data/lib/libv8/v8/src/conversions.h +23 -12
- data/lib/libv8/v8/src/cpu-profiler-inl.h +2 -19
- data/lib/libv8/v8/src/cpu-profiler.cc +4 -21
- data/lib/libv8/v8/src/cpu-profiler.h +8 -17
- data/lib/libv8/v8/src/d8-debug.cc +5 -3
- data/lib/libv8/v8/src/d8-debug.h +6 -7
- data/lib/libv8/v8/src/d8-posix.cc +1 -10
- data/lib/libv8/v8/src/d8.cc +721 -219
- data/lib/libv8/v8/src/d8.gyp +37 -12
- data/lib/libv8/v8/src/d8.h +141 -19
- data/lib/libv8/v8/src/d8.js +17 -8
- data/lib/libv8/v8/src/date.js +16 -5
- data/lib/libv8/v8/src/dateparser-inl.h +242 -39
- data/lib/libv8/v8/src/dateparser.cc +38 -4
- data/lib/libv8/v8/src/dateparser.h +170 -28
- data/lib/libv8/v8/src/debug-agent.cc +5 -3
- data/lib/libv8/v8/src/debug-agent.h +11 -7
- data/lib/libv8/v8/src/debug-debugger.js +65 -34
- data/lib/libv8/v8/src/debug.cc +30 -60
- data/lib/libv8/v8/src/debug.h +5 -3
- data/lib/libv8/v8/src/deoptimizer.cc +227 -10
- data/lib/libv8/v8/src/deoptimizer.h +133 -9
- data/lib/libv8/v8/src/disassembler.cc +22 -14
- data/lib/libv8/v8/src/diy-fp.cc +4 -3
- data/lib/libv8/v8/src/diy-fp.h +3 -3
- data/lib/libv8/v8/src/elements.cc +634 -0
- data/lib/libv8/v8/src/elements.h +95 -0
- data/lib/libv8/v8/src/execution.cc +5 -21
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +3 -1
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/collator.cc +6 -2
- data/lib/libv8/v8/src/extensions/experimental/collator.h +1 -2
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.cc +384 -0
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.h +83 -0
- data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +18 -7
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +12 -16
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-js2c.py +126 -0
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +3 -4
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +1 -1
- data/lib/libv8/v8/src/{shell.h → extensions/experimental/i18n-natives.h} +8 -20
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +45 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +21 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n.js +211 -11
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +4 -3
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/number-format.cc +374 -0
- data/lib/libv8/v8/src/extensions/experimental/number-format.h +71 -0
- data/lib/libv8/v8/src/factory.cc +89 -18
- data/lib/libv8/v8/src/factory.h +36 -8
- data/lib/libv8/v8/src/flag-definitions.h +11 -44
- data/lib/libv8/v8/src/frames-inl.h +8 -1
- data/lib/libv8/v8/src/frames.cc +39 -3
- data/lib/libv8/v8/src/frames.h +10 -3
- data/lib/libv8/v8/src/full-codegen.cc +311 -293
- data/lib/libv8/v8/src/full-codegen.h +183 -143
- data/lib/libv8/v8/src/func-name-inferrer.cc +29 -15
- data/lib/libv8/v8/src/func-name-inferrer.h +19 -9
- data/lib/libv8/v8/src/gdb-jit.cc +658 -55
- data/lib/libv8/v8/src/gdb-jit.h +6 -2
- data/lib/libv8/v8/src/global-handles.cc +368 -312
- data/lib/libv8/v8/src/global-handles.h +29 -36
- data/lib/libv8/v8/src/globals.h +3 -1
- data/lib/libv8/v8/src/handles.cc +43 -69
- data/lib/libv8/v8/src/handles.h +21 -16
- data/lib/libv8/v8/src/heap-inl.h +11 -13
- data/lib/libv8/v8/src/heap-profiler.cc +0 -999
- data/lib/libv8/v8/src/heap-profiler.h +0 -303
- data/lib/libv8/v8/src/heap.cc +366 -141
- data/lib/libv8/v8/src/heap.h +87 -26
- data/lib/libv8/v8/src/hydrogen-instructions.cc +192 -81
- data/lib/libv8/v8/src/hydrogen-instructions.h +711 -482
- data/lib/libv8/v8/src/hydrogen.cc +1146 -629
- data/lib/libv8/v8/src/hydrogen.h +100 -64
- data/lib/libv8/v8/src/ia32/assembler-ia32.cc +19 -0
- data/lib/libv8/v8/src/ia32/assembler-ia32.h +15 -2
- data/lib/libv8/v8/src/ia32/builtins-ia32.cc +34 -39
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +675 -377
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +8 -69
- data/lib/libv8/v8/src/ia32/codegen-ia32.cc +1 -0
- data/lib/libv8/v8/src/ia32/codegen-ia32.h +0 -2
- data/lib/libv8/v8/src/ia32/cpu-ia32.cc +3 -2
- data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +28 -3
- data/lib/libv8/v8/src/ia32/disasm-ia32.cc +21 -10
- data/lib/libv8/v8/src/ia32/frames-ia32.h +6 -5
- data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +459 -465
- data/lib/libv8/v8/src/ia32/ic-ia32.cc +196 -147
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +575 -650
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +19 -21
- data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +7 -2
- data/lib/libv8/v8/src/ia32/lithium-ia32.cc +261 -256
- data/lib/libv8/v8/src/ia32/lithium-ia32.h +234 -335
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +224 -67
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +63 -19
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +22 -8
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +3 -0
- data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +380 -239
- data/lib/libv8/v8/src/ic.cc +198 -234
- data/lib/libv8/v8/src/ic.h +32 -30
- data/lib/libv8/v8/src/interpreter-irregexp.cc +6 -4
- data/lib/libv8/v8/src/isolate.cc +112 -95
- data/lib/libv8/v8/src/isolate.h +55 -71
- data/lib/libv8/v8/src/json-parser.h +486 -48
- data/lib/libv8/v8/src/json.js +28 -23
- data/lib/libv8/v8/src/jsregexp.cc +163 -208
- data/lib/libv8/v8/src/jsregexp.h +0 -1
- data/lib/libv8/v8/src/lithium-allocator-inl.h +29 -27
- data/lib/libv8/v8/src/lithium-allocator.cc +22 -17
- data/lib/libv8/v8/src/lithium-allocator.h +8 -8
- data/lib/libv8/v8/src/lithium.cc +16 -11
- data/lib/libv8/v8/src/lithium.h +31 -34
- data/lib/libv8/v8/src/liveedit.cc +111 -15
- data/lib/libv8/v8/src/liveedit.h +3 -4
- data/lib/libv8/v8/src/liveobjectlist.cc +116 -80
- data/lib/libv8/v8/src/liveobjectlist.h +2 -2
- data/lib/libv8/v8/src/log-inl.h +0 -4
- data/lib/libv8/v8/src/log-utils.cc +25 -143
- data/lib/libv8/v8/src/log-utils.h +13 -92
- data/lib/libv8/v8/src/log.cc +26 -249
- data/lib/libv8/v8/src/log.h +6 -17
- data/lib/libv8/v8/src/macros.py +9 -6
- data/lib/libv8/v8/src/mark-compact.cc +276 -56
- data/lib/libv8/v8/src/mark-compact.h +20 -0
- data/lib/libv8/v8/src/messages.js +93 -39
- data/lib/libv8/v8/src/mips/assembler-mips-inl.h +9 -3
- data/lib/libv8/v8/src/mips/assembler-mips.cc +297 -189
- data/lib/libv8/v8/src/mips/assembler-mips.h +121 -54
- data/lib/libv8/v8/src/mips/builtins-mips.cc +23 -24
- data/lib/libv8/v8/src/mips/code-stubs-mips.cc +484 -263
- data/lib/libv8/v8/src/mips/code-stubs-mips.h +8 -83
- data/lib/libv8/v8/src/mips/codegen-mips.h +0 -2
- data/lib/libv8/v8/src/mips/constants-mips.h +37 -11
- data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +6 -1
- data/lib/libv8/v8/src/mips/frames-mips.h +8 -7
- data/lib/libv8/v8/src/mips/full-codegen-mips.cc +258 -419
- data/lib/libv8/v8/src/mips/ic-mips.cc +181 -121
- data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +640 -382
- data/lib/libv8/v8/src/mips/macro-assembler-mips.h +94 -89
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +23 -10
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +6 -1
- data/lib/libv8/v8/src/mips/simulator-mips.cc +249 -49
- data/lib/libv8/v8/src/mips/simulator-mips.h +25 -1
- data/lib/libv8/v8/src/mips/stub-cache-mips.cc +373 -161
- data/lib/libv8/v8/src/mirror-debugger.js +55 -8
- data/lib/libv8/v8/src/misc-intrinsics.h +89 -0
- data/lib/libv8/v8/src/mksnapshot.cc +36 -4
- data/lib/libv8/v8/src/natives.h +5 -2
- data/lib/libv8/v8/src/objects-debug.cc +73 -6
- data/lib/libv8/v8/src/objects-inl.h +529 -164
- data/lib/libv8/v8/src/objects-printer.cc +67 -12
- data/lib/libv8/v8/src/objects-visiting.cc +13 -2
- data/lib/libv8/v8/src/objects-visiting.h +41 -1
- data/lib/libv8/v8/src/objects.cc +2200 -1177
- data/lib/libv8/v8/src/objects.h +912 -283
- data/lib/libv8/v8/src/parser.cc +566 -371
- data/lib/libv8/v8/src/parser.h +35 -33
- data/lib/libv8/v8/src/platform-cygwin.cc +10 -25
- data/lib/libv8/v8/src/platform-freebsd.cc +4 -29
- data/lib/libv8/v8/src/platform-linux.cc +60 -57
- data/lib/libv8/v8/src/platform-macos.cc +4 -27
- data/lib/libv8/v8/src/platform-nullos.cc +3 -16
- data/lib/libv8/v8/src/platform-openbsd.cc +247 -85
- data/lib/libv8/v8/src/platform-posix.cc +43 -1
- data/lib/libv8/v8/src/platform-solaris.cc +151 -112
- data/lib/libv8/v8/src/platform-tls.h +1 -1
- data/lib/libv8/v8/src/platform-win32.cc +65 -39
- data/lib/libv8/v8/src/platform.h +17 -14
- data/lib/libv8/v8/src/preparse-data-format.h +2 -2
- data/lib/libv8/v8/src/preparse-data.h +8 -2
- data/lib/libv8/v8/src/preparser-api.cc +2 -18
- data/lib/libv8/v8/src/preparser.cc +106 -65
- data/lib/libv8/v8/src/preparser.h +26 -5
- data/lib/libv8/v8/src/prettyprinter.cc +25 -43
- data/lib/libv8/v8/src/profile-generator-inl.h +0 -4
- data/lib/libv8/v8/src/profile-generator.cc +213 -34
- data/lib/libv8/v8/src/profile-generator.h +9 -9
- data/lib/libv8/v8/src/property.h +1 -0
- data/lib/libv8/v8/src/proxy.js +74 -4
- data/lib/libv8/v8/src/regexp-macro-assembler.cc +10 -6
- data/lib/libv8/v8/src/regexp.js +16 -11
- data/lib/libv8/v8/src/rewriter.cc +24 -133
- data/lib/libv8/v8/src/runtime-profiler.cc +27 -151
- data/lib/libv8/v8/src/runtime-profiler.h +5 -31
- data/lib/libv8/v8/src/runtime.cc +1450 -681
- data/lib/libv8/v8/src/runtime.h +47 -31
- data/lib/libv8/v8/src/runtime.js +2 -1
- data/lib/libv8/v8/src/scanner-base.cc +358 -220
- data/lib/libv8/v8/src/scanner-base.h +30 -138
- data/lib/libv8/v8/src/scanner.cc +0 -18
- data/lib/libv8/v8/src/scanner.h +0 -15
- data/lib/libv8/v8/src/scopeinfo.cc +3 -1
- data/lib/libv8/v8/src/scopeinfo.h +1 -6
- data/lib/libv8/v8/src/scopes.cc +243 -253
- data/lib/libv8/v8/src/scopes.h +58 -109
- data/lib/libv8/v8/src/serialize.cc +12 -54
- data/lib/libv8/v8/src/serialize.h +47 -0
- data/lib/libv8/v8/src/small-pointer-list.h +25 -0
- data/lib/libv8/v8/src/spaces-inl.h +4 -50
- data/lib/libv8/v8/src/spaces.cc +64 -131
- data/lib/libv8/v8/src/spaces.h +19 -70
- data/lib/libv8/v8/src/string-stream.cc +3 -1
- data/lib/libv8/v8/src/string.js +10 -6
- data/lib/libv8/v8/src/strtod.cc +7 -3
- data/lib/libv8/v8/src/stub-cache.cc +59 -129
- data/lib/libv8/v8/src/stub-cache.h +42 -54
- data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +1447 -1339
- data/lib/libv8/v8/src/token.cc +4 -4
- data/lib/libv8/v8/src/token.h +6 -5
- data/lib/libv8/v8/src/type-info.cc +173 -129
- data/lib/libv8/v8/src/type-info.h +40 -22
- data/lib/libv8/v8/src/utils.cc +25 -304
- data/lib/libv8/v8/src/utils.h +118 -3
- data/lib/libv8/v8/src/v8-counters.h +3 -6
- data/lib/libv8/v8/src/v8.cc +34 -27
- data/lib/libv8/v8/src/v8.h +7 -7
- data/lib/libv8/v8/src/v8conversions.cc +129 -0
- data/lib/libv8/v8/src/v8conversions.h +60 -0
- data/lib/libv8/v8/src/v8globals.h +15 -6
- data/lib/libv8/v8/src/v8natives.js +300 -78
- data/lib/libv8/v8/src/v8threads.cc +14 -6
- data/lib/libv8/v8/src/v8threads.h +4 -1
- data/lib/libv8/v8/src/v8utils.cc +360 -0
- data/lib/libv8/v8/src/v8utils.h +17 -66
- data/lib/libv8/v8/src/variables.cc +7 -12
- data/lib/libv8/v8/src/variables.h +12 -10
- data/lib/libv8/v8/src/version.cc +2 -2
- data/lib/libv8/v8/src/vm-state-inl.h +0 -41
- data/lib/libv8/v8/src/vm-state.h +0 -11
- data/lib/libv8/v8/src/weakmap.js +103 -0
- data/lib/libv8/v8/src/x64/assembler-x64.h +6 -3
- data/lib/libv8/v8/src/x64/builtins-x64.cc +25 -22
- data/lib/libv8/v8/src/x64/code-stubs-x64.cc +523 -250
- data/lib/libv8/v8/src/x64/code-stubs-x64.h +8 -71
- data/lib/libv8/v8/src/x64/codegen-x64.cc +1 -0
- data/lib/libv8/v8/src/x64/codegen-x64.h +0 -2
- data/lib/libv8/v8/src/x64/cpu-x64.cc +2 -1
- data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +40 -8
- data/lib/libv8/v8/src/x64/disasm-x64.cc +12 -10
- data/lib/libv8/v8/src/x64/frames-x64.h +7 -6
- data/lib/libv8/v8/src/x64/full-codegen-x64.cc +310 -415
- data/lib/libv8/v8/src/x64/ic-x64.cc +180 -117
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +411 -523
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +11 -6
- data/lib/libv8/v8/src/x64/lithium-x64.cc +191 -216
- data/lib/libv8/v8/src/x64/lithium-x64.h +112 -263
- data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +177 -61
- data/lib/libv8/v8/src/x64/macro-assembler-x64.h +23 -7
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +21 -9
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +6 -0
- data/lib/libv8/v8/src/x64/stub-cache-x64.cc +273 -107
- data/lib/libv8/v8/src/zone.cc +31 -22
- data/lib/libv8/v8/src/zone.h +12 -6
- data/lib/libv8/v8/tools/codemap.js +8 -0
- data/lib/libv8/v8/tools/gcmole/Makefile +43 -0
- data/lib/libv8/v8/tools/gcmole/gcmole.lua +0 -2
- data/lib/libv8/v8/tools/gdb-v8-support.py +154 -0
- data/lib/libv8/v8/tools/grokdump.py +44 -35
- data/lib/libv8/v8/tools/gyp/v8.gyp +94 -248
- data/lib/libv8/v8/tools/js2c.py +83 -52
- data/lib/libv8/v8/tools/linux-tick-processor +4 -6
- data/lib/libv8/v8/tools/ll_prof.py +3 -3
- data/lib/libv8/v8/tools/oom_dump/README +3 -1
- data/lib/libv8/v8/tools/presubmit.py +11 -4
- data/lib/libv8/v8/tools/profile.js +46 -2
- data/lib/libv8/v8/tools/splaytree.js +11 -0
- data/lib/libv8/v8/tools/stats-viewer.py +15 -11
- data/lib/libv8/v8/tools/test-wrapper-gypbuild.py +227 -0
- data/lib/libv8/v8/tools/test.py +28 -8
- data/lib/libv8/v8/tools/tickprocessor.js +0 -16
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +2 -2
- metadata +31 -19
- data/lib/libv8/scons/engine/SCons/Tool/f03.py +0 -63
- data/lib/libv8/v8/src/json-parser.cc +0 -504
data/lib/libv8/v8/src/liveedit.h
CHANGED
|
@@ -143,14 +143,13 @@ class LiveEdit : AllStatic {
|
|
|
143
143
|
// A general-purpose comparator between 2 arrays.
|
|
144
144
|
class Comparator {
|
|
145
145
|
public:
|
|
146
|
-
|
|
147
146
|
// Holds 2 arrays of some elements allowing to compare any pair of
|
|
148
147
|
// element from the first array and element from the second array.
|
|
149
148
|
class Input {
|
|
150
149
|
public:
|
|
151
|
-
virtual int
|
|
152
|
-
virtual int
|
|
153
|
-
virtual bool
|
|
150
|
+
virtual int GetLength1() = 0;
|
|
151
|
+
virtual int GetLength2() = 0;
|
|
152
|
+
virtual bool Equals(int index1, int index2) = 0;
|
|
154
153
|
|
|
155
154
|
protected:
|
|
156
155
|
virtual ~Input() {}
|
|
@@ -36,11 +36,12 @@
|
|
|
36
36
|
#include "global-handles.h"
|
|
37
37
|
#include "heap.h"
|
|
38
38
|
#include "inspector.h"
|
|
39
|
+
#include "isolate.h"
|
|
39
40
|
#include "list-inl.h"
|
|
40
41
|
#include "liveobjectlist-inl.h"
|
|
41
42
|
#include "string-stream.h"
|
|
42
|
-
#include "top.h"
|
|
43
43
|
#include "v8utils.h"
|
|
44
|
+
#include "v8conversions.h"
|
|
44
45
|
|
|
45
46
|
namespace v8 {
|
|
46
47
|
namespace internal {
|
|
@@ -109,7 +110,7 @@ typedef int (*RawComparer)(const void*, const void*);
|
|
|
109
110
|
\
|
|
110
111
|
v(Context, "meta: Context") \
|
|
111
112
|
v(ByteArray, "meta: ByteArray") \
|
|
112
|
-
v(
|
|
113
|
+
v(ExternalPixelArray, "meta: PixelArray") \
|
|
113
114
|
v(ExternalArray, "meta: ExternalArray") \
|
|
114
115
|
v(FixedArray, "meta: FixedArray") \
|
|
115
116
|
v(String, "String") \
|
|
@@ -211,8 +212,9 @@ static AllocationSpace FindSpaceFor(String* space_str) {
|
|
|
211
212
|
|
|
212
213
|
|
|
213
214
|
static bool InSpace(AllocationSpace space, HeapObject *heap_obj) {
|
|
215
|
+
Heap* heap = ISOLATE->heap();
|
|
214
216
|
if (space != LO_SPACE) {
|
|
215
|
-
return
|
|
217
|
+
return heap->InSpace(heap_obj, space);
|
|
216
218
|
}
|
|
217
219
|
|
|
218
220
|
// This is an optimization to speed up the check for an object in the LO
|
|
@@ -224,11 +226,11 @@ static bool InSpace(AllocationSpace space, HeapObject *heap_obj) {
|
|
|
224
226
|
int first_space = static_cast<int>(FIRST_SPACE);
|
|
225
227
|
int last_space = static_cast<int>(LO_SPACE);
|
|
226
228
|
for (int sp = first_space; sp < last_space; sp++) {
|
|
227
|
-
if (
|
|
229
|
+
if (heap->InSpace(heap_obj, static_cast<AllocationSpace>(sp))) {
|
|
228
230
|
return false;
|
|
229
231
|
}
|
|
230
232
|
}
|
|
231
|
-
SLOW_ASSERT(
|
|
233
|
+
SLOW_ASSERT(heap->InSpace(heap_obj, LO_SPACE));
|
|
232
234
|
return true;
|
|
233
235
|
}
|
|
234
236
|
|
|
@@ -285,7 +287,7 @@ LolFilter::LolFilter(Handle<JSObject> filter_obj)
|
|
|
285
287
|
|
|
286
288
|
|
|
287
289
|
void LolFilter::InitTypeFilter(Handle<JSObject> filter_obj) {
|
|
288
|
-
Handle<String> type_sym =
|
|
290
|
+
Handle<String> type_sym = FACTORY->LookupAsciiSymbol("type");
|
|
289
291
|
MaybeObject* maybe_result = filter_obj->GetProperty(*type_sym);
|
|
290
292
|
Object* type_obj;
|
|
291
293
|
if (maybe_result->ToObject(&type_obj)) {
|
|
@@ -301,7 +303,7 @@ void LolFilter::InitTypeFilter(Handle<JSObject> filter_obj) {
|
|
|
301
303
|
|
|
302
304
|
|
|
303
305
|
void LolFilter::InitSpaceFilter(Handle<JSObject> filter_obj) {
|
|
304
|
-
Handle<String> space_sym =
|
|
306
|
+
Handle<String> space_sym = FACTORY->LookupAsciiSymbol("space");
|
|
305
307
|
MaybeObject* maybe_result = filter_obj->GetProperty(*space_sym);
|
|
306
308
|
Object* space_obj;
|
|
307
309
|
if (maybe_result->ToObject(&space_obj)) {
|
|
@@ -317,7 +319,7 @@ void LolFilter::InitSpaceFilter(Handle<JSObject> filter_obj) {
|
|
|
317
319
|
|
|
318
320
|
|
|
319
321
|
void LolFilter::InitPropertyFilter(Handle<JSObject> filter_obj) {
|
|
320
|
-
Handle<String> prop_sym =
|
|
322
|
+
Handle<String> prop_sym = FACTORY->LookupAsciiSymbol("prop");
|
|
321
323
|
MaybeObject* maybe_result = filter_obj->GetProperty(*prop_sym);
|
|
322
324
|
Object* prop_obj;
|
|
323
325
|
if (maybe_result->ToObject(&prop_obj)) {
|
|
@@ -571,7 +573,9 @@ static bool AddObjDetail(Handle<FixedArray> arr,
|
|
|
571
573
|
Handle<JSObject> detail,
|
|
572
574
|
Handle<String> desc,
|
|
573
575
|
Handle<Object> error) {
|
|
574
|
-
|
|
576
|
+
Isolate* isolate = Isolate::Current();
|
|
577
|
+
Factory* factory = isolate->factory();
|
|
578
|
+
detail = factory->NewJSObject(isolate->object_function());
|
|
575
579
|
if (detail->IsFailure()) {
|
|
576
580
|
error = detail;
|
|
577
581
|
return false;
|
|
@@ -586,7 +590,7 @@ static bool AddObjDetail(Handle<FixedArray> arr,
|
|
|
586
590
|
desc_str = buffer;
|
|
587
591
|
size = obj->Size();
|
|
588
592
|
}
|
|
589
|
-
desc =
|
|
593
|
+
desc = factory->NewStringFromAscii(CStrVector(desc_str));
|
|
590
594
|
if (desc->IsFailure()) {
|
|
591
595
|
error = desc;
|
|
592
596
|
return false;
|
|
@@ -663,10 +667,13 @@ class LolDumpWriter: public DumpWriter {
|
|
|
663
667
|
int index = 0;
|
|
664
668
|
int count = 0;
|
|
665
669
|
|
|
670
|
+
Isolate* isolate = Isolate::Current();
|
|
671
|
+
Factory* factory = isolate->factory();
|
|
672
|
+
|
|
666
673
|
// Prefetch some needed symbols.
|
|
667
|
-
Handle<String> id_sym =
|
|
668
|
-
Handle<String> desc_sym =
|
|
669
|
-
Handle<String> size_sym =
|
|
674
|
+
Handle<String> id_sym = factory->LookupAsciiSymbol("id");
|
|
675
|
+
Handle<String> desc_sym = factory->LookupAsciiSymbol("desc");
|
|
676
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
670
677
|
|
|
671
678
|
// Fill the array with the lol object details.
|
|
672
679
|
Handle<JSObject> detail;
|
|
@@ -1089,7 +1096,9 @@ static int CountHeapObjects() {
|
|
|
1089
1096
|
|
|
1090
1097
|
// Captures a current snapshot of all objects in the heap.
|
|
1091
1098
|
MaybeObject* LiveObjectList::Capture() {
|
|
1092
|
-
|
|
1099
|
+
Isolate* isolate = Isolate::Current();
|
|
1100
|
+
Factory* factory = isolate->factory();
|
|
1101
|
+
HandleScope scope(isolate);
|
|
1093
1102
|
|
|
1094
1103
|
// Count the number of objects in the heap.
|
|
1095
1104
|
int total_count = CountHeapObjects();
|
|
@@ -1139,11 +1148,11 @@ MaybeObject* LiveObjectList::Capture() {
|
|
|
1139
1148
|
#endif
|
|
1140
1149
|
}
|
|
1141
1150
|
|
|
1142
|
-
Handle<String> id_sym =
|
|
1143
|
-
Handle<String> count_sym =
|
|
1144
|
-
Handle<String> size_sym =
|
|
1151
|
+
Handle<String> id_sym = factory->LookupAsciiSymbol("id");
|
|
1152
|
+
Handle<String> count_sym = factory->LookupAsciiSymbol("count");
|
|
1153
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
1145
1154
|
|
|
1146
|
-
Handle<JSObject> result =
|
|
1155
|
+
Handle<JSObject> result = factory->NewJSObject(isolate->object_function());
|
|
1147
1156
|
if (result->IsFailure()) return Object::cast(*result);
|
|
1148
1157
|
|
|
1149
1158
|
{ MaybeObject* maybe_result = result->SetProperty(*id_sym,
|
|
@@ -1259,7 +1268,10 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1259
1268
|
int start,
|
|
1260
1269
|
int dump_limit,
|
|
1261
1270
|
LolFilter* filter) {
|
|
1262
|
-
|
|
1271
|
+
Isolate* isolate = Isolate::Current();
|
|
1272
|
+
Factory* factory = isolate->factory();
|
|
1273
|
+
|
|
1274
|
+
HandleScope scope(isolate);
|
|
1263
1275
|
|
|
1264
1276
|
// Calculate the number of entries of the dump.
|
|
1265
1277
|
int count = -1;
|
|
@@ -1277,7 +1289,7 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1277
1289
|
}
|
|
1278
1290
|
|
|
1279
1291
|
// Allocate an array to hold the result.
|
|
1280
|
-
Handle<FixedArray> elements_arr =
|
|
1292
|
+
Handle<FixedArray> elements_arr = factory->NewFixedArray(dump_limit);
|
|
1281
1293
|
if (elements_arr->IsFailure()) return Object::cast(*elements_arr);
|
|
1282
1294
|
|
|
1283
1295
|
// Fill in the dump.
|
|
@@ -1292,11 +1304,11 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1292
1304
|
MaybeObject* maybe_result;
|
|
1293
1305
|
|
|
1294
1306
|
// Allocate the result body.
|
|
1295
|
-
Handle<JSObject> body =
|
|
1307
|
+
Handle<JSObject> body = factory->NewJSObject(isolate->object_function());
|
|
1296
1308
|
if (body->IsFailure()) return Object::cast(*body);
|
|
1297
1309
|
|
|
1298
1310
|
// Set the updated body.count.
|
|
1299
|
-
Handle<String> count_sym =
|
|
1311
|
+
Handle<String> count_sym = factory->LookupAsciiSymbol("count");
|
|
1300
1312
|
maybe_result = body->SetProperty(*count_sym,
|
|
1301
1313
|
Smi::FromInt(count),
|
|
1302
1314
|
NONE,
|
|
@@ -1305,7 +1317,7 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1305
1317
|
|
|
1306
1318
|
// Set the updated body.size if appropriate.
|
|
1307
1319
|
if (size >= 0) {
|
|
1308
|
-
Handle<String> size_sym =
|
|
1320
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
1309
1321
|
maybe_result = body->SetProperty(*size_sym,
|
|
1310
1322
|
Smi::FromInt(size),
|
|
1311
1323
|
NONE,
|
|
@@ -1314,7 +1326,7 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1314
1326
|
}
|
|
1315
1327
|
|
|
1316
1328
|
// Set body.first_index.
|
|
1317
|
-
Handle<String> first_sym =
|
|
1329
|
+
Handle<String> first_sym = factory->LookupAsciiSymbol("first_index");
|
|
1318
1330
|
maybe_result = body->SetProperty(*first_sym,
|
|
1319
1331
|
Smi::FromInt(start),
|
|
1320
1332
|
NONE,
|
|
@@ -1322,12 +1334,12 @@ MaybeObject* LiveObjectList::DumpPrivate(DumpWriter* writer,
|
|
|
1322
1334
|
if (maybe_result->IsFailure()) return maybe_result;
|
|
1323
1335
|
|
|
1324
1336
|
// Allocate the JSArray of the elements.
|
|
1325
|
-
Handle<JSObject> elements =
|
|
1337
|
+
Handle<JSObject> elements = factory->NewJSObject(isolate->array_function());
|
|
1326
1338
|
if (elements->IsFailure()) return Object::cast(*elements);
|
|
1327
1339
|
Handle<JSArray>::cast(elements)->SetContent(*elements_arr);
|
|
1328
1340
|
|
|
1329
1341
|
// Set body.elements.
|
|
1330
|
-
Handle<String> elements_sym =
|
|
1342
|
+
Handle<String> elements_sym = factory->LookupAsciiSymbol("elements");
|
|
1331
1343
|
maybe_result = body->SetProperty(*elements_sym,
|
|
1332
1344
|
*elements,
|
|
1333
1345
|
NONE,
|
|
@@ -1381,6 +1393,9 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1381
1393
|
LiveObjectSummary summary(filter);
|
|
1382
1394
|
writer->Write(&summary);
|
|
1383
1395
|
|
|
1396
|
+
Isolate* isolate = Isolate::Current();
|
|
1397
|
+
Factory* factory = isolate->factory();
|
|
1398
|
+
|
|
1384
1399
|
// The result body will look like this:
|
|
1385
1400
|
// body: {
|
|
1386
1401
|
// count: <total_count>,
|
|
@@ -1398,21 +1413,21 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1398
1413
|
// }
|
|
1399
1414
|
|
|
1400
1415
|
// Prefetch some needed symbols.
|
|
1401
|
-
Handle<String> desc_sym =
|
|
1402
|
-
Handle<String> count_sym =
|
|
1403
|
-
Handle<String> size_sym =
|
|
1404
|
-
Handle<String> summary_sym =
|
|
1416
|
+
Handle<String> desc_sym = factory->LookupAsciiSymbol("desc");
|
|
1417
|
+
Handle<String> count_sym = factory->LookupAsciiSymbol("count");
|
|
1418
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
1419
|
+
Handle<String> summary_sym = factory->LookupAsciiSymbol("summary");
|
|
1405
1420
|
|
|
1406
1421
|
// Allocate the summary array.
|
|
1407
1422
|
int entries_count = summary.GetNumberOfEntries();
|
|
1408
1423
|
Handle<FixedArray> summary_arr =
|
|
1409
|
-
|
|
1424
|
+
factory->NewFixedArray(entries_count);
|
|
1410
1425
|
if (summary_arr->IsFailure()) return Object::cast(*summary_arr);
|
|
1411
1426
|
|
|
1412
1427
|
int idx = 0;
|
|
1413
1428
|
for (int i = 0; i < LiveObjectSummary::kNumberOfEntries; i++) {
|
|
1414
1429
|
// Allocate the summary record.
|
|
1415
|
-
Handle<JSObject> detail =
|
|
1430
|
+
Handle<JSObject> detail = factory->NewJSObject(isolate->object_function());
|
|
1416
1431
|
if (detail->IsFailure()) return Object::cast(*detail);
|
|
1417
1432
|
|
|
1418
1433
|
// Fill in the summary record.
|
|
@@ -1420,7 +1435,7 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1420
1435
|
int count = summary.Count(type);
|
|
1421
1436
|
if (count) {
|
|
1422
1437
|
const char* desc_cstr = GetObjectTypeDesc(type);
|
|
1423
|
-
Handle<String> desc =
|
|
1438
|
+
Handle<String> desc = factory->LookupAsciiSymbol(desc_cstr);
|
|
1424
1439
|
int size = summary.Size(type);
|
|
1425
1440
|
|
|
1426
1441
|
maybe_result = detail->SetProperty(*desc_sym,
|
|
@@ -1444,12 +1459,13 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1444
1459
|
}
|
|
1445
1460
|
|
|
1446
1461
|
// Wrap the summary fixed array in a JS array.
|
|
1447
|
-
Handle<JSObject> summary_obj =
|
|
1462
|
+
Handle<JSObject> summary_obj =
|
|
1463
|
+
factory->NewJSObject(isolate->array_function());
|
|
1448
1464
|
if (summary_obj->IsFailure()) return Object::cast(*summary_obj);
|
|
1449
1465
|
Handle<JSArray>::cast(summary_obj)->SetContent(*summary_arr);
|
|
1450
1466
|
|
|
1451
1467
|
// Create the body object.
|
|
1452
|
-
Handle<JSObject> body =
|
|
1468
|
+
Handle<JSObject> body = factory->NewJSObject(isolate->object_function());
|
|
1453
1469
|
if (body->IsFailure()) return Object::cast(*body);
|
|
1454
1470
|
|
|
1455
1471
|
// Fill out the body object.
|
|
@@ -1470,9 +1486,9 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1470
1486
|
if (is_tracking_roots) {
|
|
1471
1487
|
int found_root = summary.found_root();
|
|
1472
1488
|
int found_weak_root = summary.found_weak_root();
|
|
1473
|
-
Handle<String> root_sym =
|
|
1489
|
+
Handle<String> root_sym = factory->LookupAsciiSymbol("found_root");
|
|
1474
1490
|
Handle<String> weak_root_sym =
|
|
1475
|
-
|
|
1491
|
+
factory->LookupAsciiSymbol("found_weak_root");
|
|
1476
1492
|
maybe_result = body->SetProperty(*root_sym,
|
|
1477
1493
|
Smi::FromInt(found_root),
|
|
1478
1494
|
NONE,
|
|
@@ -1499,7 +1515,10 @@ MaybeObject* LiveObjectList::SummarizePrivate(SummaryWriter* writer,
|
|
|
1499
1515
|
// Note: only dumps the section starting at start_idx and only up to
|
|
1500
1516
|
// dump_limit entries.
|
|
1501
1517
|
MaybeObject* LiveObjectList::Info(int start_idx, int dump_limit) {
|
|
1502
|
-
|
|
1518
|
+
Isolate* isolate = Isolate::Current();
|
|
1519
|
+
Factory* factory = isolate->factory();
|
|
1520
|
+
|
|
1521
|
+
HandleScope scope(isolate);
|
|
1503
1522
|
MaybeObject* maybe_result;
|
|
1504
1523
|
|
|
1505
1524
|
int total_count = LiveObjectList::list_count();
|
|
@@ -1519,13 +1538,13 @@ MaybeObject* LiveObjectList::Info(int start_idx, int dump_limit) {
|
|
|
1519
1538
|
}
|
|
1520
1539
|
|
|
1521
1540
|
// Allocate an array to hold the result.
|
|
1522
|
-
Handle<FixedArray> list =
|
|
1541
|
+
Handle<FixedArray> list = factory->NewFixedArray(dump_count);
|
|
1523
1542
|
if (list->IsFailure()) return Object::cast(*list);
|
|
1524
1543
|
|
|
1525
1544
|
// Prefetch some needed symbols.
|
|
1526
|
-
Handle<String> id_sym =
|
|
1527
|
-
Handle<String> count_sym =
|
|
1528
|
-
Handle<String> size_sym =
|
|
1545
|
+
Handle<String> id_sym = factory->LookupAsciiSymbol("id");
|
|
1546
|
+
Handle<String> count_sym = factory->LookupAsciiSymbol("count");
|
|
1547
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
1529
1548
|
|
|
1530
1549
|
// Fill the array with the lol details.
|
|
1531
1550
|
int idx = 0;
|
|
@@ -1543,7 +1562,8 @@ MaybeObject* LiveObjectList::Info(int start_idx, int dump_limit) {
|
|
|
1543
1562
|
int size;
|
|
1544
1563
|
count = lol->GetTotalObjCountAndSize(&size);
|
|
1545
1564
|
|
|
1546
|
-
Handle<JSObject> detail =
|
|
1565
|
+
Handle<JSObject> detail =
|
|
1566
|
+
factory->NewJSObject(isolate->object_function());
|
|
1547
1567
|
if (detail->IsFailure()) return Object::cast(*detail);
|
|
1548
1568
|
|
|
1549
1569
|
maybe_result = detail->SetProperty(*id_sym,
|
|
@@ -1568,10 +1588,10 @@ MaybeObject* LiveObjectList::Info(int start_idx, int dump_limit) {
|
|
|
1568
1588
|
}
|
|
1569
1589
|
|
|
1570
1590
|
// Return the result as a JS array.
|
|
1571
|
-
Handle<JSObject> lols =
|
|
1591
|
+
Handle<JSObject> lols = factory->NewJSObject(isolate->array_function());
|
|
1572
1592
|
Handle<JSArray>::cast(lols)->SetContent(*list);
|
|
1573
1593
|
|
|
1574
|
-
Handle<JSObject> result =
|
|
1594
|
+
Handle<JSObject> result = factory->NewJSObject(isolate->object_function());
|
|
1575
1595
|
if (result->IsFailure()) return Object::cast(*result);
|
|
1576
1596
|
|
|
1577
1597
|
maybe_result = result->SetProperty(*count_sym,
|
|
@@ -1580,14 +1600,14 @@ MaybeObject* LiveObjectList::Info(int start_idx, int dump_limit) {
|
|
|
1580
1600
|
kNonStrictMode);
|
|
1581
1601
|
if (maybe_result->IsFailure()) return maybe_result;
|
|
1582
1602
|
|
|
1583
|
-
Handle<String> first_sym =
|
|
1603
|
+
Handle<String> first_sym = factory->LookupAsciiSymbol("first_index");
|
|
1584
1604
|
maybe_result = result->SetProperty(*first_sym,
|
|
1585
1605
|
Smi::FromInt(start_idx),
|
|
1586
1606
|
NONE,
|
|
1587
1607
|
kNonStrictMode);
|
|
1588
1608
|
if (maybe_result->IsFailure()) return maybe_result;
|
|
1589
1609
|
|
|
1590
|
-
Handle<String> lists_sym =
|
|
1610
|
+
Handle<String> lists_sym = factory->LookupAsciiSymbol("lists");
|
|
1591
1611
|
maybe_result = result->SetProperty(*lists_sym,
|
|
1592
1612
|
*lols,
|
|
1593
1613
|
NONE,
|
|
@@ -1618,7 +1638,7 @@ Object* LiveObjectList::GetObj(int obj_id) {
|
|
|
1618
1638
|
if (element != NULL) {
|
|
1619
1639
|
return Object::cast(element->obj_);
|
|
1620
1640
|
}
|
|
1621
|
-
return
|
|
1641
|
+
return HEAP->undefined_value();
|
|
1622
1642
|
}
|
|
1623
1643
|
|
|
1624
1644
|
|
|
@@ -1639,8 +1659,11 @@ Object* LiveObjectList::GetObjId(Handle<String> address) {
|
|
|
1639
1659
|
SmartPointer<char> addr_str =
|
|
1640
1660
|
address->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
|
|
1641
1661
|
|
|
1662
|
+
Isolate* isolate = Isolate::Current();
|
|
1663
|
+
|
|
1642
1664
|
// Extract the address value from the string.
|
|
1643
|
-
int value =
|
|
1665
|
+
int value =
|
|
1666
|
+
static_cast<int>(StringToInt(isolate->unicode_cache(), *address, 16));
|
|
1644
1667
|
Object* obj = reinterpret_cast<Object*>(value);
|
|
1645
1668
|
return Smi::FromInt(GetObjId(obj));
|
|
1646
1669
|
}
|
|
@@ -1649,7 +1672,6 @@ Object* LiveObjectList::GetObjId(Handle<String> address) {
|
|
|
1649
1672
|
// Helper class for copying HeapObjects.
|
|
1650
1673
|
class LolVisitor: public ObjectVisitor {
|
|
1651
1674
|
public:
|
|
1652
|
-
|
|
1653
1675
|
LolVisitor(HeapObject* target, Handle<HeapObject> handle_to_skip)
|
|
1654
1676
|
: target_(target), handle_to_skip_(handle_to_skip), found_(false) {}
|
|
1655
1677
|
|
|
@@ -1761,10 +1783,13 @@ int LiveObjectList::GetRetainers(Handle<HeapObject> target,
|
|
|
1761
1783
|
Handle<String> desc;
|
|
1762
1784
|
Handle<HeapObject> retainer;
|
|
1763
1785
|
|
|
1786
|
+
Isolate* isolate = Isolate::Current();
|
|
1787
|
+
Factory* factory = isolate->factory();
|
|
1788
|
+
|
|
1764
1789
|
// Prefetch some needed symbols.
|
|
1765
|
-
Handle<String> id_sym =
|
|
1766
|
-
Handle<String> desc_sym =
|
|
1767
|
-
Handle<String> size_sym =
|
|
1790
|
+
Handle<String> id_sym = factory->LookupAsciiSymbol("id");
|
|
1791
|
+
Handle<String> desc_sym = factory->LookupAsciiSymbol("desc");
|
|
1792
|
+
Handle<String> size_sym = factory->LookupAsciiSymbol("size");
|
|
1768
1793
|
|
|
1769
1794
|
NoHandleAllocation ha;
|
|
1770
1795
|
int count = 0;
|
|
@@ -1775,7 +1800,7 @@ int LiveObjectList::GetRetainers(Handle<HeapObject> target,
|
|
|
1775
1800
|
|
|
1776
1801
|
// Iterate roots.
|
|
1777
1802
|
LolVisitor lol_visitor(*target, target);
|
|
1778
|
-
|
|
1803
|
+
isolate->heap()->IterateStrongRoots(&lol_visitor, VISIT_ALL);
|
|
1779
1804
|
if (!AddRootRetainerIfFound(lol_visitor,
|
|
1780
1805
|
filter,
|
|
1781
1806
|
summary,
|
|
@@ -1795,7 +1820,7 @@ int LiveObjectList::GetRetainers(Handle<HeapObject> target,
|
|
|
1795
1820
|
}
|
|
1796
1821
|
|
|
1797
1822
|
lol_visitor.reset();
|
|
1798
|
-
|
|
1823
|
+
isolate->heap()->IterateWeakRoots(&lol_visitor, VISIT_ALL);
|
|
1799
1824
|
if (!AddRootRetainerIfFound(lol_visitor,
|
|
1800
1825
|
filter,
|
|
1801
1826
|
summary,
|
|
@@ -1904,11 +1929,15 @@ MaybeObject* LiveObjectList::GetObjRetainers(int obj_id,
|
|
|
1904
1929
|
int start,
|
|
1905
1930
|
int dump_limit,
|
|
1906
1931
|
Handle<JSObject> filter_obj) {
|
|
1907
|
-
|
|
1932
|
+
Isolate* isolate = Isolate::Current();
|
|
1933
|
+
Factory* factory = isolate->factory();
|
|
1934
|
+
Heap* heap = isolate->heap();
|
|
1935
|
+
|
|
1936
|
+
HandleScope scope(isolate);
|
|
1908
1937
|
|
|
1909
1938
|
// Get the target object.
|
|
1910
1939
|
HeapObject* heap_obj = HeapObject::cast(GetObj(obj_id));
|
|
1911
|
-
if (heap_obj ==
|
|
1940
|
+
if (heap_obj == heap->undefined_value()) {
|
|
1912
1941
|
return heap_obj;
|
|
1913
1942
|
}
|
|
1914
1943
|
|
|
@@ -1916,7 +1945,7 @@ MaybeObject* LiveObjectList::GetObjRetainers(int obj_id,
|
|
|
1916
1945
|
|
|
1917
1946
|
// Get the constructor function for context extension and arguments array.
|
|
1918
1947
|
JSObject* arguments_boilerplate =
|
|
1919
|
-
|
|
1948
|
+
isolate->context()->global_context()->arguments_boilerplate();
|
|
1920
1949
|
JSFunction* arguments_function =
|
|
1921
1950
|
JSFunction::cast(arguments_boilerplate->map()->constructor());
|
|
1922
1951
|
|
|
@@ -1938,7 +1967,7 @@ MaybeObject* LiveObjectList::GetObjRetainers(int obj_id,
|
|
|
1938
1967
|
|
|
1939
1968
|
// Set body.id.
|
|
1940
1969
|
Handle<JSObject> body = Handle<JSObject>(JSObject::cast(body_obj));
|
|
1941
|
-
Handle<String> id_sym =
|
|
1970
|
+
Handle<String> id_sym = factory->LookupAsciiSymbol("id");
|
|
1942
1971
|
maybe_result = body->SetProperty(*id_sym,
|
|
1943
1972
|
Smi::FromInt(obj_id),
|
|
1944
1973
|
NONE,
|
|
@@ -1953,13 +1982,17 @@ MaybeObject* LiveObjectList::GetObjRetainers(int obj_id,
|
|
|
1953
1982
|
Object* LiveObjectList::PrintObj(int obj_id) {
|
|
1954
1983
|
Object* obj = GetObj(obj_id);
|
|
1955
1984
|
if (!obj) {
|
|
1956
|
-
return
|
|
1985
|
+
return HEAP->undefined_value();
|
|
1957
1986
|
}
|
|
1958
1987
|
|
|
1959
1988
|
EmbeddedVector<char, 128> temp_filename;
|
|
1960
1989
|
static int temp_count = 0;
|
|
1961
1990
|
const char* path_prefix = ".";
|
|
1962
1991
|
|
|
1992
|
+
Isolate* isolate = Isolate::Current();
|
|
1993
|
+
Factory* factory = isolate->factory();
|
|
1994
|
+
Heap* heap = isolate->heap();
|
|
1995
|
+
|
|
1963
1996
|
if (FLAG_lol_workdir) {
|
|
1964
1997
|
path_prefix = FLAG_lol_workdir;
|
|
1965
1998
|
}
|
|
@@ -1988,13 +2021,13 @@ Object* LiveObjectList::PrintObj(int obj_id) {
|
|
|
1988
2021
|
if (resource->exists() && !resource->is_empty()) {
|
|
1989
2022
|
ASSERT(resource->IsAscii());
|
|
1990
2023
|
Handle<String> dump_string =
|
|
1991
|
-
|
|
1992
|
-
|
|
2024
|
+
factory->NewExternalStringFromAscii(resource);
|
|
2025
|
+
heap->external_string_table()->AddString(*dump_string);
|
|
1993
2026
|
return *dump_string;
|
|
1994
2027
|
} else {
|
|
1995
2028
|
delete resource;
|
|
1996
2029
|
}
|
|
1997
|
-
return
|
|
2030
|
+
return HEAP->undefined_value();
|
|
1998
2031
|
}
|
|
1999
2032
|
|
|
2000
2033
|
|
|
@@ -2082,6 +2115,10 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2082
2115
|
|
|
2083
2116
|
FILE* f = OS::FOpen(temp_filename.start(), "w+");
|
|
2084
2117
|
|
|
2118
|
+
Isolate* isolate = Isolate::Current();
|
|
2119
|
+
Factory* factory = isolate->factory();
|
|
2120
|
+
Heap* heap = isolate->heap();
|
|
2121
|
+
|
|
2085
2122
|
// Save the previous verbosity.
|
|
2086
2123
|
bool prev_verbosity = FLAG_use_verbose_printer;
|
|
2087
2124
|
FLAG_use_verbose_printer = false;
|
|
@@ -2097,15 +2134,14 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2097
2134
|
// Check for ObjectGroups that references this object.
|
|
2098
2135
|
// TODO(mlam): refactor this to be more modular.
|
|
2099
2136
|
{
|
|
2100
|
-
List<ObjectGroup*>* groups =
|
|
2137
|
+
List<ObjectGroup*>* groups = isolate->global_handles()->object_groups();
|
|
2101
2138
|
for (int i = 0; i < groups->length(); i++) {
|
|
2102
2139
|
ObjectGroup* group = groups->at(i);
|
|
2103
2140
|
if (group == NULL) continue;
|
|
2104
2141
|
|
|
2105
2142
|
bool found_group = false;
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
Object* object = *objects[j];
|
|
2143
|
+
for (size_t j = 0; j < group->length_; j++) {
|
|
2144
|
+
Object* object = *(group->objects_[j]);
|
|
2109
2145
|
HeapObject* hobj = HeapObject::cast(object);
|
|
2110
2146
|
if (obj2 == hobj) {
|
|
2111
2147
|
found_group = true;
|
|
@@ -2118,8 +2154,8 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2118
2154
|
"obj %p is a member of object group %p {\n",
|
|
2119
2155
|
reinterpret_cast<void*>(obj2),
|
|
2120
2156
|
reinterpret_cast<void*>(group));
|
|
2121
|
-
for (
|
|
2122
|
-
Object* object = *
|
|
2157
|
+
for (size_t j = 0; j < group->length_; j++) {
|
|
2158
|
+
Object* object = *(group->objects_[j]);
|
|
2123
2159
|
if (!object->IsHeapObject()) continue;
|
|
2124
2160
|
|
|
2125
2161
|
HeapObject* hobj = HeapObject::cast(object);
|
|
@@ -2144,12 +2180,12 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2144
2180
|
}
|
|
2145
2181
|
|
|
2146
2182
|
PrintF(f, "path from roots to obj %p\n", reinterpret_cast<void*>(obj2));
|
|
2147
|
-
|
|
2183
|
+
heap->IterateRoots(&tracer, VISIT_ONLY_STRONG);
|
|
2148
2184
|
found = tracer.found();
|
|
2149
2185
|
|
|
2150
2186
|
if (!found) {
|
|
2151
2187
|
PrintF(f, " No paths found. Checking symbol tables ...\n");
|
|
2152
|
-
SymbolTable* symbol_table =
|
|
2188
|
+
SymbolTable* symbol_table = HEAP->raw_unchecked_symbol_table();
|
|
2153
2189
|
tracer.VisitPointers(reinterpret_cast<Object**>(&symbol_table),
|
|
2154
2190
|
reinterpret_cast<Object**>(&symbol_table)+1);
|
|
2155
2191
|
found = tracer.found();
|
|
@@ -2162,7 +2198,7 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2162
2198
|
if (!found) {
|
|
2163
2199
|
PrintF(f, " No paths found. Checking weak roots ...\n");
|
|
2164
2200
|
// Check weak refs next.
|
|
2165
|
-
|
|
2201
|
+
isolate->global_handles()->IterateWeakRoots(&tracer);
|
|
2166
2202
|
found = tracer.found();
|
|
2167
2203
|
}
|
|
2168
2204
|
|
|
@@ -2192,13 +2228,13 @@ Object* LiveObjectList::GetPathPrivate(HeapObject* obj1, HeapObject* obj2) {
|
|
|
2192
2228
|
if (resource->exists() && !resource->is_empty()) {
|
|
2193
2229
|
ASSERT(resource->IsAscii());
|
|
2194
2230
|
Handle<String> path_string =
|
|
2195
|
-
|
|
2196
|
-
|
|
2231
|
+
factory->NewExternalStringFromAscii(resource);
|
|
2232
|
+
heap->external_string_table()->AddString(*path_string);
|
|
2197
2233
|
return *path_string;
|
|
2198
2234
|
} else {
|
|
2199
2235
|
delete resource;
|
|
2200
2236
|
}
|
|
2201
|
-
return
|
|
2237
|
+
return heap->undefined_value();
|
|
2202
2238
|
}
|
|
2203
2239
|
|
|
2204
2240
|
|
|
@@ -2211,13 +2247,13 @@ Object* LiveObjectList::GetPath(int obj_id1,
|
|
|
2211
2247
|
HeapObject* obj1 = NULL;
|
|
2212
2248
|
if (obj_id1 != 0) {
|
|
2213
2249
|
obj1 = HeapObject::cast(GetObj(obj_id1));
|
|
2214
|
-
if (obj1 ==
|
|
2250
|
+
if (obj1 == HEAP->undefined_value()) {
|
|
2215
2251
|
return obj1;
|
|
2216
2252
|
}
|
|
2217
2253
|
}
|
|
2218
2254
|
|
|
2219
2255
|
HeapObject* obj2 = HeapObject::cast(GetObj(obj_id2));
|
|
2220
|
-
if (obj2 ==
|
|
2256
|
+
if (obj2 == HEAP->undefined_value()) {
|
|
2221
2257
|
return obj2;
|
|
2222
2258
|
}
|
|
2223
2259
|
|
|
@@ -2571,12 +2607,13 @@ void LiveObjectList::Verify(bool match_heap_exactly) {
|
|
|
2571
2607
|
void LiveObjectList::VerifyNotInFromSpace() {
|
|
2572
2608
|
OS::Print("VerifyNotInFromSpace() ...\n");
|
|
2573
2609
|
LolIterator it(NULL, last());
|
|
2610
|
+
Heap* heap = ISOLATE->heap();
|
|
2574
2611
|
int i = 0;
|
|
2575
2612
|
for (it.Init(); !it.Done(); it.Next()) {
|
|
2576
2613
|
HeapObject* heap_obj = it.Obj();
|
|
2577
|
-
if (
|
|
2614
|
+
if (heap->InFromSpace(heap_obj)) {
|
|
2578
2615
|
OS::Print(" ERROR: VerifyNotInFromSpace: [%d] obj %p in From space %p\n",
|
|
2579
|
-
i++, heap_obj,
|
|
2616
|
+
i++, heap_obj, heap->new_space()->FromSpaceLow());
|
|
2580
2617
|
}
|
|
2581
2618
|
}
|
|
2582
2619
|
}
|
|
@@ -2586,4 +2623,3 @@ void LiveObjectList::VerifyNotInFromSpace() {
|
|
|
2586
2623
|
} } // namespace v8::internal
|
|
2587
2624
|
|
|
2588
2625
|
#endif // LIVE_OBJECT_LIST
|
|
2589
|
-
|