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
|
@@ -41,6 +41,7 @@ const char* Variable::Mode2String(Mode mode) {
|
|
|
41
41
|
switch (mode) {
|
|
42
42
|
case VAR: return "VAR";
|
|
43
43
|
case CONST: return "CONST";
|
|
44
|
+
case LET: return "LET";
|
|
44
45
|
case DYNAMIC: return "DYNAMIC";
|
|
45
46
|
case DYNAMIC_GLOBAL: return "DYNAMIC_GLOBAL";
|
|
46
47
|
case DYNAMIC_LOCAL: return "DYNAMIC_LOCAL";
|
|
@@ -57,32 +58,26 @@ Property* Variable::AsProperty() const {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
|
|
60
|
-
Slot* Variable::AsSlot() const {
|
|
61
|
-
return rewrite_ == NULL ? NULL : rewrite_->AsSlot();
|
|
62
|
-
}
|
|
61
|
+
Slot* Variable::AsSlot() const { return rewrite_; }
|
|
63
62
|
|
|
64
63
|
|
|
65
64
|
bool Variable::IsStackAllocated() const {
|
|
66
|
-
|
|
67
|
-
return slot != NULL && slot->IsStackAllocated();
|
|
65
|
+
return rewrite_ != NULL && rewrite_->IsStackAllocated();
|
|
68
66
|
}
|
|
69
67
|
|
|
70
68
|
|
|
71
69
|
bool Variable::IsParameter() const {
|
|
72
|
-
|
|
73
|
-
return s != NULL && s->type() == Slot::PARAMETER;
|
|
70
|
+
return rewrite_ != NULL && rewrite_->type() == Slot::PARAMETER;
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
|
|
77
74
|
bool Variable::IsStackLocal() const {
|
|
78
|
-
|
|
79
|
-
return s != NULL && s->type() == Slot::LOCAL;
|
|
75
|
+
return rewrite_ != NULL && rewrite_->type() == Slot::LOCAL;
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
|
|
83
79
|
bool Variable::IsContextSlot() const {
|
|
84
|
-
|
|
85
|
-
return s != NULL && s->type() == Slot::CONTEXT;
|
|
80
|
+
return rewrite_ != NULL && rewrite_->type() == Slot::CONTEXT;
|
|
86
81
|
}
|
|
87
82
|
|
|
88
83
|
|
|
@@ -98,7 +93,7 @@ Variable::Variable(Scope* scope,
|
|
|
98
93
|
local_if_not_shadowed_(NULL),
|
|
99
94
|
rewrite_(NULL),
|
|
100
95
|
is_valid_LHS_(is_valid_LHS),
|
|
101
|
-
|
|
96
|
+
is_accessed_from_inner_function_scope_(false),
|
|
102
97
|
is_used_(false) {
|
|
103
98
|
// names must be canonicalized for fast equality checks
|
|
104
99
|
ASSERT(name->IsSymbol());
|
|
@@ -46,6 +46,8 @@ class Variable: public ZoneObject {
|
|
|
46
46
|
|
|
47
47
|
CONST, // declared via 'const' declarations
|
|
48
48
|
|
|
49
|
+
LET, // declared via 'let' declarations
|
|
50
|
+
|
|
49
51
|
// Variables introduced by the compiler:
|
|
50
52
|
DYNAMIC, // always require dynamic lookup (we don't know
|
|
51
53
|
// the declaration)
|
|
@@ -81,7 +83,7 @@ class Variable: public ZoneObject {
|
|
|
81
83
|
// Printing support
|
|
82
84
|
static const char* Mode2String(Mode mode);
|
|
83
85
|
|
|
84
|
-
// Type testing & conversion
|
|
86
|
+
// Type testing & conversion. Global variables are not slots.
|
|
85
87
|
Property* AsProperty() const;
|
|
86
88
|
Slot* AsSlot() const;
|
|
87
89
|
|
|
@@ -95,11 +97,12 @@ class Variable: public ZoneObject {
|
|
|
95
97
|
|
|
96
98
|
Handle<String> name() const { return name_; }
|
|
97
99
|
Mode mode() const { return mode_; }
|
|
98
|
-
bool
|
|
99
|
-
return
|
|
100
|
+
bool is_accessed_from_inner_function_scope() const {
|
|
101
|
+
return is_accessed_from_inner_function_scope_;
|
|
100
102
|
}
|
|
101
|
-
void
|
|
102
|
-
|
|
103
|
+
void MarkAsAccessedFromInnerFunctionScope() {
|
|
104
|
+
ASSERT(mode_ != TEMPORARY);
|
|
105
|
+
is_accessed_from_inner_function_scope_ = true;
|
|
103
106
|
}
|
|
104
107
|
bool is_used() { return is_used_; }
|
|
105
108
|
void set_is_used(bool flag) { is_used_ = flag; }
|
|
@@ -138,8 +141,8 @@ class Variable: public ZoneObject {
|
|
|
138
141
|
local_if_not_shadowed_ = local;
|
|
139
142
|
}
|
|
140
143
|
|
|
141
|
-
|
|
142
|
-
void set_rewrite(
|
|
144
|
+
Slot* rewrite() const { return rewrite_; }
|
|
145
|
+
void set_rewrite(Slot* slot) { rewrite_ = slot; }
|
|
143
146
|
|
|
144
147
|
private:
|
|
145
148
|
Scope* scope_;
|
|
@@ -150,14 +153,13 @@ class Variable: public ZoneObject {
|
|
|
150
153
|
Variable* local_if_not_shadowed_;
|
|
151
154
|
|
|
152
155
|
// Code generation.
|
|
153
|
-
|
|
154
|
-
Expression* rewrite_;
|
|
156
|
+
Slot* rewrite_;
|
|
155
157
|
|
|
156
158
|
// Valid as a LHS? (const and this are not valid LHS, for example)
|
|
157
159
|
bool is_valid_LHS_;
|
|
158
160
|
|
|
159
161
|
// Usage info.
|
|
160
|
-
bool
|
|
162
|
+
bool is_accessed_from_inner_function_scope_; // set by variable resolver
|
|
161
163
|
bool is_used_;
|
|
162
164
|
};
|
|
163
165
|
|
data/lib/libv8/v8/src/version.cc
CHANGED
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
// NOTE these macros are used by the SCons build script so their names
|
|
34
34
|
// cannot be changed without changing the SCons build script.
|
|
35
35
|
#define MAJOR_VERSION 3
|
|
36
|
-
#define MINOR_VERSION
|
|
37
|
-
#define BUILD_NUMBER
|
|
36
|
+
#define MINOR_VERSION 6
|
|
37
|
+
#define BUILD_NUMBER 0
|
|
38
38
|
#define PATCH_LEVEL 0
|
|
39
39
|
// Use 1 for candidates and 0 otherwise.
|
|
40
40
|
// (Boolean macro values are not supported by all preprocessors.)
|
|
@@ -39,7 +39,6 @@ namespace internal {
|
|
|
39
39
|
// logger and partially threaded through the call stack. States are pushed by
|
|
40
40
|
// VMState construction and popped by destruction.
|
|
41
41
|
//
|
|
42
|
-
#ifdef ENABLE_VMSTATE_TRACKING
|
|
43
42
|
inline const char* StateToString(StateTag state) {
|
|
44
43
|
switch (state) {
|
|
45
44
|
case JS:
|
|
@@ -61,32 +60,16 @@ inline const char* StateToString(StateTag state) {
|
|
|
61
60
|
|
|
62
61
|
VMState::VMState(Isolate* isolate, StateTag tag)
|
|
63
62
|
: isolate_(isolate), previous_tag_(isolate->current_vm_state()) {
|
|
64
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
|
65
63
|
if (FLAG_log_state_changes) {
|
|
66
64
|
LOG(isolate, UncheckedStringEvent("Entering", StateToString(tag)));
|
|
67
65
|
LOG(isolate, UncheckedStringEvent("From", StateToString(previous_tag_)));
|
|
68
66
|
}
|
|
69
|
-
#endif
|
|
70
67
|
|
|
71
68
|
isolate_->SetCurrentVMState(tag);
|
|
72
|
-
|
|
73
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
74
|
-
if (FLAG_protect_heap) {
|
|
75
|
-
if (tag == EXTERNAL) {
|
|
76
|
-
// We are leaving V8.
|
|
77
|
-
ASSERT(previous_tag_ != EXTERNAL);
|
|
78
|
-
isolate_->heap()->Protect();
|
|
79
|
-
} else if (previous_tag_ = EXTERNAL) {
|
|
80
|
-
// We are entering V8.
|
|
81
|
-
isolate_->heap()->Unprotect();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
#endif
|
|
85
69
|
}
|
|
86
70
|
|
|
87
71
|
|
|
88
72
|
VMState::~VMState() {
|
|
89
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
|
90
73
|
if (FLAG_log_state_changes) {
|
|
91
74
|
LOG(isolate_,
|
|
92
75
|
UncheckedStringEvent("Leaving",
|
|
@@ -94,32 +77,10 @@ VMState::~VMState() {
|
|
|
94
77
|
LOG(isolate_,
|
|
95
78
|
UncheckedStringEvent("To", StateToString(previous_tag_)));
|
|
96
79
|
}
|
|
97
|
-
#endif // ENABLE_LOGGING_AND_PROFILING
|
|
98
|
-
|
|
99
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
100
|
-
StateTag tag = isolate_->current_vm_state();
|
|
101
|
-
#endif
|
|
102
80
|
|
|
103
81
|
isolate_->SetCurrentVMState(previous_tag_);
|
|
104
|
-
|
|
105
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
106
|
-
if (FLAG_protect_heap) {
|
|
107
|
-
if (tag == EXTERNAL) {
|
|
108
|
-
// We are reentering V8.
|
|
109
|
-
ASSERT(previous_tag_ != EXTERNAL);
|
|
110
|
-
isolate_->heap()->Unprotect();
|
|
111
|
-
} else if (previous_tag_ == EXTERNAL) {
|
|
112
|
-
// We are leaving V8.
|
|
113
|
-
isolate_->heap()->Protect();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
#endif // ENABLE_HEAP_PROTECTION
|
|
117
82
|
}
|
|
118
83
|
|
|
119
|
-
#endif // ENABLE_VMSTATE_TRACKING
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
|
123
84
|
|
|
124
85
|
ExternalCallbackScope::ExternalCallbackScope(Isolate* isolate, Address callback)
|
|
125
86
|
: isolate_(isolate), previous_callback_(isolate->external_callback()) {
|
|
@@ -130,8 +91,6 @@ ExternalCallbackScope::~ExternalCallbackScope() {
|
|
|
130
91
|
isolate_->set_external_callback(previous_callback_);
|
|
131
92
|
}
|
|
132
93
|
|
|
133
|
-
#endif // ENABLE_LOGGING_AND_PROFILING
|
|
134
|
-
|
|
135
94
|
|
|
136
95
|
} } // namespace v8::internal
|
|
137
96
|
|
data/lib/libv8/v8/src/vm-state.h
CHANGED
|
@@ -35,7 +35,6 @@ namespace v8 {
|
|
|
35
35
|
namespace internal {
|
|
36
36
|
|
|
37
37
|
class VMState BASE_EMBEDDED {
|
|
38
|
-
#ifdef ENABLE_VMSTATE_TRACKING
|
|
39
38
|
public:
|
|
40
39
|
inline VMState(Isolate* isolate, StateTag tag);
|
|
41
40
|
inline ~VMState();
|
|
@@ -43,26 +42,16 @@ class VMState BASE_EMBEDDED {
|
|
|
43
42
|
private:
|
|
44
43
|
Isolate* isolate_;
|
|
45
44
|
StateTag previous_tag_;
|
|
46
|
-
|
|
47
|
-
#else
|
|
48
|
-
public:
|
|
49
|
-
VMState(Isolate* isolate, StateTag state) {}
|
|
50
|
-
#endif
|
|
51
45
|
};
|
|
52
46
|
|
|
53
47
|
|
|
54
48
|
class ExternalCallbackScope BASE_EMBEDDED {
|
|
55
|
-
#ifdef ENABLE_LOGGING_AND_PROFILING
|
|
56
49
|
public:
|
|
57
50
|
inline ExternalCallbackScope(Isolate* isolate, Address callback);
|
|
58
51
|
inline ~ExternalCallbackScope();
|
|
59
52
|
private:
|
|
60
53
|
Isolate* isolate_;
|
|
61
54
|
Address previous_callback_;
|
|
62
|
-
#else
|
|
63
|
-
public:
|
|
64
|
-
ExternalCallbackScope(Isolate* isolate, Address callback) {}
|
|
65
|
-
#endif
|
|
66
55
|
};
|
|
67
56
|
|
|
68
57
|
} } // namespace v8::internal
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
|
3
|
+
// modification, are permitted provided that the following conditions are
|
|
4
|
+
// met:
|
|
5
|
+
//
|
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
|
9
|
+
// copyright notice, this list of conditions and the following
|
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
|
11
|
+
// with the distribution.
|
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
13
|
+
// contributors may be used to endorse or promote products derived
|
|
14
|
+
// from this software without specific prior written permission.
|
|
15
|
+
//
|
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// This file relies on the fact that the following declaration has been made
|
|
30
|
+
// in runtime.js:
|
|
31
|
+
// const $Object = global.Object;
|
|
32
|
+
const $WeakMap = global.WeakMap;
|
|
33
|
+
|
|
34
|
+
// -------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
function WeakMapConstructor() {
|
|
37
|
+
if (%_IsConstructCall()) {
|
|
38
|
+
%WeakMapInitialize(this);
|
|
39
|
+
} else {
|
|
40
|
+
return new $WeakMap();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
function WeakMapGet(key) {
|
|
46
|
+
if (!IS_SPEC_OBJECT(key)) {
|
|
47
|
+
throw %MakeTypeError('invalid_weakmap_key', [this, key]);
|
|
48
|
+
}
|
|
49
|
+
return %WeakMapGet(this, key);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
function WeakMapSet(key, value) {
|
|
54
|
+
if (!IS_SPEC_OBJECT(key)) {
|
|
55
|
+
throw %MakeTypeError('invalid_weakmap_key', [this, key]);
|
|
56
|
+
}
|
|
57
|
+
return %WeakMapSet(this, key, value);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
function WeakMapHas(key) {
|
|
62
|
+
if (!IS_SPEC_OBJECT(key)) {
|
|
63
|
+
throw %MakeTypeError('invalid_weakmap_key', [this, key]);
|
|
64
|
+
}
|
|
65
|
+
return !IS_UNDEFINED(%WeakMapGet(this, key));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
function WeakMapDelete(key) {
|
|
70
|
+
if (!IS_SPEC_OBJECT(key)) {
|
|
71
|
+
throw %MakeTypeError('invalid_weakmap_key', [this, key]);
|
|
72
|
+
}
|
|
73
|
+
if (!IS_UNDEFINED(%WeakMapGet(this, key))) {
|
|
74
|
+
%WeakMapSet(this, key, void 0);
|
|
75
|
+
return true;
|
|
76
|
+
} else {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// -------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
function SetupWeakMap() {
|
|
84
|
+
// Set up the WeakMap constructor function.
|
|
85
|
+
%SetCode($WeakMap, WeakMapConstructor);
|
|
86
|
+
|
|
87
|
+
// Set up the WeakMap prototype object.
|
|
88
|
+
%FunctionSetPrototype($WeakMap, new $WeakMap());
|
|
89
|
+
|
|
90
|
+
// Set up the constructor property on the WeakMap prototype object.
|
|
91
|
+
%SetProperty($WeakMap.prototype, "constructor", $WeakMap, DONT_ENUM);
|
|
92
|
+
|
|
93
|
+
// Set up the non-enumerable functions on the WeakMap prototype object.
|
|
94
|
+
InstallFunctionsOnHiddenPrototype($WeakMap.prototype, DONT_ENUM, $Array(
|
|
95
|
+
"get", WeakMapGet,
|
|
96
|
+
"set", WeakMapSet,
|
|
97
|
+
"has", WeakMapHas,
|
|
98
|
+
"delete", WeakMapDelete
|
|
99
|
+
));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
SetupWeakMap();
|
|
@@ -125,7 +125,7 @@ struct Register {
|
|
|
125
125
|
return names[index];
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
static Register
|
|
128
|
+
static Register from_code(int code) {
|
|
129
129
|
Register r = { code };
|
|
130
130
|
return r;
|
|
131
131
|
}
|
|
@@ -640,6 +640,7 @@ class Assembler : public AssemblerBase {
|
|
|
640
640
|
void push_imm32(int32_t imm32);
|
|
641
641
|
void push(Register src);
|
|
642
642
|
void push(const Operand& src);
|
|
643
|
+
void push(Handle<Object> handle);
|
|
643
644
|
|
|
644
645
|
void pop(Register dst);
|
|
645
646
|
void pop(const Operand& dst);
|
|
@@ -1167,7 +1168,7 @@ class Assembler : public AssemblerBase {
|
|
|
1167
1168
|
// Call near relative 32-bit displacement, relative to next instruction.
|
|
1168
1169
|
void call(Label* L);
|
|
1169
1170
|
void call(Handle<Code> target,
|
|
1170
|
-
RelocInfo::Mode rmode,
|
|
1171
|
+
RelocInfo::Mode rmode = RelocInfo::CODE_TARGET,
|
|
1171
1172
|
unsigned ast_id = kNoASTId);
|
|
1172
1173
|
|
|
1173
1174
|
// Calls directly to the given address using a relative offset.
|
|
@@ -1349,7 +1350,9 @@ class Assembler : public AssemblerBase {
|
|
|
1349
1350
|
void Print();
|
|
1350
1351
|
|
|
1351
1352
|
// Check the code size generated from label to here.
|
|
1352
|
-
int SizeOfCodeGeneratedSince(Label*
|
|
1353
|
+
int SizeOfCodeGeneratedSince(Label* label) {
|
|
1354
|
+
return pc_offset() - label->pos();
|
|
1355
|
+
}
|
|
1353
1356
|
|
|
1354
1357
|
// Mark address of the ExitJSFrame code.
|
|
1355
1358
|
void RecordJSReturn();
|
|
@@ -139,7 +139,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|
|
139
139
|
// rdi: constructor
|
|
140
140
|
__ movq(rax, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
|
|
141
141
|
// Will both indicate a NULL and a Smi
|
|
142
|
-
|
|
142
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
143
143
|
__ JumpIfSmi(rax, &rt_call);
|
|
144
144
|
// rdi: constructor
|
|
145
145
|
// rax: initial map (if proven valid below)
|
|
@@ -343,11 +343,12 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|
|
343
343
|
Handle<Code> code =
|
|
344
344
|
masm->isolate()->builtins()->HandleApiCallConstruct();
|
|
345
345
|
ParameterCount expected(0);
|
|
346
|
-
__ InvokeCode(code, expected, expected,
|
|
347
|
-
|
|
346
|
+
__ InvokeCode(code, expected, expected, RelocInfo::CODE_TARGET,
|
|
347
|
+
CALL_FUNCTION, NullCallWrapper(), CALL_AS_METHOD);
|
|
348
348
|
} else {
|
|
349
349
|
ParameterCount actual(rax);
|
|
350
|
-
__ InvokeFunction(rdi, actual, CALL_FUNCTION
|
|
350
|
+
__ InvokeFunction(rdi, actual, CALL_FUNCTION,
|
|
351
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
|
351
352
|
}
|
|
352
353
|
|
|
353
354
|
// Restore context from the frame.
|
|
@@ -361,8 +362,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|
|
361
362
|
__ JumpIfSmi(rax, &use_receiver);
|
|
362
363
|
|
|
363
364
|
// If the type of the result (stored in its map) is less than
|
|
364
|
-
//
|
|
365
|
-
|
|
365
|
+
// FIRST_SPEC_OBJECT_TYPE, it is not an object in the ECMA sense.
|
|
366
|
+
STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
|
|
367
|
+
__ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx);
|
|
366
368
|
__ j(above_equal, &exit);
|
|
367
369
|
|
|
368
370
|
// Throw away the result of the constructor invocation and use the
|
|
@@ -499,7 +501,8 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
|
|
499
501
|
} else {
|
|
500
502
|
ParameterCount actual(rax);
|
|
501
503
|
// Function must be in rdi.
|
|
502
|
-
__ InvokeFunction(rdi, actual, CALL_FUNCTION
|
|
504
|
+
__ InvokeFunction(rdi, actual, CALL_FUNCTION,
|
|
505
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
|
503
506
|
}
|
|
504
507
|
|
|
505
508
|
// Exit the JS frame. Notice that this also removes the empty
|
|
@@ -673,8 +676,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
|
673
676
|
|
|
674
677
|
// Do not transform the receiver for natives.
|
|
675
678
|
// SharedFunctionInfo is already loaded into rbx.
|
|
676
|
-
__ testb(FieldOperand(rbx, SharedFunctionInfo::
|
|
677
|
-
Immediate(1 << SharedFunctionInfo::
|
|
679
|
+
__ testb(FieldOperand(rbx, SharedFunctionInfo::kNativeByteOffset),
|
|
680
|
+
Immediate(1 << SharedFunctionInfo::kNativeBitWithinByte));
|
|
678
681
|
__ j(not_zero, &shift_arguments);
|
|
679
682
|
|
|
680
683
|
// Compute the receiver in non-strict mode.
|
|
@@ -686,9 +689,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
|
686
689
|
__ CompareRoot(rbx, Heap::kUndefinedValueRootIndex);
|
|
687
690
|
__ j(equal, &use_global_receiver);
|
|
688
691
|
|
|
689
|
-
STATIC_ASSERT(
|
|
690
|
-
|
|
691
|
-
__ CmpObjectType(rbx, FIRST_JS_OBJECT_TYPE, rcx);
|
|
692
|
+
STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
|
|
693
|
+
__ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx);
|
|
692
694
|
__ j(above_equal, &shift_arguments);
|
|
693
695
|
|
|
694
696
|
__ bind(&convert_to_object);
|
|
@@ -774,7 +776,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
|
774
776
|
RelocInfo::CODE_TARGET);
|
|
775
777
|
|
|
776
778
|
ParameterCount expected(0);
|
|
777
|
-
__ InvokeCode(rdx, expected, expected, JUMP_FUNCTION
|
|
779
|
+
__ InvokeCode(rdx, expected, expected, JUMP_FUNCTION,
|
|
780
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
|
778
781
|
}
|
|
779
782
|
|
|
780
783
|
|
|
@@ -844,9 +847,9 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
|
844
847
|
__ j(not_equal, &push_receiver);
|
|
845
848
|
|
|
846
849
|
// Do not transform the receiver for natives.
|
|
847
|
-
__ testb(FieldOperand(rdx, SharedFunctionInfo::
|
|
848
|
-
Immediate(1 << SharedFunctionInfo::
|
|
849
|
-
__ j(
|
|
850
|
+
__ testb(FieldOperand(rdx, SharedFunctionInfo::kNativeByteOffset),
|
|
851
|
+
Immediate(1 << SharedFunctionInfo::kNativeBitWithinByte));
|
|
852
|
+
__ j(not_equal, &push_receiver);
|
|
850
853
|
|
|
851
854
|
// Compute the receiver in non-strict mode.
|
|
852
855
|
__ JumpIfSmi(rbx, &call_to_object, Label::kNear);
|
|
@@ -857,9 +860,8 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
|
857
860
|
|
|
858
861
|
// If given receiver is already a JavaScript object then there's no
|
|
859
862
|
// reason for converting it.
|
|
860
|
-
STATIC_ASSERT(
|
|
861
|
-
|
|
862
|
-
__ CmpObjectType(rbx, FIRST_JS_OBJECT_TYPE, rcx);
|
|
863
|
+
STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
|
|
864
|
+
__ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx);
|
|
863
865
|
__ j(above_equal, &push_receiver);
|
|
864
866
|
|
|
865
867
|
// Convert the receiver to an object.
|
|
@@ -914,7 +916,8 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
|
914
916
|
ParameterCount actual(rax);
|
|
915
917
|
__ SmiToInteger32(rax, rax);
|
|
916
918
|
__ movq(rdi, Operand(rbp, kFunctionOffset));
|
|
917
|
-
__ InvokeFunction(rdi, actual, CALL_FUNCTION
|
|
919
|
+
__ InvokeFunction(rdi, actual, CALL_FUNCTION,
|
|
920
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
|
918
921
|
|
|
919
922
|
__ LeaveInternalFrame();
|
|
920
923
|
__ ret(3 * kPointerSize); // remove function, receiver, and arguments
|
|
@@ -1280,7 +1283,7 @@ void Builtins::Generate_ArrayCode(MacroAssembler* masm) {
|
|
|
1280
1283
|
// Initial map for the builtin Array functions should be maps.
|
|
1281
1284
|
__ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
|
|
1282
1285
|
// Will both indicate a NULL and a Smi.
|
|
1283
|
-
|
|
1286
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1284
1287
|
Condition not_smi = NegateCondition(masm->CheckSmi(rbx));
|
|
1285
1288
|
__ Check(not_smi, "Unexpected initial map for Array function");
|
|
1286
1289
|
__ CmpObjectType(rbx, MAP_TYPE, rcx);
|
|
@@ -1314,7 +1317,7 @@ void Builtins::Generate_ArrayConstructCode(MacroAssembler* masm) {
|
|
|
1314
1317
|
// Initial map for the builtin Array function should be a map.
|
|
1315
1318
|
__ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset));
|
|
1316
1319
|
// Will both indicate a NULL and a Smi.
|
|
1317
|
-
|
|
1320
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1318
1321
|
Condition not_smi = NegateCondition(masm->CheckSmi(rbx));
|
|
1319
1322
|
__ Check(not_smi, "Unexpected initial map for Array function");
|
|
1320
1323
|
__ CmpObjectType(rbx, MAP_TYPE, rcx);
|