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
@@ -30,12 +30,13 @@
|
|
30
30
|
|
31
31
|
#include "allocation.h"
|
32
32
|
#include "globals.h"
|
33
|
-
#include "zone.h"
|
34
33
|
#include "zone-inl.h"
|
35
34
|
|
36
35
|
namespace v8 {
|
37
36
|
namespace internal {
|
38
37
|
|
38
|
+
const int kMaxKeyedPolymorphism = 4;
|
39
|
+
|
39
40
|
// Unknown
|
40
41
|
// | \____________
|
41
42
|
// | |
|
@@ -202,40 +203,53 @@ enum StringStubFeedback {
|
|
202
203
|
|
203
204
|
// Forward declarations.
|
204
205
|
class Assignment;
|
205
|
-
class UnaryOperation;
|
206
206
|
class BinaryOperation;
|
207
207
|
class Call;
|
208
|
+
class CaseClause;
|
208
209
|
class CompareOperation;
|
209
|
-
class CountOperation;
|
210
210
|
class CompilationInfo;
|
211
|
+
class CountOperation;
|
211
212
|
class Property;
|
212
|
-
class
|
213
|
+
class SmallMapList;
|
214
|
+
class UnaryOperation;
|
215
|
+
|
213
216
|
|
214
217
|
class TypeFeedbackOracle BASE_EMBEDDED {
|
215
218
|
public:
|
216
219
|
TypeFeedbackOracle(Handle<Code> code, Handle<Context> global_context);
|
217
220
|
|
218
|
-
bool
|
219
|
-
bool
|
221
|
+
bool LoadIsMonomorphicNormal(Property* expr);
|
222
|
+
bool LoadIsMegamorphicWithTypeInfo(Property* expr);
|
223
|
+
bool StoreIsMonomorphicNormal(Expression* expr);
|
224
|
+
bool StoreIsMegamorphicWithTypeInfo(Expression* expr);
|
220
225
|
bool CallIsMonomorphic(Call* expr);
|
221
226
|
|
222
227
|
Handle<Map> LoadMonomorphicReceiverType(Property* expr);
|
223
228
|
Handle<Map> StoreMonomorphicReceiverType(Expression* expr);
|
224
229
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
230
|
+
void LoadReceiverTypes(Property* expr,
|
231
|
+
Handle<String> name,
|
232
|
+
SmallMapList* types);
|
233
|
+
void StoreReceiverTypes(Assignment* expr,
|
234
|
+
Handle<String> name,
|
235
|
+
SmallMapList* types);
|
236
|
+
void CallReceiverTypes(Call* expr,
|
237
|
+
Handle<String> name,
|
238
|
+
CallKind call_kind,
|
239
|
+
SmallMapList* types);
|
240
|
+
void CollectKeyedReceiverTypes(unsigned ast_id,
|
241
|
+
SmallMapList* types);
|
233
242
|
|
234
243
|
CheckType GetCallCheckType(Call* expr);
|
235
244
|
Handle<JSObject> GetPrototypeForPrimitiveCheck(CheckType check);
|
236
245
|
|
237
246
|
bool LoadIsBuiltin(Property* expr, Builtins::Name id);
|
238
247
|
|
248
|
+
// TODO(1571) We can't use ToBooleanStub::Types as the return value because
|
249
|
+
// of various cylces in our headers. Death to tons of implementations in
|
250
|
+
// headers!! :-P
|
251
|
+
byte ToBooleanTypes(unsigned ast_id);
|
252
|
+
|
239
253
|
// Get type information for arithmetic operations and compares.
|
240
254
|
TypeInfo UnaryType(UnaryOperation* expr);
|
241
255
|
TypeInfo BinaryType(BinaryOperation* expr);
|
@@ -245,17 +259,21 @@ class TypeFeedbackOracle BASE_EMBEDDED {
|
|
245
259
|
TypeInfo IncrementType(CountOperation* expr);
|
246
260
|
|
247
261
|
private:
|
248
|
-
|
249
|
-
|
250
|
-
|
262
|
+
void CollectReceiverTypes(unsigned ast_id,
|
263
|
+
Handle<String> name,
|
264
|
+
Code::Flags flags,
|
265
|
+
SmallMapList* types);
|
251
266
|
|
252
267
|
void SetInfo(unsigned ast_id, Object* target);
|
253
268
|
|
254
|
-
void
|
255
|
-
|
256
|
-
void
|
257
|
-
|
258
|
-
|
269
|
+
void BuildDictionary(Handle<Code> code);
|
270
|
+
void GetRelocInfos(Handle<Code> code, ZoneList<RelocInfo>* infos);
|
271
|
+
void CreateDictionary(Handle<Code> code, ZoneList<RelocInfo>* infos);
|
272
|
+
void RelocateRelocInfos(ZoneList<RelocInfo>* infos,
|
273
|
+
byte* old_start,
|
274
|
+
byte* new_start);
|
275
|
+
void ProcessRelocInfos(ZoneList<RelocInfo>* infos);
|
276
|
+
void ProcessTarget(unsigned ast_id, Code* target);
|
259
277
|
|
260
278
|
// Returns an element from the backing store. Returns undefined if
|
261
279
|
// there is no information.
|
data/lib/libv8/v8/src/utils.cc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2011 the V8 project authors. All rights reserved.
|
2
2
|
// Redistribution and use in source and binary forms, with or without
|
3
3
|
// modification, are permitted provided that the following conditions are
|
4
4
|
// met:
|
@@ -26,211 +26,26 @@
|
|
26
26
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
27
|
|
28
28
|
#include <stdarg.h>
|
29
|
-
|
30
|
-
#include "
|
31
|
-
|
32
|
-
#include "platform.h"
|
33
|
-
|
34
|
-
#include "sys/stat.h"
|
29
|
+
#include "../include/v8stdint.h"
|
30
|
+
#include "checks.h"
|
31
|
+
#include "utils.h"
|
35
32
|
|
36
33
|
namespace v8 {
|
37
34
|
namespace internal {
|
38
35
|
|
39
36
|
|
40
|
-
|
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(const char* filename,
|
114
|
-
int* size,
|
115
|
-
int extra_space,
|
116
|
-
bool verbose) {
|
117
|
-
FILE* file = OS::FOpen(filename, "rb");
|
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;) {
|
131
|
-
int read = static_cast<int>(fread(&result[i], 1, *size - i, file));
|
132
|
-
if (read <= 0) {
|
133
|
-
fclose(file);
|
134
|
-
DeleteArray(result);
|
135
|
-
return NULL;
|
136
|
-
}
|
137
|
-
i += read;
|
138
|
-
}
|
139
|
-
fclose(file);
|
140
|
-
return result;
|
141
|
-
}
|
142
|
-
|
143
|
-
|
144
|
-
byte* ReadBytes(const char* filename, int* size, bool verbose) {
|
145
|
-
char* chars = ReadCharsFromFile(filename, size, 0, verbose);
|
146
|
-
return reinterpret_cast<byte*>(chars);
|
147
|
-
}
|
148
|
-
|
149
|
-
|
150
|
-
Vector<const char> ReadFile(const char* filename,
|
151
|
-
bool* exists,
|
152
|
-
bool verbose) {
|
153
|
-
int size;
|
154
|
-
char* result = ReadCharsFromFile(filename, &size, 1, verbose);
|
155
|
-
if (!result) {
|
156
|
-
*exists = false;
|
157
|
-
return Vector<const char>::empty();
|
158
|
-
}
|
159
|
-
result[size] = '\0';
|
160
|
-
*exists = true;
|
161
|
-
return Vector<const char>(result, size);
|
162
|
-
}
|
163
|
-
|
164
|
-
|
165
|
-
int WriteCharsToFile(const char* str, int size, FILE* f) {
|
166
|
-
int total = 0;
|
167
|
-
while (total < size) {
|
168
|
-
int write = static_cast<int>(fwrite(str, 1, size - total, f));
|
169
|
-
if (write == 0) {
|
170
|
-
return total;
|
171
|
-
}
|
172
|
-
total += write;
|
173
|
-
str += write;
|
174
|
-
}
|
175
|
-
return total;
|
176
|
-
}
|
177
|
-
|
178
|
-
|
179
|
-
int AppendChars(const char* filename,
|
180
|
-
const char* str,
|
181
|
-
int size,
|
182
|
-
bool verbose) {
|
183
|
-
FILE* f = OS::FOpen(filename, "ab");
|
184
|
-
if (f == NULL) {
|
185
|
-
if (verbose) {
|
186
|
-
OS::PrintError("Cannot open file %s for writing.\n", filename);
|
187
|
-
}
|
188
|
-
return 0;
|
189
|
-
}
|
190
|
-
int written = WriteCharsToFile(str, size, f);
|
191
|
-
fclose(f);
|
192
|
-
return written;
|
193
|
-
}
|
194
|
-
|
195
|
-
|
196
|
-
int WriteChars(const char* filename,
|
197
|
-
const char* str,
|
198
|
-
int size,
|
199
|
-
bool verbose) {
|
200
|
-
FILE* f = OS::FOpen(filename, "wb");
|
201
|
-
if (f == NULL) {
|
202
|
-
if (verbose) {
|
203
|
-
OS::PrintError("Cannot open file %s for writing.\n", filename);
|
204
|
-
}
|
205
|
-
return 0;
|
206
|
-
}
|
207
|
-
int written = WriteCharsToFile(str, size, f);
|
208
|
-
fclose(f);
|
209
|
-
return written;
|
210
|
-
}
|
211
|
-
|
212
|
-
|
213
|
-
int WriteBytes(const char* filename,
|
214
|
-
const byte* bytes,
|
215
|
-
int size,
|
216
|
-
bool verbose) {
|
217
|
-
const char* str = reinterpret_cast<const char*>(bytes);
|
218
|
-
return WriteChars(filename, str, size, verbose);
|
219
|
-
}
|
220
|
-
|
221
|
-
|
222
|
-
StringBuilder::StringBuilder(int size) {
|
37
|
+
SimpleStringBuilder::SimpleStringBuilder(int size) {
|
223
38
|
buffer_ = Vector<char>::New(size);
|
224
39
|
position_ = 0;
|
225
40
|
}
|
226
41
|
|
227
42
|
|
228
|
-
void
|
43
|
+
void SimpleStringBuilder::AddString(const char* s) {
|
229
44
|
AddSubstring(s, StrLength(s));
|
230
45
|
}
|
231
46
|
|
232
47
|
|
233
|
-
void
|
48
|
+
void SimpleStringBuilder::AddSubstring(const char* s, int n) {
|
234
49
|
ASSERT(!is_finalized() && position_ + n < buffer_.length());
|
235
50
|
ASSERT(static_cast<size_t>(n) <= strlen(s));
|
236
51
|
memcpy(&buffer_[position_], s, n * kCharSize);
|
@@ -238,33 +53,32 @@ void StringBuilder::AddSubstring(const char* s, int n) {
|
|
238
53
|
}
|
239
54
|
|
240
55
|
|
241
|
-
void
|
242
|
-
|
243
|
-
|
244
|
-
AddFormattedList(format, arguments);
|
245
|
-
va_end(arguments);
|
246
|
-
}
|
247
|
-
|
248
|
-
|
249
|
-
void StringBuilder::AddFormattedList(const char* format, va_list list) {
|
250
|
-
ASSERT(!is_finalized() && position_ < buffer_.length());
|
251
|
-
int n = OS::VSNPrintF(buffer_ + position_, format, list);
|
252
|
-
if (n < 0 || n >= (buffer_.length() - position_)) {
|
253
|
-
position_ = buffer_.length();
|
254
|
-
} else {
|
255
|
-
position_ += n;
|
56
|
+
void SimpleStringBuilder::AddPadding(char c, int count) {
|
57
|
+
for (int i = 0; i < count; i++) {
|
58
|
+
AddCharacter(c);
|
256
59
|
}
|
257
60
|
}
|
258
61
|
|
259
62
|
|
260
|
-
void
|
261
|
-
|
262
|
-
|
63
|
+
void SimpleStringBuilder::AddDecimalInteger(int32_t value) {
|
64
|
+
uint32_t number = static_cast<uint32_t>(value);
|
65
|
+
if (value < 0) {
|
66
|
+
AddCharacter('-');
|
67
|
+
number = static_cast<uint32_t>(-value);
|
68
|
+
}
|
69
|
+
int digits = 1;
|
70
|
+
for (uint32_t factor = 10; digits < 10; digits++, factor *= 10) {
|
71
|
+
if (factor > number) break;
|
72
|
+
}
|
73
|
+
position_ += digits;
|
74
|
+
for (int i = 1; i <= digits; i++) {
|
75
|
+
buffer_[position_ - i] = '0' + static_cast<char>(number % 10);
|
76
|
+
number /= 10;
|
263
77
|
}
|
264
78
|
}
|
265
79
|
|
266
80
|
|
267
|
-
char*
|
81
|
+
char* SimpleStringBuilder::Finalize() {
|
268
82
|
ASSERT(!is_finalized() && position_ < buffer_.length());
|
269
83
|
buffer_[position_] = '\0';
|
270
84
|
// Make sure nobody managed to add a 0-character to the
|
@@ -275,97 +89,4 @@ char* StringBuilder::Finalize() {
|
|
275
89
|
return buffer_.start();
|
276
90
|
}
|
277
91
|
|
278
|
-
|
279
|
-
MemoryMappedExternalResource::MemoryMappedExternalResource(const char* filename)
|
280
|
-
: filename_(NULL),
|
281
|
-
data_(NULL),
|
282
|
-
length_(0),
|
283
|
-
remove_file_on_cleanup_(false) {
|
284
|
-
Init(filename);
|
285
|
-
}
|
286
|
-
|
287
|
-
|
288
|
-
MemoryMappedExternalResource::
|
289
|
-
MemoryMappedExternalResource(const char* filename,
|
290
|
-
bool remove_file_on_cleanup)
|
291
|
-
: filename_(NULL),
|
292
|
-
data_(NULL),
|
293
|
-
length_(0),
|
294
|
-
remove_file_on_cleanup_(remove_file_on_cleanup) {
|
295
|
-
Init(filename);
|
296
|
-
}
|
297
|
-
|
298
|
-
|
299
|
-
MemoryMappedExternalResource::~MemoryMappedExternalResource() {
|
300
|
-
// Release the resources if we had successfully acquired them:
|
301
|
-
if (file_ != NULL) {
|
302
|
-
delete file_;
|
303
|
-
if (remove_file_on_cleanup_) {
|
304
|
-
OS::Remove(filename_);
|
305
|
-
}
|
306
|
-
DeleteArray<char>(filename_);
|
307
|
-
}
|
308
|
-
}
|
309
|
-
|
310
|
-
|
311
|
-
void MemoryMappedExternalResource::Init(const char* filename) {
|
312
|
-
file_ = OS::MemoryMappedFile::open(filename);
|
313
|
-
if (file_ != NULL) {
|
314
|
-
filename_ = StrDup(filename);
|
315
|
-
data_ = reinterpret_cast<char*>(file_->memory());
|
316
|
-
length_ = file_->size();
|
317
|
-
}
|
318
|
-
}
|
319
|
-
|
320
|
-
|
321
|
-
bool MemoryMappedExternalResource::EnsureIsAscii(bool abort_if_failed) const {
|
322
|
-
bool is_ascii = true;
|
323
|
-
|
324
|
-
int line_no = 1;
|
325
|
-
const char* start_of_line = data_;
|
326
|
-
const char* end = data_ + length_;
|
327
|
-
for (const char* p = data_; p < end; p++) {
|
328
|
-
char c = *p;
|
329
|
-
if ((c & 0x80) != 0) {
|
330
|
-
// Non-ascii detected:
|
331
|
-
is_ascii = false;
|
332
|
-
|
333
|
-
// Report the error and abort if appropriate:
|
334
|
-
if (abort_if_failed) {
|
335
|
-
int char_no = static_cast<int>(p - start_of_line) - 1;
|
336
|
-
|
337
|
-
ASSERT(filename_ != NULL);
|
338
|
-
PrintF("\n\n\n"
|
339
|
-
"Abort: Non-Ascii character 0x%.2x in file %s line %d char %d",
|
340
|
-
c, filename_, line_no, char_no);
|
341
|
-
|
342
|
-
// Allow for some context up to kNumberOfLeadingContextChars chars
|
343
|
-
// before the offending non-ascii char to help the user see where
|
344
|
-
// the offending char is.
|
345
|
-
const int kNumberOfLeadingContextChars = 10;
|
346
|
-
const char* err_context = p - kNumberOfLeadingContextChars;
|
347
|
-
if (err_context < data_) {
|
348
|
-
err_context = data_;
|
349
|
-
}
|
350
|
-
// Compute the length of the error context and print it.
|
351
|
-
int err_context_length = static_cast<int>(p - err_context);
|
352
|
-
if (err_context_length != 0) {
|
353
|
-
PrintF(" after \"%.*s\"", err_context_length, err_context);
|
354
|
-
}
|
355
|
-
PrintF(".\n\n\n");
|
356
|
-
OS::Abort();
|
357
|
-
}
|
358
|
-
|
359
|
-
break; // Non-ascii detected. No need to continue scanning.
|
360
|
-
}
|
361
|
-
if (c == '\n') {
|
362
|
-
start_of_line = p;
|
363
|
-
line_no++;
|
364
|
-
}
|
365
|
-
}
|
366
|
-
|
367
|
-
return is_ascii;
|
368
|
-
}
|
369
|
-
|
370
|
-
|
371
92
|
} } // namespace v8::internal
|