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/jsregexp.h
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
|
3
3
|
// modification, are permitted provided that the following conditions are
|
|
4
4
|
// met:
|
|
@@ -62,27 +62,27 @@ TempIterator::TempIterator(LInstruction* instr)
|
|
|
62
62
|
: instr_(instr),
|
|
63
63
|
limit_(instr->TempCount()),
|
|
64
64
|
current_(0) {
|
|
65
|
-
|
|
65
|
+
SkipUninteresting();
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
bool TempIterator::
|
|
69
|
+
bool TempIterator::Done() { return current_ >= limit_; }
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
LOperand* TempIterator::
|
|
73
|
-
ASSERT(
|
|
72
|
+
LOperand* TempIterator::Current() {
|
|
73
|
+
ASSERT(!Done());
|
|
74
74
|
return instr_->TempAt(current_);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
while (
|
|
80
|
-
return start;
|
|
78
|
+
void TempIterator::SkipUninteresting() {
|
|
79
|
+
while (current_ < limit_ && instr_->TempAt(current_) == NULL) ++current_;
|
|
81
80
|
}
|
|
82
81
|
|
|
83
82
|
|
|
84
83
|
void TempIterator::Advance() {
|
|
85
|
-
current_
|
|
84
|
+
++current_;
|
|
85
|
+
SkipUninteresting();
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
|
|
@@ -90,27 +90,29 @@ InputIterator::InputIterator(LInstruction* instr)
|
|
|
90
90
|
: instr_(instr),
|
|
91
91
|
limit_(instr->InputCount()),
|
|
92
92
|
current_(0) {
|
|
93
|
-
|
|
93
|
+
SkipUninteresting();
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
bool InputIterator::
|
|
97
|
+
bool InputIterator::Done() { return current_ >= limit_; }
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
LOperand* InputIterator::
|
|
101
|
-
ASSERT(
|
|
100
|
+
LOperand* InputIterator::Current() {
|
|
101
|
+
ASSERT(!Done());
|
|
102
102
|
return instr_->InputAt(current_);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
void InputIterator::Advance() {
|
|
107
|
-
current_
|
|
107
|
+
++current_;
|
|
108
|
+
SkipUninteresting();
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
|
|
111
|
-
|
|
112
|
-
while (
|
|
113
|
-
|
|
112
|
+
void InputIterator::SkipUninteresting() {
|
|
113
|
+
while (current_ < limit_ && instr_->InputAt(current_)->IsConstantOperand()) {
|
|
114
|
+
++current_;
|
|
115
|
+
}
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
|
|
@@ -118,23 +120,23 @@ UseIterator::UseIterator(LInstruction* instr)
|
|
|
118
120
|
: input_iterator_(instr), env_iterator_(instr->environment()) { }
|
|
119
121
|
|
|
120
122
|
|
|
121
|
-
bool UseIterator::
|
|
122
|
-
return input_iterator_.
|
|
123
|
+
bool UseIterator::Done() {
|
|
124
|
+
return input_iterator_.Done() && env_iterator_.Done();
|
|
123
125
|
}
|
|
124
126
|
|
|
125
127
|
|
|
126
|
-
LOperand* UseIterator::
|
|
127
|
-
ASSERT(
|
|
128
|
-
return input_iterator_.
|
|
129
|
-
?
|
|
130
|
-
:
|
|
128
|
+
LOperand* UseIterator::Current() {
|
|
129
|
+
ASSERT(!Done());
|
|
130
|
+
return input_iterator_.Done()
|
|
131
|
+
? env_iterator_.Current()
|
|
132
|
+
: input_iterator_.Current();
|
|
131
133
|
}
|
|
132
134
|
|
|
133
135
|
|
|
134
136
|
void UseIterator::Advance() {
|
|
135
|
-
input_iterator_.
|
|
136
|
-
?
|
|
137
|
-
:
|
|
137
|
+
input_iterator_.Done()
|
|
138
|
+
? env_iterator_.Advance()
|
|
139
|
+
: input_iterator_.Advance();
|
|
138
140
|
}
|
|
139
141
|
|
|
140
142
|
} } // namespace v8::internal
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
|
3
3
|
// modification, are permitted provided that the following conditions are
|
|
4
4
|
// met:
|
|
@@ -303,6 +303,11 @@ void LiveRange::SplitAt(LifetimePosition position, LiveRange* result) {
|
|
|
303
303
|
// we need to split use positons in a special way.
|
|
304
304
|
bool split_at_start = false;
|
|
305
305
|
|
|
306
|
+
if (current->start().Value() == position.Value()) {
|
|
307
|
+
// When splitting at start we need to locate the previous use interval.
|
|
308
|
+
current = first_interval_;
|
|
309
|
+
}
|
|
310
|
+
|
|
306
311
|
while (current != NULL) {
|
|
307
312
|
if (current->Contains(position)) {
|
|
308
313
|
current->SplitAt(position);
|
|
@@ -352,6 +357,11 @@ void LiveRange::SplitAt(LifetimePosition position, LiveRange* result) {
|
|
|
352
357
|
}
|
|
353
358
|
result->first_pos_ = use_after;
|
|
354
359
|
|
|
360
|
+
// Discard cached iteration state. It might be pointing
|
|
361
|
+
// to the use that no longer belongs to this live range.
|
|
362
|
+
last_processed_use_ = NULL;
|
|
363
|
+
current_interval_ = NULL;
|
|
364
|
+
|
|
355
365
|
// Link the new live range in the chain before any of the other
|
|
356
366
|
// ranges linked from the range before the split.
|
|
357
367
|
result->parent_ = (parent_ == NULL) ? this : parent_;
|
|
@@ -565,10 +575,10 @@ BitVector* LAllocator::ComputeLiveOut(HBasicBlock* block) {
|
|
|
565
575
|
BitVector* live_out = new BitVector(next_virtual_register_);
|
|
566
576
|
|
|
567
577
|
// Process all successor blocks.
|
|
568
|
-
|
|
569
|
-
while (successor != NULL) {
|
|
578
|
+
for (HSuccessorIterator it(block->end()); !it.Done(); it.Advance()) {
|
|
570
579
|
// Add values live on entry to the successor. Note the successor's
|
|
571
580
|
// live_in will not be computed yet for backwards edges.
|
|
581
|
+
HBasicBlock* successor = it.Current();
|
|
572
582
|
BitVector* live_in = live_in_sets_[successor->block_id()];
|
|
573
583
|
if (live_in != NULL) live_out->Union(*live_in);
|
|
574
584
|
|
|
@@ -582,11 +592,6 @@ BitVector* LAllocator::ComputeLiveOut(HBasicBlock* block) {
|
|
|
582
592
|
live_out->Add(phi->OperandAt(index)->id());
|
|
583
593
|
}
|
|
584
594
|
}
|
|
585
|
-
|
|
586
|
-
// Check if we are done with second successor.
|
|
587
|
-
if (successor == block->end()->SecondSuccessor()) break;
|
|
588
|
-
|
|
589
|
-
successor = block->end()->SecondSuccessor();
|
|
590
595
|
}
|
|
591
596
|
|
|
592
597
|
return live_out;
|
|
@@ -790,8 +795,8 @@ void LAllocator::MeetConstraintsBetween(LInstruction* first,
|
|
|
790
795
|
int gap_index) {
|
|
791
796
|
// Handle fixed temporaries.
|
|
792
797
|
if (first != NULL) {
|
|
793
|
-
for (TempIterator it(first); it.
|
|
794
|
-
LUnallocated* temp = LUnallocated::cast(it.
|
|
798
|
+
for (TempIterator it(first); !it.Done(); it.Advance()) {
|
|
799
|
+
LUnallocated* temp = LUnallocated::cast(it.Current());
|
|
795
800
|
if (temp->HasFixedPolicy()) {
|
|
796
801
|
AllocateFixed(temp, gap_index - 1, false);
|
|
797
802
|
}
|
|
@@ -832,8 +837,8 @@ void LAllocator::MeetConstraintsBetween(LInstruction* first,
|
|
|
832
837
|
|
|
833
838
|
// Handle fixed input operands of second instruction.
|
|
834
839
|
if (second != NULL) {
|
|
835
|
-
for (UseIterator it(second); it.
|
|
836
|
-
LUnallocated* cur_input = LUnallocated::cast(it.
|
|
840
|
+
for (UseIterator it(second); !it.Done(); it.Advance()) {
|
|
841
|
+
LUnallocated* cur_input = LUnallocated::cast(it.Current());
|
|
837
842
|
if (cur_input->HasFixedPolicy()) {
|
|
838
843
|
LUnallocated* input_copy = cur_input->CopyUnconstrained();
|
|
839
844
|
bool is_tagged = HasTaggedValue(cur_input->VirtualRegister());
|
|
@@ -968,8 +973,8 @@ void LAllocator::ProcessInstructions(HBasicBlock* block, BitVector* live) {
|
|
|
968
973
|
}
|
|
969
974
|
}
|
|
970
975
|
|
|
971
|
-
for (UseIterator it(instr); it.
|
|
972
|
-
LOperand* input = it.
|
|
976
|
+
for (UseIterator it(instr); !it.Done(); it.Advance()) {
|
|
977
|
+
LOperand* input = it.Current();
|
|
973
978
|
|
|
974
979
|
LifetimePosition use_pos;
|
|
975
980
|
if (input->IsUnallocated() &&
|
|
@@ -983,8 +988,8 @@ void LAllocator::ProcessInstructions(HBasicBlock* block, BitVector* live) {
|
|
|
983
988
|
if (input->IsUnallocated()) live->Add(input->VirtualRegister());
|
|
984
989
|
}
|
|
985
990
|
|
|
986
|
-
for (TempIterator it(instr); it.
|
|
987
|
-
LOperand* temp = it.
|
|
991
|
+
for (TempIterator it(instr); !it.Done(); it.Advance()) {
|
|
992
|
+
LOperand* temp = it.Current();
|
|
988
993
|
if (instr->IsMarkedAsCall()) {
|
|
989
994
|
if (temp->IsRegister()) continue;
|
|
990
995
|
if (temp->IsUnallocated()) {
|
|
@@ -1019,7 +1024,7 @@ void LAllocator::ResolvePhis(HBasicBlock* block) {
|
|
|
1019
1024
|
operand = chunk_->DefineConstantOperand(constant);
|
|
1020
1025
|
} else {
|
|
1021
1026
|
ASSERT(!op->EmitAtUses());
|
|
1022
|
-
LUnallocated* unalloc = new LUnallocated(LUnallocated::
|
|
1027
|
+
LUnallocated* unalloc = new LUnallocated(LUnallocated::ANY);
|
|
1023
1028
|
unalloc->set_virtual_register(op->id());
|
|
1024
1029
|
operand = unalloc;
|
|
1025
1030
|
}
|
|
@@ -162,12 +162,12 @@ class LEnvironment;
|
|
|
162
162
|
class TempIterator BASE_EMBEDDED {
|
|
163
163
|
public:
|
|
164
164
|
inline explicit TempIterator(LInstruction* instr);
|
|
165
|
-
inline bool
|
|
166
|
-
inline LOperand*
|
|
165
|
+
inline bool Done();
|
|
166
|
+
inline LOperand* Current();
|
|
167
167
|
inline void Advance();
|
|
168
168
|
|
|
169
169
|
private:
|
|
170
|
-
inline
|
|
170
|
+
inline void SkipUninteresting();
|
|
171
171
|
LInstruction* instr_;
|
|
172
172
|
int limit_;
|
|
173
173
|
int current_;
|
|
@@ -178,12 +178,12 @@ class TempIterator BASE_EMBEDDED {
|
|
|
178
178
|
class InputIterator BASE_EMBEDDED {
|
|
179
179
|
public:
|
|
180
180
|
inline explicit InputIterator(LInstruction* instr);
|
|
181
|
-
inline bool
|
|
182
|
-
inline LOperand*
|
|
181
|
+
inline bool Done();
|
|
182
|
+
inline LOperand* Current();
|
|
183
183
|
inline void Advance();
|
|
184
184
|
|
|
185
185
|
private:
|
|
186
|
-
inline
|
|
186
|
+
inline void SkipUninteresting();
|
|
187
187
|
LInstruction* instr_;
|
|
188
188
|
int limit_;
|
|
189
189
|
int current_;
|
|
@@ -193,8 +193,8 @@ class InputIterator BASE_EMBEDDED {
|
|
|
193
193
|
class UseIterator BASE_EMBEDDED {
|
|
194
194
|
public:
|
|
195
195
|
inline explicit UseIterator(LInstruction* instr);
|
|
196
|
-
inline bool
|
|
197
|
-
inline LOperand*
|
|
196
|
+
inline bool Done();
|
|
197
|
+
inline LOperand* Current();
|
|
198
198
|
inline void Advance();
|
|
199
199
|
|
|
200
200
|
private:
|
data/lib/libv8/v8/src/lithium.cc
CHANGED
|
@@ -166,21 +166,26 @@ void LPointerMap::PrintTo(StringStream* stream) {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
|
|
169
|
-
int
|
|
170
|
-
switch (
|
|
171
|
-
case
|
|
172
|
-
case
|
|
173
|
-
case
|
|
169
|
+
int ElementsKindToShiftSize(JSObject::ElementsKind elements_kind) {
|
|
170
|
+
switch (elements_kind) {
|
|
171
|
+
case JSObject::EXTERNAL_BYTE_ELEMENTS:
|
|
172
|
+
case JSObject::EXTERNAL_PIXEL_ELEMENTS:
|
|
173
|
+
case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
|
174
174
|
return 0;
|
|
175
|
-
case
|
|
176
|
-
case
|
|
175
|
+
case JSObject::EXTERNAL_SHORT_ELEMENTS:
|
|
176
|
+
case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
|
177
177
|
return 1;
|
|
178
|
-
case
|
|
179
|
-
case
|
|
180
|
-
case
|
|
178
|
+
case JSObject::EXTERNAL_INT_ELEMENTS:
|
|
179
|
+
case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
|
|
180
|
+
case JSObject::EXTERNAL_FLOAT_ELEMENTS:
|
|
181
181
|
return 2;
|
|
182
|
-
case
|
|
182
|
+
case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
|
|
183
|
+
case JSObject::FAST_DOUBLE_ELEMENTS:
|
|
183
184
|
return 3;
|
|
185
|
+
case JSObject::FAST_ELEMENTS:
|
|
186
|
+
case JSObject::DICTIONARY_ELEMENTS:
|
|
187
|
+
case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
|
|
188
|
+
return kPointerSizeLog2;
|
|
184
189
|
}
|
|
185
190
|
UNREACHABLE();
|
|
186
191
|
return 0;
|
data/lib/libv8/v8/src/lithium.h
CHANGED
|
@@ -144,7 +144,8 @@ class LUnallocated: public LOperand {
|
|
|
144
144
|
};
|
|
145
145
|
|
|
146
146
|
static const int kMaxVirtualRegisters = 1 << (kVirtualRegisterWidth + 1);
|
|
147
|
-
static const int
|
|
147
|
+
static const int kMaxFixedIndex = 63;
|
|
148
|
+
static const int kMinFixedIndex = -64;
|
|
148
149
|
|
|
149
150
|
bool HasIgnorePolicy() const { return policy() == IGNORE; }
|
|
150
151
|
bool HasNoPolicy() const { return policy() == NONE; }
|
|
@@ -518,34 +519,34 @@ class ShallowIterator BASE_EMBEDDED {
|
|
|
518
519
|
: env_(env),
|
|
519
520
|
limit_(env != NULL ? env->values()->length() : 0),
|
|
520
521
|
current_(0) {
|
|
521
|
-
|
|
522
|
+
SkipUninteresting();
|
|
522
523
|
}
|
|
523
524
|
|
|
524
|
-
|
|
525
|
-
return env_ != NULL && current_ < limit_;
|
|
526
|
-
}
|
|
525
|
+
bool Done() { return current_ >= limit_; }
|
|
527
526
|
|
|
528
|
-
|
|
529
|
-
ASSERT(
|
|
527
|
+
LOperand* Current() {
|
|
528
|
+
ASSERT(!Done());
|
|
530
529
|
return env_->values()->at(current_);
|
|
531
530
|
}
|
|
532
531
|
|
|
533
|
-
|
|
534
|
-
|
|
532
|
+
void Advance() {
|
|
533
|
+
ASSERT(!Done());
|
|
534
|
+
++current_;
|
|
535
|
+
SkipUninteresting();
|
|
535
536
|
}
|
|
536
537
|
|
|
537
|
-
|
|
538
|
+
LEnvironment* env() { return env_; }
|
|
538
539
|
|
|
539
540
|
private:
|
|
540
|
-
|
|
541
|
+
bool ShouldSkip(LOperand* op) {
|
|
541
542
|
return op == NULL || op->IsConstantOperand() || op->IsArgument();
|
|
542
543
|
}
|
|
543
544
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
545
|
+
// Skip until something interesting, beginning with and including current_.
|
|
546
|
+
void SkipUninteresting() {
|
|
547
|
+
while (current_ < limit_ && ShouldSkip(env_->values()->at(current_))) {
|
|
548
|
+
++current_;
|
|
547
549
|
}
|
|
548
|
-
return start;
|
|
549
550
|
}
|
|
550
551
|
|
|
551
552
|
LEnvironment* env_;
|
|
@@ -558,38 +559,34 @@ class ShallowIterator BASE_EMBEDDED {
|
|
|
558
559
|
class DeepIterator BASE_EMBEDDED {
|
|
559
560
|
public:
|
|
560
561
|
explicit DeepIterator(LEnvironment* env)
|
|
561
|
-
: current_iterator_(env) {
|
|
562
|
-
|
|
563
|
-
inline bool HasNext() {
|
|
564
|
-
if (current_iterator_.HasNext()) return true;
|
|
565
|
-
if (current_iterator_.env() == NULL) return false;
|
|
566
|
-
AdvanceToOuter();
|
|
567
|
-
return current_iterator_.HasNext();
|
|
562
|
+
: current_iterator_(env) {
|
|
563
|
+
SkipUninteresting();
|
|
568
564
|
}
|
|
569
565
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
566
|
+
bool Done() { return current_iterator_.Done(); }
|
|
567
|
+
|
|
568
|
+
LOperand* Current() {
|
|
569
|
+
ASSERT(!current_iterator_.Done());
|
|
570
|
+
return current_iterator_.Current();
|
|
573
571
|
}
|
|
574
572
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
} else {
|
|
579
|
-
AdvanceToOuter();
|
|
580
|
-
}
|
|
573
|
+
void Advance() {
|
|
574
|
+
current_iterator_.Advance();
|
|
575
|
+
SkipUninteresting();
|
|
581
576
|
}
|
|
582
577
|
|
|
583
578
|
private:
|
|
584
|
-
|
|
585
|
-
|
|
579
|
+
void SkipUninteresting() {
|
|
580
|
+
while (current_iterator_.env() != NULL && current_iterator_.Done()) {
|
|
581
|
+
current_iterator_ = ShallowIterator(current_iterator_.env()->outer());
|
|
582
|
+
}
|
|
586
583
|
}
|
|
587
584
|
|
|
588
585
|
ShallowIterator current_iterator_;
|
|
589
586
|
};
|
|
590
587
|
|
|
591
588
|
|
|
592
|
-
int
|
|
589
|
+
int ElementsKindToShiftSize(JSObject::ElementsKind elements_kind);
|
|
593
590
|
|
|
594
591
|
|
|
595
592
|
} } // namespace v8::internal
|
|
@@ -66,7 +66,7 @@ void SetElementNonStrict(Handle<JSObject> object,
|
|
|
66
66
|
class Differencer {
|
|
67
67
|
public:
|
|
68
68
|
explicit Differencer(Comparator::Input* input)
|
|
69
|
-
: input_(input), len1_(input->
|
|
69
|
+
: input_(input), len1_(input->GetLength1()), len2_(input->GetLength2()) {
|
|
70
70
|
buffer_ = NewArray<int>(len1_ * len2_);
|
|
71
71
|
}
|
|
72
72
|
~Differencer() {
|
|
@@ -151,7 +151,7 @@ class Differencer {
|
|
|
151
151
|
if (cached_res == kEmptyCellValue) {
|
|
152
152
|
Direction dir;
|
|
153
153
|
int res;
|
|
154
|
-
if (input_->
|
|
154
|
+
if (input_->Equals(pos1, pos2)) {
|
|
155
155
|
res = CompareUpToTail(pos1 + 1, pos2 + 1);
|
|
156
156
|
dir = EQ;
|
|
157
157
|
} else {
|
|
@@ -279,6 +279,70 @@ static bool CompareSubstrings(Handle<String> s1, int pos1,
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
|
|
282
|
+
// Additional to Input interface. Lets switch Input range to subrange.
|
|
283
|
+
// More elegant way would be to wrap one Input as another Input object
|
|
284
|
+
// and translate positions there, but that would cost us additional virtual
|
|
285
|
+
// call per comparison.
|
|
286
|
+
class SubrangableInput : public Comparator::Input {
|
|
287
|
+
public:
|
|
288
|
+
virtual void SetSubrange1(int offset, int len) = 0;
|
|
289
|
+
virtual void SetSubrange2(int offset, int len) = 0;
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
class SubrangableOutput : public Comparator::Output {
|
|
294
|
+
public:
|
|
295
|
+
virtual void SetSubrange1(int offset, int len) = 0;
|
|
296
|
+
virtual void SetSubrange2(int offset, int len) = 0;
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
static int min(int a, int b) {
|
|
301
|
+
return a < b ? a : b;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
// Finds common prefix and suffix in input. This parts shouldn't take space in
|
|
306
|
+
// linear programming table. Enable subranging in input and output.
|
|
307
|
+
static void NarrowDownInput(SubrangableInput* input,
|
|
308
|
+
SubrangableOutput* output) {
|
|
309
|
+
const int len1 = input->GetLength1();
|
|
310
|
+
const int len2 = input->GetLength2();
|
|
311
|
+
|
|
312
|
+
int common_prefix_len;
|
|
313
|
+
int common_suffix_len;
|
|
314
|
+
|
|
315
|
+
{
|
|
316
|
+
common_prefix_len = 0;
|
|
317
|
+
int prefix_limit = min(len1, len2);
|
|
318
|
+
while (common_prefix_len < prefix_limit &&
|
|
319
|
+
input->Equals(common_prefix_len, common_prefix_len)) {
|
|
320
|
+
common_prefix_len++;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
common_suffix_len = 0;
|
|
324
|
+
int suffix_limit = min(len1 - common_prefix_len, len2 - common_prefix_len);
|
|
325
|
+
|
|
326
|
+
while (common_suffix_len < suffix_limit &&
|
|
327
|
+
input->Equals(len1 - common_suffix_len - 1,
|
|
328
|
+
len2 - common_suffix_len - 1)) {
|
|
329
|
+
common_suffix_len++;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (common_prefix_len > 0 || common_suffix_len > 0) {
|
|
334
|
+
int new_len1 = len1 - common_suffix_len - common_prefix_len;
|
|
335
|
+
int new_len2 = len2 - common_suffix_len - common_prefix_len;
|
|
336
|
+
|
|
337
|
+
input->SetSubrange1(common_prefix_len, new_len1);
|
|
338
|
+
input->SetSubrange2(common_prefix_len, new_len2);
|
|
339
|
+
|
|
340
|
+
output->SetSubrange1(common_prefix_len, new_len1);
|
|
341
|
+
output->SetSubrange2(common_prefix_len, new_len2);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
|
|
282
346
|
// A helper class that writes chunk numbers into JSArray.
|
|
283
347
|
// Each chunk is stored as 3 array elements: (pos1_begin, pos1_end, pos2_end).
|
|
284
348
|
class CompareOutputArrayWriter {
|
|
@@ -319,13 +383,13 @@ class TokensCompareInput : public Comparator::Input {
|
|
|
319
383
|
: s1_(s1), offset1_(offset1), len1_(len1),
|
|
320
384
|
s2_(s2), offset2_(offset2), len2_(len2) {
|
|
321
385
|
}
|
|
322
|
-
virtual int
|
|
386
|
+
virtual int GetLength1() {
|
|
323
387
|
return len1_;
|
|
324
388
|
}
|
|
325
|
-
virtual int
|
|
389
|
+
virtual int GetLength2() {
|
|
326
390
|
return len2_;
|
|
327
391
|
}
|
|
328
|
-
bool
|
|
392
|
+
bool Equals(int index1, int index2) {
|
|
329
393
|
return s1_->Get(offset1_ + index1) == s2_->Get(offset2_ + index2);
|
|
330
394
|
}
|
|
331
395
|
|
|
@@ -401,20 +465,26 @@ class LineEndsWrapper {
|
|
|
401
465
|
|
|
402
466
|
|
|
403
467
|
// Represents 2 strings as 2 arrays of lines.
|
|
404
|
-
class LineArrayCompareInput : public
|
|
468
|
+
class LineArrayCompareInput : public SubrangableInput {
|
|
405
469
|
public:
|
|
406
470
|
LineArrayCompareInput(Handle<String> s1, Handle<String> s2,
|
|
407
471
|
LineEndsWrapper line_ends1, LineEndsWrapper line_ends2)
|
|
408
472
|
: s1_(s1), s2_(s2), line_ends1_(line_ends1),
|
|
409
|
-
line_ends2_(line_ends2)
|
|
473
|
+
line_ends2_(line_ends2),
|
|
474
|
+
subrange_offset1_(0), subrange_offset2_(0),
|
|
475
|
+
subrange_len1_(line_ends1_.length()),
|
|
476
|
+
subrange_len2_(line_ends2_.length()) {
|
|
410
477
|
}
|
|
411
|
-
int
|
|
412
|
-
return
|
|
478
|
+
int GetLength1() {
|
|
479
|
+
return subrange_len1_;
|
|
413
480
|
}
|
|
414
|
-
int
|
|
415
|
-
return
|
|
481
|
+
int GetLength2() {
|
|
482
|
+
return subrange_len2_;
|
|
416
483
|
}
|
|
417
|
-
bool
|
|
484
|
+
bool Equals(int index1, int index2) {
|
|
485
|
+
index1 += subrange_offset1_;
|
|
486
|
+
index2 += subrange_offset2_;
|
|
487
|
+
|
|
418
488
|
int line_start1 = line_ends1_.GetLineStart(index1);
|
|
419
489
|
int line_start2 = line_ends2_.GetLineStart(index2);
|
|
420
490
|
int line_end1 = line_ends1_.GetLineEnd(index1);
|
|
@@ -427,26 +497,42 @@ class LineArrayCompareInput : public Comparator::Input {
|
|
|
427
497
|
return CompareSubstrings(s1_, line_start1, s2_, line_start2,
|
|
428
498
|
len1);
|
|
429
499
|
}
|
|
500
|
+
void SetSubrange1(int offset, int len) {
|
|
501
|
+
subrange_offset1_ = offset;
|
|
502
|
+
subrange_len1_ = len;
|
|
503
|
+
}
|
|
504
|
+
void SetSubrange2(int offset, int len) {
|
|
505
|
+
subrange_offset2_ = offset;
|
|
506
|
+
subrange_len2_ = len;
|
|
507
|
+
}
|
|
430
508
|
|
|
431
509
|
private:
|
|
432
510
|
Handle<String> s1_;
|
|
433
511
|
Handle<String> s2_;
|
|
434
512
|
LineEndsWrapper line_ends1_;
|
|
435
513
|
LineEndsWrapper line_ends2_;
|
|
514
|
+
int subrange_offset1_;
|
|
515
|
+
int subrange_offset2_;
|
|
516
|
+
int subrange_len1_;
|
|
517
|
+
int subrange_len2_;
|
|
436
518
|
};
|
|
437
519
|
|
|
438
520
|
|
|
439
521
|
// Stores compare result in JSArray. For each chunk tries to conduct
|
|
440
522
|
// a fine-grained nested diff token-wise.
|
|
441
|
-
class TokenizingLineArrayCompareOutput : public
|
|
523
|
+
class TokenizingLineArrayCompareOutput : public SubrangableOutput {
|
|
442
524
|
public:
|
|
443
525
|
TokenizingLineArrayCompareOutput(LineEndsWrapper line_ends1,
|
|
444
526
|
LineEndsWrapper line_ends2,
|
|
445
527
|
Handle<String> s1, Handle<String> s2)
|
|
446
|
-
: line_ends1_(line_ends1), line_ends2_(line_ends2), s1_(s1), s2_(s2)
|
|
528
|
+
: line_ends1_(line_ends1), line_ends2_(line_ends2), s1_(s1), s2_(s2),
|
|
529
|
+
subrange_offset1_(0), subrange_offset2_(0) {
|
|
447
530
|
}
|
|
448
531
|
|
|
449
532
|
void AddChunk(int line_pos1, int line_pos2, int line_len1, int line_len2) {
|
|
533
|
+
line_pos1 += subrange_offset1_;
|
|
534
|
+
line_pos2 += subrange_offset2_;
|
|
535
|
+
|
|
450
536
|
int char_pos1 = line_ends1_.GetLineStart(line_pos1);
|
|
451
537
|
int char_pos2 = line_ends2_.GetLineStart(line_pos2);
|
|
452
538
|
int char_len1 = line_ends1_.GetLineStart(line_pos1 + line_len1) - char_pos1;
|
|
@@ -466,6 +552,12 @@ class TokenizingLineArrayCompareOutput : public Comparator::Output {
|
|
|
466
552
|
array_writer_.WriteChunk(char_pos1, char_pos2, char_len1, char_len2);
|
|
467
553
|
}
|
|
468
554
|
}
|
|
555
|
+
void SetSubrange1(int offset, int len) {
|
|
556
|
+
subrange_offset1_ = offset;
|
|
557
|
+
}
|
|
558
|
+
void SetSubrange2(int offset, int len) {
|
|
559
|
+
subrange_offset2_ = offset;
|
|
560
|
+
}
|
|
469
561
|
|
|
470
562
|
Handle<JSArray> GetResult() {
|
|
471
563
|
return array_writer_.GetResult();
|
|
@@ -479,6 +571,8 @@ class TokenizingLineArrayCompareOutput : public Comparator::Output {
|
|
|
479
571
|
LineEndsWrapper line_ends2_;
|
|
480
572
|
Handle<String> s1_;
|
|
481
573
|
Handle<String> s2_;
|
|
574
|
+
int subrange_offset1_;
|
|
575
|
+
int subrange_offset2_;
|
|
482
576
|
};
|
|
483
577
|
|
|
484
578
|
|
|
@@ -493,6 +587,8 @@ Handle<JSArray> LiveEdit::CompareStrings(Handle<String> s1,
|
|
|
493
587
|
LineArrayCompareInput input(s1, s2, line_ends1, line_ends2);
|
|
494
588
|
TokenizingLineArrayCompareOutput output(line_ends1, line_ends2, s1, s2);
|
|
495
589
|
|
|
590
|
+
NarrowDownInput(&input, &output);
|
|
591
|
+
|
|
496
592
|
Comparator::CalculateDifference(&input, &output);
|
|
497
593
|
|
|
498
594
|
return output.GetResult();
|
|
@@ -814,7 +910,7 @@ class FunctionInfoListener {
|
|
|
814
910
|
JSArray* LiveEdit::GatherCompileInfo(Handle<Script> script,
|
|
815
911
|
Handle<String> source) {
|
|
816
912
|
Isolate* isolate = Isolate::Current();
|
|
817
|
-
|
|
913
|
+
ZoneScope zone_scope(isolate, DELETE_ON_EXIT);
|
|
818
914
|
|
|
819
915
|
FunctionInfoListener listener;
|
|
820
916
|
Handle<Object> original_source = Handle<Object>(script->source());
|