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/hydrogen.h
CHANGED
|
@@ -116,14 +116,14 @@ class HBasicBlock: public ZoneObject {
|
|
|
116
116
|
|
|
117
117
|
bool HasParentLoopHeader() const { return parent_loop_header_ != NULL; }
|
|
118
118
|
|
|
119
|
-
void SetJoinId(int
|
|
119
|
+
void SetJoinId(int ast_id);
|
|
120
120
|
|
|
121
121
|
void Finish(HControlInstruction* last);
|
|
122
122
|
void FinishExit(HControlInstruction* instruction);
|
|
123
|
-
void Goto(HBasicBlock* block
|
|
123
|
+
void Goto(HBasicBlock* block);
|
|
124
124
|
|
|
125
125
|
int PredecessorIndexOf(HBasicBlock* predecessor) const;
|
|
126
|
-
void AddSimulate(int
|
|
126
|
+
void AddSimulate(int ast_id) { AddInstruction(CreateSimulate(ast_id)); }
|
|
127
127
|
void AssignCommonDominator(HBasicBlock* other);
|
|
128
128
|
|
|
129
129
|
void FinishExitWithDeoptimization(HDeoptimize::UseEnvironment has_uses) {
|
|
@@ -143,6 +143,9 @@ class HBasicBlock: public ZoneObject {
|
|
|
143
143
|
bool IsInlineReturnTarget() const { return is_inline_return_target_; }
|
|
144
144
|
void MarkAsInlineReturnTarget() { is_inline_return_target_ = true; }
|
|
145
145
|
|
|
146
|
+
bool IsDeoptimizing() const { return is_deoptimizing_; }
|
|
147
|
+
void MarkAsDeoptimizing() { is_deoptimizing_ = true; }
|
|
148
|
+
|
|
146
149
|
inline Zone* zone();
|
|
147
150
|
|
|
148
151
|
#ifdef DEBUG
|
|
@@ -153,7 +156,7 @@ class HBasicBlock: public ZoneObject {
|
|
|
153
156
|
void RegisterPredecessor(HBasicBlock* pred);
|
|
154
157
|
void AddDominatedBlock(HBasicBlock* block);
|
|
155
158
|
|
|
156
|
-
HSimulate* CreateSimulate(int
|
|
159
|
+
HSimulate* CreateSimulate(int ast_id);
|
|
157
160
|
HDeoptimize* CreateDeoptimize(HDeoptimize::UseEnvironment has_uses);
|
|
158
161
|
|
|
159
162
|
int block_id_;
|
|
@@ -175,13 +178,17 @@ class HBasicBlock: public ZoneObject {
|
|
|
175
178
|
ZoneList<int> deleted_phis_;
|
|
176
179
|
HBasicBlock* parent_loop_header_;
|
|
177
180
|
bool is_inline_return_target_;
|
|
181
|
+
bool is_deoptimizing_;
|
|
178
182
|
};
|
|
179
183
|
|
|
180
184
|
|
|
181
185
|
class HLoopInformation: public ZoneObject {
|
|
182
186
|
public:
|
|
183
187
|
explicit HLoopInformation(HBasicBlock* loop_header)
|
|
184
|
-
: back_edges_(4),
|
|
188
|
+
: back_edges_(4),
|
|
189
|
+
loop_header_(loop_header),
|
|
190
|
+
blocks_(8),
|
|
191
|
+
stack_check_(NULL) {
|
|
185
192
|
blocks_.Add(loop_header);
|
|
186
193
|
}
|
|
187
194
|
virtual ~HLoopInformation() {}
|
|
@@ -192,12 +199,18 @@ class HLoopInformation: public ZoneObject {
|
|
|
192
199
|
HBasicBlock* GetLastBackEdge() const;
|
|
193
200
|
void RegisterBackEdge(HBasicBlock* block);
|
|
194
201
|
|
|
202
|
+
HStackCheck* stack_check() const { return stack_check_; }
|
|
203
|
+
void set_stack_check(HStackCheck* stack_check) {
|
|
204
|
+
stack_check_ = stack_check;
|
|
205
|
+
}
|
|
206
|
+
|
|
195
207
|
private:
|
|
196
208
|
void AddBlock(HBasicBlock* block);
|
|
197
209
|
|
|
198
210
|
ZoneList<HBasicBlock*> back_edges_;
|
|
199
211
|
HBasicBlock* loop_header_;
|
|
200
212
|
ZoneList<HBasicBlock*> blocks_;
|
|
213
|
+
HStackCheck* stack_check_;
|
|
201
214
|
};
|
|
202
215
|
|
|
203
216
|
|
|
@@ -216,6 +229,7 @@ class HGraph: public ZoneObject {
|
|
|
216
229
|
void InitializeInferredTypes();
|
|
217
230
|
void InsertTypeConversions();
|
|
218
231
|
void InsertRepresentationChanges();
|
|
232
|
+
void MarkDeoptimizeOnUndefined();
|
|
219
233
|
void ComputeMinusZeroChecks();
|
|
220
234
|
bool ProcessArgumentsObject();
|
|
221
235
|
void EliminateRedundantPhis();
|
|
@@ -223,9 +237,15 @@ class HGraph: public ZoneObject {
|
|
|
223
237
|
void Canonicalize();
|
|
224
238
|
void OrderBlocks();
|
|
225
239
|
void AssignDominators();
|
|
240
|
+
void ReplaceCheckedValues();
|
|
241
|
+
void PropagateDeoptimizingMark();
|
|
226
242
|
|
|
227
243
|
// Returns false if there are phi-uses of the arguments-object
|
|
228
244
|
// which are not supported by the optimizing compiler.
|
|
245
|
+
bool CheckPhis();
|
|
246
|
+
|
|
247
|
+
// Returns false if there are phi-uses of hole values comming
|
|
248
|
+
// from uninitialized consts.
|
|
229
249
|
bool CollectPhis();
|
|
230
250
|
|
|
231
251
|
Handle<Code> Compile(CompilationInfo* info);
|
|
@@ -238,6 +258,7 @@ class HGraph: public ZoneObject {
|
|
|
238
258
|
HConstant* GetConstantMinus1();
|
|
239
259
|
HConstant* GetConstantTrue();
|
|
240
260
|
HConstant* GetConstantFalse();
|
|
261
|
+
HConstant* GetConstantHole();
|
|
241
262
|
|
|
242
263
|
HBasicBlock* CreateBasicBlock();
|
|
243
264
|
HArgumentsObject* GetArgumentsObject() const {
|
|
@@ -276,8 +297,10 @@ class HGraph: public ZoneObject {
|
|
|
276
297
|
HConstant* GetConstant(SetOncePointer<HConstant>* pointer,
|
|
277
298
|
Object* value);
|
|
278
299
|
|
|
300
|
+
void MarkAsDeoptimizingRecursively(HBasicBlock* block);
|
|
279
301
|
void InsertTypeConversions(HInstruction* instr);
|
|
280
302
|
void PropagateMinusZeroChecks(HValue* value, BitVector* visited);
|
|
303
|
+
void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi);
|
|
281
304
|
void InsertRepresentationChangeForUse(HValue* value,
|
|
282
305
|
HValue* use_value,
|
|
283
306
|
int use_index,
|
|
@@ -299,6 +322,7 @@ class HGraph: public ZoneObject {
|
|
|
299
322
|
SetOncePointer<HConstant> constant_minus1_;
|
|
300
323
|
SetOncePointer<HConstant> constant_true_;
|
|
301
324
|
SetOncePointer<HConstant> constant_false_;
|
|
325
|
+
SetOncePointer<HConstant> constant_hole_;
|
|
302
326
|
SetOncePointer<HArgumentsObject> arguments_object_;
|
|
303
327
|
|
|
304
328
|
DISALLOW_COPY_AND_ASSIGN(HGraph);
|
|
@@ -310,8 +334,6 @@ Zone* HBasicBlock::zone() { return graph_->zone(); }
|
|
|
310
334
|
|
|
311
335
|
class HEnvironment: public ZoneObject {
|
|
312
336
|
public:
|
|
313
|
-
enum CompilationPhase { HYDROGEN, LITHIUM };
|
|
314
|
-
|
|
315
337
|
HEnvironment(HEnvironment* outer,
|
|
316
338
|
Scope* scope,
|
|
317
339
|
Handle<JSFunction> closure);
|
|
@@ -398,12 +420,9 @@ class HEnvironment: public ZoneObject {
|
|
|
398
420
|
|
|
399
421
|
// Create an "inlined version" of this environment, where the original
|
|
400
422
|
// environment is the outer environment but the top expression stack
|
|
401
|
-
// elements are moved to an inner environment as parameters.
|
|
402
|
-
// is_speculative, the argument values are expected to be PushArgument
|
|
403
|
-
// instructions, otherwise they are the actual values.
|
|
423
|
+
// elements are moved to an inner environment as parameters.
|
|
404
424
|
HEnvironment* CopyForInlining(Handle<JSFunction> target,
|
|
405
425
|
FunctionLiteral* function,
|
|
406
|
-
CompilationPhase compilation_phase,
|
|
407
426
|
HConstant* undefined,
|
|
408
427
|
CallKind call_kind) const;
|
|
409
428
|
|
|
@@ -484,6 +503,12 @@ class AstContext {
|
|
|
484
503
|
// the instruction as value.
|
|
485
504
|
virtual void ReturnInstruction(HInstruction* instr, int ast_id) = 0;
|
|
486
505
|
|
|
506
|
+
// Finishes the current basic block and materialize a boolean for
|
|
507
|
+
// value context, nothing for effect, generate a branch for test context.
|
|
508
|
+
// Call this function in tail position in the Visit functions for
|
|
509
|
+
// expressions.
|
|
510
|
+
virtual void ReturnControl(HControlInstruction* instr, int ast_id) = 0;
|
|
511
|
+
|
|
487
512
|
void set_for_typeof(bool for_typeof) { for_typeof_ = for_typeof; }
|
|
488
513
|
bool is_for_typeof() { return for_typeof_; }
|
|
489
514
|
|
|
@@ -518,6 +543,7 @@ class EffectContext: public AstContext {
|
|
|
518
543
|
|
|
519
544
|
virtual void ReturnValue(HValue* value);
|
|
520
545
|
virtual void ReturnInstruction(HInstruction* instr, int ast_id);
|
|
546
|
+
virtual void ReturnControl(HControlInstruction* instr, int ast_id);
|
|
521
547
|
};
|
|
522
548
|
|
|
523
549
|
|
|
@@ -530,6 +556,7 @@ class ValueContext: public AstContext {
|
|
|
530
556
|
|
|
531
557
|
virtual void ReturnValue(HValue* value);
|
|
532
558
|
virtual void ReturnInstruction(HInstruction* instr, int ast_id);
|
|
559
|
+
virtual void ReturnControl(HControlInstruction* instr, int ast_id);
|
|
533
560
|
|
|
534
561
|
bool arguments_allowed() { return flag_ == ARGUMENTS_ALLOWED; }
|
|
535
562
|
|
|
@@ -541,21 +568,25 @@ class ValueContext: public AstContext {
|
|
|
541
568
|
class TestContext: public AstContext {
|
|
542
569
|
public:
|
|
543
570
|
TestContext(HGraphBuilder* owner,
|
|
571
|
+
Expression* condition,
|
|
544
572
|
HBasicBlock* if_true,
|
|
545
573
|
HBasicBlock* if_false)
|
|
546
574
|
: AstContext(owner, Expression::kTest),
|
|
575
|
+
condition_(condition),
|
|
547
576
|
if_true_(if_true),
|
|
548
577
|
if_false_(if_false) {
|
|
549
578
|
}
|
|
550
579
|
|
|
551
580
|
virtual void ReturnValue(HValue* value);
|
|
552
581
|
virtual void ReturnInstruction(HInstruction* instr, int ast_id);
|
|
582
|
+
virtual void ReturnControl(HControlInstruction* instr, int ast_id);
|
|
553
583
|
|
|
554
584
|
static TestContext* cast(AstContext* context) {
|
|
555
585
|
ASSERT(context->IsTest());
|
|
556
586
|
return reinterpret_cast<TestContext*>(context);
|
|
557
587
|
}
|
|
558
588
|
|
|
589
|
+
Expression* condition() const { return condition_; }
|
|
559
590
|
HBasicBlock* if_true() const { return if_true_; }
|
|
560
591
|
HBasicBlock* if_false() const { return if_false_; }
|
|
561
592
|
|
|
@@ -564,6 +595,7 @@ class TestContext: public AstContext {
|
|
|
564
595
|
// control flow.
|
|
565
596
|
void BuildBranch(HValue* value);
|
|
566
597
|
|
|
598
|
+
Expression* condition_;
|
|
567
599
|
HBasicBlock* if_true_;
|
|
568
600
|
HBasicBlock* if_false_;
|
|
569
601
|
};
|
|
@@ -680,7 +712,7 @@ class HGraphBuilder: public AstVisitor {
|
|
|
680
712
|
|
|
681
713
|
// Adding instructions.
|
|
682
714
|
HInstruction* AddInstruction(HInstruction* instr);
|
|
683
|
-
void AddSimulate(int
|
|
715
|
+
void AddSimulate(int ast_id);
|
|
684
716
|
|
|
685
717
|
// Bailout environment manipulation.
|
|
686
718
|
void Push(HValue* value) { environment()->Push(value); }
|
|
@@ -688,6 +720,12 @@ class HGraphBuilder: public AstVisitor {
|
|
|
688
720
|
|
|
689
721
|
void Bailout(const char* reason);
|
|
690
722
|
|
|
723
|
+
HBasicBlock* CreateJoin(HBasicBlock* first,
|
|
724
|
+
HBasicBlock* second,
|
|
725
|
+
int join_id);
|
|
726
|
+
|
|
727
|
+
TypeFeedbackOracle* oracle() const { return function_state()->oracle(); }
|
|
728
|
+
|
|
691
729
|
private:
|
|
692
730
|
// Type of a member function that generates inline code for a native function.
|
|
693
731
|
typedef void (HGraphBuilder::*InlineFunctionGenerator)(CallRuntime* call);
|
|
@@ -716,7 +754,6 @@ class HGraphBuilder: public AstVisitor {
|
|
|
716
754
|
CompilationInfo* info() const {
|
|
717
755
|
return function_state()->compilation_info();
|
|
718
756
|
}
|
|
719
|
-
TypeFeedbackOracle* oracle() const { return function_state()->oracle(); }
|
|
720
757
|
|
|
721
758
|
AstContext* call_context() const {
|
|
722
759
|
return function_state()->call_context();
|
|
@@ -751,16 +788,15 @@ class HGraphBuilder: public AstVisitor {
|
|
|
751
788
|
void VisitNot(UnaryOperation* expr);
|
|
752
789
|
|
|
753
790
|
void VisitComma(BinaryOperation* expr);
|
|
754
|
-
void
|
|
755
|
-
void
|
|
791
|
+
void VisitLogicalExpression(BinaryOperation* expr);
|
|
792
|
+
void VisitArithmeticExpression(BinaryOperation* expr);
|
|
756
793
|
|
|
757
794
|
void PreProcessOsrEntry(IterationStatement* statement);
|
|
758
795
|
// True iff. we are compiling for OSR and the statement is the entry.
|
|
759
796
|
bool HasOsrEntryAt(IterationStatement* statement);
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
int join_id);
|
|
797
|
+
void VisitLoopBody(IterationStatement* stmt,
|
|
798
|
+
HBasicBlock* loop_entry,
|
|
799
|
+
BreakAndContinueInfo* break_info);
|
|
764
800
|
|
|
765
801
|
// Create a back edge in the flow graph. body_exit is the predecessor
|
|
766
802
|
// block and loop_entry is the successor block. loop_successor is the
|
|
@@ -795,8 +831,9 @@ class HGraphBuilder: public AstVisitor {
|
|
|
795
831
|
HBasicBlock* false_block);
|
|
796
832
|
|
|
797
833
|
// Visit an argument subexpression and emit a push to the outgoing
|
|
798
|
-
// arguments.
|
|
799
|
-
|
|
834
|
+
// arguments. Returns the hydrogen value that was pushed.
|
|
835
|
+
HValue* VisitArgument(Expression* expr);
|
|
836
|
+
|
|
800
837
|
void VisitArgumentList(ZoneList<Expression*>* arguments);
|
|
801
838
|
|
|
802
839
|
// Visit a list of expressions from left to right, each in a value context.
|
|
@@ -837,7 +874,10 @@ class HGraphBuilder: public AstVisitor {
|
|
|
837
874
|
bool is_store);
|
|
838
875
|
|
|
839
876
|
bool TryArgumentsAccess(Property* expr);
|
|
877
|
+
|
|
878
|
+
// Try to optimize fun.apply(receiver, arguments) pattern.
|
|
840
879
|
bool TryCallApply(Call* expr);
|
|
880
|
+
|
|
841
881
|
bool TryInline(Call* expr);
|
|
842
882
|
bool TryInlineBuiltinFunction(Call* expr,
|
|
843
883
|
HValue* receiver,
|
|
@@ -861,25 +901,24 @@ class HGraphBuilder: public AstVisitor {
|
|
|
861
901
|
void HandlePolymorphicStoreNamedField(Assignment* expr,
|
|
862
902
|
HValue* object,
|
|
863
903
|
HValue* value,
|
|
864
|
-
|
|
904
|
+
SmallMapList* types,
|
|
865
905
|
Handle<String> name);
|
|
866
906
|
void HandlePolymorphicCallNamed(Call* expr,
|
|
867
907
|
HValue* receiver,
|
|
868
|
-
|
|
908
|
+
SmallMapList* types,
|
|
869
909
|
Handle<String> name);
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
910
|
+
void HandleLiteralCompareTypeof(CompareOperation* compare_expr,
|
|
911
|
+
Expression* expr,
|
|
912
|
+
Handle<String> check);
|
|
913
|
+
void HandleLiteralCompareUndefined(CompareOperation* compare_expr,
|
|
914
|
+
Expression* expr);
|
|
915
|
+
|
|
916
|
+
HStringCharCodeAt* BuildStringCharCodeAt(HValue* context,
|
|
917
|
+
HValue* string,
|
|
875
918
|
HValue* index);
|
|
876
919
|
HInstruction* BuildBinaryOperation(BinaryOperation* expr,
|
|
877
920
|
HValue* left,
|
|
878
921
|
HValue* right);
|
|
879
|
-
HInstruction* BuildBinaryOperation(Token::Value op,
|
|
880
|
-
HValue* left,
|
|
881
|
-
HValue* right,
|
|
882
|
-
TypeInfo info);
|
|
883
922
|
HInstruction* BuildIncrement(bool returns_original_input,
|
|
884
923
|
CountOperation* expr);
|
|
885
924
|
HLoadNamedField* BuildLoadNamedField(HValue* object,
|
|
@@ -888,18 +927,37 @@ class HGraphBuilder: public AstVisitor {
|
|
|
888
927
|
LookupResult* result,
|
|
889
928
|
bool smi_and_map_check);
|
|
890
929
|
HInstruction* BuildLoadNamedGeneric(HValue* object, Property* expr);
|
|
891
|
-
HInstruction* BuildLoadKeyedFastElement(HValue* object,
|
|
892
|
-
HValue* key,
|
|
893
|
-
Property* expr);
|
|
894
|
-
HInstruction* BuildLoadKeyedSpecializedArrayElement(HValue* object,
|
|
895
|
-
HValue* key,
|
|
896
|
-
Property* expr);
|
|
897
930
|
HInstruction* BuildLoadKeyedGeneric(HValue* object,
|
|
898
931
|
HValue* key);
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
932
|
+
HInstruction* BuildExternalArrayElementAccess(
|
|
933
|
+
HValue* external_elements,
|
|
934
|
+
HValue* checked_key,
|
|
935
|
+
HValue* val,
|
|
936
|
+
JSObject::ElementsKind elements_kind,
|
|
937
|
+
bool is_store);
|
|
938
|
+
|
|
939
|
+
HInstruction* BuildMonomorphicElementAccess(HValue* object,
|
|
940
|
+
HValue* key,
|
|
941
|
+
HValue* val,
|
|
942
|
+
Expression* expr,
|
|
943
|
+
bool is_store);
|
|
944
|
+
HValue* HandlePolymorphicElementAccess(HValue* object,
|
|
945
|
+
HValue* key,
|
|
946
|
+
HValue* val,
|
|
947
|
+
Expression* prop,
|
|
948
|
+
int ast_id,
|
|
949
|
+
int position,
|
|
950
|
+
bool is_store,
|
|
951
|
+
bool* has_side_effects);
|
|
952
|
+
|
|
953
|
+
HValue* HandleKeyedElementAccess(HValue* obj,
|
|
954
|
+
HValue* key,
|
|
955
|
+
HValue* val,
|
|
956
|
+
Expression* expr,
|
|
957
|
+
int ast_id,
|
|
958
|
+
int position,
|
|
959
|
+
bool is_store,
|
|
960
|
+
bool* has_side_effects);
|
|
903
961
|
|
|
904
962
|
HInstruction* BuildLoadNamed(HValue* object,
|
|
905
963
|
Property* prop,
|
|
@@ -921,22 +979,6 @@ class HGraphBuilder: public AstVisitor {
|
|
|
921
979
|
HValue* key,
|
|
922
980
|
HValue* value);
|
|
923
981
|
|
|
924
|
-
HInstruction* BuildStoreKeyedFastElement(HValue* object,
|
|
925
|
-
HValue* key,
|
|
926
|
-
HValue* val,
|
|
927
|
-
Expression* expr);
|
|
928
|
-
|
|
929
|
-
HInstruction* BuildStoreKeyedSpecializedArrayElement(
|
|
930
|
-
HValue* object,
|
|
931
|
-
HValue* key,
|
|
932
|
-
HValue* val,
|
|
933
|
-
Expression* expr);
|
|
934
|
-
|
|
935
|
-
HInstruction* BuildStoreKeyed(HValue* object,
|
|
936
|
-
HValue* key,
|
|
937
|
-
HValue* value,
|
|
938
|
-
Expression* assignment);
|
|
939
|
-
|
|
940
982
|
HValue* BuildContextChainWalk(Variable* var);
|
|
941
983
|
|
|
942
984
|
void AddCheckConstantFunction(Call* expr,
|
|
@@ -1050,7 +1092,6 @@ class HStatistics: public Malloced {
|
|
|
1050
1092
|
}
|
|
1051
1093
|
|
|
1052
1094
|
private:
|
|
1053
|
-
|
|
1054
1095
|
HStatistics()
|
|
1055
1096
|
: timing_(5),
|
|
1056
1097
|
names_(5),
|
|
@@ -1174,11 +1215,6 @@ class HTracer: public Malloced {
|
|
|
1174
1215
|
trace_.Add("%s \"B%d\"\n", name, block_id);
|
|
1175
1216
|
}
|
|
1176
1217
|
|
|
1177
|
-
void PrintBlockProperty(const char* name, int block_id1, int block_id2) {
|
|
1178
|
-
PrintIndent();
|
|
1179
|
-
trace_.Add("%s \"B%d\" \"B%d\"\n", name, block_id1, block_id2);
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
1218
|
void PrintIntProperty(const char* name, int value) {
|
|
1183
1219
|
PrintIndent();
|
|
1184
1220
|
trace_.Add("%s %d\n", name, value);
|
|
@@ -449,6 +449,13 @@ void Assembler::push(const Operand& src) {
|
|
|
449
449
|
}
|
|
450
450
|
|
|
451
451
|
|
|
452
|
+
void Assembler::push(Handle<Object> handle) {
|
|
453
|
+
EnsureSpace ensure_space(this);
|
|
454
|
+
EMIT(0x68);
|
|
455
|
+
emit(handle);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
|
|
452
459
|
void Assembler::pop(Register dst) {
|
|
453
460
|
ASSERT(reloc_info_writer.last_pc() != NULL);
|
|
454
461
|
EnsureSpace ensure_space(this);
|
|
@@ -1950,6 +1957,18 @@ void Assembler::ucomisd(XMMRegister dst, XMMRegister src) {
|
|
|
1950
1957
|
}
|
|
1951
1958
|
|
|
1952
1959
|
|
|
1960
|
+
void Assembler::roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode) {
|
|
1961
|
+
ASSERT(CpuFeatures::IsEnabled(SSE4_1));
|
|
1962
|
+
EnsureSpace ensure_space(this);
|
|
1963
|
+
EMIT(0x66);
|
|
1964
|
+
EMIT(0x0F);
|
|
1965
|
+
EMIT(0x3A);
|
|
1966
|
+
EMIT(0x0B);
|
|
1967
|
+
emit_sse_operand(dst, src);
|
|
1968
|
+
// Mask precision exeption.
|
|
1969
|
+
EMIT(static_cast<byte>(mode) | 0x8);
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1953
1972
|
void Assembler::movmskpd(Register dst, XMMRegister src) {
|
|
1954
1973
|
ASSERT(CpuFeatures::IsEnabled(SSE2));
|
|
1955
1974
|
EnsureSpace ensure_space(this);
|
|
@@ -659,6 +659,7 @@ class Assembler : public AssemblerBase {
|
|
|
659
659
|
void push_imm32(int32_t imm32);
|
|
660
660
|
void push(Register src);
|
|
661
661
|
void push(const Operand& src);
|
|
662
|
+
void push(Handle<Object> handle);
|
|
662
663
|
|
|
663
664
|
void pop(Register dst);
|
|
664
665
|
void pop(const Operand& dst);
|
|
@@ -834,7 +835,7 @@ class Assembler : public AssemblerBase {
|
|
|
834
835
|
void call(const Operand& adr);
|
|
835
836
|
int CallSize(Handle<Code> code, RelocInfo::Mode mode);
|
|
836
837
|
void call(Handle<Code> code,
|
|
837
|
-
RelocInfo::Mode rmode,
|
|
838
|
+
RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
|
|
838
839
|
unsigned ast_id = kNoASTId);
|
|
839
840
|
|
|
840
841
|
// Jumps
|
|
@@ -940,6 +941,16 @@ class Assembler : public AssemblerBase {
|
|
|
940
941
|
void andpd(XMMRegister dst, XMMRegister src);
|
|
941
942
|
|
|
942
943
|
void ucomisd(XMMRegister dst, XMMRegister src);
|
|
944
|
+
|
|
945
|
+
enum RoundingMode {
|
|
946
|
+
kRoundToNearest = 0x0,
|
|
947
|
+
kRoundDown = 0x1,
|
|
948
|
+
kRoundUp = 0x2,
|
|
949
|
+
kRoundToZero = 0x3
|
|
950
|
+
};
|
|
951
|
+
|
|
952
|
+
void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode);
|
|
953
|
+
|
|
943
954
|
void movmskpd(Register dst, XMMRegister src);
|
|
944
955
|
|
|
945
956
|
void cmpltsd(XMMRegister dst, XMMRegister src);
|
|
@@ -989,7 +1000,9 @@ class Assembler : public AssemblerBase {
|
|
|
989
1000
|
void Print();
|
|
990
1001
|
|
|
991
1002
|
// Check the code size generated from label to here.
|
|
992
|
-
int SizeOfCodeGeneratedSince(Label*
|
|
1003
|
+
int SizeOfCodeGeneratedSince(Label* label) {
|
|
1004
|
+
return pc_offset() - label->pos();
|
|
1005
|
+
}
|
|
993
1006
|
|
|
994
1007
|
// Mark address of the ExitJSFrame code.
|
|
995
1008
|
void RecordJSReturn();
|