libv8 3.3.10.4 → 3.5.10.beta1
Sign up to get free protection for your applications and to get access to all the features.
- 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_;
|