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/utils.h
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
#include <stdlib.h>
|
|
32
32
|
#include <string.h>
|
|
33
|
+
#include <climits>
|
|
33
34
|
|
|
34
35
|
#include "globals.h"
|
|
35
36
|
#include "checks.h"
|
|
@@ -52,11 +53,9 @@ static inline bool IsPowerOf2(T x) {
|
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
// X must be a power of 2. Returns the number of trailing zeros.
|
|
55
|
-
|
|
56
|
-
static inline int WhichPowerOf2(T x) {
|
|
56
|
+
static inline int WhichPowerOf2(uint32_t x) {
|
|
57
57
|
ASSERT(IsPowerOf2(x));
|
|
58
58
|
ASSERT(x != 0);
|
|
59
|
-
if (x < 0) return 31;
|
|
60
59
|
int bits = 0;
|
|
61
60
|
#ifdef DEBUG
|
|
62
61
|
int original_x = x;
|
|
@@ -795,6 +794,122 @@ inline Dest BitCast(const Source& source) {
|
|
|
795
794
|
return BitCastHelper<Dest, Source>::cast(source);
|
|
796
795
|
}
|
|
797
796
|
|
|
797
|
+
|
|
798
|
+
template<typename ElementType, int NumElements>
|
|
799
|
+
class EmbeddedContainer {
|
|
800
|
+
public:
|
|
801
|
+
EmbeddedContainer() : elems_() { }
|
|
802
|
+
|
|
803
|
+
int length() { return NumElements; }
|
|
804
|
+
ElementType& operator[](int i) {
|
|
805
|
+
ASSERT(i < length());
|
|
806
|
+
return elems_[i];
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
private:
|
|
810
|
+
ElementType elems_[NumElements];
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
template<typename ElementType>
|
|
815
|
+
class EmbeddedContainer<ElementType, 0> {
|
|
816
|
+
public:
|
|
817
|
+
int length() { return 0; }
|
|
818
|
+
ElementType& operator[](int i) {
|
|
819
|
+
UNREACHABLE();
|
|
820
|
+
static ElementType t = 0;
|
|
821
|
+
return t;
|
|
822
|
+
}
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
// Helper class for building result strings in a character buffer. The
|
|
827
|
+
// purpose of the class is to use safe operations that checks the
|
|
828
|
+
// buffer bounds on all operations in debug mode.
|
|
829
|
+
// This simple base class does not allow formatted output.
|
|
830
|
+
class SimpleStringBuilder {
|
|
831
|
+
public:
|
|
832
|
+
// Create a string builder with a buffer of the given size. The
|
|
833
|
+
// buffer is allocated through NewArray<char> and must be
|
|
834
|
+
// deallocated by the caller of Finalize().
|
|
835
|
+
explicit SimpleStringBuilder(int size);
|
|
836
|
+
|
|
837
|
+
SimpleStringBuilder(char* buffer, int size)
|
|
838
|
+
: buffer_(buffer, size), position_(0) { }
|
|
839
|
+
|
|
840
|
+
~SimpleStringBuilder() { if (!is_finalized()) Finalize(); }
|
|
841
|
+
|
|
842
|
+
int size() const { return buffer_.length(); }
|
|
843
|
+
|
|
844
|
+
// Get the current position in the builder.
|
|
845
|
+
int position() const {
|
|
846
|
+
ASSERT(!is_finalized());
|
|
847
|
+
return position_;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// Reset the position.
|
|
851
|
+
void Reset() { position_ = 0; }
|
|
852
|
+
|
|
853
|
+
// Add a single character to the builder. It is not allowed to add
|
|
854
|
+
// 0-characters; use the Finalize() method to terminate the string
|
|
855
|
+
// instead.
|
|
856
|
+
void AddCharacter(char c) {
|
|
857
|
+
ASSERT(c != '\0');
|
|
858
|
+
ASSERT(!is_finalized() && position_ < buffer_.length());
|
|
859
|
+
buffer_[position_++] = c;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// Add an entire string to the builder. Uses strlen() internally to
|
|
863
|
+
// compute the length of the input string.
|
|
864
|
+
void AddString(const char* s);
|
|
865
|
+
|
|
866
|
+
// Add the first 'n' characters of the given string 's' to the
|
|
867
|
+
// builder. The input string must have enough characters.
|
|
868
|
+
void AddSubstring(const char* s, int n);
|
|
869
|
+
|
|
870
|
+
// Add character padding to the builder. If count is non-positive,
|
|
871
|
+
// nothing is added to the builder.
|
|
872
|
+
void AddPadding(char c, int count);
|
|
873
|
+
|
|
874
|
+
// Add the decimal representation of the value.
|
|
875
|
+
void AddDecimalInteger(int value);
|
|
876
|
+
|
|
877
|
+
// Finalize the string by 0-terminating it and returning the buffer.
|
|
878
|
+
char* Finalize();
|
|
879
|
+
|
|
880
|
+
protected:
|
|
881
|
+
Vector<char> buffer_;
|
|
882
|
+
int position_;
|
|
883
|
+
|
|
884
|
+
bool is_finalized() const { return position_ < 0; }
|
|
885
|
+
private:
|
|
886
|
+
DISALLOW_IMPLICIT_CONSTRUCTORS(SimpleStringBuilder);
|
|
887
|
+
};
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
// A poor man's version of STL's bitset: A bit set of enums E (without explicit
|
|
891
|
+
// values), fitting into an integral type T.
|
|
892
|
+
template <class E, class T = int>
|
|
893
|
+
class EnumSet {
|
|
894
|
+
public:
|
|
895
|
+
explicit EnumSet(T bits = 0) : bits_(bits) {}
|
|
896
|
+
bool IsEmpty() const { return bits_ == 0; }
|
|
897
|
+
bool Contains(E element) const { return (bits_ & Mask(element)) != 0; }
|
|
898
|
+
void Add(E element) { bits_ |= Mask(element); }
|
|
899
|
+
void Remove(E element) { bits_ &= ~Mask(element); }
|
|
900
|
+
T ToIntegral() const { return bits_; }
|
|
901
|
+
|
|
902
|
+
private:
|
|
903
|
+
T Mask(E element) const {
|
|
904
|
+
// The strange typing in ASSERT is necessary to avoid stupid warnings, see:
|
|
905
|
+
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43680
|
|
906
|
+
ASSERT(element < static_cast<int>(sizeof(T) * CHAR_BIT));
|
|
907
|
+
return 1 << element;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
T bits_;
|
|
911
|
+
};
|
|
912
|
+
|
|
798
913
|
} } // namespace v8::internal
|
|
799
914
|
|
|
800
915
|
#endif // V8_UTILS_H_
|
|
@@ -126,8 +126,9 @@ namespace internal {
|
|
|
126
126
|
V8.GCCompactorCausedByWeakHandles) \
|
|
127
127
|
SC(gc_last_resort_from_js, V8.GCLastResortFromJS) \
|
|
128
128
|
SC(gc_last_resort_from_handles, V8.GCLastResortFromHandles) \
|
|
129
|
-
SC(
|
|
130
|
-
SC(
|
|
129
|
+
SC(map_to_fast_elements, V8.MapToFastElements) \
|
|
130
|
+
SC(map_to_fast_double_elements, V8.MapToFastDoubleElements) \
|
|
131
|
+
SC(map_to_slow_elements, V8.MapToSlowElements) \
|
|
131
132
|
SC(map_to_external_array_elements, V8.MapToExternalArrayElements) \
|
|
132
133
|
/* How is the generic keyed-load stub used? */ \
|
|
133
134
|
SC(keyed_load_generic_smi, V8.KeyedLoadGenericSmi) \
|
|
@@ -169,14 +170,10 @@ namespace internal {
|
|
|
169
170
|
SC(named_load_inline_field, V8.NamedLoadInlineFast) \
|
|
170
171
|
SC(keyed_load_inline_generic, V8.KeyedLoadInlineGeneric) \
|
|
171
172
|
SC(keyed_load_inline_fast, V8.KeyedLoadInlineFast) \
|
|
172
|
-
SC(named_load_full, V8.NamedLoadFull) \
|
|
173
|
-
SC(keyed_load_full, V8.KeyedLoadFull) \
|
|
174
173
|
SC(keyed_store_inline_generic, V8.KeyedStoreInlineGeneric) \
|
|
175
174
|
SC(keyed_store_inline_fast, V8.KeyedStoreInlineFast) \
|
|
176
175
|
SC(named_store_inline_generic, V8.NamedStoreInlineGeneric) \
|
|
177
176
|
SC(named_store_inline_fast, V8.NamedStoreInlineFast) \
|
|
178
|
-
SC(keyed_store_full, V8.KeyedStoreFull) \
|
|
179
|
-
SC(named_store_full, V8.NamedStoreFull) \
|
|
180
177
|
SC(keyed_store_inline_miss, V8.KeyedStoreInlineMiss) \
|
|
181
178
|
SC(named_store_global_inline, V8.NamedStoreGlobalInline) \
|
|
182
179
|
SC(named_store_global_inline_miss, V8.NamedStoreGlobalInlineMiss) \
|
data/lib/libv8/v8/src/v8.cc
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
#include "v8.h"
|
|
29
29
|
|
|
30
30
|
#include "isolate.h"
|
|
31
|
+
#include "elements.h"
|
|
31
32
|
#include "bootstrapper.h"
|
|
32
33
|
#include "debug.h"
|
|
33
34
|
#include "deoptimizer.h"
|
|
@@ -50,6 +51,9 @@ bool V8::has_been_disposed_ = false;
|
|
|
50
51
|
bool V8::has_fatal_error_ = false;
|
|
51
52
|
bool V8::use_crankshaft_ = true;
|
|
52
53
|
|
|
54
|
+
static Mutex* entropy_mutex = OS::CreateMutex();
|
|
55
|
+
static EntropySource entropy_source;
|
|
56
|
+
|
|
53
57
|
|
|
54
58
|
bool V8::Initialize(Deserializer* des) {
|
|
55
59
|
InitializeOncePerProcess();
|
|
@@ -100,42 +104,45 @@ void V8::TearDown() {
|
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
|
|
103
|
-
static uint32_t
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
static void seed_random(uint32_t* state) {
|
|
108
|
+
for (int i = 0; i < 2; ++i) {
|
|
109
|
+
if (FLAG_random_seed != 0) {
|
|
110
|
+
state[i] = FLAG_random_seed;
|
|
111
|
+
} else if (entropy_source != NULL) {
|
|
112
|
+
uint32_t val;
|
|
113
|
+
ScopedLock lock(entropy_mutex);
|
|
114
|
+
entropy_source(reinterpret_cast<unsigned char*>(&val), sizeof(uint32_t));
|
|
115
|
+
state[i] = val;
|
|
116
|
+
} else {
|
|
117
|
+
state[i] = random();
|
|
118
|
+
}
|
|
106
119
|
}
|
|
107
|
-
return FLAG_random_seed;
|
|
108
120
|
}
|
|
109
121
|
|
|
110
122
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
123
|
+
// Random number generator using George Marsaglia's MWC algorithm.
|
|
124
|
+
static uint32_t random_base(uint32_t* state) {
|
|
125
|
+
// Initialize seed using the system random().
|
|
126
|
+
// No non-zero seed will ever become zero again.
|
|
127
|
+
if (state[0] == 0) seed_random(state);
|
|
115
128
|
|
|
129
|
+
// Mix the bits. Never replaces state[i] with 0 if it is nonzero.
|
|
130
|
+
state[0] = 18273 * (state[0] & 0xFFFF) + (state[0] >> 16);
|
|
131
|
+
state[1] = 36969 * (state[1] & 0xFFFF) + (state[1] >> 16);
|
|
116
132
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (state->hi == 0) state->hi = random_seed();
|
|
124
|
-
if (state->lo == 0) state->lo = random_seed();
|
|
125
|
-
|
|
126
|
-
// Mix the bits.
|
|
127
|
-
state->hi = 36969 * (state->hi & 0xFFFF) + (state->hi >> 16);
|
|
128
|
-
state->lo = 18273 * (state->lo & 0xFFFF) + (state->lo >> 16);
|
|
129
|
-
return (state->hi << 16) + (state->lo & 0xFFFF);
|
|
133
|
+
return (state[0] << 14) + (state[1] & 0x3FFFF);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
void V8::SetEntropySource(EntropySource source) {
|
|
138
|
+
entropy_source = source;
|
|
130
139
|
}
|
|
131
140
|
|
|
132
141
|
|
|
133
142
|
// Used by JavaScript APIs
|
|
134
143
|
uint32_t V8::Random(Isolate* isolate) {
|
|
135
144
|
ASSERT(isolate == Isolate::Current());
|
|
136
|
-
|
|
137
|
-
static random_state state = {0, 0};
|
|
138
|
-
return random_base(&state);
|
|
145
|
+
return random_base(isolate->random_seed());
|
|
139
146
|
}
|
|
140
147
|
|
|
141
148
|
|
|
@@ -144,9 +151,7 @@ uint32_t V8::Random(Isolate* isolate) {
|
|
|
144
151
|
// leaks that could be used in an exploit.
|
|
145
152
|
uint32_t V8::RandomPrivate(Isolate* isolate) {
|
|
146
153
|
ASSERT(isolate == Isolate::Current());
|
|
147
|
-
|
|
148
|
-
static random_state state = {0, 0};
|
|
149
|
-
return random_base(&state);
|
|
154
|
+
return random_base(isolate->private_random_seed());
|
|
150
155
|
}
|
|
151
156
|
|
|
152
157
|
|
|
@@ -208,6 +213,8 @@ void V8::InitializeOncePerProcess() {
|
|
|
208
213
|
|
|
209
214
|
// Peephole optimization might interfere with deoptimization.
|
|
210
215
|
FLAG_peephole_optimization = !use_crankshaft_;
|
|
216
|
+
|
|
217
|
+
ElementsAccessor::InitializeOncePerProcess();
|
|
211
218
|
}
|
|
212
219
|
|
|
213
220
|
} } // namespace v8::internal
|
data/lib/libv8/v8/src/v8.h
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:
|
|
@@ -35,13 +35,10 @@
|
|
|
35
35
|
#if defined(GOOGLE3)
|
|
36
36
|
// Google3 special flag handling.
|
|
37
37
|
#if defined(DEBUG) && defined(NDEBUG)
|
|
38
|
-
//
|
|
39
|
-
//
|
|
38
|
+
// V8 only uses DEBUG and whenever it is set we are building a debug
|
|
39
|
+
// version of V8. We do not use NDEBUG and simply undef it here for
|
|
40
|
+
// consistency.
|
|
40
41
|
#undef NDEBUG
|
|
41
|
-
#elif !defined(DEBUG) && !defined(NDEBUG)
|
|
42
|
-
// If neither is defined in Google3, then we are building a debug v8. Mark it
|
|
43
|
-
// as such.
|
|
44
|
-
#define DEBUG
|
|
45
42
|
#endif
|
|
46
43
|
#endif // defined(GOOGLE3)
|
|
47
44
|
|
|
@@ -94,6 +91,9 @@ class V8 : public AllStatic {
|
|
|
94
91
|
static void FatalProcessOutOfMemory(const char* location,
|
|
95
92
|
bool take_snapshot = false);
|
|
96
93
|
|
|
94
|
+
// Allows an entropy source to be provided for use in random number
|
|
95
|
+
// generation.
|
|
96
|
+
static void SetEntropySource(EntropySource source);
|
|
97
97
|
// Random number generation support. Not cryptographically safe.
|
|
98
98
|
static uint32_t Random(Isolate* isolate);
|
|
99
99
|
// We use random numbers internally in memory allocation and in the
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
|
3
|
+
// modification, are permitted provided that the following conditions are
|
|
4
|
+
// met:
|
|
5
|
+
//
|
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
|
9
|
+
// copyright notice, this list of conditions and the following
|
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
|
11
|
+
// with the distribution.
|
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
13
|
+
// contributors may be used to endorse or promote products derived
|
|
14
|
+
// from this software without specific prior written permission.
|
|
15
|
+
//
|
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
#include <stdarg.h>
|
|
29
|
+
#include <limits.h>
|
|
30
|
+
|
|
31
|
+
#include "v8.h"
|
|
32
|
+
|
|
33
|
+
#include "conversions-inl.h"
|
|
34
|
+
#include "v8conversions.h"
|
|
35
|
+
#include "dtoa.h"
|
|
36
|
+
#include "factory.h"
|
|
37
|
+
#include "scanner-base.h"
|
|
38
|
+
#include "strtod.h"
|
|
39
|
+
|
|
40
|
+
namespace v8 {
|
|
41
|
+
namespace internal {
|
|
42
|
+
|
|
43
|
+
namespace {
|
|
44
|
+
|
|
45
|
+
// C++-style iterator adaptor for StringInputBuffer
|
|
46
|
+
// (unlike C++ iterators the end-marker has different type).
|
|
47
|
+
class StringInputBufferIterator {
|
|
48
|
+
public:
|
|
49
|
+
class EndMarker {};
|
|
50
|
+
|
|
51
|
+
explicit StringInputBufferIterator(StringInputBuffer* buffer);
|
|
52
|
+
|
|
53
|
+
int operator*() const;
|
|
54
|
+
void operator++();
|
|
55
|
+
bool operator==(EndMarker const&) const { return end_; }
|
|
56
|
+
bool operator!=(EndMarker const& m) const { return !end_; }
|
|
57
|
+
|
|
58
|
+
private:
|
|
59
|
+
StringInputBuffer* const buffer_;
|
|
60
|
+
int current_;
|
|
61
|
+
bool end_;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
StringInputBufferIterator::StringInputBufferIterator(
|
|
66
|
+
StringInputBuffer* buffer) : buffer_(buffer) {
|
|
67
|
+
++(*this);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
int StringInputBufferIterator::operator*() const {
|
|
71
|
+
return current_;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
void StringInputBufferIterator::operator++() {
|
|
76
|
+
end_ = !buffer_->has_more();
|
|
77
|
+
if (!end_) {
|
|
78
|
+
current_ = buffer_->GetNext();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
} // End anonymous namespace.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
double StringToDouble(UnicodeCache* unicode_cache,
|
|
85
|
+
String* str, int flags, double empty_string_val) {
|
|
86
|
+
StringShape shape(str);
|
|
87
|
+
if (shape.IsSequentialAscii()) {
|
|
88
|
+
const char* begin = SeqAsciiString::cast(str)->GetChars();
|
|
89
|
+
const char* end = begin + str->length();
|
|
90
|
+
return InternalStringToDouble(unicode_cache, begin, end, flags,
|
|
91
|
+
empty_string_val);
|
|
92
|
+
} else if (shape.IsSequentialTwoByte()) {
|
|
93
|
+
const uc16* begin = SeqTwoByteString::cast(str)->GetChars();
|
|
94
|
+
const uc16* end = begin + str->length();
|
|
95
|
+
return InternalStringToDouble(unicode_cache, begin, end, flags,
|
|
96
|
+
empty_string_val);
|
|
97
|
+
} else {
|
|
98
|
+
StringInputBuffer buffer(str);
|
|
99
|
+
return InternalStringToDouble(unicode_cache,
|
|
100
|
+
StringInputBufferIterator(&buffer),
|
|
101
|
+
StringInputBufferIterator::EndMarker(),
|
|
102
|
+
flags,
|
|
103
|
+
empty_string_val);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
double StringToInt(UnicodeCache* unicode_cache,
|
|
109
|
+
String* str,
|
|
110
|
+
int radix) {
|
|
111
|
+
StringShape shape(str);
|
|
112
|
+
if (shape.IsSequentialAscii()) {
|
|
113
|
+
const char* begin = SeqAsciiString::cast(str)->GetChars();
|
|
114
|
+
const char* end = begin + str->length();
|
|
115
|
+
return InternalStringToInt(unicode_cache, begin, end, radix);
|
|
116
|
+
} else if (shape.IsSequentialTwoByte()) {
|
|
117
|
+
const uc16* begin = SeqTwoByteString::cast(str)->GetChars();
|
|
118
|
+
const uc16* end = begin + str->length();
|
|
119
|
+
return InternalStringToInt(unicode_cache, begin, end, radix);
|
|
120
|
+
} else {
|
|
121
|
+
StringInputBuffer buffer(str);
|
|
122
|
+
return InternalStringToInt(unicode_cache,
|
|
123
|
+
StringInputBufferIterator(&buffer),
|
|
124
|
+
StringInputBufferIterator::EndMarker(),
|
|
125
|
+
radix);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
} } // namespace v8::internal
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
|
2
|
+
// Redistribution and use in source and binary forms, with or without
|
|
3
|
+
// modification, are permitted provided that the following conditions are
|
|
4
|
+
// met:
|
|
5
|
+
//
|
|
6
|
+
// * Redistributions of source code must retain the above copyright
|
|
7
|
+
// notice, this list of conditions and the following disclaimer.
|
|
8
|
+
// * Redistributions in binary form must reproduce the above
|
|
9
|
+
// copyright notice, this list of conditions and the following
|
|
10
|
+
// disclaimer in the documentation and/or other materials provided
|
|
11
|
+
// with the distribution.
|
|
12
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
13
|
+
// contributors may be used to endorse or promote products derived
|
|
14
|
+
// from this software without specific prior written permission.
|
|
15
|
+
//
|
|
16
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
17
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
18
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
19
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
20
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
21
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
22
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
23
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
24
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
#ifndef V8_V8CONVERSIONS_H_
|
|
29
|
+
#define V8_V8CONVERSIONS_H_
|
|
30
|
+
|
|
31
|
+
#include "conversions.h"
|
|
32
|
+
|
|
33
|
+
namespace v8 {
|
|
34
|
+
namespace internal {
|
|
35
|
+
|
|
36
|
+
// Convert from Number object to C integer.
|
|
37
|
+
static inline int32_t NumberToInt32(Object* number) {
|
|
38
|
+
if (number->IsSmi()) return Smi::cast(number)->value();
|
|
39
|
+
return DoubleToInt32(number->Number());
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
static inline uint32_t NumberToUint32(Object* number) {
|
|
44
|
+
if (number->IsSmi()) return Smi::cast(number)->value();
|
|
45
|
+
return DoubleToUint32(number->Number());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// Converts a string into a double value according to ECMA-262 9.3.1
|
|
50
|
+
double StringToDouble(UnicodeCache* unicode_cache,
|
|
51
|
+
String* str,
|
|
52
|
+
int flags,
|
|
53
|
+
double empty_string_val = 0);
|
|
54
|
+
|
|
55
|
+
// Converts a string into an integer.
|
|
56
|
+
double StringToInt(UnicodeCache* unicode_cache, String* str, int radix);
|
|
57
|
+
|
|
58
|
+
} } // namespace v8::internal
|
|
59
|
+
|
|
60
|
+
#endif // V8_V8CONVERSIONS_H_
|