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
|
@@ -46,7 +46,7 @@ bool Locker::active_ = false;
|
|
|
46
46
|
// current thread will be guaranteed to have the lock for a given isolate.
|
|
47
47
|
Locker::Locker(v8::Isolate* isolate)
|
|
48
48
|
: has_lock_(false),
|
|
49
|
-
top_level_(
|
|
49
|
+
top_level_(true),
|
|
50
50
|
isolate_(reinterpret_cast<i::Isolate*>(isolate)) {
|
|
51
51
|
if (isolate_ == NULL) {
|
|
52
52
|
isolate_ = i::Isolate::GetDefaultIsolateForLocking();
|
|
@@ -94,6 +94,11 @@ bool Locker::IsLocked(v8::Isolate* isolate) {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
bool Locker::IsActive() {
|
|
98
|
+
return active_;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
97
102
|
Locker::~Locker() {
|
|
98
103
|
ASSERT(isolate_->thread_manager()->IsLockedByCurrentThread());
|
|
99
104
|
if (has_lock_) {
|
|
@@ -300,7 +305,9 @@ ThreadManager::ThreadManager()
|
|
|
300
305
|
|
|
301
306
|
|
|
302
307
|
ThreadManager::~ThreadManager() {
|
|
303
|
-
|
|
308
|
+
delete mutex_;
|
|
309
|
+
delete free_anchor_;
|
|
310
|
+
delete in_use_anchor_;
|
|
304
311
|
}
|
|
305
312
|
|
|
306
313
|
|
|
@@ -401,9 +408,10 @@ void ThreadManager::TerminateExecution(ThreadId thread_id) {
|
|
|
401
408
|
|
|
402
409
|
|
|
403
410
|
ContextSwitcher::ContextSwitcher(Isolate* isolate, int every_n_ms)
|
|
404
|
-
: Thread(
|
|
411
|
+
: Thread("v8:CtxtSwitcher"),
|
|
405
412
|
keep_going_(true),
|
|
406
|
-
sleep_ms_(every_n_ms)
|
|
413
|
+
sleep_ms_(every_n_ms),
|
|
414
|
+
isolate_(isolate) {
|
|
407
415
|
}
|
|
408
416
|
|
|
409
417
|
|
|
@@ -411,7 +419,7 @@ ContextSwitcher::ContextSwitcher(Isolate* isolate, int every_n_ms)
|
|
|
411
419
|
// ContextSwitcher thread if needed.
|
|
412
420
|
void ContextSwitcher::StartPreemption(int every_n_ms) {
|
|
413
421
|
Isolate* isolate = Isolate::Current();
|
|
414
|
-
ASSERT(Locker::IsLocked());
|
|
422
|
+
ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate)));
|
|
415
423
|
if (isolate->context_switcher() == NULL) {
|
|
416
424
|
// If the ContextSwitcher thread is not running at the moment start it now.
|
|
417
425
|
isolate->set_context_switcher(new ContextSwitcher(isolate, every_n_ms));
|
|
@@ -428,7 +436,7 @@ void ContextSwitcher::StartPreemption(int every_n_ms) {
|
|
|
428
436
|
// must cooperatively schedule amongst them from this point on.
|
|
429
437
|
void ContextSwitcher::StopPreemption() {
|
|
430
438
|
Isolate* isolate = Isolate::Current();
|
|
431
|
-
ASSERT(Locker::IsLocked());
|
|
439
|
+
ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate)));
|
|
432
440
|
if (isolate->context_switcher() != NULL) {
|
|
433
441
|
// The ContextSwitcher thread is running. We need to stop it and release
|
|
434
442
|
// its resources.
|
|
@@ -152,12 +152,15 @@ class ContextSwitcher: public Thread {
|
|
|
152
152
|
static void PreemptionReceived();
|
|
153
153
|
|
|
154
154
|
private:
|
|
155
|
-
|
|
155
|
+
ContextSwitcher(Isolate* isolate, int every_n_ms);
|
|
156
|
+
|
|
157
|
+
Isolate* isolate() const { return isolate_; }
|
|
156
158
|
|
|
157
159
|
void Run();
|
|
158
160
|
|
|
159
161
|
bool keep_going_;
|
|
160
162
|
int sleep_ms_;
|
|
163
|
+
Isolate* isolate_;
|
|
161
164
|
};
|
|
162
165
|
|
|
163
166
|
} } // namespace v8::internal
|
|
@@ -0,0 +1,360 @@
|
|
|
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
|
+
|
|
30
|
+
#include "v8.h"
|
|
31
|
+
|
|
32
|
+
#include "platform.h"
|
|
33
|
+
|
|
34
|
+
#include "sys/stat.h"
|
|
35
|
+
|
|
36
|
+
namespace v8 {
|
|
37
|
+
namespace internal {
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
void PrintF(const char* format, ...) {
|
|
41
|
+
va_list arguments;
|
|
42
|
+
va_start(arguments, format);
|
|
43
|
+
OS::VPrint(format, arguments);
|
|
44
|
+
va_end(arguments);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
void PrintF(FILE* out, const char* format, ...) {
|
|
49
|
+
va_list arguments;
|
|
50
|
+
va_start(arguments, format);
|
|
51
|
+
OS::VFPrint(out, format, arguments);
|
|
52
|
+
va_end(arguments);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
void Flush(FILE* out) {
|
|
57
|
+
fflush(out);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
char* ReadLine(const char* prompt) {
|
|
62
|
+
char* result = NULL;
|
|
63
|
+
char line_buf[256];
|
|
64
|
+
int offset = 0;
|
|
65
|
+
bool keep_going = true;
|
|
66
|
+
fprintf(stdout, "%s", prompt);
|
|
67
|
+
fflush(stdout);
|
|
68
|
+
while (keep_going) {
|
|
69
|
+
if (fgets(line_buf, sizeof(line_buf), stdin) == NULL) {
|
|
70
|
+
// fgets got an error. Just give up.
|
|
71
|
+
if (result != NULL) {
|
|
72
|
+
DeleteArray(result);
|
|
73
|
+
}
|
|
74
|
+
return NULL;
|
|
75
|
+
}
|
|
76
|
+
int len = StrLength(line_buf);
|
|
77
|
+
if (len > 1 &&
|
|
78
|
+
line_buf[len - 2] == '\\' &&
|
|
79
|
+
line_buf[len - 1] == '\n') {
|
|
80
|
+
// When we read a line that ends with a "\" we remove the escape and
|
|
81
|
+
// append the remainder.
|
|
82
|
+
line_buf[len - 2] = '\n';
|
|
83
|
+
line_buf[len - 1] = 0;
|
|
84
|
+
len -= 1;
|
|
85
|
+
} else if ((len > 0) && (line_buf[len - 1] == '\n')) {
|
|
86
|
+
// Since we read a new line we are done reading the line. This
|
|
87
|
+
// will exit the loop after copying this buffer into the result.
|
|
88
|
+
keep_going = false;
|
|
89
|
+
}
|
|
90
|
+
if (result == NULL) {
|
|
91
|
+
// Allocate the initial result and make room for the terminating '\0'
|
|
92
|
+
result = NewArray<char>(len + 1);
|
|
93
|
+
} else {
|
|
94
|
+
// Allocate a new result with enough room for the new addition.
|
|
95
|
+
int new_len = offset + len + 1;
|
|
96
|
+
char* new_result = NewArray<char>(new_len);
|
|
97
|
+
// Copy the existing input into the new array and set the new
|
|
98
|
+
// array as the result.
|
|
99
|
+
memcpy(new_result, result, offset * kCharSize);
|
|
100
|
+
DeleteArray(result);
|
|
101
|
+
result = new_result;
|
|
102
|
+
}
|
|
103
|
+
// Copy the newly read line into the result.
|
|
104
|
+
memcpy(result + offset, line_buf, len * kCharSize);
|
|
105
|
+
offset += len;
|
|
106
|
+
}
|
|
107
|
+
ASSERT(result != NULL);
|
|
108
|
+
result[offset] = '\0';
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
char* ReadCharsFromFile(FILE* file,
|
|
114
|
+
int* size,
|
|
115
|
+
int extra_space,
|
|
116
|
+
bool verbose,
|
|
117
|
+
const char* filename) {
|
|
118
|
+
if (file == NULL || fseek(file, 0, SEEK_END) != 0) {
|
|
119
|
+
if (verbose) {
|
|
120
|
+
OS::PrintError("Cannot read from file %s.\n", filename);
|
|
121
|
+
}
|
|
122
|
+
return NULL;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Get the size of the file and rewind it.
|
|
126
|
+
*size = ftell(file);
|
|
127
|
+
rewind(file);
|
|
128
|
+
|
|
129
|
+
char* result = NewArray<char>(*size + extra_space);
|
|
130
|
+
for (int i = 0; i < *size && feof(file) == 0;) {
|
|
131
|
+
int read = static_cast<int>(fread(&result[i], 1, *size - i, file));
|
|
132
|
+
if (read != (*size - i) && ferror(file) != 0) {
|
|
133
|
+
fclose(file);
|
|
134
|
+
DeleteArray(result);
|
|
135
|
+
return NULL;
|
|
136
|
+
}
|
|
137
|
+
i += read;
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
char* ReadCharsFromFile(const char* filename,
|
|
144
|
+
int* size,
|
|
145
|
+
int extra_space,
|
|
146
|
+
bool verbose) {
|
|
147
|
+
FILE* file = OS::FOpen(filename, "rb");
|
|
148
|
+
char* result = ReadCharsFromFile(file, size, extra_space, verbose, filename);
|
|
149
|
+
if (file != NULL) fclose(file);
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
byte* ReadBytes(const char* filename, int* size, bool verbose) {
|
|
155
|
+
char* chars = ReadCharsFromFile(filename, size, 0, verbose);
|
|
156
|
+
return reinterpret_cast<byte*>(chars);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
static Vector<const char> SetVectorContents(char* chars,
|
|
161
|
+
int size,
|
|
162
|
+
bool* exists) {
|
|
163
|
+
if (!chars) {
|
|
164
|
+
*exists = false;
|
|
165
|
+
return Vector<const char>::empty();
|
|
166
|
+
}
|
|
167
|
+
chars[size] = '\0';
|
|
168
|
+
*exists = true;
|
|
169
|
+
return Vector<const char>(chars, size);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
Vector<const char> ReadFile(const char* filename,
|
|
174
|
+
bool* exists,
|
|
175
|
+
bool verbose) {
|
|
176
|
+
int size;
|
|
177
|
+
char* result = ReadCharsFromFile(filename, &size, 1, verbose);
|
|
178
|
+
return SetVectorContents(result, size, exists);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
Vector<const char> ReadFile(FILE* file,
|
|
183
|
+
bool* exists,
|
|
184
|
+
bool verbose) {
|
|
185
|
+
int size;
|
|
186
|
+
char* result = ReadCharsFromFile(file, &size, 1, verbose, "");
|
|
187
|
+
return SetVectorContents(result, size, exists);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
int WriteCharsToFile(const char* str, int size, FILE* f) {
|
|
192
|
+
int total = 0;
|
|
193
|
+
while (total < size) {
|
|
194
|
+
int write = static_cast<int>(fwrite(str, 1, size - total, f));
|
|
195
|
+
if (write == 0) {
|
|
196
|
+
return total;
|
|
197
|
+
}
|
|
198
|
+
total += write;
|
|
199
|
+
str += write;
|
|
200
|
+
}
|
|
201
|
+
return total;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
int AppendChars(const char* filename,
|
|
206
|
+
const char* str,
|
|
207
|
+
int size,
|
|
208
|
+
bool verbose) {
|
|
209
|
+
FILE* f = OS::FOpen(filename, "ab");
|
|
210
|
+
if (f == NULL) {
|
|
211
|
+
if (verbose) {
|
|
212
|
+
OS::PrintError("Cannot open file %s for writing.\n", filename);
|
|
213
|
+
}
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
int written = WriteCharsToFile(str, size, f);
|
|
217
|
+
fclose(f);
|
|
218
|
+
return written;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
int WriteChars(const char* filename,
|
|
223
|
+
const char* str,
|
|
224
|
+
int size,
|
|
225
|
+
bool verbose) {
|
|
226
|
+
FILE* f = OS::FOpen(filename, "wb");
|
|
227
|
+
if (f == NULL) {
|
|
228
|
+
if (verbose) {
|
|
229
|
+
OS::PrintError("Cannot open file %s for writing.\n", filename);
|
|
230
|
+
}
|
|
231
|
+
return 0;
|
|
232
|
+
}
|
|
233
|
+
int written = WriteCharsToFile(str, size, f);
|
|
234
|
+
fclose(f);
|
|
235
|
+
return written;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
int WriteBytes(const char* filename,
|
|
240
|
+
const byte* bytes,
|
|
241
|
+
int size,
|
|
242
|
+
bool verbose) {
|
|
243
|
+
const char* str = reinterpret_cast<const char*>(bytes);
|
|
244
|
+
return WriteChars(filename, str, size, verbose);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
void StringBuilder::AddFormatted(const char* format, ...) {
|
|
250
|
+
va_list arguments;
|
|
251
|
+
va_start(arguments, format);
|
|
252
|
+
AddFormattedList(format, arguments);
|
|
253
|
+
va_end(arguments);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
void StringBuilder::AddFormattedList(const char* format, va_list list) {
|
|
258
|
+
ASSERT(!is_finalized() && position_ < buffer_.length());
|
|
259
|
+
int n = OS::VSNPrintF(buffer_ + position_, format, list);
|
|
260
|
+
if (n < 0 || n >= (buffer_.length() - position_)) {
|
|
261
|
+
position_ = buffer_.length();
|
|
262
|
+
} else {
|
|
263
|
+
position_ += n;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
MemoryMappedExternalResource::MemoryMappedExternalResource(const char* filename)
|
|
269
|
+
: filename_(NULL),
|
|
270
|
+
data_(NULL),
|
|
271
|
+
length_(0),
|
|
272
|
+
remove_file_on_cleanup_(false) {
|
|
273
|
+
Init(filename);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
MemoryMappedExternalResource::
|
|
278
|
+
MemoryMappedExternalResource(const char* filename,
|
|
279
|
+
bool remove_file_on_cleanup)
|
|
280
|
+
: filename_(NULL),
|
|
281
|
+
data_(NULL),
|
|
282
|
+
length_(0),
|
|
283
|
+
remove_file_on_cleanup_(remove_file_on_cleanup) {
|
|
284
|
+
Init(filename);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
MemoryMappedExternalResource::~MemoryMappedExternalResource() {
|
|
289
|
+
// Release the resources if we had successfully acquired them:
|
|
290
|
+
if (file_ != NULL) {
|
|
291
|
+
delete file_;
|
|
292
|
+
if (remove_file_on_cleanup_) {
|
|
293
|
+
OS::Remove(filename_);
|
|
294
|
+
}
|
|
295
|
+
DeleteArray<char>(filename_);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
void MemoryMappedExternalResource::Init(const char* filename) {
|
|
301
|
+
file_ = OS::MemoryMappedFile::open(filename);
|
|
302
|
+
if (file_ != NULL) {
|
|
303
|
+
filename_ = StrDup(filename);
|
|
304
|
+
data_ = reinterpret_cast<char*>(file_->memory());
|
|
305
|
+
length_ = file_->size();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
bool MemoryMappedExternalResource::EnsureIsAscii(bool abort_if_failed) const {
|
|
311
|
+
bool is_ascii = true;
|
|
312
|
+
|
|
313
|
+
int line_no = 1;
|
|
314
|
+
const char* start_of_line = data_;
|
|
315
|
+
const char* end = data_ + length_;
|
|
316
|
+
for (const char* p = data_; p < end; p++) {
|
|
317
|
+
char c = *p;
|
|
318
|
+
if ((c & 0x80) != 0) {
|
|
319
|
+
// Non-ascii detected:
|
|
320
|
+
is_ascii = false;
|
|
321
|
+
|
|
322
|
+
// Report the error and abort if appropriate:
|
|
323
|
+
if (abort_if_failed) {
|
|
324
|
+
int char_no = static_cast<int>(p - start_of_line) - 1;
|
|
325
|
+
|
|
326
|
+
ASSERT(filename_ != NULL);
|
|
327
|
+
PrintF("\n\n\n"
|
|
328
|
+
"Abort: Non-Ascii character 0x%.2x in file %s line %d char %d",
|
|
329
|
+
c, filename_, line_no, char_no);
|
|
330
|
+
|
|
331
|
+
// Allow for some context up to kNumberOfLeadingContextChars chars
|
|
332
|
+
// before the offending non-ascii char to help the user see where
|
|
333
|
+
// the offending char is.
|
|
334
|
+
const int kNumberOfLeadingContextChars = 10;
|
|
335
|
+
const char* err_context = p - kNumberOfLeadingContextChars;
|
|
336
|
+
if (err_context < data_) {
|
|
337
|
+
err_context = data_;
|
|
338
|
+
}
|
|
339
|
+
// Compute the length of the error context and print it.
|
|
340
|
+
int err_context_length = static_cast<int>(p - err_context);
|
|
341
|
+
if (err_context_length != 0) {
|
|
342
|
+
PrintF(" after \"%.*s\"", err_context_length, err_context);
|
|
343
|
+
}
|
|
344
|
+
PrintF(".\n\n\n");
|
|
345
|
+
OS::Abort();
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
break; // Non-ascii detected. No need to continue scanning.
|
|
349
|
+
}
|
|
350
|
+
if (c == '\n') {
|
|
351
|
+
start_of_line = p;
|
|
352
|
+
line_no++;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return is_ascii;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
} } // namespace v8::internal
|
data/lib/libv8/v8/src/v8utils.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:
|
|
@@ -188,73 +188,11 @@ class AsciiStringAdapter: public v8::String::ExternalAsciiStringResource {
|
|
|
188
188
|
Vector<const char> ReadFile(const char* filename,
|
|
189
189
|
bool* exists,
|
|
190
190
|
bool verbose = true);
|
|
191
|
+
Vector<const char> ReadFile(FILE* file,
|
|
192
|
+
bool* exists,
|
|
193
|
+
bool verbose = true);
|
|
191
194
|
|
|
192
195
|
|
|
193
|
-
// Helper class for building result strings in a character buffer. The
|
|
194
|
-
// purpose of the class is to use safe operations that checks the
|
|
195
|
-
// buffer bounds on all operations in debug mode.
|
|
196
|
-
class StringBuilder {
|
|
197
|
-
public:
|
|
198
|
-
// Create a string builder with a buffer of the given size. The
|
|
199
|
-
// buffer is allocated through NewArray<char> and must be
|
|
200
|
-
// deallocated by the caller of Finalize().
|
|
201
|
-
explicit StringBuilder(int size);
|
|
202
|
-
|
|
203
|
-
StringBuilder(char* buffer, int size)
|
|
204
|
-
: buffer_(buffer, size), position_(0) { }
|
|
205
|
-
|
|
206
|
-
~StringBuilder() { if (!is_finalized()) Finalize(); }
|
|
207
|
-
|
|
208
|
-
int size() const { return buffer_.length(); }
|
|
209
|
-
|
|
210
|
-
// Get the current position in the builder.
|
|
211
|
-
int position() const {
|
|
212
|
-
ASSERT(!is_finalized());
|
|
213
|
-
return position_;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// Reset the position.
|
|
217
|
-
void Reset() { position_ = 0; }
|
|
218
|
-
|
|
219
|
-
// Add a single character to the builder. It is not allowed to add
|
|
220
|
-
// 0-characters; use the Finalize() method to terminate the string
|
|
221
|
-
// instead.
|
|
222
|
-
void AddCharacter(char c) {
|
|
223
|
-
ASSERT(c != '\0');
|
|
224
|
-
ASSERT(!is_finalized() && position_ < buffer_.length());
|
|
225
|
-
buffer_[position_++] = c;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// Add an entire string to the builder. Uses strlen() internally to
|
|
229
|
-
// compute the length of the input string.
|
|
230
|
-
void AddString(const char* s);
|
|
231
|
-
|
|
232
|
-
// Add the first 'n' characters of the given string 's' to the
|
|
233
|
-
// builder. The input string must have enough characters.
|
|
234
|
-
void AddSubstring(const char* s, int n);
|
|
235
|
-
|
|
236
|
-
// Add formatted contents to the builder just like printf().
|
|
237
|
-
void AddFormatted(const char* format, ...);
|
|
238
|
-
|
|
239
|
-
// Add formatted contents like printf based on a va_list.
|
|
240
|
-
void AddFormattedList(const char* format, va_list list);
|
|
241
|
-
|
|
242
|
-
// Add character padding to the builder. If count is non-positive,
|
|
243
|
-
// nothing is added to the builder.
|
|
244
|
-
void AddPadding(char c, int count);
|
|
245
|
-
|
|
246
|
-
// Finalize the string by 0-terminating it and returning the buffer.
|
|
247
|
-
char* Finalize();
|
|
248
|
-
|
|
249
|
-
private:
|
|
250
|
-
Vector<char> buffer_;
|
|
251
|
-
int position_;
|
|
252
|
-
|
|
253
|
-
bool is_finalized() const { return position_ < 0; }
|
|
254
|
-
|
|
255
|
-
DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder);
|
|
256
|
-
};
|
|
257
|
-
|
|
258
196
|
|
|
259
197
|
// Copy from ASCII/16bit chars to ASCII/16bit chars.
|
|
260
198
|
template <typename sourcechar, typename sinkchar>
|
|
@@ -313,6 +251,19 @@ class MemoryMappedExternalResource: public
|
|
|
313
251
|
bool remove_file_on_cleanup_;
|
|
314
252
|
};
|
|
315
253
|
|
|
254
|
+
class StringBuilder : public SimpleStringBuilder {
|
|
255
|
+
public:
|
|
256
|
+
explicit StringBuilder(int size) : SimpleStringBuilder(size) { }
|
|
257
|
+
StringBuilder(char* buffer, int size) : SimpleStringBuilder(buffer, size) { }
|
|
258
|
+
|
|
259
|
+
// Add formatted contents to the builder just like printf().
|
|
260
|
+
void AddFormatted(const char* format, ...);
|
|
261
|
+
|
|
262
|
+
// Add formatted contents like printf based on a va_list.
|
|
263
|
+
void AddFormattedList(const char* format, va_list list);
|
|
264
|
+
private:
|
|
265
|
+
DISALLOW_IMPLICIT_CONSTRUCTORS(StringBuilder);
|
|
266
|
+
};
|
|
316
267
|
|
|
317
268
|
} } // namespace v8::internal
|
|
318
269
|
|