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/bignum.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:
|
|
@@ -25,10 +25,9 @@
|
|
|
25
25
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
|
|
28
|
-
#include "
|
|
29
|
-
|
|
30
|
-
#include "bignum.h"
|
|
28
|
+
#include "../include/v8stdint.h"
|
|
31
29
|
#include "utils.h"
|
|
30
|
+
#include "bignum.h"
|
|
32
31
|
|
|
33
32
|
namespace v8 {
|
|
34
33
|
namespace internal {
|
|
@@ -47,8 +47,9 @@ namespace internal {
|
|
|
47
47
|
|
|
48
48
|
NativesExternalStringResource::NativesExternalStringResource(
|
|
49
49
|
Bootstrapper* bootstrapper,
|
|
50
|
-
const char* source
|
|
51
|
-
|
|
50
|
+
const char* source,
|
|
51
|
+
size_t length)
|
|
52
|
+
: data_(source), length_(length) {
|
|
52
53
|
if (bootstrapper->delete_these_non_arrays_on_tear_down_ == NULL) {
|
|
53
54
|
bootstrapper->delete_these_non_arrays_on_tear_down_ = new List<char*>(2);
|
|
54
55
|
}
|
|
@@ -75,16 +76,18 @@ Handle<String> Bootstrapper::NativesSourceLookup(int index) {
|
|
|
75
76
|
if (heap->natives_source_cache()->get(index)->IsUndefined()) {
|
|
76
77
|
if (!Snapshot::IsEnabled() || FLAG_new_snapshot) {
|
|
77
78
|
// We can use external strings for the natives.
|
|
79
|
+
Vector<const char> source = Natives::GetRawScriptSource(index);
|
|
78
80
|
NativesExternalStringResource* resource =
|
|
79
81
|
new NativesExternalStringResource(this,
|
|
80
|
-
|
|
82
|
+
source.start(),
|
|
83
|
+
source.length());
|
|
81
84
|
Handle<String> source_code =
|
|
82
85
|
factory->NewExternalStringFromAscii(resource);
|
|
83
86
|
heap->natives_source_cache()->set(index, *source_code);
|
|
84
87
|
} else {
|
|
85
88
|
// Old snapshot code can't cope with external strings at all.
|
|
86
89
|
Handle<String> source_code =
|
|
87
|
-
factory->NewStringFromAscii(Natives::
|
|
90
|
+
factory->NewStringFromAscii(Natives::GetRawScriptSource(index));
|
|
88
91
|
heap->natives_source_cache()->set(index, *source_code);
|
|
89
92
|
}
|
|
90
93
|
}
|
|
@@ -196,6 +199,7 @@ class Genesis BASE_EMBEDDED {
|
|
|
196
199
|
// New context initialization. Used for creating a context from scratch.
|
|
197
200
|
void InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
198
201
|
Handle<JSFunction> empty_function);
|
|
202
|
+
void InitializeExperimentalGlobal();
|
|
199
203
|
// Installs the contents of the native .js files on the global objects.
|
|
200
204
|
// Used for creating a context from scratch.
|
|
201
205
|
void InstallNativeFunctions();
|
|
@@ -811,7 +815,6 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
811
815
|
// --- G l o b a l C o n t e x t ---
|
|
812
816
|
// Use the empty function as closure (no scope info).
|
|
813
817
|
global_context()->set_closure(*empty_function);
|
|
814
|
-
global_context()->set_fcontext(*global_context());
|
|
815
818
|
global_context()->set_previous(NULL);
|
|
816
819
|
// Set extension and global object.
|
|
817
820
|
global_context()->set_extension(*inner_global);
|
|
@@ -1052,6 +1055,24 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
1052
1055
|
#endif
|
|
1053
1056
|
}
|
|
1054
1057
|
|
|
1058
|
+
{ // --- aliased_arguments_boilerplate_
|
|
1059
|
+
Handle<Map> old_map(global_context()->arguments_boilerplate()->map());
|
|
1060
|
+
Handle<Map> new_map = factory->CopyMapDropTransitions(old_map);
|
|
1061
|
+
new_map->set_pre_allocated_property_fields(2);
|
|
1062
|
+
Handle<JSObject> result = factory->NewJSObjectFromMap(new_map);
|
|
1063
|
+
new_map->set_elements_kind(JSObject::NON_STRICT_ARGUMENTS_ELEMENTS);
|
|
1064
|
+
// Set up a well-formed parameter map to make assertions happy.
|
|
1065
|
+
Handle<FixedArray> elements = factory->NewFixedArray(2);
|
|
1066
|
+
elements->set_map(heap->non_strict_arguments_elements_map());
|
|
1067
|
+
Handle<FixedArray> array;
|
|
1068
|
+
array = factory->NewFixedArray(0);
|
|
1069
|
+
elements->set(0, *array);
|
|
1070
|
+
array = factory->NewFixedArray(0);
|
|
1071
|
+
elements->set(1, *array);
|
|
1072
|
+
result->set_elements(*elements);
|
|
1073
|
+
global_context()->set_aliased_arguments_boilerplate(*result);
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1055
1076
|
{ // --- strict mode arguments boilerplate
|
|
1056
1077
|
const PropertyAttributes attributes =
|
|
1057
1078
|
static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
@@ -1139,7 +1160,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
1139
1160
|
|
|
1140
1161
|
|
|
1141
1162
|
{
|
|
1142
|
-
//
|
|
1163
|
+
// Set up the call-as-function delegate.
|
|
1143
1164
|
Handle<Code> code =
|
|
1144
1165
|
Handle<Code>(isolate->builtins()->builtin(
|
|
1145
1166
|
Builtins::kHandleApiCallAsFunction));
|
|
@@ -1151,7 +1172,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
1151
1172
|
}
|
|
1152
1173
|
|
|
1153
1174
|
{
|
|
1154
|
-
//
|
|
1175
|
+
// Set up the call-as-constructor delegate.
|
|
1155
1176
|
Handle<Code> code =
|
|
1156
1177
|
Handle<Code>(isolate->builtins()->builtin(
|
|
1157
1178
|
Builtins::kHandleApiCallAsConstructor));
|
|
@@ -1170,6 +1191,20 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
1170
1191
|
}
|
|
1171
1192
|
|
|
1172
1193
|
|
|
1194
|
+
void Genesis::InitializeExperimentalGlobal() {
|
|
1195
|
+
Handle<JSObject> global = Handle<JSObject>(global_context()->global());
|
|
1196
|
+
|
|
1197
|
+
// TODO(mstarzinger): Move this into Genesis::InitializeGlobal once we no
|
|
1198
|
+
// longer need to live behind a flag, so WeakMap gets added to the snapshot.
|
|
1199
|
+
if (FLAG_harmony_weakmaps) { // -- W e a k M a p
|
|
1200
|
+
Handle<JSObject> prototype =
|
|
1201
|
+
factory()->NewJSObject(isolate()->object_function(), TENURED);
|
|
1202
|
+
InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize,
|
|
1203
|
+
prototype, Builtins::kIllegal, true);
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
|
|
1173
1208
|
bool Genesis::CompileBuiltin(Isolate* isolate, int index) {
|
|
1174
1209
|
Vector<const char> name = Natives::GetScriptName(index);
|
|
1175
1210
|
Handle<String> source_code =
|
|
@@ -1182,7 +1217,8 @@ bool Genesis::CompileExperimentalBuiltin(Isolate* isolate, int index) {
|
|
|
1182
1217
|
Vector<const char> name = ExperimentalNatives::GetScriptName(index);
|
|
1183
1218
|
Factory* factory = isolate->factory();
|
|
1184
1219
|
Handle<String> source_code =
|
|
1185
|
-
factory->NewStringFromAscii(
|
|
1220
|
+
factory->NewStringFromAscii(
|
|
1221
|
+
ExperimentalNatives::GetRawScriptSource(index));
|
|
1186
1222
|
return CompileNative(name, source_code);
|
|
1187
1223
|
}
|
|
1188
1224
|
|
|
@@ -1288,7 +1324,9 @@ void Genesis::InstallNativeFunctions() {
|
|
|
1288
1324
|
|
|
1289
1325
|
void Genesis::InstallExperimentalNativeFunctions() {
|
|
1290
1326
|
if (FLAG_harmony_proxies) {
|
|
1327
|
+
INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap);
|
|
1291
1328
|
INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap);
|
|
1329
|
+
INSTALL_NATIVE(JSFunction, "DerivedSetTrap", derived_set_trap);
|
|
1292
1330
|
}
|
|
1293
1331
|
}
|
|
1294
1332
|
|
|
@@ -1548,8 +1586,6 @@ bool Genesis::InstallNatives() {
|
|
|
1548
1586
|
global_context()->set_string_function_prototype_map(
|
|
1549
1587
|
HeapObject::cast(string_function->initial_map()->prototype())->map());
|
|
1550
1588
|
|
|
1551
|
-
InstallBuiltinFunctionIds();
|
|
1552
|
-
|
|
1553
1589
|
// Install Function.prototype.call and apply.
|
|
1554
1590
|
{ Handle<String> key = factory()->function_class_symbol();
|
|
1555
1591
|
Handle<JSFunction> function =
|
|
@@ -1583,6 +1619,8 @@ bool Genesis::InstallNatives() {
|
|
|
1583
1619
|
apply->shared()->set_length(2);
|
|
1584
1620
|
}
|
|
1585
1621
|
|
|
1622
|
+
InstallBuiltinFunctionIds();
|
|
1623
|
+
|
|
1586
1624
|
// Create a constructor for RegExp results (a variant of Array that
|
|
1587
1625
|
// predefines the two properties index and match).
|
|
1588
1626
|
{
|
|
@@ -1657,6 +1695,11 @@ bool Genesis::InstallExperimentalNatives() {
|
|
|
1657
1695
|
"native proxy.js") == 0) {
|
|
1658
1696
|
if (!CompileExperimentalBuiltin(isolate(), i)) return false;
|
|
1659
1697
|
}
|
|
1698
|
+
if (FLAG_harmony_weakmaps &&
|
|
1699
|
+
strcmp(ExperimentalNatives::GetScriptName(i).start(),
|
|
1700
|
+
"native weakmap.js") == 0) {
|
|
1701
|
+
if (!CompileExperimentalBuiltin(isolate(), i)) return false;
|
|
1702
|
+
}
|
|
1660
1703
|
}
|
|
1661
1704
|
|
|
1662
1705
|
InstallExperimentalNativeFunctions();
|
|
@@ -2146,7 +2189,8 @@ Genesis::Genesis(Isolate* isolate,
|
|
|
2146
2189
|
isolate->counters()->contexts_created_from_scratch()->Increment();
|
|
2147
2190
|
}
|
|
2148
2191
|
|
|
2149
|
-
//
|
|
2192
|
+
// Initialize experimental globals and install experimental natives.
|
|
2193
|
+
InitializeExperimentalGlobal();
|
|
2150
2194
|
if (!InstallExperimentalNatives()) return;
|
|
2151
2195
|
|
|
2152
2196
|
result_ = global_context_;
|
|
@@ -168,8 +168,9 @@ class BootstrapperActive BASE_EMBEDDED {
|
|
|
168
168
|
class NativesExternalStringResource
|
|
169
169
|
: public v8::String::ExternalAsciiStringResource {
|
|
170
170
|
public:
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
NativesExternalStringResource(Bootstrapper* bootstrapper,
|
|
172
|
+
const char* source,
|
|
173
|
+
size_t length);
|
|
173
174
|
|
|
174
175
|
const char* data() const {
|
|
175
176
|
return data_;
|
|
@@ -1202,10 +1202,10 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallAsFunctionOrConstructor(
|
|
|
1202
1202
|
ASSERT(!CalledAsConstructor(isolate));
|
|
1203
1203
|
Heap* heap = isolate->heap();
|
|
1204
1204
|
|
|
1205
|
-
Handle<Object> receiver = args.
|
|
1205
|
+
Handle<Object> receiver = args.receiver();
|
|
1206
1206
|
|
|
1207
1207
|
// Get the object called.
|
|
1208
|
-
JSObject* obj = JSObject::cast(*
|
|
1208
|
+
JSObject* obj = JSObject::cast(*receiver);
|
|
1209
1209
|
|
|
1210
1210
|
// Get the invocation callback from the function descriptor that was
|
|
1211
1211
|
// used to create the called object.
|
|
@@ -1351,6 +1351,9 @@ static void Generate_KeyedLoadIC_IndexedInterceptor(MacroAssembler* masm) {
|
|
|
1351
1351
|
KeyedLoadIC::GenerateIndexedInterceptor(masm);
|
|
1352
1352
|
}
|
|
1353
1353
|
|
|
1354
|
+
static void Generate_KeyedLoadIC_NonStrictArguments(MacroAssembler* masm) {
|
|
1355
|
+
KeyedLoadIC::GenerateNonStrictArguments(masm);
|
|
1356
|
+
}
|
|
1354
1357
|
|
|
1355
1358
|
static void Generate_StoreIC_Initialize(MacroAssembler* masm) {
|
|
1356
1359
|
StoreIC::GenerateInitialize(masm);
|
|
@@ -1441,6 +1444,9 @@ static void Generate_KeyedStoreIC_Initialize_Strict(MacroAssembler* masm) {
|
|
|
1441
1444
|
KeyedStoreIC::GenerateInitialize(masm);
|
|
1442
1445
|
}
|
|
1443
1446
|
|
|
1447
|
+
static void Generate_KeyedStoreIC_NonStrictArguments(MacroAssembler* masm) {
|
|
1448
|
+
KeyedStoreIC::GenerateNonStrictArguments(masm);
|
|
1449
|
+
}
|
|
1444
1450
|
|
|
1445
1451
|
#ifdef ENABLE_DEBUGGER_SUPPORT
|
|
1446
1452
|
static void Generate_LoadIC_DebugBreak(MacroAssembler* masm) {
|
data/lib/libv8/v8/src/builtins.h
CHANGED
|
@@ -131,6 +131,8 @@ enum BuiltinExtraArguments {
|
|
|
131
131
|
V(KeyedLoadIC_String, KEYED_LOAD_IC, MEGAMORPHIC, \
|
|
132
132
|
Code::kNoExtraICState) \
|
|
133
133
|
V(KeyedLoadIC_IndexedInterceptor, KEYED_LOAD_IC, MEGAMORPHIC, \
|
|
134
|
+
Code::kNoExtraICState) \
|
|
135
|
+
V(KeyedLoadIC_NonStrictArguments, KEYED_LOAD_IC, MEGAMORPHIC, \
|
|
134
136
|
Code::kNoExtraICState) \
|
|
135
137
|
\
|
|
136
138
|
V(StoreIC_Initialize, STORE_IC, UNINITIALIZED, \
|
|
@@ -163,6 +165,8 @@ enum BuiltinExtraArguments {
|
|
|
163
165
|
kStrictMode) \
|
|
164
166
|
V(KeyedStoreIC_Generic_Strict, KEYED_STORE_IC, MEGAMORPHIC, \
|
|
165
167
|
kStrictMode) \
|
|
168
|
+
V(KeyedStoreIC_NonStrictArguments, KEYED_STORE_IC, MEGAMORPHIC, \
|
|
169
|
+
Code::kNoExtraICState) \
|
|
166
170
|
\
|
|
167
171
|
/* Uses KeyedLoadIC_Initialize; must be after in list. */ \
|
|
168
172
|
V(FunctionCall, BUILTIN, UNINITIALIZED, \
|
|
@@ -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,10 +26,12 @@
|
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
|
|
28
28
|
#include <stdarg.h>
|
|
29
|
+
#include <math.h>
|
|
29
30
|
#include <limits.h>
|
|
30
31
|
|
|
31
|
-
#include "
|
|
32
|
-
|
|
32
|
+
#include "../include/v8stdint.h"
|
|
33
|
+
#include "globals.h"
|
|
34
|
+
#include "checks.h"
|
|
33
35
|
#include "cached-powers.h"
|
|
34
36
|
|
|
35
37
|
namespace v8 {
|
|
@@ -147,7 +149,9 @@ void PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
|
|
|
147
149
|
DiyFp* power,
|
|
148
150
|
int* decimal_exponent) {
|
|
149
151
|
int kQ = DiyFp::kSignificandSize;
|
|
150
|
-
|
|
152
|
+
// Some platforms return incorrect sign on 0 result. We can ignore that here,
|
|
153
|
+
// which means we can avoid depending on platform.h.
|
|
154
|
+
double k = ceil((min_exponent + kQ - 1) * kD_1_LOG2_10);
|
|
151
155
|
int foo = kCachedPowersOffset;
|
|
152
156
|
int index =
|
|
153
157
|
(foo + static_cast<int>(k) - 1) / kDecimalExponentDistance + 1;
|
data/lib/libv8/v8/src/checks.h
CHANGED
|
@@ -251,9 +251,9 @@ template <> class StaticAssertion<true> { };
|
|
|
251
251
|
// actually causes each use to introduce a new defined type with a
|
|
252
252
|
// name depending on the source line.
|
|
253
253
|
template <int> class StaticAssertionHelper { };
|
|
254
|
-
#define STATIC_CHECK(test)
|
|
255
|
-
typedef
|
|
256
|
-
StaticAssertionHelper<sizeof(StaticAssertion<static_cast<bool>(test)>)> \
|
|
254
|
+
#define STATIC_CHECK(test) \
|
|
255
|
+
typedef \
|
|
256
|
+
StaticAssertionHelper<sizeof(StaticAssertion<static_cast<bool>((test))>)> \
|
|
257
257
|
SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__)
|
|
258
258
|
|
|
259
259
|
|
|
@@ -61,21 +61,29 @@ void CodeStub::GenerateCode(MacroAssembler* masm) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
|
|
64
|
+
SmartPointer<const char> CodeStub::GetName() {
|
|
65
|
+
char buffer[100];
|
|
66
|
+
NoAllocationStringAllocator allocator(buffer,
|
|
67
|
+
static_cast<unsigned>(sizeof(buffer)));
|
|
68
|
+
StringStream stream(&allocator);
|
|
69
|
+
PrintName(&stream);
|
|
70
|
+
return stream.ToCString();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
64
74
|
void CodeStub::RecordCodeGeneration(Code* code, MacroAssembler* masm) {
|
|
65
75
|
code->set_major_key(MajorKey());
|
|
66
76
|
|
|
67
77
|
Isolate* isolate = masm->isolate();
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
SmartPointer<const char> name = GetName();
|
|
79
|
+
PROFILE(isolate, CodeCreateEvent(Logger::STUB_TAG, code, *name));
|
|
80
|
+
GDBJIT(AddCode(GDBJITInterface::STUB, *name, code));
|
|
70
81
|
Counters* counters = isolate->counters();
|
|
71
82
|
counters->total_stubs_code_size()->Increment(code->instruction_size());
|
|
72
83
|
|
|
73
84
|
#ifdef ENABLE_DISASSEMBLER
|
|
74
85
|
if (FLAG_print_code_stubs) {
|
|
75
|
-
|
|
76
|
-
Print();
|
|
77
|
-
#endif
|
|
78
|
-
code->Disassemble(GetName());
|
|
86
|
+
code->Disassemble(*name);
|
|
79
87
|
PrintF("\n");
|
|
80
88
|
}
|
|
81
89
|
#endif
|
|
@@ -170,7 +178,7 @@ MaybeObject* CodeStub::TryGetCode() {
|
|
|
170
178
|
const char* CodeStub::MajorName(CodeStub::Major major_key,
|
|
171
179
|
bool allow_unknown_keys) {
|
|
172
180
|
switch (major_key) {
|
|
173
|
-
#define DEF_CASE(name) case name: return #name;
|
|
181
|
+
#define DEF_CASE(name) case name: return #name "Stub";
|
|
174
182
|
CODE_STUB_LIST(DEF_CASE)
|
|
175
183
|
#undef DEF_CASE
|
|
176
184
|
default:
|
|
@@ -213,13 +221,7 @@ void ICCompareStub::Generate(MacroAssembler* masm) {
|
|
|
213
221
|
}
|
|
214
222
|
|
|
215
223
|
|
|
216
|
-
|
|
217
|
-
if (name_ != NULL) return name_;
|
|
218
|
-
const int kMaxNameLength = 100;
|
|
219
|
-
name_ = Isolate::Current()->bootstrapper()->AllocateAutoDeletedArray(
|
|
220
|
-
kMaxNameLength);
|
|
221
|
-
if (name_ == NULL) return "OOM";
|
|
222
|
-
|
|
224
|
+
void InstanceofStub::PrintName(StringStream* stream) {
|
|
223
225
|
const char* args = "";
|
|
224
226
|
if (HasArgsInRegisters()) {
|
|
225
227
|
args = "_REGS";
|
|
@@ -235,32 +237,175 @@ const char* InstanceofStub::GetName() {
|
|
|
235
237
|
return_true_false_object = "_TRUEFALSE";
|
|
236
238
|
}
|
|
237
239
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
240
|
+
stream->Add("InstanceofStub%s%s%s",
|
|
241
|
+
args,
|
|
242
|
+
inline_check,
|
|
243
|
+
return_true_false_object);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
void KeyedLoadElementStub::Generate(MacroAssembler* masm) {
|
|
248
|
+
switch (elements_kind_) {
|
|
249
|
+
case JSObject::FAST_ELEMENTS:
|
|
250
|
+
KeyedLoadStubCompiler::GenerateLoadFastElement(masm);
|
|
251
|
+
break;
|
|
252
|
+
case JSObject::FAST_DOUBLE_ELEMENTS:
|
|
253
|
+
KeyedLoadStubCompiler::GenerateLoadFastDoubleElement(masm);
|
|
254
|
+
break;
|
|
255
|
+
case JSObject::EXTERNAL_BYTE_ELEMENTS:
|
|
256
|
+
case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
|
257
|
+
case JSObject::EXTERNAL_SHORT_ELEMENTS:
|
|
258
|
+
case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
|
259
|
+
case JSObject::EXTERNAL_INT_ELEMENTS:
|
|
260
|
+
case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
|
|
261
|
+
case JSObject::EXTERNAL_FLOAT_ELEMENTS:
|
|
262
|
+
case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
|
|
263
|
+
case JSObject::EXTERNAL_PIXEL_ELEMENTS:
|
|
264
|
+
KeyedLoadStubCompiler::GenerateLoadExternalArray(masm, elements_kind_);
|
|
265
|
+
break;
|
|
266
|
+
case JSObject::DICTIONARY_ELEMENTS:
|
|
267
|
+
KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm);
|
|
268
|
+
break;
|
|
269
|
+
case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
|
|
270
|
+
UNREACHABLE();
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
void KeyedStoreElementStub::Generate(MacroAssembler* masm) {
|
|
277
|
+
switch (elements_kind_) {
|
|
278
|
+
case JSObject::FAST_ELEMENTS:
|
|
279
|
+
KeyedStoreStubCompiler::GenerateStoreFastElement(masm, is_js_array_);
|
|
280
|
+
break;
|
|
281
|
+
case JSObject::FAST_DOUBLE_ELEMENTS:
|
|
282
|
+
KeyedStoreStubCompiler::GenerateStoreFastDoubleElement(masm,
|
|
283
|
+
is_js_array_);
|
|
284
|
+
break;
|
|
285
|
+
case JSObject::EXTERNAL_BYTE_ELEMENTS:
|
|
286
|
+
case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS:
|
|
287
|
+
case JSObject::EXTERNAL_SHORT_ELEMENTS:
|
|
288
|
+
case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS:
|
|
289
|
+
case JSObject::EXTERNAL_INT_ELEMENTS:
|
|
290
|
+
case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS:
|
|
291
|
+
case JSObject::EXTERNAL_FLOAT_ELEMENTS:
|
|
292
|
+
case JSObject::EXTERNAL_DOUBLE_ELEMENTS:
|
|
293
|
+
case JSObject::EXTERNAL_PIXEL_ELEMENTS:
|
|
294
|
+
KeyedStoreStubCompiler::GenerateStoreExternalArray(masm, elements_kind_);
|
|
295
|
+
break;
|
|
296
|
+
case JSObject::DICTIONARY_ELEMENTS:
|
|
297
|
+
KeyedStoreStubCompiler::GenerateStoreDictionaryElement(masm);
|
|
298
|
+
break;
|
|
299
|
+
case JSObject::NON_STRICT_ARGUMENTS_ELEMENTS:
|
|
300
|
+
UNREACHABLE();
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
void ArgumentsAccessStub::PrintName(StringStream* stream) {
|
|
307
|
+
const char* type_name = NULL; // Make g++ happy.
|
|
308
|
+
switch (type_) {
|
|
309
|
+
case READ_ELEMENT: type_name = "ReadElement"; break;
|
|
310
|
+
case NEW_NON_STRICT_FAST: type_name = "NewNonStrictFast"; break;
|
|
311
|
+
case NEW_NON_STRICT_SLOW: type_name = "NewNonStrictSlow"; break;
|
|
312
|
+
case NEW_STRICT: type_name = "NewStrict"; break;
|
|
313
|
+
}
|
|
314
|
+
stream->Add("ArgumentsAccessStub_%s", type_name);
|
|
244
315
|
}
|
|
245
316
|
|
|
246
317
|
|
|
247
|
-
void
|
|
248
|
-
|
|
318
|
+
void CallFunctionStub::PrintName(StringStream* stream) {
|
|
319
|
+
const char* in_loop_name = NULL; // Make g++ happy.
|
|
320
|
+
switch (in_loop_) {
|
|
321
|
+
case NOT_IN_LOOP: in_loop_name = ""; break;
|
|
322
|
+
case IN_LOOP: in_loop_name = "_InLoop"; break;
|
|
323
|
+
}
|
|
324
|
+
const char* flags_name = NULL; // Make g++ happy.
|
|
325
|
+
switch (flags_) {
|
|
326
|
+
case NO_CALL_FUNCTION_FLAGS: flags_name = ""; break;
|
|
327
|
+
case RECEIVER_MIGHT_BE_IMPLICIT: flags_name = "_Implicit"; break;
|
|
328
|
+
}
|
|
329
|
+
stream->Add("CallFunctionStub_Args%d%s%s", argc_, in_loop_name, flags_name);
|
|
249
330
|
}
|
|
250
331
|
|
|
251
332
|
|
|
252
|
-
void
|
|
253
|
-
|
|
333
|
+
void ToBooleanStub::PrintName(StringStream* stream) {
|
|
334
|
+
stream->Add("ToBooleanStub_");
|
|
335
|
+
types_.Print(stream);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
void ToBooleanStub::Types::Print(StringStream* stream) const {
|
|
340
|
+
if (IsEmpty()) stream->Add("None");
|
|
341
|
+
if (Contains(UNDEFINED)) stream->Add("Undefined");
|
|
342
|
+
if (Contains(BOOLEAN)) stream->Add("Bool");
|
|
343
|
+
if (Contains(NULL_TYPE)) stream->Add("Null");
|
|
344
|
+
if (Contains(SMI)) stream->Add("Smi");
|
|
345
|
+
if (Contains(SPEC_OBJECT)) stream->Add("SpecObject");
|
|
346
|
+
if (Contains(STRING)) stream->Add("String");
|
|
347
|
+
if (Contains(HEAP_NUMBER)) stream->Add("HeapNumber");
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
void ToBooleanStub::Types::TraceTransition(Types to) const {
|
|
352
|
+
if (!FLAG_trace_ic) return;
|
|
353
|
+
char buffer[100];
|
|
354
|
+
NoAllocationStringAllocator allocator(buffer,
|
|
355
|
+
static_cast<unsigned>(sizeof(buffer)));
|
|
356
|
+
StringStream stream(&allocator);
|
|
357
|
+
stream.Add("[ToBooleanIC (");
|
|
358
|
+
Print(&stream);
|
|
359
|
+
stream.Add("->");
|
|
360
|
+
to.Print(&stream);
|
|
361
|
+
stream.Add(")]\n");
|
|
362
|
+
stream.OutputToStdOut();
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
bool ToBooleanStub::Types::Record(Handle<Object> object) {
|
|
367
|
+
if (object->IsUndefined()) {
|
|
368
|
+
Add(UNDEFINED);
|
|
369
|
+
return false;
|
|
370
|
+
} else if (object->IsBoolean()) {
|
|
371
|
+
Add(BOOLEAN);
|
|
372
|
+
return object->IsTrue();
|
|
373
|
+
} else if (object->IsNull()) {
|
|
374
|
+
Add(NULL_TYPE);
|
|
375
|
+
return false;
|
|
376
|
+
} else if (object->IsSmi()) {
|
|
377
|
+
Add(SMI);
|
|
378
|
+
return Smi::cast(*object)->value() != 0;
|
|
379
|
+
} else if (object->IsSpecObject()) {
|
|
380
|
+
Add(SPEC_OBJECT);
|
|
381
|
+
return !object->IsUndetectableObject();
|
|
382
|
+
} else if (object->IsString()) {
|
|
383
|
+
Add(STRING);
|
|
384
|
+
return !object->IsUndetectableObject() &&
|
|
385
|
+
String::cast(*object)->length() != 0;
|
|
386
|
+
} else if (object->IsHeapNumber()) {
|
|
387
|
+
ASSERT(!object->IsUndetectableObject());
|
|
388
|
+
Add(HEAP_NUMBER);
|
|
389
|
+
double value = HeapNumber::cast(*object)->value();
|
|
390
|
+
return value != 0 && !isnan(value);
|
|
391
|
+
} else {
|
|
392
|
+
// We should never see an internal object at runtime here!
|
|
393
|
+
UNREACHABLE();
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
254
396
|
}
|
|
255
397
|
|
|
256
398
|
|
|
257
|
-
|
|
258
|
-
|
|
399
|
+
bool ToBooleanStub::Types::NeedsMap() const {
|
|
400
|
+
return Contains(ToBooleanStub::SPEC_OBJECT)
|
|
401
|
+
|| Contains(ToBooleanStub::STRING)
|
|
402
|
+
|| Contains(ToBooleanStub::HEAP_NUMBER);
|
|
259
403
|
}
|
|
260
404
|
|
|
261
405
|
|
|
262
|
-
|
|
263
|
-
|
|
406
|
+
bool ToBooleanStub::Types::CanBeUndetectable() const {
|
|
407
|
+
return Contains(ToBooleanStub::SPEC_OBJECT)
|
|
408
|
+
|| Contains(ToBooleanStub::STRING);
|
|
264
409
|
}
|
|
265
410
|
|
|
266
411
|
|