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
data/lib/libv8/v8/src/spaces.h
CHANGED
|
@@ -200,9 +200,9 @@ class Page {
|
|
|
200
200
|
|
|
201
201
|
inline void SetIsLargeObjectPage(bool is_large_object_page);
|
|
202
202
|
|
|
203
|
-
inline
|
|
203
|
+
inline Executability PageExecutability();
|
|
204
204
|
|
|
205
|
-
inline void
|
|
205
|
+
inline void SetPageExecutability(Executability executable);
|
|
206
206
|
|
|
207
207
|
// Returns the offset of a given address to this page.
|
|
208
208
|
INLINE(int Offset(Address a)) {
|
|
@@ -380,12 +380,6 @@ class Space : public Malloced {
|
|
|
380
380
|
// (e.g. see LargeObjectSpace).
|
|
381
381
|
virtual intptr_t SizeOfObjects() { return Size(); }
|
|
382
382
|
|
|
383
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
384
|
-
// Protect/unprotect the space by marking it read-only/writable.
|
|
385
|
-
virtual void Protect() = 0;
|
|
386
|
-
virtual void Unprotect() = 0;
|
|
387
|
-
#endif
|
|
388
|
-
|
|
389
383
|
#ifdef DEBUG
|
|
390
384
|
virtual void Print() = 0;
|
|
391
385
|
#endif
|
|
@@ -414,6 +408,9 @@ class Space : public Malloced {
|
|
|
414
408
|
// manages a range of virtual memory.
|
|
415
409
|
class CodeRange {
|
|
416
410
|
public:
|
|
411
|
+
explicit CodeRange(Isolate* isolate);
|
|
412
|
+
~CodeRange() { TearDown(); }
|
|
413
|
+
|
|
417
414
|
// Reserves a range of virtual memory, but does not commit any of it.
|
|
418
415
|
// Can only be called once, at heap initialization time.
|
|
419
416
|
// Returns false on failure.
|
|
@@ -423,9 +420,9 @@ class CodeRange {
|
|
|
423
420
|
// manage it.
|
|
424
421
|
void TearDown();
|
|
425
422
|
|
|
426
|
-
bool exists() { return code_range_ != NULL; }
|
|
423
|
+
bool exists() { return this != NULL && code_range_ != NULL; }
|
|
427
424
|
bool contains(Address address) {
|
|
428
|
-
if (code_range_ == NULL) return false;
|
|
425
|
+
if (this == NULL || code_range_ == NULL) return false;
|
|
429
426
|
Address start = static_cast<Address>(code_range_->address());
|
|
430
427
|
return start <= address && address < start + code_range_->size();
|
|
431
428
|
}
|
|
@@ -438,7 +435,7 @@ class CodeRange {
|
|
|
438
435
|
void FreeRawMemory(void* buf, size_t length);
|
|
439
436
|
|
|
440
437
|
private:
|
|
441
|
-
|
|
438
|
+
Isolate* isolate_;
|
|
442
439
|
|
|
443
440
|
// The reserved range of virtual memory that all code objects are put in.
|
|
444
441
|
VirtualMemory* code_range_;
|
|
@@ -472,10 +469,6 @@ class CodeRange {
|
|
|
472
469
|
static int CompareFreeBlockAddress(const FreeBlock* left,
|
|
473
470
|
const FreeBlock* right);
|
|
474
471
|
|
|
475
|
-
friend class Isolate;
|
|
476
|
-
|
|
477
|
-
Isolate* isolate_;
|
|
478
|
-
|
|
479
472
|
DISALLOW_COPY_AND_ASSIGN(CodeRange);
|
|
480
473
|
};
|
|
481
474
|
|
|
@@ -506,6 +499,8 @@ class CodeRange {
|
|
|
506
499
|
|
|
507
500
|
class MemoryAllocator {
|
|
508
501
|
public:
|
|
502
|
+
explicit MemoryAllocator(Isolate* isolate);
|
|
503
|
+
|
|
509
504
|
// Initializes its internal bookkeeping structures.
|
|
510
505
|
// Max capacity of the total space and executable memory limit.
|
|
511
506
|
bool Setup(intptr_t max_capacity, intptr_t capacity_executable);
|
|
@@ -641,17 +636,6 @@ class MemoryAllocator {
|
|
|
641
636
|
Page** last_page,
|
|
642
637
|
Page** last_page_in_use);
|
|
643
638
|
|
|
644
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
645
|
-
// Protect/unprotect a block of memory by marking it read-only/writable.
|
|
646
|
-
inline void Protect(Address start, size_t size);
|
|
647
|
-
inline void Unprotect(Address start, size_t size,
|
|
648
|
-
Executability executable);
|
|
649
|
-
|
|
650
|
-
// Protect/unprotect a chunk given a page in the chunk.
|
|
651
|
-
inline void ProtectChunkFromPage(Page* page);
|
|
652
|
-
inline void UnprotectChunkFromPage(Page* page);
|
|
653
|
-
#endif
|
|
654
|
-
|
|
655
639
|
#ifdef DEBUG
|
|
656
640
|
// Reports statistic info of the space.
|
|
657
641
|
void ReportStatistics();
|
|
@@ -664,22 +648,19 @@ class MemoryAllocator {
|
|
|
664
648
|
#ifdef V8_TARGET_ARCH_X64
|
|
665
649
|
static const int kPagesPerChunk = 32;
|
|
666
650
|
// On 64 bit the chunk table consists of 4 levels of 4096-entry tables.
|
|
667
|
-
static const int kPagesPerChunkLog2 = 5;
|
|
668
651
|
static const int kChunkTableLevels = 4;
|
|
669
652
|
static const int kChunkTableBitsPerLevel = 12;
|
|
670
653
|
#else
|
|
671
654
|
static const int kPagesPerChunk = 16;
|
|
672
655
|
// On 32 bit the chunk table consists of 2 levels of 256-entry tables.
|
|
673
|
-
static const int kPagesPerChunkLog2 = 4;
|
|
674
656
|
static const int kChunkTableLevels = 2;
|
|
675
657
|
static const int kChunkTableBitsPerLevel = 8;
|
|
676
658
|
#endif
|
|
677
659
|
|
|
678
660
|
private:
|
|
679
|
-
MemoryAllocator();
|
|
680
|
-
|
|
681
661
|
static const int kChunkSize = kPagesPerChunk * Page::kPageSize;
|
|
682
|
-
|
|
662
|
+
|
|
663
|
+
Isolate* isolate_;
|
|
683
664
|
|
|
684
665
|
// Maximum space size in bytes.
|
|
685
666
|
intptr_t capacity_;
|
|
@@ -773,10 +754,6 @@ class MemoryAllocator {
|
|
|
773
754
|
Page* prev,
|
|
774
755
|
Page** last_page_in_use);
|
|
775
756
|
|
|
776
|
-
friend class Isolate;
|
|
777
|
-
|
|
778
|
-
Isolate* isolate_;
|
|
779
|
-
|
|
780
757
|
DISALLOW_COPY_AND_ASSIGN(MemoryAllocator);
|
|
781
758
|
};
|
|
782
759
|
|
|
@@ -1157,12 +1134,6 @@ class PagedSpace : public Space {
|
|
|
1157
1134
|
// Ensures that the capacity is at least 'capacity'. Returns false on failure.
|
|
1158
1135
|
bool EnsureCapacity(int capacity);
|
|
1159
1136
|
|
|
1160
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
1161
|
-
// Protect/unprotect the space by marking it read-only/writable.
|
|
1162
|
-
void Protect();
|
|
1163
|
-
void Unprotect();
|
|
1164
|
-
#endif
|
|
1165
|
-
|
|
1166
1137
|
#ifdef DEBUG
|
|
1167
1138
|
// Print meta info and objects in this space.
|
|
1168
1139
|
virtual void Print();
|
|
@@ -1270,7 +1241,6 @@ class PagedSpace : public Space {
|
|
|
1270
1241
|
};
|
|
1271
1242
|
|
|
1272
1243
|
|
|
1273
|
-
#if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
|
|
1274
1244
|
class NumberAndSizeInfo BASE_EMBEDDED {
|
|
1275
1245
|
public:
|
|
1276
1246
|
NumberAndSizeInfo() : number_(0), bytes_(0) {}
|
|
@@ -1293,9 +1263,7 @@ class NumberAndSizeInfo BASE_EMBEDDED {
|
|
|
1293
1263
|
|
|
1294
1264
|
|
|
1295
1265
|
// HistogramInfo class for recording a single "bar" of a histogram. This
|
|
1296
|
-
// class is used for collecting statistics to print to
|
|
1297
|
-
// with DEBUG) or to the log file (when compiled with
|
|
1298
|
-
// ENABLE_LOGGING_AND_PROFILING).
|
|
1266
|
+
// class is used for collecting statistics to print to the log file.
|
|
1299
1267
|
class HistogramInfo: public NumberAndSizeInfo {
|
|
1300
1268
|
public:
|
|
1301
1269
|
HistogramInfo() : NumberAndSizeInfo() {}
|
|
@@ -1306,7 +1274,6 @@ class HistogramInfo: public NumberAndSizeInfo {
|
|
|
1306
1274
|
private:
|
|
1307
1275
|
const char* name_;
|
|
1308
1276
|
};
|
|
1309
|
-
#endif
|
|
1310
1277
|
|
|
1311
1278
|
|
|
1312
1279
|
// -----------------------------------------------------------------------------
|
|
@@ -1392,12 +1359,6 @@ class SemiSpace : public Space {
|
|
|
1392
1359
|
bool Commit();
|
|
1393
1360
|
bool Uncommit();
|
|
1394
1361
|
|
|
1395
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
1396
|
-
// Protect/unprotect the space by marking it read-only/writable.
|
|
1397
|
-
virtual void Protect() {}
|
|
1398
|
-
virtual void Unprotect() {}
|
|
1399
|
-
#endif
|
|
1400
|
-
|
|
1401
1362
|
#ifdef DEBUG
|
|
1402
1363
|
virtual void Print();
|
|
1403
1364
|
virtual void Verify();
|
|
@@ -1628,12 +1589,6 @@ class NewSpace : public Space {
|
|
|
1628
1589
|
template <typename StringType>
|
|
1629
1590
|
inline void ShrinkStringAtAllocationBoundary(String* string, int len);
|
|
1630
1591
|
|
|
1631
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
1632
|
-
// Protect/unprotect the space by marking it read-only/writable.
|
|
1633
|
-
virtual void Protect();
|
|
1634
|
-
virtual void Unprotect();
|
|
1635
|
-
#endif
|
|
1636
|
-
|
|
1637
1592
|
#ifdef DEBUG
|
|
1638
1593
|
// Verify the active semispace.
|
|
1639
1594
|
virtual void Verify();
|
|
@@ -1641,7 +1596,6 @@ class NewSpace : public Space {
|
|
|
1641
1596
|
virtual void Print() { to_space_.Print(); }
|
|
1642
1597
|
#endif
|
|
1643
1598
|
|
|
1644
|
-
#if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
|
|
1645
1599
|
// Iterates the active semispace to collect statistics.
|
|
1646
1600
|
void CollectStatistics();
|
|
1647
1601
|
// Reports previously collected statistics of the active semispace.
|
|
@@ -1654,7 +1608,6 @@ class NewSpace : public Space {
|
|
|
1654
1608
|
// to space during a scavenge GC.
|
|
1655
1609
|
void RecordAllocation(HeapObject* obj);
|
|
1656
1610
|
void RecordPromotion(HeapObject* obj);
|
|
1657
|
-
#endif
|
|
1658
1611
|
|
|
1659
1612
|
// Return whether the operation succeded.
|
|
1660
1613
|
bool CommitFromSpaceIfNeeded() {
|
|
@@ -1683,10 +1636,8 @@ class NewSpace : public Space {
|
|
|
1683
1636
|
AllocationInfo allocation_info_;
|
|
1684
1637
|
AllocationInfo mc_forwarding_info_;
|
|
1685
1638
|
|
|
1686
|
-
#if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
|
|
1687
1639
|
HistogramInfo* allocated_histogram_;
|
|
1688
1640
|
HistogramInfo* promoted_histogram_;
|
|
1689
|
-
#endif
|
|
1690
1641
|
|
|
1691
1642
|
// Implementation of AllocateRaw and MCAllocateRaw.
|
|
1692
1643
|
MUST_USE_RESULT inline MaybeObject* AllocateRawInternal(
|
|
@@ -2193,7 +2144,7 @@ class LargeObjectChunk {
|
|
|
2193
2144
|
static LargeObjectChunk* New(int size_in_bytes, Executability executable);
|
|
2194
2145
|
|
|
2195
2146
|
// Free the memory associated with the chunk.
|
|
2196
|
-
|
|
2147
|
+
void Free(Executability executable);
|
|
2197
2148
|
|
|
2198
2149
|
// Interpret a raw address as a large object chunk.
|
|
2199
2150
|
static LargeObjectChunk* FromAddress(Address address) {
|
|
@@ -2203,13 +2154,17 @@ class LargeObjectChunk {
|
|
|
2203
2154
|
// Returns the address of this chunk.
|
|
2204
2155
|
Address address() { return reinterpret_cast<Address>(this); }
|
|
2205
2156
|
|
|
2157
|
+
Page* GetPage() {
|
|
2158
|
+
return Page::FromAddress(RoundUp(address(), Page::kPageSize));
|
|
2159
|
+
}
|
|
2160
|
+
|
|
2206
2161
|
// Accessors for the fields of the chunk.
|
|
2207
2162
|
LargeObjectChunk* next() { return next_; }
|
|
2208
2163
|
void set_next(LargeObjectChunk* chunk) { next_ = chunk; }
|
|
2209
2164
|
size_t size() { return size_ & ~Page::kPageFlagMask; }
|
|
2210
2165
|
|
|
2211
2166
|
// Compute the start address in the chunk.
|
|
2212
|
-
|
|
2167
|
+
Address GetStartAddress() { return GetPage()->ObjectAreaStart(); }
|
|
2213
2168
|
|
|
2214
2169
|
// Returns the object in this chunk.
|
|
2215
2170
|
HeapObject* GetObject() { return HeapObject::FromAddress(GetStartAddress()); }
|
|
@@ -2296,12 +2251,6 @@ class LargeObjectSpace : public Space {
|
|
|
2296
2251
|
// may use some memory, leaving less for large objects.
|
|
2297
2252
|
virtual bool ReserveSpace(int bytes);
|
|
2298
2253
|
|
|
2299
|
-
#ifdef ENABLE_HEAP_PROTECTION
|
|
2300
|
-
// Protect/unprotect the space by marking it read-only/writable.
|
|
2301
|
-
void Protect();
|
|
2302
|
-
void Unprotect();
|
|
2303
|
-
#endif
|
|
2304
|
-
|
|
2305
2254
|
#ifdef DEBUG
|
|
2306
2255
|
virtual void Verify();
|
|
2307
2256
|
virtual void Print();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
|
3
3
|
// modification, are permitted provided that the following conditions are
|
|
4
4
|
// met:
|
|
@@ -30,6 +30,8 @@
|
|
|
30
30
|
#include "factory.h"
|
|
31
31
|
#include "string-stream.h"
|
|
32
32
|
|
|
33
|
+
#include "allocation-inl.h"
|
|
34
|
+
|
|
33
35
|
namespace v8 {
|
|
34
36
|
namespace internal {
|
|
35
37
|
|
data/lib/libv8/v8/src/string.js
CHANGED
|
@@ -149,7 +149,7 @@ function StringLastIndexOf(pat /* position */) { // length == 1
|
|
|
149
149
|
position = 0;
|
|
150
150
|
}
|
|
151
151
|
if (position + patLength < subLength) {
|
|
152
|
-
index = position
|
|
152
|
+
index = position;
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -170,7 +170,7 @@ function StringLocaleCompare(other) {
|
|
|
170
170
|
["String.prototype.localeCompare"]);
|
|
171
171
|
}
|
|
172
172
|
if (%_ArgumentsLength() === 0) return 0;
|
|
173
|
-
return %StringLocaleCompare(TO_STRING_INLINE(this),
|
|
173
|
+
return %StringLocaleCompare(TO_STRING_INLINE(this),
|
|
174
174
|
TO_STRING_INLINE(other));
|
|
175
175
|
}
|
|
176
176
|
|
|
@@ -251,7 +251,8 @@ function StringReplace(search, replace) {
|
|
|
251
251
|
|
|
252
252
|
// Compute the string to replace with.
|
|
253
253
|
if (IS_FUNCTION(replace)) {
|
|
254
|
-
|
|
254
|
+
var receiver = %GetDefaultReceiver(replace);
|
|
255
|
+
builder.add(%_CallFunction(receiver,
|
|
255
256
|
search,
|
|
256
257
|
start,
|
|
257
258
|
subject,
|
|
@@ -274,7 +275,7 @@ function StringReplace(search, replace) {
|
|
|
274
275
|
// the result.
|
|
275
276
|
function ExpandReplacement(string, subject, matchInfo, builder) {
|
|
276
277
|
var length = string.length;
|
|
277
|
-
var builder_elements = builder.elements;
|
|
278
|
+
var builder_elements = builder.elements;
|
|
278
279
|
var next = %StringIndexOf(string, '$', 0);
|
|
279
280
|
if (next < 0) {
|
|
280
281
|
if (length > 0) builder_elements.push(string);
|
|
@@ -418,7 +419,7 @@ function StringReplaceGlobalRegExpWithFunction(subject, regexp, replace) {
|
|
|
418
419
|
if (NUMBER_OF_CAPTURES(lastMatchInfo) == 2) {
|
|
419
420
|
var match_start = 0;
|
|
420
421
|
var override = new InternalArray(null, 0, subject);
|
|
421
|
-
var receiver = %
|
|
422
|
+
var receiver = %GetDefaultReceiver(replace);
|
|
422
423
|
while (i < len) {
|
|
423
424
|
var elem = res[i];
|
|
424
425
|
if (%_IsSmi(elem)) {
|
|
@@ -475,8 +476,9 @@ function StringReplaceNonGlobalRegExpWithFunction(subject, regexp, replace) {
|
|
|
475
476
|
// No captures, only the match, which is always valid.
|
|
476
477
|
var s = SubString(subject, index, endOfMatch);
|
|
477
478
|
// Don't call directly to avoid exposing the built-in global object.
|
|
479
|
+
var receiver = %GetDefaultReceiver(replace);
|
|
478
480
|
replacement =
|
|
479
|
-
%_CallFunction(
|
|
481
|
+
%_CallFunction(receiver, s, index, subject, replace);
|
|
480
482
|
} else {
|
|
481
483
|
var parameters = new InternalArray(m + 2);
|
|
482
484
|
for (var j = 0; j < m; j++) {
|
|
@@ -909,6 +911,8 @@ function ReplaceResultBuilder(str) {
|
|
|
909
911
|
this.special_string = str;
|
|
910
912
|
}
|
|
911
913
|
|
|
914
|
+
ReplaceResultBuilder.prototype.__proto__ = null;
|
|
915
|
+
|
|
912
916
|
|
|
913
917
|
ReplaceResultBuilder.prototype.add = function(str) {
|
|
914
918
|
str = TO_STRING_INLINE(str);
|
data/lib/libv8/v8/src/strtod.cc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
|
3
3
|
// modification, are permitted provided that the following conditions are
|
|
4
4
|
// met:
|
|
@@ -26,9 +26,13 @@
|
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
|
|
28
28
|
#include <stdarg.h>
|
|
29
|
-
#include <limits
|
|
29
|
+
#include <limits>
|
|
30
30
|
|
|
31
|
-
#
|
|
31
|
+
#ifndef V8_INFINITY
|
|
32
|
+
#define V8_INFINITY std::numeric_limits<double>::infinity()
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
#include "utils.h"
|
|
32
36
|
|
|
33
37
|
#include "strtod.h"
|
|
34
38
|
#include "bignum.h"
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
|
|
30
30
|
#include "api.h"
|
|
31
31
|
#include "arguments.h"
|
|
32
|
+
#include "ast.h"
|
|
33
|
+
#include "code-stubs.h"
|
|
32
34
|
#include "gdb-jit.h"
|
|
33
35
|
#include "ic-inl.h"
|
|
34
36
|
#include "stub-cache.h"
|
|
@@ -485,86 +487,7 @@ MaybeObject* StubCache::ComputeStoreField(String* name,
|
|
|
485
487
|
}
|
|
486
488
|
|
|
487
489
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
ExternalArrayType ElementsKindToExternalArrayType(JSObject::ElementsKind kind) {
|
|
491
|
-
switch (kind) {
|
|
492
|
-
case JSObject::EXTERNAL_BYTE_ELEMENTS:
|
|
493
|
-
return kExternalByteArray;
|
|
494
|
-
case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
|
495
|
-
return kExternalUnsignedByteArray;
|
|
496
|
-
case JSObject::EXTERNAL_SHORT_ELEMENTS:
|
|
497
|
-
return kExternalShortArray;
|
|
498
|
-
case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
|
499
|
-
return kExternalUnsignedShortArray;
|
|
500
|
-
case JSObject::EXTERNAL_INT_ELEMENTS:
|
|
501
|
-
return kExternalIntArray;
|
|
502
|
-
case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
|
|
503
|
-
return kExternalUnsignedIntArray;
|
|
504
|
-
case JSObject::EXTERNAL_FLOAT_ELEMENTS:
|
|
505
|
-
return kExternalFloatArray;
|
|
506
|
-
case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
|
|
507
|
-
return kExternalDoubleArray;
|
|
508
|
-
case JSObject::EXTERNAL_PIXEL_ELEMENTS:
|
|
509
|
-
return kExternalPixelArray;
|
|
510
|
-
default:
|
|
511
|
-
UNREACHABLE();
|
|
512
|
-
return static_cast<ExternalArrayType>(0);
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
} // anonymous namespace
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
|
|
520
|
-
JSObject* receiver,
|
|
521
|
-
bool is_store,
|
|
522
|
-
StrictModeFlag strict_mode) {
|
|
523
|
-
Code::Flags flags =
|
|
524
|
-
Code::ComputeMonomorphicFlags(
|
|
525
|
-
is_store ? Code::KEYED_STORE_IC :
|
|
526
|
-
Code::KEYED_LOAD_IC,
|
|
527
|
-
NORMAL,
|
|
528
|
-
strict_mode);
|
|
529
|
-
ExternalArrayType array_type =
|
|
530
|
-
ElementsKindToExternalArrayType(receiver->GetElementsKind());
|
|
531
|
-
String* name = is_store
|
|
532
|
-
? isolate()->heap()->KeyedStoreSpecializedMonomorphic_symbol()
|
|
533
|
-
: isolate()->heap()->KeyedLoadSpecializedMonomorphic_symbol();
|
|
534
|
-
Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
|
|
535
|
-
if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
|
|
536
|
-
|
|
537
|
-
MaybeObject* maybe_new_code = NULL;
|
|
538
|
-
if (is_store) {
|
|
539
|
-
ExternalArrayStoreStubCompiler compiler(strict_mode);
|
|
540
|
-
maybe_new_code = compiler.CompileStore(receiver, array_type);
|
|
541
|
-
} else {
|
|
542
|
-
ExternalArrayLoadStubCompiler compiler(strict_mode);
|
|
543
|
-
maybe_new_code = compiler.CompileLoad(receiver, array_type);
|
|
544
|
-
}
|
|
545
|
-
Code* code;
|
|
546
|
-
if (!maybe_new_code->To(&code)) return maybe_new_code;
|
|
547
|
-
code->set_external_array_type(array_type);
|
|
548
|
-
if (is_store) {
|
|
549
|
-
PROFILE(isolate_,
|
|
550
|
-
CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_STORE_IC_TAG,
|
|
551
|
-
Code::cast(code), 0));
|
|
552
|
-
} else {
|
|
553
|
-
PROFILE(isolate_,
|
|
554
|
-
CodeCreateEvent(Logger::KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG,
|
|
555
|
-
Code::cast(code), 0));
|
|
556
|
-
}
|
|
557
|
-
ASSERT(code->IsCode());
|
|
558
|
-
Object* result;
|
|
559
|
-
{ MaybeObject* maybe_result =
|
|
560
|
-
receiver->UpdateMapCodeCache(name, Code::cast(code));
|
|
561
|
-
if (!maybe_result->ToObject(&result)) return maybe_result;
|
|
562
|
-
}
|
|
563
|
-
return code;
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
MaybeObject* StubCache::ComputeKeyedLoadOrStoreFastElement(
|
|
490
|
+
MaybeObject* StubCache::ComputeKeyedLoadOrStoreElement(
|
|
568
491
|
JSObject* receiver,
|
|
569
492
|
bool is_store,
|
|
570
493
|
StrictModeFlag strict_mode) {
|
|
@@ -575,18 +498,19 @@ MaybeObject* StubCache::ComputeKeyedLoadOrStoreFastElement(
|
|
|
575
498
|
NORMAL,
|
|
576
499
|
strict_mode);
|
|
577
500
|
String* name = is_store
|
|
578
|
-
? isolate()->heap()->
|
|
579
|
-
: isolate()->heap()->
|
|
501
|
+
? isolate()->heap()->KeyedStoreElementMonomorphic_symbol()
|
|
502
|
+
: isolate()->heap()->KeyedLoadElementMonomorphic_symbol();
|
|
580
503
|
Object* maybe_code = receiver->map()->FindInCodeCache(name, flags);
|
|
581
504
|
if (!maybe_code->IsUndefined()) return Code::cast(maybe_code);
|
|
582
505
|
|
|
583
506
|
MaybeObject* maybe_new_code = NULL;
|
|
507
|
+
Map* receiver_map = receiver->map();
|
|
584
508
|
if (is_store) {
|
|
585
509
|
KeyedStoreStubCompiler compiler(strict_mode);
|
|
586
|
-
maybe_new_code = compiler.
|
|
510
|
+
maybe_new_code = compiler.CompileStoreElement(receiver_map);
|
|
587
511
|
} else {
|
|
588
512
|
KeyedLoadStubCompiler compiler;
|
|
589
|
-
maybe_new_code = compiler.
|
|
513
|
+
maybe_new_code = compiler.CompileLoadElement(receiver_map);
|
|
590
514
|
}
|
|
591
515
|
Code* code;
|
|
592
516
|
if (!maybe_new_code->To(&code)) return maybe_new_code;
|
|
@@ -929,12 +853,7 @@ MaybeObject* StubCache::ComputeCallGlobal(int argc,
|
|
|
929
853
|
CallStubCompiler compiler(
|
|
930
854
|
argc, in_loop, kind, extra_ic_state, cache_holder);
|
|
931
855
|
{ MaybeObject* maybe_code =
|
|
932
|
-
compiler.CompileCallGlobal(receiver,
|
|
933
|
-
holder,
|
|
934
|
-
cell,
|
|
935
|
-
function,
|
|
936
|
-
name,
|
|
937
|
-
extra_ic_state);
|
|
856
|
+
compiler.CompileCallGlobal(receiver, holder, cell, function, name);
|
|
938
857
|
if (!maybe_code->ToObject(&code)) return maybe_code;
|
|
939
858
|
}
|
|
940
859
|
ASSERT_EQ(flags, Code::cast(code)->flags());
|
|
@@ -1122,6 +1041,26 @@ MaybeObject* StubCache::ComputeCallNormal(int argc,
|
|
|
1122
1041
|
}
|
|
1123
1042
|
|
|
1124
1043
|
|
|
1044
|
+
MaybeObject* StubCache::ComputeCallArguments(int argc,
|
|
1045
|
+
InLoopFlag in_loop,
|
|
1046
|
+
Code::Kind kind) {
|
|
1047
|
+
ASSERT(kind == Code::KEYED_CALL_IC);
|
|
1048
|
+
Code::Flags flags = Code::ComputeFlags(kind,
|
|
1049
|
+
in_loop,
|
|
1050
|
+
MEGAMORPHIC,
|
|
1051
|
+
Code::kNoExtraICState,
|
|
1052
|
+
NORMAL,
|
|
1053
|
+
argc);
|
|
1054
|
+
Object* probe;
|
|
1055
|
+
{ MaybeObject* maybe_probe = ProbeCache(isolate_, flags);
|
|
1056
|
+
if (!maybe_probe->ToObject(&probe)) return maybe_probe;
|
|
1057
|
+
}
|
|
1058
|
+
if (!probe->IsUndefined()) return probe;
|
|
1059
|
+
StubCompiler compiler;
|
|
1060
|
+
return FillCache(isolate_, compiler.CompileCallArguments(flags));
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
|
|
1125
1064
|
MaybeObject* StubCache::ComputeCallMegamorphic(
|
|
1126
1065
|
int argc,
|
|
1127
1066
|
InLoopFlag in_loop,
|
|
@@ -1223,7 +1162,7 @@ void StubCache::Clear() {
|
|
|
1223
1162
|
}
|
|
1224
1163
|
|
|
1225
1164
|
|
|
1226
|
-
void StubCache::CollectMatchingMaps(
|
|
1165
|
+
void StubCache::CollectMatchingMaps(SmallMapList* types,
|
|
1227
1166
|
String* name,
|
|
1228
1167
|
Code::Flags flags) {
|
|
1229
1168
|
for (int i = 0; i < kPrimaryTableSize; i++) {
|
|
@@ -1452,8 +1391,7 @@ RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty) {
|
|
|
1452
1391
|
JSObject* recv = JSObject::cast(args[0]);
|
|
1453
1392
|
String* name = String::cast(args[1]);
|
|
1454
1393
|
Object* value = args[2];
|
|
1455
|
-
StrictModeFlag strict_mode =
|
|
1456
|
-
static_cast<StrictModeFlag>(Smi::cast(args[3])->value());
|
|
1394
|
+
StrictModeFlag strict_mode = static_cast<StrictModeFlag>(args.smi_at(3));
|
|
1457
1395
|
ASSERT(strict_mode == kStrictMode || strict_mode == kNonStrictMode);
|
|
1458
1396
|
ASSERT(recv->HasNamedInterceptor());
|
|
1459
1397
|
PropertyAttributes attr = NONE;
|
|
@@ -1465,8 +1403,8 @@ RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty) {
|
|
|
1465
1403
|
|
|
1466
1404
|
RUNTIME_FUNCTION(MaybeObject*, KeyedLoadPropertyWithInterceptor) {
|
|
1467
1405
|
JSObject* receiver = JSObject::cast(args[0]);
|
|
1468
|
-
ASSERT(
|
|
1469
|
-
uint32_t index =
|
|
1406
|
+
ASSERT(args.smi_at(1) >= 0);
|
|
1407
|
+
uint32_t index = args.smi_at(1);
|
|
1470
1408
|
return receiver->GetElementWithInterceptor(receiver, index);
|
|
1471
1409
|
}
|
|
1472
1410
|
|
|
@@ -1578,6 +1516,26 @@ MaybeObject* StubCompiler::CompileCallMegamorphic(Code::Flags flags) {
|
|
|
1578
1516
|
}
|
|
1579
1517
|
|
|
1580
1518
|
|
|
1519
|
+
MaybeObject* StubCompiler::CompileCallArguments(Code::Flags flags) {
|
|
1520
|
+
HandleScope scope(isolate());
|
|
1521
|
+
int argc = Code::ExtractArgumentsCountFromFlags(flags);
|
|
1522
|
+
KeyedCallIC::GenerateNonStrictArguments(masm(), argc);
|
|
1523
|
+
Code::Kind kind = Code::ExtractKindFromFlags(flags);
|
|
1524
|
+
Object* result;
|
|
1525
|
+
{ MaybeObject* maybe_result =
|
|
1526
|
+
GetCodeWithFlags(flags, "CompileCallArguments");
|
|
1527
|
+
if (!maybe_result->ToObject(&result)) return maybe_result;
|
|
1528
|
+
}
|
|
1529
|
+
Code* code = Code::cast(result);
|
|
1530
|
+
USE(code);
|
|
1531
|
+
PROFILE(isolate(),
|
|
1532
|
+
CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_MEGAMORPHIC_TAG),
|
|
1533
|
+
code, code->arguments_count()));
|
|
1534
|
+
GDBJIT(AddCode(GDBJITInterface::CALL_MEGAMORPHIC, Code::cast(code)));
|
|
1535
|
+
return result;
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
|
+
|
|
1581
1539
|
MaybeObject* StubCompiler::CompileCallMiss(Code::Flags flags) {
|
|
1582
1540
|
HandleScope scope(isolate());
|
|
1583
1541
|
int argc = Code::ExtractArgumentsCountFromFlags(flags);
|
|
@@ -1765,6 +1723,12 @@ MaybeObject* KeyedStoreStubCompiler::GetCode(PropertyType type,
|
|
|
1765
1723
|
}
|
|
1766
1724
|
|
|
1767
1725
|
|
|
1726
|
+
void KeyedStoreStubCompiler::GenerateStoreDictionaryElement(
|
|
1727
|
+
MacroAssembler* masm) {
|
|
1728
|
+
KeyedStoreIC::GenerateSlow(masm);
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
|
|
1768
1732
|
CallStubCompiler::CallStubCompiler(int argc,
|
|
1769
1733
|
InLoopFlag in_loop,
|
|
1770
1734
|
Code::Kind kind,
|
|
@@ -1928,38 +1892,4 @@ void CallOptimization::AnalyzePossibleApiFunction(JSFunction* function) {
|
|
|
1928
1892
|
}
|
|
1929
1893
|
|
|
1930
1894
|
|
|
1931
|
-
MaybeObject* ExternalArrayLoadStubCompiler::GetCode() {
|
|
1932
|
-
Object* result;
|
|
1933
|
-
Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC,
|
|
1934
|
-
NORMAL,
|
|
1935
|
-
strict_mode_);
|
|
1936
|
-
{ MaybeObject* maybe_result = GetCodeWithFlags(flags,
|
|
1937
|
-
"ExternalArrayLoadStub");
|
|
1938
|
-
if (!maybe_result->ToObject(&result)) return maybe_result;
|
|
1939
|
-
}
|
|
1940
|
-
Code* code = Code::cast(result);
|
|
1941
|
-
USE(code);
|
|
1942
|
-
PROFILE(isolate(),
|
|
1943
|
-
CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayLoadStub"));
|
|
1944
|
-
return result;
|
|
1945
|
-
}
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
MaybeObject* ExternalArrayStoreStubCompiler::GetCode() {
|
|
1949
|
-
Object* result;
|
|
1950
|
-
Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_STORE_IC,
|
|
1951
|
-
NORMAL,
|
|
1952
|
-
strict_mode_);
|
|
1953
|
-
{ MaybeObject* maybe_result = GetCodeWithFlags(flags,
|
|
1954
|
-
"ExternalArrayStoreStub");
|
|
1955
|
-
if (!maybe_result->ToObject(&result)) return maybe_result;
|
|
1956
|
-
}
|
|
1957
|
-
Code* code = Code::cast(result);
|
|
1958
|
-
USE(code);
|
|
1959
|
-
PROFILE(isolate(),
|
|
1960
|
-
CodeCreateEvent(Logger::STUB_TAG, code, "ExternalArrayStoreStub"));
|
|
1961
|
-
return result;
|
|
1962
|
-
}
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
1895
|
} } // namespace v8::internal
|