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
|
@@ -384,6 +384,9 @@ void MacroAssembler::AssertFastElements(Register elements) {
|
|
|
384
384
|
CompareRoot(FieldOperand(elements, HeapObject::kMapOffset),
|
|
385
385
|
Heap::kFixedArrayMapRootIndex);
|
|
386
386
|
j(equal, &ok, Label::kNear);
|
|
387
|
+
CompareRoot(FieldOperand(elements, HeapObject::kMapOffset),
|
|
388
|
+
Heap::kFixedDoubleArrayMapRootIndex);
|
|
389
|
+
j(equal, &ok, Label::kNear);
|
|
387
390
|
CompareRoot(FieldOperand(elements, HeapObject::kMapOffset),
|
|
388
391
|
Heap::kFixedCOWArrayMapRootIndex);
|
|
389
392
|
j(equal, &ok, Label::kNear);
|
|
@@ -800,7 +803,7 @@ void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
|
|
|
800
803
|
// parameter count to avoid emitting code to do the check.
|
|
801
804
|
ParameterCount expected(0);
|
|
802
805
|
GetBuiltinEntry(rdx, id);
|
|
803
|
-
InvokeCode(rdx, expected, expected, flag, call_wrapper);
|
|
806
|
+
InvokeCode(rdx, expected, expected, flag, call_wrapper, CALL_AS_METHOD);
|
|
804
807
|
}
|
|
805
808
|
|
|
806
809
|
|
|
@@ -920,7 +923,7 @@ void MacroAssembler::LoadSmiConstant(Register dst, Smi* source) {
|
|
|
920
923
|
|
|
921
924
|
|
|
922
925
|
void MacroAssembler::Integer32ToSmi(Register dst, Register src) {
|
|
923
|
-
|
|
926
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
924
927
|
if (!dst.is(src)) {
|
|
925
928
|
movl(dst, src);
|
|
926
929
|
}
|
|
@@ -958,7 +961,7 @@ void MacroAssembler::Integer64PlusConstantToSmi(Register dst,
|
|
|
958
961
|
|
|
959
962
|
|
|
960
963
|
void MacroAssembler::SmiToInteger32(Register dst, Register src) {
|
|
961
|
-
|
|
964
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
962
965
|
if (!dst.is(src)) {
|
|
963
966
|
movq(dst, src);
|
|
964
967
|
}
|
|
@@ -972,7 +975,7 @@ void MacroAssembler::SmiToInteger32(Register dst, const Operand& src) {
|
|
|
972
975
|
|
|
973
976
|
|
|
974
977
|
void MacroAssembler::SmiToInteger64(Register dst, Register src) {
|
|
975
|
-
|
|
978
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
976
979
|
if (!dst.is(src)) {
|
|
977
980
|
movq(dst, src);
|
|
978
981
|
}
|
|
@@ -1108,21 +1111,21 @@ void MacroAssembler::SmiOrIfSmis(Register dst, Register src1, Register src2,
|
|
|
1108
1111
|
|
|
1109
1112
|
|
|
1110
1113
|
Condition MacroAssembler::CheckSmi(Register src) {
|
|
1111
|
-
|
|
1114
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1112
1115
|
testb(src, Immediate(kSmiTagMask));
|
|
1113
1116
|
return zero;
|
|
1114
1117
|
}
|
|
1115
1118
|
|
|
1116
1119
|
|
|
1117
1120
|
Condition MacroAssembler::CheckSmi(const Operand& src) {
|
|
1118
|
-
|
|
1121
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1119
1122
|
testb(src, Immediate(kSmiTagMask));
|
|
1120
1123
|
return zero;
|
|
1121
1124
|
}
|
|
1122
1125
|
|
|
1123
1126
|
|
|
1124
1127
|
Condition MacroAssembler::CheckNonNegativeSmi(Register src) {
|
|
1125
|
-
|
|
1128
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1126
1129
|
// Test that both bits of the mask 0x8000000000000001 are zero.
|
|
1127
1130
|
movq(kScratchRegister, src);
|
|
1128
1131
|
rol(kScratchRegister, Immediate(1));
|
|
@@ -1135,7 +1138,7 @@ Condition MacroAssembler::CheckBothSmi(Register first, Register second) {
|
|
|
1135
1138
|
if (first.is(second)) {
|
|
1136
1139
|
return CheckSmi(first);
|
|
1137
1140
|
}
|
|
1138
|
-
|
|
1141
|
+
STATIC_ASSERT(kSmiTag == 0 && kHeapObjectTag == 1 && kHeapObjectTagMask == 3);
|
|
1139
1142
|
leal(kScratchRegister, Operand(first, second, times_1, 0));
|
|
1140
1143
|
testb(kScratchRegister, Immediate(0x03));
|
|
1141
1144
|
return zero;
|
|
@@ -1291,7 +1294,7 @@ void MacroAssembler::SmiTryAddConstant(Register dst,
|
|
|
1291
1294
|
Label::Distance near_jump) {
|
|
1292
1295
|
// Does not assume that src is a smi.
|
|
1293
1296
|
ASSERT_EQ(static_cast<int>(1), static_cast<int>(kSmiTagMask));
|
|
1294
|
-
|
|
1297
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1295
1298
|
ASSERT(!dst.is(kScratchRegister));
|
|
1296
1299
|
ASSERT(!src.is(kScratchRegister));
|
|
1297
1300
|
|
|
@@ -1995,7 +1998,7 @@ void MacroAssembler::SelectNonSmi(Register dst,
|
|
|
1995
1998
|
Check(not_both_smis, "Both registers were smis in SelectNonSmi.");
|
|
1996
1999
|
}
|
|
1997
2000
|
#endif
|
|
1998
|
-
|
|
2001
|
+
STATIC_ASSERT(kSmiTag == 0);
|
|
1999
2002
|
ASSERT_EQ(0, Smi::FromInt(0));
|
|
2000
2003
|
movl(kScratchRegister, Immediate(kSmiTagMask));
|
|
2001
2004
|
and_(kScratchRegister, src1);
|
|
@@ -2384,18 +2387,15 @@ Operand MacroAssembler::SafepointRegisterSlot(Register reg) {
|
|
|
2384
2387
|
void MacroAssembler::PushTryHandler(CodeLocation try_location,
|
|
2385
2388
|
HandlerType type) {
|
|
2386
2389
|
// Adjust this code if not the case.
|
|
2387
|
-
|
|
2390
|
+
STATIC_ASSERT(StackHandlerConstants::kSize == 5 * kPointerSize);
|
|
2391
|
+
STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize);
|
|
2392
|
+
STATIC_ASSERT(StackHandlerConstants::kContextOffset == 1 * kPointerSize);
|
|
2393
|
+
STATIC_ASSERT(StackHandlerConstants::kFPOffset == 2 * kPointerSize);
|
|
2394
|
+
STATIC_ASSERT(StackHandlerConstants::kStateOffset == 3 * kPointerSize);
|
|
2395
|
+
STATIC_ASSERT(StackHandlerConstants::kPCOffset == 4 * kPointerSize);
|
|
2388
2396
|
|
|
2389
2397
|
// The pc (return address) is already on TOS. This code pushes state,
|
|
2390
|
-
// frame pointer and current handler.
|
|
2391
|
-
// next on the stack, in that order.
|
|
2392
|
-
ASSERT_EQ(StackHandlerConstants::kStateOffset,
|
|
2393
|
-
StackHandlerConstants::kPCOffset - kPointerSize);
|
|
2394
|
-
ASSERT_EQ(StackHandlerConstants::kFPOffset,
|
|
2395
|
-
StackHandlerConstants::kStateOffset - kPointerSize);
|
|
2396
|
-
ASSERT_EQ(StackHandlerConstants::kNextOffset,
|
|
2397
|
-
StackHandlerConstants::kFPOffset - kPointerSize);
|
|
2398
|
-
|
|
2398
|
+
// frame pointer, context, and current handler.
|
|
2399
2399
|
if (try_location == IN_JAVASCRIPT) {
|
|
2400
2400
|
if (type == TRY_CATCH_HANDLER) {
|
|
2401
2401
|
push(Immediate(StackHandler::TRY_CATCH));
|
|
@@ -2403,6 +2403,7 @@ void MacroAssembler::PushTryHandler(CodeLocation try_location,
|
|
|
2403
2403
|
push(Immediate(StackHandler::TRY_FINALLY));
|
|
2404
2404
|
}
|
|
2405
2405
|
push(rbp);
|
|
2406
|
+
push(rsi);
|
|
2406
2407
|
} else {
|
|
2407
2408
|
ASSERT(try_location == IN_JS_ENTRY);
|
|
2408
2409
|
// The frame pointer does not point to a JS frame so we save NULL
|
|
@@ -2410,6 +2411,7 @@ void MacroAssembler::PushTryHandler(CodeLocation try_location,
|
|
|
2410
2411
|
// before dereferencing it to restore the context.
|
|
2411
2412
|
push(Immediate(StackHandler::ENTRY));
|
|
2412
2413
|
push(Immediate(0)); // NULL frame pointer.
|
|
2414
|
+
Push(Smi::FromInt(0)); // No context.
|
|
2413
2415
|
}
|
|
2414
2416
|
// Save the current handler.
|
|
2415
2417
|
Operand handler_operand =
|
|
@@ -2432,12 +2434,13 @@ void MacroAssembler::PopTryHandler() {
|
|
|
2432
2434
|
|
|
2433
2435
|
|
|
2434
2436
|
void MacroAssembler::Throw(Register value) {
|
|
2435
|
-
//
|
|
2436
|
-
|
|
2437
|
-
STATIC_ASSERT(StackHandlerConstants::
|
|
2438
|
-
|
|
2439
|
-
STATIC_ASSERT(StackHandlerConstants::
|
|
2440
|
-
|
|
2437
|
+
// Adjust this code if not the case.
|
|
2438
|
+
STATIC_ASSERT(StackHandlerConstants::kSize == 5 * kPointerSize);
|
|
2439
|
+
STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize);
|
|
2440
|
+
STATIC_ASSERT(StackHandlerConstants::kContextOffset == 1 * kPointerSize);
|
|
2441
|
+
STATIC_ASSERT(StackHandlerConstants::kFPOffset == 2 * kPointerSize);
|
|
2442
|
+
STATIC_ASSERT(StackHandlerConstants::kStateOffset == 3 * kPointerSize);
|
|
2443
|
+
STATIC_ASSERT(StackHandlerConstants::kPCOffset == 4 * kPointerSize);
|
|
2441
2444
|
// Keep thrown value in rax.
|
|
2442
2445
|
if (!value.is(rax)) {
|
|
2443
2446
|
movq(rax, value);
|
|
@@ -2448,23 +2451,32 @@ void MacroAssembler::Throw(Register value) {
|
|
|
2448
2451
|
movq(rsp, handler_operand);
|
|
2449
2452
|
// get next in chain
|
|
2450
2453
|
pop(handler_operand);
|
|
2451
|
-
pop(
|
|
2452
|
-
pop(
|
|
2454
|
+
pop(rsi); // Context.
|
|
2455
|
+
pop(rbp); // Frame pointer.
|
|
2456
|
+
pop(rdx); // State.
|
|
2453
2457
|
|
|
2454
|
-
//
|
|
2455
|
-
//
|
|
2456
|
-
|
|
2458
|
+
// If the handler is a JS frame, restore the context to the frame.
|
|
2459
|
+
// (rdx == ENTRY) == (rbp == 0) == (rsi == 0), so we could test any
|
|
2460
|
+
// of them.
|
|
2457
2461
|
Label skip;
|
|
2458
|
-
cmpq(
|
|
2462
|
+
cmpq(rdx, Immediate(StackHandler::ENTRY));
|
|
2459
2463
|
j(equal, &skip, Label::kNear);
|
|
2460
|
-
movq(
|
|
2464
|
+
movq(Operand(rbp, StandardFrameConstants::kContextOffset), rsi);
|
|
2461
2465
|
bind(&skip);
|
|
2466
|
+
|
|
2462
2467
|
ret(0);
|
|
2463
2468
|
}
|
|
2464
2469
|
|
|
2465
2470
|
|
|
2466
2471
|
void MacroAssembler::ThrowUncatchable(UncatchableExceptionType type,
|
|
2467
2472
|
Register value) {
|
|
2473
|
+
// Adjust this code if not the case.
|
|
2474
|
+
STATIC_ASSERT(StackHandlerConstants::kSize == 5 * kPointerSize);
|
|
2475
|
+
STATIC_ASSERT(StackHandlerConstants::kNextOffset == 0 * kPointerSize);
|
|
2476
|
+
STATIC_ASSERT(StackHandlerConstants::kContextOffset == 1 * kPointerSize);
|
|
2477
|
+
STATIC_ASSERT(StackHandlerConstants::kFPOffset == 2 * kPointerSize);
|
|
2478
|
+
STATIC_ASSERT(StackHandlerConstants::kStateOffset == 3 * kPointerSize);
|
|
2479
|
+
STATIC_ASSERT(StackHandlerConstants::kPCOffset == 4 * kPointerSize);
|
|
2468
2480
|
// Keep thrown value in rax.
|
|
2469
2481
|
if (!value.is(rax)) {
|
|
2470
2482
|
movq(rax, value);
|
|
@@ -2504,19 +2516,13 @@ void MacroAssembler::ThrowUncatchable(UncatchableExceptionType type,
|
|
|
2504
2516
|
Store(pending_exception, rax);
|
|
2505
2517
|
}
|
|
2506
2518
|
|
|
2507
|
-
//
|
|
2519
|
+
// Discard the context saved in the handler and clear the context pointer.
|
|
2520
|
+
pop(rdx);
|
|
2508
2521
|
Set(rsi, 0);
|
|
2509
2522
|
|
|
2510
|
-
// Restore
|
|
2511
|
-
|
|
2512
|
-
StackHandlerConstants::kFPOffset);
|
|
2513
|
-
pop(rbp); // FP
|
|
2514
|
-
STATIC_ASSERT(StackHandlerConstants::kFPOffset + kPointerSize ==
|
|
2515
|
-
StackHandlerConstants::kStateOffset);
|
|
2516
|
-
pop(rdx); // State
|
|
2523
|
+
pop(rbp); // Restore frame pointer.
|
|
2524
|
+
pop(rdx); // Discard state.
|
|
2517
2525
|
|
|
2518
|
-
STATIC_ASSERT(StackHandlerConstants::kStateOffset + kPointerSize ==
|
|
2519
|
-
StackHandlerConstants::kPCOffset);
|
|
2520
2526
|
ret(0);
|
|
2521
2527
|
}
|
|
2522
2528
|
|
|
@@ -2558,6 +2564,16 @@ void MacroAssembler::CmpInstanceType(Register map, InstanceType type) {
|
|
|
2558
2564
|
}
|
|
2559
2565
|
|
|
2560
2566
|
|
|
2567
|
+
void MacroAssembler::CheckFastElements(Register map,
|
|
2568
|
+
Label* fail,
|
|
2569
|
+
Label::Distance distance) {
|
|
2570
|
+
STATIC_ASSERT(JSObject::FAST_ELEMENTS == 0);
|
|
2571
|
+
cmpb(FieldOperand(map, Map::kBitField2Offset),
|
|
2572
|
+
Immediate(Map::kMaximumBitField2FastElementValue));
|
|
2573
|
+
j(above, fail, distance);
|
|
2574
|
+
}
|
|
2575
|
+
|
|
2576
|
+
|
|
2561
2577
|
void MacroAssembler::CheckMap(Register obj,
|
|
2562
2578
|
Handle<Map> map,
|
|
2563
2579
|
Label* fail,
|
|
@@ -2683,7 +2699,7 @@ Condition MacroAssembler::IsObjectStringType(Register heap_object,
|
|
|
2683
2699
|
Register instance_type) {
|
|
2684
2700
|
movq(map, FieldOperand(heap_object, HeapObject::kMapOffset));
|
|
2685
2701
|
movzxbl(instance_type, FieldOperand(map, Map::kInstanceTypeOffset));
|
|
2686
|
-
|
|
2702
|
+
STATIC_ASSERT(kNotStringTag != 0);
|
|
2687
2703
|
testb(instance_type, Immediate(kIsNotStringMask));
|
|
2688
2704
|
return zero;
|
|
2689
2705
|
}
|
|
@@ -2878,7 +2894,8 @@ void MacroAssembler::InvokeFunction(Register function,
|
|
|
2878
2894
|
void MacroAssembler::InvokeFunction(JSFunction* function,
|
|
2879
2895
|
const ParameterCount& actual,
|
|
2880
2896
|
InvokeFlag flag,
|
|
2881
|
-
const CallWrapper& call_wrapper
|
|
2897
|
+
const CallWrapper& call_wrapper,
|
|
2898
|
+
CallKind call_kind) {
|
|
2882
2899
|
ASSERT(function->is_compiled());
|
|
2883
2900
|
// Get the function and setup the context.
|
|
2884
2901
|
Move(rdi, Handle<JSFunction>(function));
|
|
@@ -2889,7 +2906,7 @@ void MacroAssembler::InvokeFunction(JSFunction* function,
|
|
|
2889
2906
|
// the Code object every time we call the function.
|
|
2890
2907
|
movq(rdx, FieldOperand(rdi, JSFunction::kCodeEntryOffset));
|
|
2891
2908
|
ParameterCount expected(function->shared()->formal_parameter_count());
|
|
2892
|
-
InvokeCode(rdx, expected, actual, flag, call_wrapper);
|
|
2909
|
+
InvokeCode(rdx, expected, actual, flag, call_wrapper, call_kind);
|
|
2893
2910
|
} else {
|
|
2894
2911
|
// Invoke the cached code.
|
|
2895
2912
|
Handle<Code> code(function->code());
|
|
@@ -2899,7 +2916,8 @@ void MacroAssembler::InvokeFunction(JSFunction* function,
|
|
|
2899
2916
|
actual,
|
|
2900
2917
|
RelocInfo::CODE_TARGET,
|
|
2901
2918
|
flag,
|
|
2902
|
-
call_wrapper
|
|
2919
|
+
call_wrapper,
|
|
2920
|
+
call_kind);
|
|
2903
2921
|
}
|
|
2904
2922
|
}
|
|
2905
2923
|
|
|
@@ -3192,6 +3210,109 @@ void MacroAssembler::CheckAccessGlobalProxy(Register holder_reg,
|
|
|
3192
3210
|
}
|
|
3193
3211
|
|
|
3194
3212
|
|
|
3213
|
+
void MacroAssembler::LoadFromNumberDictionary(Label* miss,
|
|
3214
|
+
Register elements,
|
|
3215
|
+
Register key,
|
|
3216
|
+
Register r0,
|
|
3217
|
+
Register r1,
|
|
3218
|
+
Register r2,
|
|
3219
|
+
Register result) {
|
|
3220
|
+
// Register use:
|
|
3221
|
+
//
|
|
3222
|
+
// elements - holds the slow-case elements of the receiver on entry.
|
|
3223
|
+
// Unchanged unless 'result' is the same register.
|
|
3224
|
+
//
|
|
3225
|
+
// key - holds the smi key on entry.
|
|
3226
|
+
// Unchanged unless 'result' is the same register.
|
|
3227
|
+
//
|
|
3228
|
+
// Scratch registers:
|
|
3229
|
+
//
|
|
3230
|
+
// r0 - holds the untagged key on entry and holds the hash once computed.
|
|
3231
|
+
//
|
|
3232
|
+
// r1 - used to hold the capacity mask of the dictionary
|
|
3233
|
+
//
|
|
3234
|
+
// r2 - used for the index into the dictionary.
|
|
3235
|
+
//
|
|
3236
|
+
// result - holds the result on exit if the load succeeded.
|
|
3237
|
+
// Allowed to be the same as 'key' or 'result'.
|
|
3238
|
+
// Unchanged on bailout so 'key' or 'result' can be used
|
|
3239
|
+
// in further computation.
|
|
3240
|
+
|
|
3241
|
+
Label done;
|
|
3242
|
+
|
|
3243
|
+
// Compute the hash code from the untagged key. This must be kept in sync
|
|
3244
|
+
// with ComputeIntegerHash in utils.h.
|
|
3245
|
+
//
|
|
3246
|
+
// hash = ~hash + (hash << 15);
|
|
3247
|
+
movl(r1, r0);
|
|
3248
|
+
notl(r0);
|
|
3249
|
+
shll(r1, Immediate(15));
|
|
3250
|
+
addl(r0, r1);
|
|
3251
|
+
// hash = hash ^ (hash >> 12);
|
|
3252
|
+
movl(r1, r0);
|
|
3253
|
+
shrl(r1, Immediate(12));
|
|
3254
|
+
xorl(r0, r1);
|
|
3255
|
+
// hash = hash + (hash << 2);
|
|
3256
|
+
leal(r0, Operand(r0, r0, times_4, 0));
|
|
3257
|
+
// hash = hash ^ (hash >> 4);
|
|
3258
|
+
movl(r1, r0);
|
|
3259
|
+
shrl(r1, Immediate(4));
|
|
3260
|
+
xorl(r0, r1);
|
|
3261
|
+
// hash = hash * 2057;
|
|
3262
|
+
imull(r0, r0, Immediate(2057));
|
|
3263
|
+
// hash = hash ^ (hash >> 16);
|
|
3264
|
+
movl(r1, r0);
|
|
3265
|
+
shrl(r1, Immediate(16));
|
|
3266
|
+
xorl(r0, r1);
|
|
3267
|
+
|
|
3268
|
+
// Compute capacity mask.
|
|
3269
|
+
SmiToInteger32(r1,
|
|
3270
|
+
FieldOperand(elements, NumberDictionary::kCapacityOffset));
|
|
3271
|
+
decl(r1);
|
|
3272
|
+
|
|
3273
|
+
// Generate an unrolled loop that performs a few probes before giving up.
|
|
3274
|
+
const int kProbes = 4;
|
|
3275
|
+
for (int i = 0; i < kProbes; i++) {
|
|
3276
|
+
// Use r2 for index calculations and keep the hash intact in r0.
|
|
3277
|
+
movq(r2, r0);
|
|
3278
|
+
// Compute the masked index: (hash + i + i * i) & mask.
|
|
3279
|
+
if (i > 0) {
|
|
3280
|
+
addl(r2, Immediate(NumberDictionary::GetProbeOffset(i)));
|
|
3281
|
+
}
|
|
3282
|
+
and_(r2, r1);
|
|
3283
|
+
|
|
3284
|
+
// Scale the index by multiplying by the entry size.
|
|
3285
|
+
ASSERT(NumberDictionary::kEntrySize == 3);
|
|
3286
|
+
lea(r2, Operand(r2, r2, times_2, 0)); // r2 = r2 * 3
|
|
3287
|
+
|
|
3288
|
+
// Check if the key matches.
|
|
3289
|
+
cmpq(key, FieldOperand(elements,
|
|
3290
|
+
r2,
|
|
3291
|
+
times_pointer_size,
|
|
3292
|
+
NumberDictionary::kElementsStartOffset));
|
|
3293
|
+
if (i != (kProbes - 1)) {
|
|
3294
|
+
j(equal, &done);
|
|
3295
|
+
} else {
|
|
3296
|
+
j(not_equal, miss);
|
|
3297
|
+
}
|
|
3298
|
+
}
|
|
3299
|
+
|
|
3300
|
+
bind(&done);
|
|
3301
|
+
// Check that the value is a normal propety.
|
|
3302
|
+
const int kDetailsOffset =
|
|
3303
|
+
NumberDictionary::kElementsStartOffset + 2 * kPointerSize;
|
|
3304
|
+
ASSERT_EQ(NORMAL, 0);
|
|
3305
|
+
Test(FieldOperand(elements, r2, times_pointer_size, kDetailsOffset),
|
|
3306
|
+
Smi::FromInt(PropertyDetails::TypeField::mask()));
|
|
3307
|
+
j(not_zero, miss);
|
|
3308
|
+
|
|
3309
|
+
// Get the value at the masked, scaled index.
|
|
3310
|
+
const int kValueOffset =
|
|
3311
|
+
NumberDictionary::kElementsStartOffset + kPointerSize;
|
|
3312
|
+
movq(result, FieldOperand(elements, r2, times_pointer_size, kValueOffset));
|
|
3313
|
+
}
|
|
3314
|
+
|
|
3315
|
+
|
|
3195
3316
|
void MacroAssembler::LoadAllocationTopHelper(Register result,
|
|
3196
3317
|
Register scratch,
|
|
3197
3318
|
AllocationFlags flags) {
|
|
@@ -3605,15 +3726,10 @@ void MacroAssembler::CopyBytes(Register destination,
|
|
|
3605
3726
|
void MacroAssembler::LoadContext(Register dst, int context_chain_length) {
|
|
3606
3727
|
if (context_chain_length > 0) {
|
|
3607
3728
|
// Move up the chain of contexts to the context containing the slot.
|
|
3608
|
-
movq(dst, Operand(rsi, Context::SlotOffset(Context::
|
|
3609
|
-
// Load the function context (which is the incoming, outer context).
|
|
3610
|
-
movq(dst, FieldOperand(dst, JSFunction::kContextOffset));
|
|
3729
|
+
movq(dst, Operand(rsi, Context::SlotOffset(Context::PREVIOUS_INDEX)));
|
|
3611
3730
|
for (int i = 1; i < context_chain_length; i++) {
|
|
3612
|
-
movq(dst, Operand(dst, Context::SlotOffset(Context::
|
|
3613
|
-
movq(dst, FieldOperand(dst, JSFunction::kContextOffset));
|
|
3731
|
+
movq(dst, Operand(dst, Context::SlotOffset(Context::PREVIOUS_INDEX)));
|
|
3614
3732
|
}
|
|
3615
|
-
// The context may be an intermediate context, not a function context.
|
|
3616
|
-
movq(dst, Operand(dst, Context::SlotOffset(Context::FCONTEXT_INDEX)));
|
|
3617
3733
|
} else {
|
|
3618
3734
|
// Slot is in the current function context. Move it into the
|
|
3619
3735
|
// destination register in case we store into it (the write barrier
|
|
@@ -3621,14 +3737,14 @@ void MacroAssembler::LoadContext(Register dst, int context_chain_length) {
|
|
|
3621
3737
|
movq(dst, rsi);
|
|
3622
3738
|
}
|
|
3623
3739
|
|
|
3624
|
-
// We should not have found a
|
|
3625
|
-
// (i.e., the static scope chain and runtime context chain do
|
|
3626
|
-
// A variable occurring in such a scope should have
|
|
3627
|
-
// not CONTEXT.
|
|
3740
|
+
// We should not have found a with context by walking the context
|
|
3741
|
+
// chain (i.e., the static scope chain and runtime context chain do
|
|
3742
|
+
// not agree). A variable occurring in such a scope should have
|
|
3743
|
+
// slot type LOOKUP and not CONTEXT.
|
|
3628
3744
|
if (emit_debug_code()) {
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3745
|
+
CompareRoot(FieldOperand(dst, HeapObject::kMapOffset),
|
|
3746
|
+
Heap::kWithContextMapRootIndex);
|
|
3747
|
+
Check(not_equal, "Variable resolved to with context.");
|
|
3632
3748
|
}
|
|
3633
3749
|
}
|
|
3634
3750
|
|
|
@@ -251,29 +251,30 @@ class MacroAssembler: public Assembler {
|
|
|
251
251
|
const ParameterCount& expected,
|
|
252
252
|
const ParameterCount& actual,
|
|
253
253
|
InvokeFlag flag,
|
|
254
|
-
const CallWrapper& call_wrapper
|
|
255
|
-
CallKind call_kind
|
|
254
|
+
const CallWrapper& call_wrapper,
|
|
255
|
+
CallKind call_kind);
|
|
256
256
|
|
|
257
257
|
void InvokeCode(Handle<Code> code,
|
|
258
258
|
const ParameterCount& expected,
|
|
259
259
|
const ParameterCount& actual,
|
|
260
260
|
RelocInfo::Mode rmode,
|
|
261
261
|
InvokeFlag flag,
|
|
262
|
-
const CallWrapper& call_wrapper
|
|
263
|
-
CallKind call_kind
|
|
262
|
+
const CallWrapper& call_wrapper,
|
|
263
|
+
CallKind call_kind);
|
|
264
264
|
|
|
265
265
|
// Invoke the JavaScript function in the given register. Changes the
|
|
266
266
|
// current context to the context in the function before invoking.
|
|
267
267
|
void InvokeFunction(Register function,
|
|
268
268
|
const ParameterCount& actual,
|
|
269
269
|
InvokeFlag flag,
|
|
270
|
-
const CallWrapper& call_wrapper
|
|
271
|
-
CallKind call_kind
|
|
270
|
+
const CallWrapper& call_wrapper,
|
|
271
|
+
CallKind call_kind);
|
|
272
272
|
|
|
273
273
|
void InvokeFunction(JSFunction* function,
|
|
274
274
|
const ParameterCount& actual,
|
|
275
275
|
InvokeFlag flag,
|
|
276
|
-
const CallWrapper& call_wrapper
|
|
276
|
+
const CallWrapper& call_wrapper,
|
|
277
|
+
CallKind call_kind);
|
|
277
278
|
|
|
278
279
|
// Invoke specified builtin JavaScript function. Adds an entry to
|
|
279
280
|
// the unresolved list if the name does not resolve.
|
|
@@ -753,6 +754,12 @@ class MacroAssembler: public Assembler {
|
|
|
753
754
|
// Always use unsigned comparisons: above and below, not less and greater.
|
|
754
755
|
void CmpInstanceType(Register map, InstanceType type);
|
|
755
756
|
|
|
757
|
+
// Check if a map for a JSObject indicates that the object has fast elements.
|
|
758
|
+
// Jump to the specified label if it does not.
|
|
759
|
+
void CheckFastElements(Register map,
|
|
760
|
+
Label* fail,
|
|
761
|
+
Label::Distance distance = Label::kFar);
|
|
762
|
+
|
|
756
763
|
// Check if the map of an object is equal to a specified map and
|
|
757
764
|
// branch to label if not. Skip the smi check if not required
|
|
758
765
|
// (object is known to be a heap object)
|
|
@@ -839,6 +846,15 @@ class MacroAssembler: public Assembler {
|
|
|
839
846
|
Label* miss);
|
|
840
847
|
|
|
841
848
|
|
|
849
|
+
void LoadFromNumberDictionary(Label* miss,
|
|
850
|
+
Register elements,
|
|
851
|
+
Register key,
|
|
852
|
+
Register r0,
|
|
853
|
+
Register r1,
|
|
854
|
+
Register r2,
|
|
855
|
+
Register result);
|
|
856
|
+
|
|
857
|
+
|
|
842
858
|
// ---------------------------------------------------------------------------
|
|
843
859
|
// Allocation support
|
|
844
860
|
|