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
|
@@ -80,8 +80,10 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
80
80
|
explicit FullCodeGenerator(MacroAssembler* masm)
|
|
81
81
|
: masm_(masm),
|
|
82
82
|
info_(NULL),
|
|
83
|
+
scope_(NULL),
|
|
83
84
|
nesting_stack_(NULL),
|
|
84
85
|
loop_depth_(0),
|
|
86
|
+
stack_height_(0),
|
|
85
87
|
context_(NULL),
|
|
86
88
|
bailout_entries_(0),
|
|
87
89
|
stack_checks_(2), // There's always at least one.
|
|
@@ -109,10 +111,8 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
109
111
|
private:
|
|
110
112
|
class Breakable;
|
|
111
113
|
class Iteration;
|
|
112
|
-
|
|
113
|
-
class
|
|
114
|
-
class Finally;
|
|
115
|
-
class ForIn;
|
|
114
|
+
|
|
115
|
+
class TestContext;
|
|
116
116
|
|
|
117
117
|
class NestedStatement BASE_EMBEDDED {
|
|
118
118
|
public:
|
|
@@ -129,132 +129,135 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
129
129
|
|
|
130
130
|
virtual Breakable* AsBreakable() { return NULL; }
|
|
131
131
|
virtual Iteration* AsIteration() { return NULL; }
|
|
132
|
-
virtual TryCatch* AsTryCatch() { return NULL; }
|
|
133
|
-
virtual TryFinally* AsTryFinally() { return NULL; }
|
|
134
|
-
virtual Finally* AsFinally() { return NULL; }
|
|
135
|
-
virtual ForIn* AsForIn() { return NULL; }
|
|
136
132
|
|
|
137
133
|
virtual bool IsContinueTarget(Statement* target) { return false; }
|
|
138
134
|
virtual bool IsBreakTarget(Statement* target) { return false; }
|
|
139
135
|
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
virtual int Exit(int stack_depth) {
|
|
149
|
-
// Default implementation for the case where there is
|
|
150
|
-
// nothing to clean up.
|
|
151
|
-
return stack_depth;
|
|
136
|
+
// Notify the statement that we are exiting it via break, continue, or
|
|
137
|
+
// return and give it a chance to generate cleanup code. Return the
|
|
138
|
+
// next outer statement in the nesting stack. We accumulate in
|
|
139
|
+
// *stack_depth the amount to drop the stack and in *context_length the
|
|
140
|
+
// number of context chain links to unwind as we traverse the nesting
|
|
141
|
+
// stack from an exit to its target.
|
|
142
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length) {
|
|
143
|
+
return previous_;
|
|
152
144
|
}
|
|
153
|
-
|
|
154
|
-
|
|
145
|
+
|
|
146
|
+
protected:
|
|
155
147
|
MacroAssembler* masm() { return codegen_->masm(); }
|
|
156
|
-
|
|
148
|
+
|
|
157
149
|
FullCodeGenerator* codegen_;
|
|
158
150
|
NestedStatement* previous_;
|
|
159
151
|
DISALLOW_COPY_AND_ASSIGN(NestedStatement);
|
|
160
152
|
};
|
|
161
153
|
|
|
154
|
+
// A breakable statement such as a block.
|
|
162
155
|
class Breakable : public NestedStatement {
|
|
163
156
|
public:
|
|
164
|
-
Breakable(FullCodeGenerator* codegen,
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
target_(break_target) {}
|
|
157
|
+
Breakable(FullCodeGenerator* codegen, BreakableStatement* statement)
|
|
158
|
+
: NestedStatement(codegen), statement_(statement) {
|
|
159
|
+
}
|
|
168
160
|
virtual ~Breakable() {}
|
|
161
|
+
|
|
169
162
|
virtual Breakable* AsBreakable() { return this; }
|
|
170
|
-
virtual bool IsBreakTarget(Statement*
|
|
171
|
-
return
|
|
163
|
+
virtual bool IsBreakTarget(Statement* target) {
|
|
164
|
+
return statement() == target;
|
|
172
165
|
}
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
|
|
167
|
+
BreakableStatement* statement() { return statement_; }
|
|
168
|
+
Label* break_label() { return &break_label_; }
|
|
169
|
+
|
|
175
170
|
private:
|
|
176
|
-
BreakableStatement*
|
|
177
|
-
Label
|
|
178
|
-
DISALLOW_COPY_AND_ASSIGN(Breakable);
|
|
171
|
+
BreakableStatement* statement_;
|
|
172
|
+
Label break_label_;
|
|
179
173
|
};
|
|
180
174
|
|
|
175
|
+
// An iteration statement such as a while, for, or do loop.
|
|
181
176
|
class Iteration : public Breakable {
|
|
182
177
|
public:
|
|
183
|
-
Iteration(FullCodeGenerator* codegen,
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
Iteration(FullCodeGenerator* codegen, IterationStatement* statement)
|
|
179
|
+
: Breakable(codegen, statement) {
|
|
180
|
+
}
|
|
186
181
|
virtual ~Iteration() {}
|
|
182
|
+
|
|
187
183
|
virtual Iteration* AsIteration() { return this; }
|
|
188
|
-
virtual bool IsContinueTarget(Statement*
|
|
189
|
-
return
|
|
184
|
+
virtual bool IsContinueTarget(Statement* target) {
|
|
185
|
+
return statement() == target;
|
|
190
186
|
}
|
|
191
|
-
|
|
187
|
+
|
|
188
|
+
Label* continue_label() { return &continue_label_; }
|
|
189
|
+
|
|
192
190
|
private:
|
|
193
|
-
Label
|
|
194
|
-
DISALLOW_COPY_AND_ASSIGN(Iteration);
|
|
191
|
+
Label continue_label_;
|
|
195
192
|
};
|
|
196
193
|
|
|
197
|
-
// The
|
|
194
|
+
// The try block of a try/catch statement.
|
|
198
195
|
class TryCatch : public NestedStatement {
|
|
199
196
|
public:
|
|
200
|
-
explicit TryCatch(FullCodeGenerator* codegen
|
|
201
|
-
|
|
197
|
+
explicit TryCatch(FullCodeGenerator* codegen) : NestedStatement(codegen) {
|
|
198
|
+
}
|
|
202
199
|
virtual ~TryCatch() {}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
virtual int Exit(int stack_depth);
|
|
206
|
-
private:
|
|
207
|
-
Label* catch_entry_;
|
|
208
|
-
DISALLOW_COPY_AND_ASSIGN(TryCatch);
|
|
200
|
+
|
|
201
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length);
|
|
209
202
|
};
|
|
210
203
|
|
|
211
|
-
// The
|
|
204
|
+
// The try block of a try/finally statement.
|
|
212
205
|
class TryFinally : public NestedStatement {
|
|
213
206
|
public:
|
|
214
|
-
|
|
215
|
-
: NestedStatement(codegen), finally_entry_(finally_entry) {
|
|
207
|
+
TryFinally(FullCodeGenerator* codegen, Label* finally_entry)
|
|
208
|
+
: NestedStatement(codegen), finally_entry_(finally_entry) {
|
|
209
|
+
}
|
|
216
210
|
virtual ~TryFinally() {}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
211
|
+
|
|
212
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length);
|
|
213
|
+
|
|
220
214
|
private:
|
|
221
215
|
Label* finally_entry_;
|
|
222
|
-
DISALLOW_COPY_AND_ASSIGN(TryFinally);
|
|
223
216
|
};
|
|
224
217
|
|
|
225
|
-
//
|
|
226
|
-
// Abnormal termination of the finally block needs to clean up
|
|
227
|
-
// the block's parameters from the stack.
|
|
218
|
+
// The finally block of a try/finally statement.
|
|
228
219
|
class Finally : public NestedStatement {
|
|
229
220
|
public:
|
|
221
|
+
static const int kElementCount = 2;
|
|
222
|
+
|
|
230
223
|
explicit Finally(FullCodeGenerator* codegen) : NestedStatement(codegen) { }
|
|
231
224
|
virtual ~Finally() {}
|
|
232
|
-
|
|
233
|
-
virtual
|
|
234
|
-
|
|
225
|
+
|
|
226
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length) {
|
|
227
|
+
*stack_depth += kElementCount;
|
|
228
|
+
return previous_;
|
|
235
229
|
}
|
|
236
|
-
private:
|
|
237
|
-
// Number of extra stack slots occupied during a finally block.
|
|
238
|
-
static const int kFinallyStackElementCount = 2;
|
|
239
|
-
DISALLOW_COPY_AND_ASSIGN(Finally);
|
|
240
230
|
};
|
|
241
231
|
|
|
242
|
-
//
|
|
243
|
-
// Abnormal termination of the for-in block needs to clean up
|
|
244
|
-
// the block's temporary storage from the stack.
|
|
232
|
+
// The body of a for/in loop.
|
|
245
233
|
class ForIn : public Iteration {
|
|
246
234
|
public:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
235
|
+
static const int kElementCount = 5;
|
|
236
|
+
|
|
237
|
+
ForIn(FullCodeGenerator* codegen, ForInStatement* statement)
|
|
238
|
+
: Iteration(codegen, statement) {
|
|
239
|
+
}
|
|
250
240
|
virtual ~ForIn() {}
|
|
251
|
-
|
|
252
|
-
virtual
|
|
253
|
-
|
|
241
|
+
|
|
242
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length) {
|
|
243
|
+
*stack_depth += kElementCount;
|
|
244
|
+
return previous_;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
// The body of a with or catch.
|
|
250
|
+
class WithOrCatch : public NestedStatement {
|
|
251
|
+
public:
|
|
252
|
+
explicit WithOrCatch(FullCodeGenerator* codegen)
|
|
253
|
+
: NestedStatement(codegen) {
|
|
254
|
+
}
|
|
255
|
+
virtual ~WithOrCatch() {}
|
|
256
|
+
|
|
257
|
+
virtual NestedStatement* Exit(int* stack_depth, int* context_length) {
|
|
258
|
+
++(*context_length);
|
|
259
|
+
return previous_;
|
|
254
260
|
}
|
|
255
|
-
private:
|
|
256
|
-
static const int kForInStackElementCount = 5;
|
|
257
|
-
DISALLOW_COPY_AND_ASSIGN(ForIn);
|
|
258
261
|
};
|
|
259
262
|
|
|
260
263
|
// The forward bailout stack keeps track of the expressions that can
|
|
@@ -296,7 +299,11 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
296
299
|
// Helper function to convert a pure value into a test context. The value
|
|
297
300
|
// is expected on the stack or the accumulator, depending on the platform.
|
|
298
301
|
// See the platform-specific implementation for details.
|
|
299
|
-
void DoTest(
|
|
302
|
+
void DoTest(Expression* condition,
|
|
303
|
+
Label* if_true,
|
|
304
|
+
Label* if_false,
|
|
305
|
+
Label* fall_through);
|
|
306
|
+
void DoTest(const TestContext* context);
|
|
300
307
|
|
|
301
308
|
// Helper function to split control flow and avoid a branch to the
|
|
302
309
|
// fall-through label if it is set up.
|
|
@@ -328,48 +335,55 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
328
335
|
|
|
329
336
|
void VisitForEffect(Expression* expr) {
|
|
330
337
|
EffectContext context(this);
|
|
331
|
-
|
|
338
|
+
VisitInCurrentContext(expr);
|
|
332
339
|
}
|
|
333
340
|
|
|
334
341
|
void VisitForAccumulatorValue(Expression* expr) {
|
|
335
342
|
AccumulatorValueContext context(this);
|
|
336
|
-
|
|
343
|
+
VisitInCurrentContext(expr);
|
|
337
344
|
}
|
|
338
345
|
|
|
339
346
|
void VisitForStackValue(Expression* expr) {
|
|
340
347
|
StackValueContext context(this);
|
|
341
|
-
|
|
348
|
+
VisitInCurrentContext(expr);
|
|
342
349
|
}
|
|
343
350
|
|
|
344
351
|
void VisitForControl(Expression* expr,
|
|
345
352
|
Label* if_true,
|
|
346
353
|
Label* if_false,
|
|
347
354
|
Label* fall_through) {
|
|
348
|
-
TestContext context(this, if_true, if_false, fall_through);
|
|
349
|
-
|
|
350
|
-
// Forwarding bailouts to children is a one shot operation. It
|
|
351
|
-
// should have been processed at this point.
|
|
352
|
-
ASSERT(forward_bailout_pending_ == NULL);
|
|
355
|
+
TestContext context(this, expr, if_true, if_false, fall_through);
|
|
356
|
+
VisitInCurrentContext(expr);
|
|
353
357
|
}
|
|
354
358
|
|
|
355
|
-
void HandleInNonTestContext(Expression* expr, State state);
|
|
356
|
-
void VisitInTestContext(Expression* expr);
|
|
357
|
-
|
|
358
359
|
void VisitDeclarations(ZoneList<Declaration*>* declarations);
|
|
359
360
|
void DeclareGlobals(Handle<FixedArray> pairs);
|
|
360
361
|
|
|
361
362
|
// Try to perform a comparison as a fast inlined literal compare if
|
|
362
363
|
// the operands allow it. Returns true if the compare operations
|
|
363
364
|
// has been matched and all code generated; false otherwise.
|
|
364
|
-
bool TryLiteralCompare(
|
|
365
|
-
Expression* left,
|
|
366
|
-
Expression* right,
|
|
365
|
+
bool TryLiteralCompare(CompareOperation* compare,
|
|
367
366
|
Label* if_true,
|
|
368
367
|
Label* if_false,
|
|
369
368
|
Label* fall_through);
|
|
370
369
|
|
|
370
|
+
// Platform-specific code for comparing the type of a value with
|
|
371
|
+
// a given literal string.
|
|
372
|
+
void EmitLiteralCompareTypeof(Expression* expr,
|
|
373
|
+
Handle<String> check,
|
|
374
|
+
Label* if_true,
|
|
375
|
+
Label* if_false,
|
|
376
|
+
Label* fall_through);
|
|
377
|
+
|
|
378
|
+
// Platform-specific code for strict equality comparison with
|
|
379
|
+
// the undefined value.
|
|
380
|
+
void EmitLiteralCompareUndefined(Expression* expr,
|
|
381
|
+
Label* if_true,
|
|
382
|
+
Label* if_false,
|
|
383
|
+
Label* fall_through);
|
|
384
|
+
|
|
371
385
|
// Bailout support.
|
|
372
|
-
void PrepareForBailout(
|
|
386
|
+
void PrepareForBailout(Expression* node, State state);
|
|
373
387
|
void PrepareForBailoutForId(int id, State state);
|
|
374
388
|
|
|
375
389
|
// Record a call's return site offset, used to rebuild the frame if the
|
|
@@ -429,7 +443,7 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
429
443
|
TypeofState typeof_state,
|
|
430
444
|
Label* slow,
|
|
431
445
|
Label* done);
|
|
432
|
-
void EmitVariableLoad(
|
|
446
|
+
void EmitVariableLoad(VariableProxy* proxy);
|
|
433
447
|
|
|
434
448
|
enum ResolveEvalFlag {
|
|
435
449
|
SKIP_CONTEXT_LOOKUP,
|
|
@@ -504,6 +518,35 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
504
518
|
loop_depth_--;
|
|
505
519
|
}
|
|
506
520
|
|
|
521
|
+
#if defined(V8_TARGET_ARCH_IA32)
|
|
522
|
+
int stack_height() { return stack_height_; }
|
|
523
|
+
void set_stack_height(int depth) { stack_height_ = depth; }
|
|
524
|
+
void increment_stack_height() { stack_height_++; }
|
|
525
|
+
void increment_stack_height(int delta) { stack_height_ += delta; }
|
|
526
|
+
void decrement_stack_height() {
|
|
527
|
+
if (FLAG_verify_stack_height) {
|
|
528
|
+
ASSERT(stack_height_ > 0);
|
|
529
|
+
}
|
|
530
|
+
stack_height_--;
|
|
531
|
+
}
|
|
532
|
+
void decrement_stack_height(int delta) {
|
|
533
|
+
stack_height_-= delta;
|
|
534
|
+
if (FLAG_verify_stack_height) {
|
|
535
|
+
ASSERT(stack_height_ >= 0);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
// Call this function only if FLAG_verify_stack_height is true.
|
|
539
|
+
void verify_stack_height(); // Generates a runtime check of esp - ebp.
|
|
540
|
+
#else
|
|
541
|
+
int stack_height() { return 0; }
|
|
542
|
+
void set_stack_height(int depth) {}
|
|
543
|
+
void increment_stack_height() {}
|
|
544
|
+
void increment_stack_height(int delta) {}
|
|
545
|
+
void decrement_stack_height() {}
|
|
546
|
+
void decrement_stack_height(int delta) {}
|
|
547
|
+
void verify_stack_height() {}
|
|
548
|
+
#endif // V8_TARGET_ARCH_IA32
|
|
549
|
+
|
|
507
550
|
MacroAssembler* masm() { return masm_; }
|
|
508
551
|
|
|
509
552
|
class ExpressionContext;
|
|
@@ -517,23 +560,11 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
517
560
|
return is_strict_mode() ? kStrictMode : kNonStrictMode;
|
|
518
561
|
}
|
|
519
562
|
FunctionLiteral* function() { return info_->function(); }
|
|
520
|
-
Scope* scope() { return
|
|
563
|
+
Scope* scope() { return scope_; }
|
|
521
564
|
|
|
522
565
|
static Register result_register();
|
|
523
566
|
static Register context_register();
|
|
524
567
|
|
|
525
|
-
// Helper for calling an IC stub.
|
|
526
|
-
void EmitCallIC(Handle<Code> ic,
|
|
527
|
-
RelocInfo::Mode mode,
|
|
528
|
-
unsigned ast_id);
|
|
529
|
-
|
|
530
|
-
// Calling an IC stub with a patch site. Passing NULL for patch_site
|
|
531
|
-
// or non NULL patch_site which is not activated indicates no inlined smi code
|
|
532
|
-
// and emits a nop after the IC call.
|
|
533
|
-
void EmitCallIC(Handle<Code> ic,
|
|
534
|
-
JumpPatchSite* patch_site,
|
|
535
|
-
unsigned ast_id);
|
|
536
|
-
|
|
537
568
|
// Set fields in the stack frame. Offsets are the frame pointer relative
|
|
538
569
|
// offsets defined in, e.g., StandardFrameConstants.
|
|
539
570
|
void StoreToFrameField(int frame_offset, Register value);
|
|
@@ -542,6 +573,10 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
542
573
|
// in v8::internal::Context.
|
|
543
574
|
void LoadContextField(Register dst, int context_index);
|
|
544
575
|
|
|
576
|
+
// Push the function argument for the runtime functions PushWithContext
|
|
577
|
+
// and PushCatchContext.
|
|
578
|
+
void PushFunctionArgumentForContextAllocation();
|
|
579
|
+
|
|
545
580
|
// AST node visit functions.
|
|
546
581
|
#define DECLARE_VISIT(type) virtual void Visit##type(type* node);
|
|
547
582
|
AST_NODE_LIST(DECLARE_VISIT)
|
|
@@ -549,8 +584,10 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
549
584
|
|
|
550
585
|
void EmitUnaryOperation(UnaryOperation* expr, const char* comment);
|
|
551
586
|
|
|
552
|
-
|
|
553
|
-
void
|
|
587
|
+
void VisitComma(BinaryOperation* expr);
|
|
588
|
+
void VisitLogicalExpression(BinaryOperation* expr);
|
|
589
|
+
void VisitArithmeticExpression(BinaryOperation* expr);
|
|
590
|
+
void VisitInCurrentContext(Expression* expr);
|
|
554
591
|
|
|
555
592
|
void VisitForTypeofValue(Expression* expr);
|
|
556
593
|
|
|
@@ -569,6 +606,10 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
569
606
|
|
|
570
607
|
virtual ~ExpressionContext() {
|
|
571
608
|
codegen_->set_new_context(old_);
|
|
609
|
+
if (FLAG_verify_stack_height) {
|
|
610
|
+
ASSERT_EQ(expected_stack_height_, codegen()->stack_height());
|
|
611
|
+
codegen()->verify_stack_height();
|
|
612
|
+
}
|
|
572
613
|
}
|
|
573
614
|
|
|
574
615
|
Isolate* isolate() const { return codegen_->isolate(); }
|
|
@@ -598,11 +639,6 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
598
639
|
// context.
|
|
599
640
|
virtual void DropAndPlug(int count, Register reg) const = 0;
|
|
600
641
|
|
|
601
|
-
// For shortcutting operations || and &&.
|
|
602
|
-
virtual void EmitLogicalLeft(BinaryOperation* expr,
|
|
603
|
-
Label* eval_right,
|
|
604
|
-
Label* done) const = 0;
|
|
605
|
-
|
|
606
642
|
// Set up branch labels for a test expression. The three Label** parameters
|
|
607
643
|
// are output parameters.
|
|
608
644
|
virtual void PrepareTest(Label* materialize_true,
|
|
@@ -611,12 +647,14 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
611
647
|
Label** if_false,
|
|
612
648
|
Label** fall_through) const = 0;
|
|
613
649
|
|
|
614
|
-
virtual void HandleExpression(Expression* expr) const = 0;
|
|
615
|
-
|
|
616
650
|
// Returns true if we are evaluating only for side effects (ie if the result
|
|
617
651
|
// will be discarded).
|
|
618
652
|
virtual bool IsEffect() const { return false; }
|
|
619
653
|
|
|
654
|
+
// Returns true if we are evaluating for the value (in accu/on stack).
|
|
655
|
+
virtual bool IsAccumulatorValue() const { return false; }
|
|
656
|
+
virtual bool IsStackValue() const { return false; }
|
|
657
|
+
|
|
620
658
|
// Returns true if we are branching on the value rather than materializing
|
|
621
659
|
// it. Only used for asserts.
|
|
622
660
|
virtual bool IsTest() const { return false; }
|
|
@@ -625,6 +663,7 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
625
663
|
FullCodeGenerator* codegen() const { return codegen_; }
|
|
626
664
|
MacroAssembler* masm() const { return masm_; }
|
|
627
665
|
MacroAssembler* masm_;
|
|
666
|
+
int expected_stack_height_; // The expected stack height esp - ebp on exit.
|
|
628
667
|
|
|
629
668
|
private:
|
|
630
669
|
const ExpressionContext* old_;
|
|
@@ -634,7 +673,9 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
634
673
|
class AccumulatorValueContext : public ExpressionContext {
|
|
635
674
|
public:
|
|
636
675
|
explicit AccumulatorValueContext(FullCodeGenerator* codegen)
|
|
637
|
-
: ExpressionContext(codegen) {
|
|
676
|
+
: ExpressionContext(codegen) {
|
|
677
|
+
expected_stack_height_ = codegen->stack_height();
|
|
678
|
+
}
|
|
638
679
|
|
|
639
680
|
virtual void Plug(bool flag) const;
|
|
640
681
|
virtual void Plug(Register reg) const;
|
|
@@ -644,21 +685,20 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
644
685
|
virtual void Plug(Heap::RootListIndex) const;
|
|
645
686
|
virtual void PlugTOS() const;
|
|
646
687
|
virtual void DropAndPlug(int count, Register reg) const;
|
|
647
|
-
virtual void EmitLogicalLeft(BinaryOperation* expr,
|
|
648
|
-
Label* eval_right,
|
|
649
|
-
Label* done) const;
|
|
650
688
|
virtual void PrepareTest(Label* materialize_true,
|
|
651
689
|
Label* materialize_false,
|
|
652
690
|
Label** if_true,
|
|
653
691
|
Label** if_false,
|
|
654
692
|
Label** fall_through) const;
|
|
655
|
-
virtual
|
|
693
|
+
virtual bool IsAccumulatorValue() const { return true; }
|
|
656
694
|
};
|
|
657
695
|
|
|
658
696
|
class StackValueContext : public ExpressionContext {
|
|
659
697
|
public:
|
|
660
698
|
explicit StackValueContext(FullCodeGenerator* codegen)
|
|
661
|
-
: ExpressionContext(codegen) {
|
|
699
|
+
: ExpressionContext(codegen) {
|
|
700
|
+
expected_stack_height_ = codegen->stack_height() + 1;
|
|
701
|
+
}
|
|
662
702
|
|
|
663
703
|
virtual void Plug(bool flag) const;
|
|
664
704
|
virtual void Plug(Register reg) const;
|
|
@@ -668,33 +708,35 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
668
708
|
virtual void Plug(Heap::RootListIndex) const;
|
|
669
709
|
virtual void PlugTOS() const;
|
|
670
710
|
virtual void DropAndPlug(int count, Register reg) const;
|
|
671
|
-
virtual void EmitLogicalLeft(BinaryOperation* expr,
|
|
672
|
-
Label* eval_right,
|
|
673
|
-
Label* done) const;
|
|
674
711
|
virtual void PrepareTest(Label* materialize_true,
|
|
675
712
|
Label* materialize_false,
|
|
676
713
|
Label** if_true,
|
|
677
714
|
Label** if_false,
|
|
678
715
|
Label** fall_through) const;
|
|
679
|
-
virtual
|
|
716
|
+
virtual bool IsStackValue() const { return true; }
|
|
680
717
|
};
|
|
681
718
|
|
|
682
719
|
class TestContext : public ExpressionContext {
|
|
683
720
|
public:
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
721
|
+
TestContext(FullCodeGenerator* codegen,
|
|
722
|
+
Expression* condition,
|
|
723
|
+
Label* true_label,
|
|
724
|
+
Label* false_label,
|
|
725
|
+
Label* fall_through)
|
|
688
726
|
: ExpressionContext(codegen),
|
|
727
|
+
condition_(condition),
|
|
689
728
|
true_label_(true_label),
|
|
690
729
|
false_label_(false_label),
|
|
691
|
-
fall_through_(fall_through) {
|
|
730
|
+
fall_through_(fall_through) {
|
|
731
|
+
expected_stack_height_ = codegen->stack_height();
|
|
732
|
+
}
|
|
692
733
|
|
|
693
734
|
static const TestContext* cast(const ExpressionContext* context) {
|
|
694
735
|
ASSERT(context->IsTest());
|
|
695
736
|
return reinterpret_cast<const TestContext*>(context);
|
|
696
737
|
}
|
|
697
738
|
|
|
739
|
+
Expression* condition() const { return condition_; }
|
|
698
740
|
Label* true_label() const { return true_label_; }
|
|
699
741
|
Label* false_label() const { return false_label_; }
|
|
700
742
|
Label* fall_through() const { return fall_through_; }
|
|
@@ -707,18 +749,15 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
707
749
|
virtual void Plug(Heap::RootListIndex) const;
|
|
708
750
|
virtual void PlugTOS() const;
|
|
709
751
|
virtual void DropAndPlug(int count, Register reg) const;
|
|
710
|
-
virtual void EmitLogicalLeft(BinaryOperation* expr,
|
|
711
|
-
Label* eval_right,
|
|
712
|
-
Label* done) const;
|
|
713
752
|
virtual void PrepareTest(Label* materialize_true,
|
|
714
753
|
Label* materialize_false,
|
|
715
754
|
Label** if_true,
|
|
716
755
|
Label** if_false,
|
|
717
756
|
Label** fall_through) const;
|
|
718
|
-
virtual void HandleExpression(Expression* expr) const;
|
|
719
757
|
virtual bool IsTest() const { return true; }
|
|
720
758
|
|
|
721
759
|
private:
|
|
760
|
+
Expression* condition_;
|
|
722
761
|
Label* true_label_;
|
|
723
762
|
Label* false_label_;
|
|
724
763
|
Label* fall_through_;
|
|
@@ -727,7 +766,10 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
727
766
|
class EffectContext : public ExpressionContext {
|
|
728
767
|
public:
|
|
729
768
|
explicit EffectContext(FullCodeGenerator* codegen)
|
|
730
|
-
: ExpressionContext(codegen) {
|
|
769
|
+
: ExpressionContext(codegen) {
|
|
770
|
+
expected_stack_height_ = codegen->stack_height();
|
|
771
|
+
}
|
|
772
|
+
|
|
731
773
|
|
|
732
774
|
virtual void Plug(bool flag) const;
|
|
733
775
|
virtual void Plug(Register reg) const;
|
|
@@ -737,23 +779,21 @@ class FullCodeGenerator: public AstVisitor {
|
|
|
737
779
|
virtual void Plug(Heap::RootListIndex) const;
|
|
738
780
|
virtual void PlugTOS() const;
|
|
739
781
|
virtual void DropAndPlug(int count, Register reg) const;
|
|
740
|
-
virtual void EmitLogicalLeft(BinaryOperation* expr,
|
|
741
|
-
Label* eval_right,
|
|
742
|
-
Label* done) const;
|
|
743
782
|
virtual void PrepareTest(Label* materialize_true,
|
|
744
783
|
Label* materialize_false,
|
|
745
784
|
Label** if_true,
|
|
746
785
|
Label** if_false,
|
|
747
786
|
Label** fall_through) const;
|
|
748
|
-
virtual void HandleExpression(Expression* expr) const;
|
|
749
787
|
virtual bool IsEffect() const { return true; }
|
|
750
788
|
};
|
|
751
789
|
|
|
752
790
|
MacroAssembler* masm_;
|
|
753
791
|
CompilationInfo* info_;
|
|
792
|
+
Scope* scope_;
|
|
754
793
|
Label return_label_;
|
|
755
794
|
NestedStatement* nesting_stack_;
|
|
756
795
|
int loop_depth_;
|
|
796
|
+
int stack_height_;
|
|
757
797
|
const ExpressionContext* context_;
|
|
758
798
|
ZoneList<BailoutEntry> bailout_entries_;
|
|
759
799
|
ZoneList<BailoutEntry> stack_checks_;
|