libv8 3.3.10.4 → 3.5.10.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/libv8/scons/CHANGES.txt +24 -231
- data/lib/libv8/scons/LICENSE.txt +1 -1
- data/lib/libv8/scons/MANIFEST +0 -1
- data/lib/libv8/scons/PKG-INFO +1 -1
- data/lib/libv8/scons/README.txt +9 -9
- data/lib/libv8/scons/RELEASE.txt +75 -77
- data/lib/libv8/scons/engine/SCons/Action.py +6 -22
- data/lib/libv8/scons/engine/SCons/Builder.py +2 -2
- data/lib/libv8/scons/engine/SCons/CacheDir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Debug.py +2 -2
- data/lib/libv8/scons/engine/SCons/Defaults.py +10 -24
- data/lib/libv8/scons/engine/SCons/Environment.py +19 -118
- data/lib/libv8/scons/engine/SCons/Errors.py +2 -2
- data/lib/libv8/scons/engine/SCons/Executor.py +2 -2
- data/lib/libv8/scons/engine/SCons/Job.py +2 -2
- data/lib/libv8/scons/engine/SCons/Memoize.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/Alias.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/FS.py +121 -281
- data/lib/libv8/scons/engine/SCons/Node/Python.py +2 -2
- data/lib/libv8/scons/engine/SCons/Node/__init__.py +5 -6
- data/lib/libv8/scons/engine/SCons/Options/BoolOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/EnumOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/ListOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PackageOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/PathOption.py +2 -2
- data/lib/libv8/scons/engine/SCons/Options/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/PathList.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/aix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/cygwin.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/darwin.py +3 -27
- data/lib/libv8/scons/engine/SCons/Platform/hpux.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/irix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/os2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/posix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/sunos.py +2 -2
- data/lib/libv8/scons/engine/SCons/Platform/win32.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConf.py +2 -2
- data/lib/libv8/scons/engine/SCons/SConsign.py +3 -9
- data/lib/libv8/scons/engine/SCons/Scanner/C.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/D.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Dir.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/Fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/IDL.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/LaTeX.py +2 -5
- data/lib/libv8/scons/engine/SCons/Scanner/Prog.py +2 -2
- data/lib/libv8/scons/engine/SCons/Scanner/RC.py +3 -3
- data/lib/libv8/scons/engine/SCons/Scanner/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Interactive.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/Main.py +11 -82
- data/lib/libv8/scons/engine/SCons/Script/SConsOptions.py +5 -5
- data/lib/libv8/scons/engine/SCons/Script/SConscript.py +2 -2
- data/lib/libv8/scons/engine/SCons/Script/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Sig.py +2 -2
- data/lib/libv8/scons/engine/SCons/Subst.py +2 -2
- data/lib/libv8/scons/engine/SCons/Taskmaster.py +2 -10
- data/lib/libv8/scons/engine/SCons/Tool/386asm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/BitKeeper.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/CVS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/FortranCommon.py +2 -19
- data/lib/libv8/scons/engine/SCons/Tool/JavaCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/arch.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/common.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/netframework.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/sdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vc.py +6 -9
- data/lib/libv8/scons/engine/SCons/Tool/MSCommon/vs.py +2 -29
- data/lib/libv8/scons/engine/SCons/Tool/Perforce.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/PharLapCommon.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/RCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/SCCS.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/Subversion.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/__init__.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/aixc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/aixlink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/applelink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/as.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/bcc32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/c++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/cvf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/default.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dmd.py +7 -24
- data/lib/libv8/scons/engine/SCons/Tool/dvi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/dvipdf.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/dvips.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/f77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/f95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/filesystem.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/fortran.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/g77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gas.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/gfortran.py +3 -3
- data/lib/libv8/scons/engine/SCons/Tool/gnulink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/gs.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hpcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/hplink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/icl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ifort.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/ilink32.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/install.py +3 -57
- data/lib/libv8/scons/engine/SCons/Tool/intelc.py +25 -65
- data/lib/libv8/scons/engine/SCons/Tool/ipkg.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/jar.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/javac.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/javah.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/latex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/lex.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/link.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/linkloc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/m4.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/masm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/midl.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mingw.py +10 -31
- data/lib/libv8/scons/engine/SCons/Tool/mslib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mslink.py +9 -61
- data/lib/libv8/scons/engine/SCons/Tool/mssdk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/msvc.py +11 -21
- data/lib/libv8/scons/engine/SCons/Tool/msvs.py +59 -477
- data/lib/libv8/scons/engine/SCons/Tool/mwcc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/mwld.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/nasm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/ipk.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/msi.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/src_zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/tarbz2.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/targz.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/packaging/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdf.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/pdflatex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/pdftex.py +2 -3
- data/lib/libv8/scons/engine/SCons/Tool/qt.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rmic.py +3 -9
- data/lib/libv8/scons/engine/SCons/Tool/rpcgen.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/rpm.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgiar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgic++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgicc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sgilink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunc++.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/suncc.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf77.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf90.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunf95.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/sunlink.py +3 -2
- data/lib/libv8/scons/engine/SCons/Tool/swig.py +5 -6
- data/lib/libv8/scons/engine/SCons/Tool/tar.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tex.py +43 -96
- data/lib/libv8/scons/engine/SCons/Tool/textfile.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/tlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/wix.py +2 -2
- data/lib/libv8/scons/engine/SCons/Tool/yacc.py +2 -12
- data/lib/libv8/scons/engine/SCons/Tool/zip.py +2 -2
- data/lib/libv8/scons/engine/SCons/Util.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/BoolVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/EnumVariable.py +3 -3
- data/lib/libv8/scons/engine/SCons/Variables/ListVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PackageVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/PathVariable.py +2 -2
- data/lib/libv8/scons/engine/SCons/Variables/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/Warnings.py +2 -2
- data/lib/libv8/scons/engine/SCons/__init__.py +6 -6
- data/lib/libv8/scons/engine/SCons/compat/__init__.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_builtins.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_collections.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_dbm.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_hashlib.py +2 -2
- data/lib/libv8/scons/engine/SCons/compat/_scons_io.py +2 -2
- data/lib/libv8/scons/engine/SCons/cpp.py +2 -2
- data/lib/libv8/scons/engine/SCons/dblite.py +1 -4
- data/lib/libv8/scons/engine/SCons/exitfuncs.py +2 -2
- data/lib/libv8/scons/scons-time.1 +3 -3
- data/lib/libv8/scons/scons.1 +1164 -1170
- data/lib/libv8/scons/sconsign.1 +3 -3
- data/lib/libv8/scons/script/scons +22 -22
- data/lib/libv8/scons/script/scons-time +2 -2
- data/lib/libv8/scons/script/scons.bat +4 -7
- data/lib/libv8/scons/script/sconsign +20 -21
- data/lib/libv8/scons/setup.cfg +1 -0
- data/lib/libv8/scons/setup.py +40 -38
- data/lib/libv8/v8/.gitignore +1 -1
- data/lib/libv8/v8/AUTHORS +2 -0
- data/lib/libv8/v8/ChangeLog +387 -0
- data/lib/libv8/v8/Makefile +171 -0
- data/lib/libv8/v8/SConstruct +124 -51
- data/lib/libv8/v8/build/README.txt +31 -14
- data/lib/libv8/v8/build/all.gyp +11 -4
- data/lib/libv8/v8/build/armu.gypi +6 -2
- data/lib/libv8/v8/build/common.gypi +240 -94
- data/lib/libv8/v8/build/gyp_v8 +32 -4
- data/lib/libv8/v8/build/standalone.gypi +200 -0
- data/lib/libv8/v8/include/v8-debug.h +0 -0
- data/lib/libv8/v8/include/v8-profiler.h +8 -11
- data/lib/libv8/v8/include/v8.h +191 -108
- data/lib/libv8/v8/preparser/SConscript +2 -2
- data/lib/libv8/v8/preparser/preparser-process.cc +3 -3
- data/lib/libv8/v8/preparser/preparser.gyp +42 -0
- data/lib/libv8/v8/src/SConscript +33 -8
- data/lib/libv8/v8/src/accessors.cc +77 -43
- data/lib/libv8/v8/src/api.cc +393 -191
- data/lib/libv8/v8/src/api.h +4 -8
- data/lib/libv8/v8/src/apinatives.js +15 -3
- data/lib/libv8/v8/src/arguments.h +8 -0
- data/lib/libv8/v8/src/arm/assembler-arm.cc +120 -120
- data/lib/libv8/v8/src/arm/assembler-arm.h +92 -43
- data/lib/libv8/v8/src/arm/builtins-arm.cc +32 -39
- data/lib/libv8/v8/src/arm/code-stubs-arm.cc +572 -351
- data/lib/libv8/v8/src/arm/code-stubs-arm.h +8 -77
- data/lib/libv8/v8/src/arm/codegen-arm.h +0 -2
- data/lib/libv8/v8/src/arm/deoptimizer-arm.cc +50 -30
- data/lib/libv8/v8/src/arm/disasm-arm.cc +1 -1
- data/lib/libv8/v8/src/arm/frames-arm.h +9 -5
- data/lib/libv8/v8/src/arm/full-codegen-arm.cc +331 -432
- data/lib/libv8/v8/src/arm/ic-arm.cc +192 -124
- data/lib/libv8/v8/src/arm/lithium-arm.cc +216 -232
- data/lib/libv8/v8/src/arm/lithium-arm.h +106 -259
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.cc +633 -642
- data/lib/libv8/v8/src/arm/lithium-codegen-arm.h +4 -4
- data/lib/libv8/v8/src/arm/lithium-gap-resolver-arm.cc +1 -3
- data/lib/libv8/v8/src/arm/macro-assembler-arm.cc +260 -185
- data/lib/libv8/v8/src/arm/macro-assembler-arm.h +45 -25
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.cc +25 -13
- data/lib/libv8/v8/src/arm/regexp-macro-assembler-arm.h +3 -0
- data/lib/libv8/v8/src/arm/stub-cache-arm.cc +413 -226
- data/lib/libv8/v8/src/array.js +38 -18
- data/lib/libv8/v8/src/assembler.cc +12 -5
- data/lib/libv8/v8/src/assembler.h +15 -9
- data/lib/libv8/v8/src/ast-inl.h +34 -25
- data/lib/libv8/v8/src/ast.cc +141 -72
- data/lib/libv8/v8/src/ast.h +255 -181
- data/lib/libv8/v8/src/bignum.cc +3 -4
- data/lib/libv8/v8/src/bootstrapper.cc +55 -11
- data/lib/libv8/v8/src/bootstrapper.h +3 -2
- data/lib/libv8/v8/src/builtins.cc +8 -2
- data/lib/libv8/v8/src/builtins.h +4 -0
- data/lib/libv8/v8/src/cached-powers.cc +8 -4
- data/lib/libv8/v8/src/checks.h +3 -3
- data/lib/libv8/v8/src/code-stubs.cc +173 -28
- data/lib/libv8/v8/src/code-stubs.h +104 -148
- data/lib/libv8/v8/src/codegen.cc +8 -8
- data/lib/libv8/v8/src/compilation-cache.cc +2 -47
- data/lib/libv8/v8/src/compilation-cache.h +0 -10
- data/lib/libv8/v8/src/compiler.cc +27 -16
- data/lib/libv8/v8/src/compiler.h +13 -18
- data/lib/libv8/v8/src/contexts.cc +107 -72
- data/lib/libv8/v8/src/contexts.h +70 -34
- data/lib/libv8/v8/src/conversions-inl.h +572 -14
- data/lib/libv8/v8/src/conversions.cc +9 -707
- data/lib/libv8/v8/src/conversions.h +23 -12
- data/lib/libv8/v8/src/cpu-profiler-inl.h +2 -19
- data/lib/libv8/v8/src/cpu-profiler.cc +4 -21
- data/lib/libv8/v8/src/cpu-profiler.h +8 -17
- data/lib/libv8/v8/src/d8-debug.cc +5 -3
- data/lib/libv8/v8/src/d8-debug.h +6 -7
- data/lib/libv8/v8/src/d8-posix.cc +1 -10
- data/lib/libv8/v8/src/d8.cc +721 -219
- data/lib/libv8/v8/src/d8.gyp +37 -12
- data/lib/libv8/v8/src/d8.h +141 -19
- data/lib/libv8/v8/src/d8.js +17 -8
- data/lib/libv8/v8/src/date.js +16 -5
- data/lib/libv8/v8/src/dateparser-inl.h +242 -39
- data/lib/libv8/v8/src/dateparser.cc +38 -4
- data/lib/libv8/v8/src/dateparser.h +170 -28
- data/lib/libv8/v8/src/debug-agent.cc +5 -3
- data/lib/libv8/v8/src/debug-agent.h +11 -7
- data/lib/libv8/v8/src/debug-debugger.js +65 -34
- data/lib/libv8/v8/src/debug.cc +30 -60
- data/lib/libv8/v8/src/debug.h +5 -3
- data/lib/libv8/v8/src/deoptimizer.cc +227 -10
- data/lib/libv8/v8/src/deoptimizer.h +133 -9
- data/lib/libv8/v8/src/disassembler.cc +22 -14
- data/lib/libv8/v8/src/diy-fp.cc +4 -3
- data/lib/libv8/v8/src/diy-fp.h +3 -3
- data/lib/libv8/v8/src/elements.cc +634 -0
- data/lib/libv8/v8/src/elements.h +95 -0
- data/lib/libv8/v8/src/execution.cc +5 -21
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.cc +3 -1
- data/lib/libv8/v8/src/extensions/experimental/break-iterator.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/collator.cc +6 -2
- data/lib/libv8/v8/src/extensions/experimental/collator.h +1 -2
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.cc +384 -0
- data/lib/libv8/v8/src/extensions/experimental/datetime-format.h +83 -0
- data/lib/libv8/v8/src/extensions/experimental/experimental.gyp +18 -7
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.cc +12 -16
- data/lib/libv8/v8/src/extensions/experimental/i18n-extension.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-js2c.py +126 -0
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.cc +3 -4
- data/lib/libv8/v8/src/extensions/experimental/i18n-locale.h +1 -1
- data/lib/libv8/v8/src/{shell.h → extensions/experimental/i18n-natives.h} +8 -20
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.cc +45 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n-utils.h +21 -1
- data/lib/libv8/v8/src/extensions/experimental/i18n.js +211 -11
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.cc +4 -3
- data/lib/libv8/v8/src/extensions/experimental/language-matcher.h +1 -1
- data/lib/libv8/v8/src/extensions/experimental/number-format.cc +374 -0
- data/lib/libv8/v8/src/extensions/experimental/number-format.h +71 -0
- data/lib/libv8/v8/src/factory.cc +89 -18
- data/lib/libv8/v8/src/factory.h +36 -8
- data/lib/libv8/v8/src/flag-definitions.h +11 -44
- data/lib/libv8/v8/src/frames-inl.h +8 -1
- data/lib/libv8/v8/src/frames.cc +39 -3
- data/lib/libv8/v8/src/frames.h +10 -3
- data/lib/libv8/v8/src/full-codegen.cc +311 -293
- data/lib/libv8/v8/src/full-codegen.h +183 -143
- data/lib/libv8/v8/src/func-name-inferrer.cc +29 -15
- data/lib/libv8/v8/src/func-name-inferrer.h +19 -9
- data/lib/libv8/v8/src/gdb-jit.cc +658 -55
- data/lib/libv8/v8/src/gdb-jit.h +6 -2
- data/lib/libv8/v8/src/global-handles.cc +368 -312
- data/lib/libv8/v8/src/global-handles.h +29 -36
- data/lib/libv8/v8/src/globals.h +3 -1
- data/lib/libv8/v8/src/handles.cc +43 -69
- data/lib/libv8/v8/src/handles.h +21 -16
- data/lib/libv8/v8/src/heap-inl.h +11 -13
- data/lib/libv8/v8/src/heap-profiler.cc +0 -999
- data/lib/libv8/v8/src/heap-profiler.h +0 -303
- data/lib/libv8/v8/src/heap.cc +366 -141
- data/lib/libv8/v8/src/heap.h +87 -26
- data/lib/libv8/v8/src/hydrogen-instructions.cc +192 -81
- data/lib/libv8/v8/src/hydrogen-instructions.h +711 -482
- data/lib/libv8/v8/src/hydrogen.cc +1146 -629
- data/lib/libv8/v8/src/hydrogen.h +100 -64
- data/lib/libv8/v8/src/ia32/assembler-ia32.cc +19 -0
- data/lib/libv8/v8/src/ia32/assembler-ia32.h +15 -2
- data/lib/libv8/v8/src/ia32/builtins-ia32.cc +34 -39
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.cc +675 -377
- data/lib/libv8/v8/src/ia32/code-stubs-ia32.h +8 -69
- data/lib/libv8/v8/src/ia32/codegen-ia32.cc +1 -0
- data/lib/libv8/v8/src/ia32/codegen-ia32.h +0 -2
- data/lib/libv8/v8/src/ia32/cpu-ia32.cc +3 -2
- data/lib/libv8/v8/src/ia32/deoptimizer-ia32.cc +28 -3
- data/lib/libv8/v8/src/ia32/disasm-ia32.cc +21 -10
- data/lib/libv8/v8/src/ia32/frames-ia32.h +6 -5
- data/lib/libv8/v8/src/ia32/full-codegen-ia32.cc +459 -465
- data/lib/libv8/v8/src/ia32/ic-ia32.cc +196 -147
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.cc +575 -650
- data/lib/libv8/v8/src/ia32/lithium-codegen-ia32.h +19 -21
- data/lib/libv8/v8/src/ia32/lithium-gap-resolver-ia32.cc +7 -2
- data/lib/libv8/v8/src/ia32/lithium-ia32.cc +261 -256
- data/lib/libv8/v8/src/ia32/lithium-ia32.h +234 -335
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.cc +224 -67
- data/lib/libv8/v8/src/ia32/macro-assembler-ia32.h +63 -19
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.cc +22 -8
- data/lib/libv8/v8/src/ia32/regexp-macro-assembler-ia32.h +3 -0
- data/lib/libv8/v8/src/ia32/stub-cache-ia32.cc +380 -239
- data/lib/libv8/v8/src/ic.cc +198 -234
- data/lib/libv8/v8/src/ic.h +32 -30
- data/lib/libv8/v8/src/interpreter-irregexp.cc +6 -4
- data/lib/libv8/v8/src/isolate.cc +112 -95
- data/lib/libv8/v8/src/isolate.h +55 -71
- data/lib/libv8/v8/src/json-parser.h +486 -48
- data/lib/libv8/v8/src/json.js +28 -23
- data/lib/libv8/v8/src/jsregexp.cc +163 -208
- data/lib/libv8/v8/src/jsregexp.h +0 -1
- data/lib/libv8/v8/src/lithium-allocator-inl.h +29 -27
- data/lib/libv8/v8/src/lithium-allocator.cc +22 -17
- data/lib/libv8/v8/src/lithium-allocator.h +8 -8
- data/lib/libv8/v8/src/lithium.cc +16 -11
- data/lib/libv8/v8/src/lithium.h +31 -34
- data/lib/libv8/v8/src/liveedit.cc +111 -15
- data/lib/libv8/v8/src/liveedit.h +3 -4
- data/lib/libv8/v8/src/liveobjectlist.cc +116 -80
- data/lib/libv8/v8/src/liveobjectlist.h +2 -2
- data/lib/libv8/v8/src/log-inl.h +0 -4
- data/lib/libv8/v8/src/log-utils.cc +25 -143
- data/lib/libv8/v8/src/log-utils.h +13 -92
- data/lib/libv8/v8/src/log.cc +26 -249
- data/lib/libv8/v8/src/log.h +6 -17
- data/lib/libv8/v8/src/macros.py +9 -6
- data/lib/libv8/v8/src/mark-compact.cc +276 -56
- data/lib/libv8/v8/src/mark-compact.h +20 -0
- data/lib/libv8/v8/src/messages.js +93 -39
- data/lib/libv8/v8/src/mips/assembler-mips-inl.h +9 -3
- data/lib/libv8/v8/src/mips/assembler-mips.cc +297 -189
- data/lib/libv8/v8/src/mips/assembler-mips.h +121 -54
- data/lib/libv8/v8/src/mips/builtins-mips.cc +23 -24
- data/lib/libv8/v8/src/mips/code-stubs-mips.cc +484 -263
- data/lib/libv8/v8/src/mips/code-stubs-mips.h +8 -83
- data/lib/libv8/v8/src/mips/codegen-mips.h +0 -2
- data/lib/libv8/v8/src/mips/constants-mips.h +37 -11
- data/lib/libv8/v8/src/mips/deoptimizer-mips.cc +6 -1
- data/lib/libv8/v8/src/mips/frames-mips.h +8 -7
- data/lib/libv8/v8/src/mips/full-codegen-mips.cc +258 -419
- data/lib/libv8/v8/src/mips/ic-mips.cc +181 -121
- data/lib/libv8/v8/src/mips/macro-assembler-mips.cc +640 -382
- data/lib/libv8/v8/src/mips/macro-assembler-mips.h +94 -89
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.cc +23 -10
- data/lib/libv8/v8/src/mips/regexp-macro-assembler-mips.h +6 -1
- data/lib/libv8/v8/src/mips/simulator-mips.cc +249 -49
- data/lib/libv8/v8/src/mips/simulator-mips.h +25 -1
- data/lib/libv8/v8/src/mips/stub-cache-mips.cc +373 -161
- data/lib/libv8/v8/src/mirror-debugger.js +55 -8
- data/lib/libv8/v8/src/misc-intrinsics.h +89 -0
- data/lib/libv8/v8/src/mksnapshot.cc +36 -4
- data/lib/libv8/v8/src/natives.h +5 -2
- data/lib/libv8/v8/src/objects-debug.cc +73 -6
- data/lib/libv8/v8/src/objects-inl.h +529 -164
- data/lib/libv8/v8/src/objects-printer.cc +67 -12
- data/lib/libv8/v8/src/objects-visiting.cc +13 -2
- data/lib/libv8/v8/src/objects-visiting.h +41 -1
- data/lib/libv8/v8/src/objects.cc +2200 -1177
- data/lib/libv8/v8/src/objects.h +912 -283
- data/lib/libv8/v8/src/parser.cc +566 -371
- data/lib/libv8/v8/src/parser.h +35 -33
- data/lib/libv8/v8/src/platform-cygwin.cc +10 -25
- data/lib/libv8/v8/src/platform-freebsd.cc +4 -29
- data/lib/libv8/v8/src/platform-linux.cc +60 -57
- data/lib/libv8/v8/src/platform-macos.cc +4 -27
- data/lib/libv8/v8/src/platform-nullos.cc +3 -16
- data/lib/libv8/v8/src/platform-openbsd.cc +247 -85
- data/lib/libv8/v8/src/platform-posix.cc +43 -1
- data/lib/libv8/v8/src/platform-solaris.cc +151 -112
- data/lib/libv8/v8/src/platform-tls.h +1 -1
- data/lib/libv8/v8/src/platform-win32.cc +65 -39
- data/lib/libv8/v8/src/platform.h +17 -14
- data/lib/libv8/v8/src/preparse-data-format.h +2 -2
- data/lib/libv8/v8/src/preparse-data.h +8 -2
- data/lib/libv8/v8/src/preparser-api.cc +2 -18
- data/lib/libv8/v8/src/preparser.cc +106 -65
- data/lib/libv8/v8/src/preparser.h +26 -5
- data/lib/libv8/v8/src/prettyprinter.cc +25 -43
- data/lib/libv8/v8/src/profile-generator-inl.h +0 -4
- data/lib/libv8/v8/src/profile-generator.cc +213 -34
- data/lib/libv8/v8/src/profile-generator.h +9 -9
- data/lib/libv8/v8/src/property.h +1 -0
- data/lib/libv8/v8/src/proxy.js +74 -4
- data/lib/libv8/v8/src/regexp-macro-assembler.cc +10 -6
- data/lib/libv8/v8/src/regexp.js +16 -11
- data/lib/libv8/v8/src/rewriter.cc +24 -133
- data/lib/libv8/v8/src/runtime-profiler.cc +27 -151
- data/lib/libv8/v8/src/runtime-profiler.h +5 -31
- data/lib/libv8/v8/src/runtime.cc +1450 -681
- data/lib/libv8/v8/src/runtime.h +47 -31
- data/lib/libv8/v8/src/runtime.js +2 -1
- data/lib/libv8/v8/src/scanner-base.cc +358 -220
- data/lib/libv8/v8/src/scanner-base.h +30 -138
- data/lib/libv8/v8/src/scanner.cc +0 -18
- data/lib/libv8/v8/src/scanner.h +0 -15
- data/lib/libv8/v8/src/scopeinfo.cc +3 -1
- data/lib/libv8/v8/src/scopeinfo.h +1 -6
- data/lib/libv8/v8/src/scopes.cc +243 -253
- data/lib/libv8/v8/src/scopes.h +58 -109
- data/lib/libv8/v8/src/serialize.cc +12 -54
- data/lib/libv8/v8/src/serialize.h +47 -0
- data/lib/libv8/v8/src/small-pointer-list.h +25 -0
- data/lib/libv8/v8/src/spaces-inl.h +4 -50
- data/lib/libv8/v8/src/spaces.cc +64 -131
- data/lib/libv8/v8/src/spaces.h +19 -70
- data/lib/libv8/v8/src/string-stream.cc +3 -1
- data/lib/libv8/v8/src/string.js +10 -6
- data/lib/libv8/v8/src/strtod.cc +7 -3
- data/lib/libv8/v8/src/stub-cache.cc +59 -129
- data/lib/libv8/v8/src/stub-cache.h +42 -54
- data/lib/libv8/v8/src/third_party/valgrind/valgrind.h +1447 -1339
- data/lib/libv8/v8/src/token.cc +4 -4
- data/lib/libv8/v8/src/token.h +6 -5
- data/lib/libv8/v8/src/type-info.cc +173 -129
- data/lib/libv8/v8/src/type-info.h +40 -22
- data/lib/libv8/v8/src/utils.cc +25 -304
- data/lib/libv8/v8/src/utils.h +118 -3
- data/lib/libv8/v8/src/v8-counters.h +3 -6
- data/lib/libv8/v8/src/v8.cc +34 -27
- data/lib/libv8/v8/src/v8.h +7 -7
- data/lib/libv8/v8/src/v8conversions.cc +129 -0
- data/lib/libv8/v8/src/v8conversions.h +60 -0
- data/lib/libv8/v8/src/v8globals.h +15 -6
- data/lib/libv8/v8/src/v8natives.js +300 -78
- data/lib/libv8/v8/src/v8threads.cc +14 -6
- data/lib/libv8/v8/src/v8threads.h +4 -1
- data/lib/libv8/v8/src/v8utils.cc +360 -0
- data/lib/libv8/v8/src/v8utils.h +17 -66
- data/lib/libv8/v8/src/variables.cc +7 -12
- data/lib/libv8/v8/src/variables.h +12 -10
- data/lib/libv8/v8/src/version.cc +2 -2
- data/lib/libv8/v8/src/vm-state-inl.h +0 -41
- data/lib/libv8/v8/src/vm-state.h +0 -11
- data/lib/libv8/v8/src/weakmap.js +103 -0
- data/lib/libv8/v8/src/x64/assembler-x64.h +6 -3
- data/lib/libv8/v8/src/x64/builtins-x64.cc +25 -22
- data/lib/libv8/v8/src/x64/code-stubs-x64.cc +523 -250
- data/lib/libv8/v8/src/x64/code-stubs-x64.h +8 -71
- data/lib/libv8/v8/src/x64/codegen-x64.cc +1 -0
- data/lib/libv8/v8/src/x64/codegen-x64.h +0 -2
- data/lib/libv8/v8/src/x64/cpu-x64.cc +2 -1
- data/lib/libv8/v8/src/x64/deoptimizer-x64.cc +40 -8
- data/lib/libv8/v8/src/x64/disasm-x64.cc +12 -10
- data/lib/libv8/v8/src/x64/frames-x64.h +7 -6
- data/lib/libv8/v8/src/x64/full-codegen-x64.cc +310 -415
- data/lib/libv8/v8/src/x64/ic-x64.cc +180 -117
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.cc +411 -523
- data/lib/libv8/v8/src/x64/lithium-codegen-x64.h +11 -6
- data/lib/libv8/v8/src/x64/lithium-x64.cc +191 -216
- data/lib/libv8/v8/src/x64/lithium-x64.h +112 -263
- data/lib/libv8/v8/src/x64/macro-assembler-x64.cc +177 -61
- data/lib/libv8/v8/src/x64/macro-assembler-x64.h +23 -7
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.cc +21 -9
- data/lib/libv8/v8/src/x64/regexp-macro-assembler-x64.h +6 -0
- data/lib/libv8/v8/src/x64/stub-cache-x64.cc +273 -107
- data/lib/libv8/v8/src/zone.cc +31 -22
- data/lib/libv8/v8/src/zone.h +12 -6
- data/lib/libv8/v8/tools/codemap.js +8 -0
- data/lib/libv8/v8/tools/gcmole/Makefile +43 -0
- data/lib/libv8/v8/tools/gcmole/gcmole.lua +0 -2
- data/lib/libv8/v8/tools/gdb-v8-support.py +154 -0
- data/lib/libv8/v8/tools/grokdump.py +44 -35
- data/lib/libv8/v8/tools/gyp/v8.gyp +94 -248
- data/lib/libv8/v8/tools/js2c.py +83 -52
- data/lib/libv8/v8/tools/linux-tick-processor +4 -6
- data/lib/libv8/v8/tools/ll_prof.py +3 -3
- data/lib/libv8/v8/tools/oom_dump/README +3 -1
- data/lib/libv8/v8/tools/presubmit.py +11 -4
- data/lib/libv8/v8/tools/profile.js +46 -2
- data/lib/libv8/v8/tools/splaytree.js +11 -0
- data/lib/libv8/v8/tools/stats-viewer.py +15 -11
- data/lib/libv8/v8/tools/test-wrapper-gypbuild.py +227 -0
- data/lib/libv8/v8/tools/test.py +28 -8
- data/lib/libv8/v8/tools/tickprocessor.js +0 -16
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +2 -2
- metadata +31 -19
- data/lib/libv8/scons/engine/SCons/Tool/f03.py +0 -63
- data/lib/libv8/v8/src/json-parser.cc +0 -504
data/lib/libv8/v8/src/scopes.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:
|
|
@@ -90,20 +90,15 @@ class Scope: public ZoneObject {
|
|
|
90
90
|
// Construction
|
|
91
91
|
|
|
92
92
|
enum Type {
|
|
93
|
-
EVAL_SCOPE,
|
|
94
|
-
FUNCTION_SCOPE, //
|
|
95
|
-
GLOBAL_SCOPE //
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
enum LocalType {
|
|
99
|
-
PARAMETER,
|
|
100
|
-
VAR_OR_CONST
|
|
93
|
+
EVAL_SCOPE, // The top-level scope for an eval source.
|
|
94
|
+
FUNCTION_SCOPE, // The top-level scope for a function.
|
|
95
|
+
GLOBAL_SCOPE, // The top-level scope for a program or a top-level eval.
|
|
96
|
+
CATCH_SCOPE, // The scope introduced by catch.
|
|
97
|
+
BLOCK_SCOPE // The scope introduced by a new block.
|
|
101
98
|
};
|
|
102
99
|
|
|
103
100
|
Scope(Scope* outer_scope, Type type);
|
|
104
101
|
|
|
105
|
-
virtual ~Scope() { }
|
|
106
|
-
|
|
107
102
|
// Compute top scope and allocate variables. For lazy compilation the top
|
|
108
103
|
// scope only contains the single lazily compiled function, so this
|
|
109
104
|
// doesn't re-allocate variables repeatedly.
|
|
@@ -115,33 +110,31 @@ class Scope: public ZoneObject {
|
|
|
115
110
|
// The scope name is only used for printing/debugging.
|
|
116
111
|
void SetScopeName(Handle<String> scope_name) { scope_name_ = scope_name; }
|
|
117
112
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// Called just before leaving a scope.
|
|
121
|
-
virtual void Leave() {
|
|
122
|
-
// No cleanup or fixup necessary.
|
|
123
|
-
}
|
|
113
|
+
void Initialize(bool inside_with);
|
|
124
114
|
|
|
125
115
|
// ---------------------------------------------------------------------------
|
|
126
116
|
// Declarations
|
|
127
117
|
|
|
128
118
|
// Lookup a variable in this scope. Returns the variable or NULL if not found.
|
|
129
|
-
|
|
119
|
+
Variable* LocalLookup(Handle<String> name);
|
|
130
120
|
|
|
131
121
|
// Lookup a variable in this scope or outer scopes.
|
|
132
122
|
// Returns the variable or NULL if not found.
|
|
133
|
-
|
|
123
|
+
Variable* Lookup(Handle<String> name);
|
|
134
124
|
|
|
135
125
|
// Declare the function variable for a function literal. This variable
|
|
136
126
|
// is in an intermediate scope between this function scope and the the
|
|
137
127
|
// outer scope. Only possible for function scopes; at most one variable.
|
|
138
128
|
Variable* DeclareFunctionVar(Handle<String> name);
|
|
139
129
|
|
|
130
|
+
// Declare a parameter in this scope. When there are duplicated
|
|
131
|
+
// parameters the rightmost one 'wins'. However, the implementation
|
|
132
|
+
// expects all parameters to be declared and from left to right.
|
|
133
|
+
void DeclareParameter(Handle<String> name);
|
|
134
|
+
|
|
140
135
|
// Declare a local variable in this scope. If the variable has been
|
|
141
136
|
// declared before, the previously declared variable is returned.
|
|
142
|
-
|
|
143
|
-
Variable::Mode mode,
|
|
144
|
-
LocalType type);
|
|
137
|
+
Variable* DeclareLocal(Handle<String> name, Variable::Mode mode);
|
|
145
138
|
|
|
146
139
|
// Declare an implicit global variable in this scope which must be a
|
|
147
140
|
// global scope. The variable was introduced (possibly from an inner
|
|
@@ -149,16 +142,10 @@ class Scope: public ZoneObject {
|
|
|
149
142
|
// with statements or eval calls.
|
|
150
143
|
Variable* DeclareGlobal(Handle<String> name);
|
|
151
144
|
|
|
152
|
-
// Add a parameter to the parameter list. The parameter must have been
|
|
153
|
-
// declared via Declare. The same parameter may occur more than once in
|
|
154
|
-
// the parameter list; they must be added in source order, from left to
|
|
155
|
-
// right.
|
|
156
|
-
void AddParameter(Variable* var);
|
|
157
|
-
|
|
158
145
|
// Create a new unresolved variable.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
146
|
+
VariableProxy* NewUnresolved(Handle<String> name,
|
|
147
|
+
bool inside_with,
|
|
148
|
+
int position = RelocInfo::kNoPosition);
|
|
162
149
|
|
|
163
150
|
// Remove a unresolved variable. During parsing, an unresolved variable
|
|
164
151
|
// may have been added optimistically, but then only the variable name
|
|
@@ -172,7 +159,7 @@ class Scope: public ZoneObject {
|
|
|
172
159
|
// for printing and cannot be used to find the variable. In particular,
|
|
173
160
|
// the only way to get hold of the temporary is by keeping the Variable*
|
|
174
161
|
// around.
|
|
175
|
-
|
|
162
|
+
Variable* NewTemporary(Handle<String> name);
|
|
176
163
|
|
|
177
164
|
// Adds the specific declaration node to the list of declarations in
|
|
178
165
|
// this scope. The declarations are processed as part of entering
|
|
@@ -217,6 +204,8 @@ class Scope: public ZoneObject {
|
|
|
217
204
|
bool is_eval_scope() const { return type_ == EVAL_SCOPE; }
|
|
218
205
|
bool is_function_scope() const { return type_ == FUNCTION_SCOPE; }
|
|
219
206
|
bool is_global_scope() const { return type_ == GLOBAL_SCOPE; }
|
|
207
|
+
bool is_catch_scope() const { return type_ == CATCH_SCOPE; }
|
|
208
|
+
bool is_block_scope() const { return type_ == BLOCK_SCOPE; }
|
|
220
209
|
bool is_strict_mode() const { return strict_mode_; }
|
|
221
210
|
bool is_strict_mode_eval_scope() const {
|
|
222
211
|
return is_eval_scope() && is_strict_mode();
|
|
@@ -240,13 +229,8 @@ class Scope: public ZoneObject {
|
|
|
240
229
|
// ---------------------------------------------------------------------------
|
|
241
230
|
// Accessors.
|
|
242
231
|
|
|
243
|
-
//
|
|
244
|
-
|
|
245
|
-
VariableProxy* proxy =
|
|
246
|
-
new VariableProxy(FACTORY->this_symbol(), true, false);
|
|
247
|
-
proxy->BindTo(receiver_);
|
|
248
|
-
return proxy;
|
|
249
|
-
}
|
|
232
|
+
// The variable corresponding the 'this' value.
|
|
233
|
+
Variable* receiver() { return receiver_; }
|
|
250
234
|
|
|
251
235
|
// The variable holding the function literal for named function
|
|
252
236
|
// literals, or NULL.
|
|
@@ -266,18 +250,12 @@ class Scope: public ZoneObject {
|
|
|
266
250
|
int num_parameters() const { return params_.length(); }
|
|
267
251
|
|
|
268
252
|
// The local variable 'arguments' if we need to allocate it; NULL otherwise.
|
|
269
|
-
// If arguments() exist, arguments_shadow() exists, too.
|
|
270
253
|
Variable* arguments() const { return arguments_; }
|
|
271
254
|
|
|
272
|
-
// The '.arguments' shadow variable if we need to allocate it; NULL otherwise.
|
|
273
|
-
// If arguments_shadow() exist, arguments() exists, too.
|
|
274
|
-
Variable* arguments_shadow() const { return arguments_shadow_; }
|
|
275
|
-
|
|
276
255
|
// Declarations list.
|
|
277
256
|
ZoneList<Declaration*>* declarations() { return &decls_; }
|
|
278
257
|
|
|
279
258
|
|
|
280
|
-
|
|
281
259
|
// ---------------------------------------------------------------------------
|
|
282
260
|
// Variable allocation.
|
|
283
261
|
|
|
@@ -309,11 +287,17 @@ class Scope: public ZoneObject {
|
|
|
309
287
|
bool AllowsLazyCompilation() const;
|
|
310
288
|
|
|
311
289
|
// True if the outer context of this scope is always the global context.
|
|
312
|
-
|
|
290
|
+
bool HasTrivialOuterContext() const;
|
|
313
291
|
|
|
314
292
|
// The number of contexts between this and scope; zero if this == scope.
|
|
315
293
|
int ContextChainLength(Scope* scope);
|
|
316
294
|
|
|
295
|
+
// Find the first function, global, or eval scope. This is the scope
|
|
296
|
+
// where var declarations will be hoisted to in the implementation.
|
|
297
|
+
Scope* DeclarationScope();
|
|
298
|
+
|
|
299
|
+
Handle<SerializedScopeInfo> GetSerializedScopeInfo();
|
|
300
|
+
|
|
317
301
|
// ---------------------------------------------------------------------------
|
|
318
302
|
// Strict mode support.
|
|
319
303
|
bool IsDeclared(Handle<String> name) {
|
|
@@ -339,6 +323,8 @@ class Scope: public ZoneObject {
|
|
|
339
323
|
|
|
340
324
|
explicit Scope(Type type);
|
|
341
325
|
|
|
326
|
+
Isolate* const isolate_;
|
|
327
|
+
|
|
342
328
|
// Scope tree.
|
|
343
329
|
Scope* outer_scope_; // the immediately enclosing outer scope, or NULL
|
|
344
330
|
ZoneList<Scope*> inner_scopes_; // the immediately enclosed inner scopes
|
|
@@ -371,17 +357,21 @@ class Scope: public ZoneObject {
|
|
|
371
357
|
Variable* function_;
|
|
372
358
|
// Convenience variable; function scopes only.
|
|
373
359
|
Variable* arguments_;
|
|
374
|
-
// Convenience variable; function scopes only.
|
|
375
|
-
Variable* arguments_shadow_;
|
|
376
360
|
|
|
377
361
|
// Illegal redeclaration.
|
|
378
362
|
Expression* illegal_redecl_;
|
|
379
363
|
|
|
380
|
-
// Scope-specific information.
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
bool
|
|
384
|
-
|
|
364
|
+
// Scope-specific information computed during parsing.
|
|
365
|
+
//
|
|
366
|
+
// This scope is inside a 'with' of some outer scope.
|
|
367
|
+
bool scope_inside_with_;
|
|
368
|
+
// This scope contains a 'with' statement.
|
|
369
|
+
bool scope_contains_with_;
|
|
370
|
+
// This scope or a nested catch scope or with scope contain an 'eval' call. At
|
|
371
|
+
// the 'eval' call site this scope is the declaration scope.
|
|
372
|
+
bool scope_calls_eval_;
|
|
373
|
+
// This scope is a strict mode scope.
|
|
374
|
+
bool strict_mode_;
|
|
385
375
|
|
|
386
376
|
// Computed via PropagateScopeInfo.
|
|
387
377
|
bool outer_scope_calls_eval_;
|
|
@@ -390,6 +380,10 @@ class Scope: public ZoneObject {
|
|
|
390
380
|
bool outer_scope_is_eval_scope_;
|
|
391
381
|
bool force_eager_compilation_;
|
|
392
382
|
|
|
383
|
+
// True if it doesn't need scope resolution (e.g., if the scope was
|
|
384
|
+
// constructed based on a serialized scope info or a catch context).
|
|
385
|
+
bool already_resolved_;
|
|
386
|
+
|
|
393
387
|
// Computed as variables are declared.
|
|
394
388
|
int num_var_or_const_;
|
|
395
389
|
|
|
@@ -399,7 +393,7 @@ class Scope: public ZoneObject {
|
|
|
399
393
|
|
|
400
394
|
// Serialized scopes support.
|
|
401
395
|
Handle<SerializedScopeInfo> scope_info_;
|
|
402
|
-
bool
|
|
396
|
+
bool already_resolved() { return already_resolved_; }
|
|
403
397
|
|
|
404
398
|
// Create a non-local variable with a given name.
|
|
405
399
|
// These variables are looked up dynamically at runtime.
|
|
@@ -407,7 +401,7 @@ class Scope: public ZoneObject {
|
|
|
407
401
|
|
|
408
402
|
// Variable resolution.
|
|
409
403
|
Variable* LookupRecursive(Handle<String> name,
|
|
410
|
-
bool
|
|
404
|
+
bool from_inner_function,
|
|
411
405
|
Variable** invalidated_local);
|
|
412
406
|
void ResolveVariable(Scope* global_scope,
|
|
413
407
|
Handle<Context> context,
|
|
@@ -435,7 +429,15 @@ class Scope: public ZoneObject {
|
|
|
435
429
|
void AllocateVariablesRecursively();
|
|
436
430
|
|
|
437
431
|
private:
|
|
438
|
-
|
|
432
|
+
// Construct a function or block scope based on the scope info.
|
|
433
|
+
Scope(Scope* inner_scope, Type type, Handle<SerializedScopeInfo> scope_info);
|
|
434
|
+
|
|
435
|
+
// Construct a catch scope with a binding for the name.
|
|
436
|
+
Scope(Scope* inner_scope, Handle<String> catch_variable_name);
|
|
437
|
+
|
|
438
|
+
inline Slot* NewSlot(Variable* var, Slot::Type type, int index) {
|
|
439
|
+
return new(isolate_->zone()) Slot(isolate_, var, type, index);
|
|
440
|
+
}
|
|
439
441
|
|
|
440
442
|
void AddInnerScope(Scope* inner_scope) {
|
|
441
443
|
if (inner_scope != NULL) {
|
|
@@ -449,59 +451,6 @@ class Scope: public ZoneObject {
|
|
|
449
451
|
Handle<SerializedScopeInfo> scope_info);
|
|
450
452
|
};
|
|
451
453
|
|
|
452
|
-
|
|
453
|
-
// Scope used during pre-parsing.
|
|
454
|
-
class DummyScope : public Scope {
|
|
455
|
-
public:
|
|
456
|
-
DummyScope()
|
|
457
|
-
: Scope(GLOBAL_SCOPE),
|
|
458
|
-
nesting_level_(1), // Allows us to Leave the initial scope.
|
|
459
|
-
inside_with_level_(kNotInsideWith) {
|
|
460
|
-
outer_scope_ = this;
|
|
461
|
-
scope_inside_with_ = false;
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
virtual void Initialize(bool inside_with) {
|
|
465
|
-
nesting_level_++;
|
|
466
|
-
if (inside_with && inside_with_level_ == kNotInsideWith) {
|
|
467
|
-
inside_with_level_ = nesting_level_;
|
|
468
|
-
}
|
|
469
|
-
ASSERT(inside_with_level_ <= nesting_level_);
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
virtual void Leave() {
|
|
473
|
-
nesting_level_--;
|
|
474
|
-
ASSERT(nesting_level_ >= 0);
|
|
475
|
-
if (nesting_level_ < inside_with_level_) {
|
|
476
|
-
inside_with_level_ = kNotInsideWith;
|
|
477
|
-
}
|
|
478
|
-
ASSERT(inside_with_level_ <= nesting_level_);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
virtual Variable* Lookup(Handle<String> name) { return NULL; }
|
|
482
|
-
|
|
483
|
-
virtual VariableProxy* NewUnresolved(Handle<String> name,
|
|
484
|
-
bool inside_with,
|
|
485
|
-
int position = RelocInfo::kNoPosition) {
|
|
486
|
-
return NULL;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
virtual Variable* NewTemporary(Handle<String> name) { return NULL; }
|
|
490
|
-
|
|
491
|
-
virtual bool HasTrivialOuterContext() const {
|
|
492
|
-
return (nesting_level_ == 0 || inside_with_level_ <= 0);
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
private:
|
|
496
|
-
static const int kNotInsideWith = -1;
|
|
497
|
-
// Number of surrounding scopes of the current scope.
|
|
498
|
-
int nesting_level_;
|
|
499
|
-
// Nesting level of outermost scope that is contained in a with statement,
|
|
500
|
-
// or kNotInsideWith if there are no with's around the current scope.
|
|
501
|
-
int inside_with_level_;
|
|
502
|
-
};
|
|
503
|
-
|
|
504
|
-
|
|
505
454
|
} } // namespace v8::internal
|
|
506
455
|
|
|
507
456
|
#endif // V8_SCOPES_H_
|
|
@@ -62,57 +62,15 @@ static int* GetInternalPointer(StatsCounter* counter) {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
ExternalReferenceTable* external_reference_table =
|
|
72
|
-
isolate->external_reference_table();
|
|
73
|
-
if (external_reference_table == NULL) {
|
|
74
|
-
external_reference_table = new ExternalReferenceTable(isolate);
|
|
75
|
-
isolate->set_external_reference_table(external_reference_table);
|
|
76
|
-
}
|
|
77
|
-
return external_reference_table;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
int size() const { return refs_.length(); }
|
|
81
|
-
|
|
82
|
-
Address address(int i) { return refs_[i].address; }
|
|
83
|
-
|
|
84
|
-
uint32_t code(int i) { return refs_[i].code; }
|
|
85
|
-
|
|
86
|
-
const char* name(int i) { return refs_[i].name; }
|
|
87
|
-
|
|
88
|
-
int max_id(int code) { return max_id_[code]; }
|
|
89
|
-
|
|
90
|
-
private:
|
|
91
|
-
explicit ExternalReferenceTable(Isolate* isolate) : refs_(64) {
|
|
92
|
-
PopulateTable(isolate);
|
|
65
|
+
ExternalReferenceTable* ExternalReferenceTable::instance(Isolate* isolate) {
|
|
66
|
+
ExternalReferenceTable* external_reference_table =
|
|
67
|
+
isolate->external_reference_table();
|
|
68
|
+
if (external_reference_table == NULL) {
|
|
69
|
+
external_reference_table = new ExternalReferenceTable(isolate);
|
|
70
|
+
isolate->set_external_reference_table(external_reference_table);
|
|
93
71
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
struct ExternalReferenceEntry {
|
|
97
|
-
Address address;
|
|
98
|
-
uint32_t code;
|
|
99
|
-
const char* name;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
void PopulateTable(Isolate* isolate);
|
|
103
|
-
|
|
104
|
-
// For a few types of references, we can get their address from their id.
|
|
105
|
-
void AddFromId(TypeCode type,
|
|
106
|
-
uint16_t id,
|
|
107
|
-
const char* name,
|
|
108
|
-
Isolate* isolate);
|
|
109
|
-
|
|
110
|
-
// For other types of references, the caller will figure out the address.
|
|
111
|
-
void Add(Address address, TypeCode type, uint16_t id, const char* name);
|
|
112
|
-
|
|
113
|
-
List<ExternalReferenceEntry> refs_;
|
|
114
|
-
int max_id_[kTypeCodeCount];
|
|
115
|
-
};
|
|
72
|
+
return external_reference_table;
|
|
73
|
+
}
|
|
116
74
|
|
|
117
75
|
|
|
118
76
|
void ExternalReferenceTable::AddFromId(TypeCode type,
|
|
@@ -284,7 +242,6 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) {
|
|
|
284
242
|
const char* AddressNames[] = {
|
|
285
243
|
#define C(name) "Isolate::" #name,
|
|
286
244
|
ISOLATE_ADDRESS_LIST(C)
|
|
287
|
-
ISOLATE_ADDRESS_LIST_PROF(C)
|
|
288
245
|
NULL
|
|
289
246
|
#undef C
|
|
290
247
|
};
|
|
@@ -1017,10 +974,11 @@ void Deserializer::ReadChunk(Object** current,
|
|
|
1017
974
|
|
|
1018
975
|
case kNativesStringResource: {
|
|
1019
976
|
int index = source_->Get();
|
|
1020
|
-
Vector<const char> source_vector = Natives::
|
|
977
|
+
Vector<const char> source_vector = Natives::GetRawScriptSource(index);
|
|
1021
978
|
NativesExternalStringResource* resource =
|
|
1022
|
-
new NativesExternalStringResource(
|
|
1023
|
-
|
|
979
|
+
new NativesExternalStringResource(isolate->bootstrapper(),
|
|
980
|
+
source_vector.start(),
|
|
981
|
+
source_vector.length());
|
|
1024
982
|
*current++ = reinterpret_cast<Object*>(resource);
|
|
1025
983
|
break;
|
|
1026
984
|
}
|
|
@@ -60,6 +60,52 @@ const int kDebugRegisterBits = 4;
|
|
|
60
60
|
const int kDebugIdShift = kDebugRegisterBits;
|
|
61
61
|
|
|
62
62
|
|
|
63
|
+
// ExternalReferenceTable is a helper class that defines the relationship
|
|
64
|
+
// between external references and their encodings. It is used to build
|
|
65
|
+
// hashmaps in ExternalReferenceEncoder and ExternalReferenceDecoder.
|
|
66
|
+
class ExternalReferenceTable {
|
|
67
|
+
public:
|
|
68
|
+
static ExternalReferenceTable* instance(Isolate* isolate);
|
|
69
|
+
|
|
70
|
+
~ExternalReferenceTable() { }
|
|
71
|
+
|
|
72
|
+
int size() const { return refs_.length(); }
|
|
73
|
+
|
|
74
|
+
Address address(int i) { return refs_[i].address; }
|
|
75
|
+
|
|
76
|
+
uint32_t code(int i) { return refs_[i].code; }
|
|
77
|
+
|
|
78
|
+
const char* name(int i) { return refs_[i].name; }
|
|
79
|
+
|
|
80
|
+
int max_id(int code) { return max_id_[code]; }
|
|
81
|
+
|
|
82
|
+
private:
|
|
83
|
+
explicit ExternalReferenceTable(Isolate* isolate) : refs_(64) {
|
|
84
|
+
PopulateTable(isolate);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
struct ExternalReferenceEntry {
|
|
88
|
+
Address address;
|
|
89
|
+
uint32_t code;
|
|
90
|
+
const char* name;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
void PopulateTable(Isolate* isolate);
|
|
94
|
+
|
|
95
|
+
// For a few types of references, we can get their address from their id.
|
|
96
|
+
void AddFromId(TypeCode type,
|
|
97
|
+
uint16_t id,
|
|
98
|
+
const char* name,
|
|
99
|
+
Isolate* isolate);
|
|
100
|
+
|
|
101
|
+
// For other types of references, the caller will figure out the address.
|
|
102
|
+
void Add(Address address, TypeCode type, uint16_t id, const char* name);
|
|
103
|
+
|
|
104
|
+
List<ExternalReferenceEntry> refs_;
|
|
105
|
+
int max_id_[kTypeCodeCount];
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
|
|
63
109
|
class ExternalReferenceEncoder {
|
|
64
110
|
public:
|
|
65
111
|
ExternalReferenceEncoder();
|
|
@@ -544,6 +590,7 @@ class PartialSerializer : public Serializer {
|
|
|
544
590
|
ASSERT(!o->IsScript());
|
|
545
591
|
return o->IsString() || o->IsSharedFunctionInfo() ||
|
|
546
592
|
o->IsHeapNumber() || o->IsCode() ||
|
|
593
|
+
o->IsSerializedScopeInfo() ||
|
|
547
594
|
o->map() == HEAP->fixed_cow_array_map();
|
|
548
595
|
}
|
|
549
596
|
|