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
@@ -127,38 +127,38 @@ struct Register {
|
|
127
127
|
|
128
128
|
const Register no_reg = { -1 };
|
129
129
|
|
130
|
-
const Register zero_reg = { 0 };
|
131
|
-
const Register at = { 1 };
|
132
|
-
const Register v0 = { 2 };
|
133
|
-
const Register v1 = { 3 };
|
134
|
-
const Register a0 = { 4 };
|
130
|
+
const Register zero_reg = { 0 }; // Always zero.
|
131
|
+
const Register at = { 1 }; // at: Reserved for synthetic instructions.
|
132
|
+
const Register v0 = { 2 }; // v0, v1: Used when returning multiple values
|
133
|
+
const Register v1 = { 3 }; // from subroutines.
|
134
|
+
const Register a0 = { 4 }; // a0 - a4: Used to pass non-FP parameters.
|
135
135
|
const Register a1 = { 5 };
|
136
136
|
const Register a2 = { 6 };
|
137
137
|
const Register a3 = { 7 };
|
138
|
-
const Register t0 = { 8 };
|
139
|
-
const Register t1 = { 9 };
|
140
|
-
const Register t2 = { 10 };
|
138
|
+
const Register t0 = { 8 }; // t0 - t9: Can be used without reservation, act
|
139
|
+
const Register t1 = { 9 }; // as temporary registers and are allowed to
|
140
|
+
const Register t2 = { 10 }; // be destroyed by subroutines.
|
141
141
|
const Register t3 = { 11 };
|
142
142
|
const Register t4 = { 12 };
|
143
143
|
const Register t5 = { 13 };
|
144
144
|
const Register t6 = { 14 };
|
145
145
|
const Register t7 = { 15 };
|
146
|
-
const Register s0 = { 16 };
|
147
|
-
const Register s1 = { 17 };
|
148
|
-
const Register s2 = { 18 };
|
149
|
-
const Register s3 = { 19 };
|
150
|
-
const Register s4 = { 20 };
|
146
|
+
const Register s0 = { 16 }; // s0 - s7: Subroutine register variables.
|
147
|
+
const Register s1 = { 17 }; // Subroutines that write to these registers
|
148
|
+
const Register s2 = { 18 }; // must restore their values before exiting so
|
149
|
+
const Register s3 = { 19 }; // that the caller can expect the values to be
|
150
|
+
const Register s4 = { 20 }; // preserved.
|
151
151
|
const Register s5 = { 21 };
|
152
152
|
const Register s6 = { 22 };
|
153
153
|
const Register s7 = { 23 };
|
154
154
|
const Register t8 = { 24 };
|
155
155
|
const Register t9 = { 25 };
|
156
|
-
const Register k0 = { 26 };
|
157
|
-
const Register k1 = { 27 };
|
158
|
-
const Register gp = { 28 };
|
159
|
-
const Register sp = { 29 };
|
160
|
-
const Register s8_fp = { 30 };
|
161
|
-
const Register ra = { 31 };
|
156
|
+
const Register k0 = { 26 }; // k0, k1: Reserved for system calls and
|
157
|
+
const Register k1 = { 27 }; // interrupt handlers.
|
158
|
+
const Register gp = { 28 }; // gp: Reserved.
|
159
|
+
const Register sp = { 29 }; // sp: Stack pointer.
|
160
|
+
const Register s8_fp = { 30 }; // fp: Frame pointer.
|
161
|
+
const Register ra = { 31 }; // ra: Return address pointer.
|
162
162
|
|
163
163
|
|
164
164
|
int ToNumber(Register reg);
|
@@ -328,8 +328,8 @@ class Operand BASE_EMBEDDED {
|
|
328
328
|
// Class MemOperand represents a memory operand in load and store instructions.
|
329
329
|
class MemOperand : public Operand {
|
330
330
|
public:
|
331
|
-
|
332
331
|
explicit MemOperand(Register rn, int32_t offset = 0);
|
332
|
+
int32_t offset() const { return offset_; }
|
333
333
|
|
334
334
|
private:
|
335
335
|
int32_t offset_;
|
@@ -372,6 +372,7 @@ class CpuFeatures : public AllStatic {
|
|
372
372
|
// Enable a specified feature within a scope.
|
373
373
|
class Scope BASE_EMBEDDED {
|
374
374
|
#ifdef DEBUG
|
375
|
+
|
375
376
|
public:
|
376
377
|
explicit Scope(CpuFeature f) {
|
377
378
|
unsigned mask = 1u << f;
|
@@ -391,11 +392,13 @@ class CpuFeatures : public AllStatic {
|
|
391
392
|
isolate_->set_enabled_cpu_features(old_enabled_);
|
392
393
|
}
|
393
394
|
}
|
394
|
-
|
395
|
+
|
396
|
+
private:
|
395
397
|
Isolate* isolate_;
|
396
398
|
unsigned old_enabled_;
|
397
399
|
#else
|
398
|
-
|
400
|
+
|
401
|
+
public:
|
399
402
|
explicit Scope(CpuFeature f) {}
|
400
403
|
#endif
|
401
404
|
};
|
@@ -478,6 +481,9 @@ class Assembler : public AssemblerBase {
|
|
478
481
|
// Note: The same Label can be used for forward and backward branches
|
479
482
|
// but it may be bound only once.
|
480
483
|
void bind(Label* L); // Binds an unbound label L to current code position.
|
484
|
+
// Determines if Label is bound and near enough so that branch instruction
|
485
|
+
// can be used to reach it, instead of jump instruction.
|
486
|
+
bool is_near(Label* L);
|
481
487
|
|
482
488
|
// Returns the branch offset to the given label from the current code
|
483
489
|
// position. Links the label to the current position if it is still unbound.
|
@@ -488,6 +494,7 @@ class Assembler : public AssemblerBase {
|
|
488
494
|
ASSERT((o & 3) == 0); // Assert the offset is aligned.
|
489
495
|
return o >> 2;
|
490
496
|
}
|
497
|
+
uint32_t jump_address(Label* L);
|
491
498
|
|
492
499
|
// Puts a labels target address at the given position.
|
493
500
|
// The high 8 bits are set to zero.
|
@@ -675,7 +682,8 @@ class Assembler : public AssemblerBase {
|
|
675
682
|
//-------------Misc-instructions--------------
|
676
683
|
|
677
684
|
// Break / Trap instructions.
|
678
|
-
void break_(uint32_t code);
|
685
|
+
void break_(uint32_t code, bool break_as_stop = false);
|
686
|
+
void stop(const char* msg, uint32_t code = kMaxStopCode);
|
679
687
|
void tge(Register rs, Register rt, uint16_t code);
|
680
688
|
void tgeu(Register rs, Register rt, uint16_t code);
|
681
689
|
void tlt(Register rs, Register rt, uint16_t code);
|
@@ -771,8 +779,13 @@ class Assembler : public AssemblerBase {
|
|
771
779
|
void fcmp(FPURegister src1, const double src2, FPUCondition cond);
|
772
780
|
|
773
781
|
// Check the code size generated from label to here.
|
774
|
-
int
|
775
|
-
return
|
782
|
+
int SizeOfCodeGeneratedSince(Label* label) {
|
783
|
+
return pc_offset() - label->pos();
|
784
|
+
}
|
785
|
+
|
786
|
+
// Check the number of instructions generated from label to here.
|
787
|
+
int InstructionsGeneratedSince(Label* label) {
|
788
|
+
return SizeOfCodeGeneratedSince(label) / kInstrSize;
|
776
789
|
}
|
777
790
|
|
778
791
|
// Class for scoping postponing the trampoline pool generation.
|
@@ -791,6 +804,25 @@ class Assembler : public AssemblerBase {
|
|
791
804
|
DISALLOW_IMPLICIT_CONSTRUCTORS(BlockTrampolinePoolScope);
|
792
805
|
};
|
793
806
|
|
807
|
+
// Class for postponing the assembly buffer growth. Typically used for
|
808
|
+
// sequences of instructions that must be emitted as a unit, before
|
809
|
+
// buffer growth (and relocation) can occur.
|
810
|
+
// This blocking scope is not nestable.
|
811
|
+
class BlockGrowBufferScope {
|
812
|
+
public:
|
813
|
+
explicit BlockGrowBufferScope(Assembler* assem) : assem_(assem) {
|
814
|
+
assem_->StartBlockGrowBuffer();
|
815
|
+
}
|
816
|
+
~BlockGrowBufferScope() {
|
817
|
+
assem_->EndBlockGrowBuffer();
|
818
|
+
}
|
819
|
+
|
820
|
+
private:
|
821
|
+
Assembler* assem_;
|
822
|
+
|
823
|
+
DISALLOW_IMPLICIT_CONSTRUCTORS(BlockGrowBufferScope);
|
824
|
+
};
|
825
|
+
|
794
826
|
// Debugging.
|
795
827
|
|
796
828
|
// Mark address of the ExitJSFrame code.
|
@@ -801,12 +833,24 @@ class Assembler : public AssemblerBase {
|
|
801
833
|
|
802
834
|
// Record the AST id of the CallIC being compiled, so that it can be placed
|
803
835
|
// in the relocation information.
|
804
|
-
void
|
836
|
+
void SetRecordedAstId(unsigned ast_id) {
|
837
|
+
ASSERT(recorded_ast_id_ == kNoASTId);
|
838
|
+
recorded_ast_id_ = ast_id;
|
839
|
+
}
|
840
|
+
|
841
|
+
unsigned RecordedAstId() {
|
842
|
+
ASSERT(recorded_ast_id_ != kNoASTId);
|
843
|
+
return recorded_ast_id_;
|
844
|
+
}
|
845
|
+
|
846
|
+
void ClearRecordedAstId() { recorded_ast_id_ = kNoASTId; }
|
805
847
|
|
806
848
|
// Record a comment relocation entry that can be used by a disassembler.
|
807
849
|
// Use --code-comments to enable.
|
808
850
|
void RecordComment(const char* msg);
|
809
851
|
|
852
|
+
static int RelocateInternalReference(byte* pc, intptr_t pc_delta);
|
853
|
+
|
810
854
|
// Writes a single byte or word of data in the code stream. Used for
|
811
855
|
// inline tables, e.g., jump-tables.
|
812
856
|
void db(uint8_t data);
|
@@ -843,6 +887,11 @@ class Assembler : public AssemblerBase {
|
|
843
887
|
static bool IsBeq(Instr instr);
|
844
888
|
static bool IsBne(Instr instr);
|
845
889
|
|
890
|
+
static bool IsJump(Instr instr);
|
891
|
+
static bool IsJ(Instr instr);
|
892
|
+
static bool IsLui(Instr instr);
|
893
|
+
static bool IsOri(Instr instr);
|
894
|
+
|
846
895
|
static bool IsNop(Instr instr, unsigned int type);
|
847
896
|
static bool IsPop(Instr instr);
|
848
897
|
static bool IsPush(Instr instr);
|
@@ -864,6 +913,8 @@ class Assembler : public AssemblerBase {
|
|
864
913
|
static uint32_t GetSa(Instr instr);
|
865
914
|
static uint32_t GetSaField(Instr instr);
|
866
915
|
static uint32_t GetOpcodeField(Instr instr);
|
916
|
+
static uint32_t GetFunction(Instr instr);
|
917
|
+
static uint32_t GetFunctionField(Instr instr);
|
867
918
|
static uint32_t GetImmediate16(Instr instr);
|
868
919
|
static uint32_t GetLabelConst(Instr instr);
|
869
920
|
|
@@ -879,13 +930,13 @@ class Assembler : public AssemblerBase {
|
|
879
930
|
|
880
931
|
static bool IsAndImmediate(Instr instr);
|
881
932
|
|
882
|
-
void CheckTrampolinePool(
|
933
|
+
void CheckTrampolinePool();
|
883
934
|
|
884
935
|
protected:
|
885
936
|
// Relocation for a type-recording IC has the AST id added to it. This
|
886
937
|
// member variable is a way to pass the information from the call site to
|
887
938
|
// the relocation info.
|
888
|
-
unsigned
|
939
|
+
unsigned recorded_ast_id_;
|
889
940
|
|
890
941
|
bool emit_debug_code() const { return emit_debug_code_; }
|
891
942
|
|
@@ -912,6 +963,7 @@ class Assembler : public AssemblerBase {
|
|
912
963
|
void StartBlockTrampolinePool() {
|
913
964
|
trampoline_pool_blocked_nesting_++;
|
914
965
|
}
|
966
|
+
|
915
967
|
void EndBlockTrampolinePool() {
|
916
968
|
trampoline_pool_blocked_nesting_--;
|
917
969
|
}
|
@@ -924,6 +976,25 @@ class Assembler : public AssemblerBase {
|
|
924
976
|
return internal_trampoline_exception_;
|
925
977
|
}
|
926
978
|
|
979
|
+
bool is_trampoline_emitted() const {
|
980
|
+
return trampoline_emitted_;
|
981
|
+
}
|
982
|
+
|
983
|
+
// Temporarily block automatic assembly buffer growth.
|
984
|
+
void StartBlockGrowBuffer() {
|
985
|
+
ASSERT(!block_buffer_growth_);
|
986
|
+
block_buffer_growth_ = true;
|
987
|
+
}
|
988
|
+
|
989
|
+
void EndBlockGrowBuffer() {
|
990
|
+
ASSERT(block_buffer_growth_);
|
991
|
+
block_buffer_growth_ = false;
|
992
|
+
}
|
993
|
+
|
994
|
+
bool is_buffer_growth_blocked() const {
|
995
|
+
return block_buffer_growth_;
|
996
|
+
}
|
997
|
+
|
927
998
|
private:
|
928
999
|
// Code buffer:
|
929
1000
|
// The buffer into which code and relocation info are generated.
|
@@ -960,6 +1031,9 @@ class Assembler : public AssemblerBase {
|
|
960
1031
|
// Keep track of the last emitted pool to guarantee a maximal distance.
|
961
1032
|
int last_trampoline_pool_end_; // pc offset of the end of the last pool.
|
962
1033
|
|
1034
|
+
// Automatic growth of the assembly buffer may be blocked for some sequences.
|
1035
|
+
bool block_buffer_growth_; // Block growth when true.
|
1036
|
+
|
963
1037
|
// Relocation information generation.
|
964
1038
|
// Each relocation is encoded as a variable size value.
|
965
1039
|
static const int kMaxRelocSize = RelocInfoWriter::kMaxSize;
|
@@ -1040,7 +1114,6 @@ class Assembler : public AssemblerBase {
|
|
1040
1114
|
// Labels.
|
1041
1115
|
void print(Label* L);
|
1042
1116
|
void bind_to(Label* L, int pos);
|
1043
|
-
void link_to(Label* L, Label* appendix);
|
1044
1117
|
void next(Label* L);
|
1045
1118
|
|
1046
1119
|
// One trampoline consists of:
|
@@ -1053,13 +1126,17 @@ class Assembler : public AssemblerBase {
|
|
1053
1126
|
// label_count * kInstrSize.
|
1054
1127
|
class Trampoline {
|
1055
1128
|
public:
|
1056
|
-
Trampoline(
|
1129
|
+
Trampoline() {
|
1130
|
+
start_ = 0;
|
1131
|
+
next_slot_ = 0;
|
1132
|
+
free_slot_count_ = 0;
|
1133
|
+
end_ = 0;
|
1134
|
+
}
|
1135
|
+
Trampoline(int start, int slot_count) {
|
1057
1136
|
start_ = start;
|
1058
1137
|
next_slot_ = start;
|
1059
1138
|
free_slot_count_ = slot_count;
|
1060
|
-
|
1061
|
-
free_label_count_ = label_count;
|
1062
|
-
end_ = next_label_ + (label_count - 1) * kInstrSize;
|
1139
|
+
end_ = start + slot_count * kTrampolineSlotsSize;
|
1063
1140
|
}
|
1064
1141
|
int start() {
|
1065
1142
|
return start_;
|
@@ -1078,40 +1155,30 @@ class Assembler : public AssemblerBase {
|
|
1078
1155
|
} else {
|
1079
1156
|
trampoline_slot = next_slot_;
|
1080
1157
|
free_slot_count_--;
|
1081
|
-
next_slot_ +=
|
1158
|
+
next_slot_ += kTrampolineSlotsSize;
|
1082
1159
|
}
|
1083
1160
|
return trampoline_slot;
|
1084
1161
|
}
|
1085
|
-
int take_label() {
|
1086
|
-
int label_pos = next_label_;
|
1087
|
-
ASSERT(free_label_count_ > 0);
|
1088
|
-
free_label_count_--;
|
1089
|
-
next_label_ += kInstrSize;
|
1090
|
-
return label_pos;
|
1091
|
-
}
|
1092
1162
|
private:
|
1093
1163
|
int start_;
|
1094
1164
|
int end_;
|
1095
1165
|
int next_slot_;
|
1096
1166
|
int free_slot_count_;
|
1097
|
-
int next_label_;
|
1098
|
-
int free_label_count_;
|
1099
1167
|
};
|
1100
1168
|
|
1101
|
-
int32_t
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1169
|
+
int32_t get_trampoline_entry(int32_t pos);
|
1170
|
+
int unbound_labels_count_;
|
1171
|
+
// If trampoline is emitted, generated code is becoming large. As this is
|
1172
|
+
// already a slow case which can possibly break our code generation for the
|
1173
|
+
// extreme case, we use this information to trigger different mode of
|
1174
|
+
// branch instruction generation, where we use jump instructions rather
|
1175
|
+
// than regular branch instructions.
|
1176
|
+
bool trampoline_emitted_;
|
1177
|
+
static const int kTrampolineSlotsSize = 4 * kInstrSize;
|
1109
1178
|
static const int kMaxBranchOffset = (1 << (18 - 1)) - 1;
|
1110
|
-
static const int kMaxDistBetweenPools =
|
1111
|
-
kMaxBranchOffset - 2 * kTrampolineSize;
|
1112
1179
|
static const int kInvalidSlotPos = -1;
|
1113
1180
|
|
1114
|
-
|
1181
|
+
Trampoline trampoline_;
|
1115
1182
|
bool internal_trampoline_exception_;
|
1116
1183
|
|
1117
1184
|
friend class RegExpMacroAssemblerMIPS;
|
@@ -344,7 +344,7 @@ static void ArrayNativeCode(MacroAssembler* masm,
|
|
344
344
|
// Handle construction of an empty array of a certain size. Bail out if size
|
345
345
|
// is too large to actually allocate an elements array.
|
346
346
|
ASSERT(kSmiTag == 0);
|
347
|
-
__ Branch(call_generic_code,
|
347
|
+
__ Branch(call_generic_code, Ugreater_equal, a2,
|
348
348
|
Operand(JSObject::kInitialMaxFastElementArray << kSmiTagSize));
|
349
349
|
|
350
350
|
// a0: argc
|
@@ -634,7 +634,7 @@ void Builtins::Generate_JSConstructCall(MacroAssembler* masm) {
|
|
634
634
|
__ lw(a2, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset));
|
635
635
|
__ lw(a2, FieldMemOperand(a2, SharedFunctionInfo::kConstructStubOffset));
|
636
636
|
__ Addu(t9, a2, Operand(Code::kHeaderSize - kHeapObjectTag));
|
637
|
-
__ Jump(
|
637
|
+
__ Jump(t9);
|
638
638
|
|
639
639
|
// a0: number of arguments
|
640
640
|
// a1: called object
|
@@ -942,10 +942,11 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|
942
942
|
masm->isolate()->builtins()->HandleApiCallConstruct();
|
943
943
|
ParameterCount expected(0);
|
944
944
|
__ InvokeCode(code, expected, expected,
|
945
|
-
RelocInfo::CODE_TARGET, CALL_FUNCTION);
|
945
|
+
RelocInfo::CODE_TARGET, CALL_FUNCTION, CALL_AS_METHOD);
|
946
946
|
} else {
|
947
947
|
ParameterCount actual(a0);
|
948
|
-
__ InvokeFunction(a1, actual, CALL_FUNCTION
|
948
|
+
__ InvokeFunction(a1, actual, CALL_FUNCTION,
|
949
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
949
950
|
}
|
950
951
|
|
951
952
|
// Pop the function from the stack.
|
@@ -973,9 +974,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|
973
974
|
__ Branch(&use_receiver, eq, t0, Operand(zero_reg));
|
974
975
|
|
975
976
|
// If the type of the result (stored in its map) is less than
|
976
|
-
//
|
977
|
+
// FIRST_SPEC_OBJECT_TYPE, it is not an object in the ECMA sense.
|
977
978
|
__ GetObjectType(v0, a3, a3);
|
978
|
-
__ Branch(&exit, greater_equal, a3, Operand(
|
979
|
+
__ Branch(&exit, greater_equal, a3, Operand(FIRST_SPEC_OBJECT_TYPE));
|
979
980
|
|
980
981
|
// Throw away the result of the constructor invocation and use the
|
981
982
|
// on-stack receiver as the result.
|
@@ -1074,11 +1075,11 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
|
1074
1075
|
// Invoke the code and pass argc as a0.
|
1075
1076
|
__ mov(a0, a3);
|
1076
1077
|
if (is_construct) {
|
1077
|
-
__ Call(masm->isolate()->builtins()->JSConstructCall()
|
1078
|
-
RelocInfo::CODE_TARGET);
|
1078
|
+
__ Call(masm->isolate()->builtins()->JSConstructCall());
|
1079
1079
|
} else {
|
1080
1080
|
ParameterCount actual(a0);
|
1081
|
-
__ InvokeFunction(a1, actual, CALL_FUNCTION
|
1081
|
+
__ InvokeFunction(a1, actual, CALL_FUNCTION,
|
1082
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
1082
1083
|
}
|
1083
1084
|
|
1084
1085
|
__ LeaveInternalFrame();
|
@@ -1214,8 +1215,7 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
1214
1215
|
__ Branch(&shift_arguments, ne, t0, Operand(zero_reg));
|
1215
1216
|
|
1216
1217
|
// Do not transform the receiver for native (Compilerhints already in a3).
|
1217
|
-
__ And(t0, a3, Operand(1 << (SharedFunctionInfo::
|
1218
|
-
kSmiTagSize)));
|
1218
|
+
__ And(t0, a3, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize)));
|
1219
1219
|
__ Branch(&shift_arguments, ne, t0, Operand(zero_reg));
|
1220
1220
|
|
1221
1221
|
// Compute the receiver in non-strict mode.
|
@@ -1233,10 +1233,9 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
1233
1233
|
__ LoadRoot(a3, Heap::kNullValueRootIndex);
|
1234
1234
|
__ Branch(&use_global_receiver, eq, a2, Operand(a3));
|
1235
1235
|
|
1236
|
-
STATIC_ASSERT(
|
1237
|
-
STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE);
|
1236
|
+
STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
|
1238
1237
|
__ GetObjectType(a2, a3, a3);
|
1239
|
-
__ Branch(&shift_arguments, ge, a3, Operand(
|
1238
|
+
__ Branch(&shift_arguments, ge, a3, Operand(FIRST_SPEC_OBJECT_TYPE));
|
1240
1239
|
|
1241
1240
|
__ bind(&convert_to_object);
|
1242
1241
|
__ EnterInternalFrame(); // In order to preserve argument count.
|
@@ -1339,7 +1338,8 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
|
1339
1338
|
RelocInfo::CODE_TARGET, ne, a2, Operand(a0));
|
1340
1339
|
|
1341
1340
|
ParameterCount expected(0);
|
1342
|
-
__ InvokeCode(a3, expected, expected, JUMP_FUNCTION
|
1341
|
+
__ InvokeCode(a3, expected, expected, JUMP_FUNCTION,
|
1342
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
1343
1343
|
}
|
1344
1344
|
|
1345
1345
|
|
@@ -1401,8 +1401,7 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
1401
1401
|
__ Branch(&push_receiver, ne, t0, Operand(zero_reg));
|
1402
1402
|
|
1403
1403
|
// Do not transform the receiver for native (Compilerhints already in a2).
|
1404
|
-
__ And(t0, a2, Operand(1 << (SharedFunctionInfo::
|
1405
|
-
kSmiTagSize)));
|
1404
|
+
__ And(t0, a2, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize)));
|
1406
1405
|
__ Branch(&push_receiver, ne, t0, Operand(zero_reg));
|
1407
1406
|
|
1408
1407
|
// Compute the receiver in non-strict mode.
|
@@ -1415,10 +1414,9 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
1415
1414
|
|
1416
1415
|
// Check if the receiver is already a JavaScript object.
|
1417
1416
|
// a0: receiver
|
1418
|
-
STATIC_ASSERT(
|
1419
|
-
STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE);
|
1417
|
+
STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
|
1420
1418
|
__ GetObjectType(a0, a1, a1);
|
1421
|
-
__ Branch(&push_receiver, ge, a1, Operand(
|
1419
|
+
__ Branch(&push_receiver, ge, a1, Operand(FIRST_SPEC_OBJECT_TYPE));
|
1422
1420
|
|
1423
1421
|
// Convert the receiver to a regular object.
|
1424
1422
|
// a0: receiver
|
@@ -1473,7 +1471,8 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) {
|
|
1473
1471
|
ParameterCount actual(a0);
|
1474
1472
|
__ sra(a0, a0, kSmiTagSize);
|
1475
1473
|
__ lw(a1, MemOperand(fp, kFunctionOffset));
|
1476
|
-
__ InvokeFunction(a1, actual, CALL_FUNCTION
|
1474
|
+
__ InvokeFunction(a1, actual, CALL_FUNCTION,
|
1475
|
+
NullCallWrapper(), CALL_AS_METHOD);
|
1477
1476
|
|
1478
1477
|
// Tear down the internal frame and remove function, receiver and args.
|
1479
1478
|
__ LeaveInternalFrame();
|
@@ -1573,20 +1572,20 @@ void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) {
|
|
1573
1572
|
// Adjust for return address and receiver.
|
1574
1573
|
__ Addu(a0, a0, Operand(2 * kPointerSize));
|
1575
1574
|
// Compute copy end address. Also adjust for return address.
|
1576
|
-
__ Addu(
|
1575
|
+
__ Addu(t3, fp, kPointerSize);
|
1577
1576
|
|
1578
1577
|
// Copy the arguments (including the receiver) to the new stack frame.
|
1579
1578
|
// a0: copy start address
|
1580
1579
|
// a1: function
|
1581
1580
|
// a2: expected number of arguments
|
1582
1581
|
// a3: code entry to call
|
1583
|
-
//
|
1582
|
+
// t3: copy end address
|
1584
1583
|
Label copy;
|
1585
1584
|
__ bind(©);
|
1586
1585
|
__ lw(t0, MemOperand(a0)); // Adjusted above for return addr and receiver.
|
1587
1586
|
__ push(t0);
|
1588
1587
|
__ Subu(a0, a0, kPointerSize);
|
1589
|
-
__ Branch(©, ne, a0, Operand(
|
1588
|
+
__ Branch(©, ne, a0, Operand(t3));
|
1590
1589
|
|
1591
1590
|
// Fill the remaining expected arguments with undefined.
|
1592
1591
|
// a1: function
|