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
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
#include "lithium-allocator.h"
|
|
33
33
|
#include "lithium.h"
|
|
34
34
|
#include "safepoint-table.h"
|
|
35
|
+
#include "utils.h"
|
|
35
36
|
|
|
36
37
|
namespace v8 {
|
|
37
38
|
namespace internal {
|
|
@@ -70,17 +71,12 @@ class LCodeGen;
|
|
|
70
71
|
V(ClampDToUint8) \
|
|
71
72
|
V(ClampIToUint8) \
|
|
72
73
|
V(ClampTToUint8) \
|
|
73
|
-
V(ClassOfTest) \
|
|
74
74
|
V(ClassOfTestAndBranch) \
|
|
75
|
-
V(CmpID) \
|
|
76
75
|
V(CmpIDAndBranch) \
|
|
77
|
-
V(
|
|
78
|
-
V(CmpJSObjectEqAndBranch) \
|
|
79
|
-
V(CmpSymbolEq) \
|
|
80
|
-
V(CmpSymbolEqAndBranch) \
|
|
76
|
+
V(CmpObjectEqAndBranch) \
|
|
81
77
|
V(CmpMapAndBranch) \
|
|
82
78
|
V(CmpT) \
|
|
83
|
-
V(
|
|
79
|
+
V(CmpConstantEqAndBranch) \
|
|
84
80
|
V(ConstantD) \
|
|
85
81
|
V(ConstantI) \
|
|
86
82
|
V(ConstantT) \
|
|
@@ -89,33 +85,25 @@ class LCodeGen;
|
|
|
89
85
|
V(Deoptimize) \
|
|
90
86
|
V(DivI) \
|
|
91
87
|
V(DoubleToI) \
|
|
92
|
-
V(
|
|
93
|
-
V(
|
|
88
|
+
V(ElementsKind) \
|
|
89
|
+
V(FixedArrayBaseLength) \
|
|
94
90
|
V(FunctionLiteral) \
|
|
95
91
|
V(GetCachedArrayIndex) \
|
|
96
92
|
V(GlobalObject) \
|
|
97
93
|
V(GlobalReceiver) \
|
|
98
94
|
V(Goto) \
|
|
99
|
-
V(HasCachedArrayIndex) \
|
|
100
95
|
V(HasCachedArrayIndexAndBranch) \
|
|
101
|
-
V(HasInstanceType) \
|
|
102
96
|
V(HasInstanceTypeAndBranch) \
|
|
103
97
|
V(In) \
|
|
104
98
|
V(InstanceOf) \
|
|
105
|
-
V(InstanceOfAndBranch) \
|
|
106
99
|
V(InstanceOfKnownGlobal) \
|
|
107
100
|
V(InstructionGap) \
|
|
108
101
|
V(Integer32ToDouble) \
|
|
109
102
|
V(InvokeFunction) \
|
|
110
|
-
V(IsConstructCall) \
|
|
111
103
|
V(IsConstructCallAndBranch) \
|
|
112
|
-
V(IsNull) \
|
|
113
104
|
V(IsNullAndBranch) \
|
|
114
|
-
V(IsObject) \
|
|
115
105
|
V(IsObjectAndBranch) \
|
|
116
|
-
V(IsSmi) \
|
|
117
106
|
V(IsSmiAndBranch) \
|
|
118
|
-
V(IsUndetectable) \
|
|
119
107
|
V(IsUndetectableAndBranch) \
|
|
120
108
|
V(JSArrayLength) \
|
|
121
109
|
V(Label) \
|
|
@@ -127,6 +115,7 @@ class LCodeGen;
|
|
|
127
115
|
V(LoadGlobalCell) \
|
|
128
116
|
V(LoadGlobalGeneric) \
|
|
129
117
|
V(LoadKeyedFastElement) \
|
|
118
|
+
V(LoadKeyedFastDoubleElement) \
|
|
130
119
|
V(LoadKeyedGeneric) \
|
|
131
120
|
V(LoadKeyedSpecializedArrayElement) \
|
|
132
121
|
V(LoadNamedField) \
|
|
@@ -152,6 +141,7 @@ class LCodeGen;
|
|
|
152
141
|
V(StoreContextSlot) \
|
|
153
142
|
V(StoreGlobalCell) \
|
|
154
143
|
V(StoreGlobalGeneric) \
|
|
144
|
+
V(StoreKeyedFastDoubleElement) \
|
|
155
145
|
V(StoreKeyedFastElement) \
|
|
156
146
|
V(StoreKeyedGeneric) \
|
|
157
147
|
V(StoreKeyedSpecializedArrayElement) \
|
|
@@ -163,10 +153,10 @@ class LCodeGen;
|
|
|
163
153
|
V(StringLength) \
|
|
164
154
|
V(SubI) \
|
|
165
155
|
V(TaggedToI) \
|
|
156
|
+
V(ThisFunction) \
|
|
166
157
|
V(Throw) \
|
|
167
158
|
V(ToFastProperties) \
|
|
168
159
|
V(Typeof) \
|
|
169
|
-
V(TypeofIs) \
|
|
170
160
|
V(TypeofIsAndBranch) \
|
|
171
161
|
V(UnaryMathOperation) \
|
|
172
162
|
V(UnknownOSRValue) \
|
|
@@ -225,7 +215,6 @@ class LInstruction: public ZoneObject {
|
|
|
225
215
|
virtual bool IsGap() const { return false; }
|
|
226
216
|
|
|
227
217
|
virtual bool IsControl() const { return false; }
|
|
228
|
-
virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
|
|
229
218
|
|
|
230
219
|
void set_environment(LEnvironment* env) { environment_ = env; }
|
|
231
220
|
LEnvironment* environment() const { return environment_; }
|
|
@@ -281,37 +270,6 @@ class LInstruction: public ZoneObject {
|
|
|
281
270
|
};
|
|
282
271
|
|
|
283
272
|
|
|
284
|
-
template<typename ElementType, int NumElements>
|
|
285
|
-
class OperandContainer {
|
|
286
|
-
public:
|
|
287
|
-
OperandContainer() {
|
|
288
|
-
for (int i = 0; i < NumElements; i++) elems_[i] = NULL;
|
|
289
|
-
}
|
|
290
|
-
int length() { return NumElements; }
|
|
291
|
-
ElementType& operator[](int i) {
|
|
292
|
-
ASSERT(i < length());
|
|
293
|
-
return elems_[i];
|
|
294
|
-
}
|
|
295
|
-
void PrintOperandsTo(StringStream* stream);
|
|
296
|
-
|
|
297
|
-
private:
|
|
298
|
-
ElementType elems_[NumElements];
|
|
299
|
-
};
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
template<typename ElementType>
|
|
303
|
-
class OperandContainer<ElementType, 0> {
|
|
304
|
-
public:
|
|
305
|
-
int length() { return 0; }
|
|
306
|
-
void PrintOperandsTo(StringStream* stream) { }
|
|
307
|
-
ElementType& operator[](int i) {
|
|
308
|
-
UNREACHABLE();
|
|
309
|
-
static ElementType t = 0;
|
|
310
|
-
return t;
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
|
|
315
273
|
// R = number of result operands (0 or 1).
|
|
316
274
|
// I = number of input operands.
|
|
317
275
|
// T = number of temporary operands.
|
|
@@ -334,9 +292,9 @@ class LTemplateInstruction: public LInstruction {
|
|
|
334
292
|
virtual void PrintOutputOperandTo(StringStream* stream);
|
|
335
293
|
|
|
336
294
|
protected:
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
295
|
+
EmbeddedContainer<LOperand*, R> results_;
|
|
296
|
+
EmbeddedContainer<LOperand*, I> inputs_;
|
|
297
|
+
EmbeddedContainer<LOperand*, T> temps_;
|
|
340
298
|
};
|
|
341
299
|
|
|
342
300
|
|
|
@@ -395,19 +353,16 @@ class LInstructionGap: public LGap {
|
|
|
395
353
|
|
|
396
354
|
class LGoto: public LTemplateInstruction<0, 0, 0> {
|
|
397
355
|
public:
|
|
398
|
-
LGoto(int block_id
|
|
399
|
-
: block_id_(block_id), include_stack_check_(include_stack_check) { }
|
|
356
|
+
explicit LGoto(int block_id) : block_id_(block_id) { }
|
|
400
357
|
|
|
401
358
|
DECLARE_CONCRETE_INSTRUCTION(Goto, "goto")
|
|
402
359
|
virtual void PrintDataTo(StringStream* stream);
|
|
403
360
|
virtual bool IsControl() const { return true; }
|
|
404
361
|
|
|
405
362
|
int block_id() const { return block_id_; }
|
|
406
|
-
bool include_stack_check() const { return include_stack_check_; }
|
|
407
363
|
|
|
408
364
|
private:
|
|
409
365
|
int block_id_;
|
|
410
|
-
bool include_stack_check_;
|
|
411
366
|
};
|
|
412
367
|
|
|
413
368
|
|
|
@@ -489,16 +444,15 @@ class LControlInstruction: public LTemplateInstruction<0, I, T> {
|
|
|
489
444
|
public:
|
|
490
445
|
virtual bool IsControl() const { return true; }
|
|
491
446
|
|
|
492
|
-
int
|
|
493
|
-
int
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
false_block_id_ = false_block_id;
|
|
497
|
-
}
|
|
447
|
+
int SuccessorCount() { return hydrogen()->SuccessorCount(); }
|
|
448
|
+
HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
|
|
449
|
+
int true_block_id() { return hydrogen()->SuccessorAt(0)->block_id(); }
|
|
450
|
+
int false_block_id() { return hydrogen()->SuccessorAt(1)->block_id(); }
|
|
498
451
|
|
|
499
452
|
private:
|
|
500
|
-
|
|
501
|
-
|
|
453
|
+
HControlInstruction* hydrogen() {
|
|
454
|
+
return HControlInstruction::cast(this->hydrogen_value());
|
|
455
|
+
}
|
|
502
456
|
};
|
|
503
457
|
|
|
504
458
|
|
|
@@ -600,23 +554,6 @@ class LMulI: public LTemplateInstruction<1, 2, 1> {
|
|
|
600
554
|
};
|
|
601
555
|
|
|
602
556
|
|
|
603
|
-
class LCmpID: public LTemplateInstruction<1, 2, 0> {
|
|
604
|
-
public:
|
|
605
|
-
LCmpID(LOperand* left, LOperand* right) {
|
|
606
|
-
inputs_[0] = left;
|
|
607
|
-
inputs_[1] = right;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
|
|
611
|
-
DECLARE_HYDROGEN_ACCESSOR(Compare)
|
|
612
|
-
|
|
613
|
-
Token::Value op() const { return hydrogen()->token(); }
|
|
614
|
-
bool is_double() const {
|
|
615
|
-
return hydrogen()->GetInputRepresentation().IsDouble();
|
|
616
|
-
}
|
|
617
|
-
};
|
|
618
|
-
|
|
619
|
-
|
|
620
557
|
class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
|
621
558
|
public:
|
|
622
559
|
LCmpIDAndBranch(LOperand* left, LOperand* right) {
|
|
@@ -625,7 +562,7 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
|
|
625
562
|
}
|
|
626
563
|
|
|
627
564
|
DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
|
|
628
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
565
|
+
DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
|
|
629
566
|
|
|
630
567
|
Token::Value op() const { return hydrogen()->token(); }
|
|
631
568
|
bool is_double() const {
|
|
@@ -636,12 +573,16 @@ class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
|
|
636
573
|
};
|
|
637
574
|
|
|
638
575
|
|
|
639
|
-
class LUnaryMathOperation: public LTemplateInstruction<1,
|
|
576
|
+
class LUnaryMathOperation: public LTemplateInstruction<1, 2, 0> {
|
|
640
577
|
public:
|
|
641
|
-
|
|
578
|
+
LUnaryMathOperation(LOperand* context, LOperand* value) {
|
|
579
|
+
inputs_[1] = context;
|
|
642
580
|
inputs_[0] = value;
|
|
643
581
|
}
|
|
644
582
|
|
|
583
|
+
LOperand* context() { return inputs_[1]; }
|
|
584
|
+
LOperand* value() { return inputs_[0]; }
|
|
585
|
+
|
|
645
586
|
DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation")
|
|
646
587
|
DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
|
|
647
588
|
|
|
@@ -650,61 +591,27 @@ class LUnaryMathOperation: public LTemplateInstruction<1, 1, 0> {
|
|
|
650
591
|
};
|
|
651
592
|
|
|
652
593
|
|
|
653
|
-
class
|
|
654
|
-
public:
|
|
655
|
-
LCmpJSObjectEq(LOperand* left, LOperand* right) {
|
|
656
|
-
inputs_[0] = left;
|
|
657
|
-
inputs_[1] = right;
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq")
|
|
661
|
-
};
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
class LCmpJSObjectEqAndBranch: public LControlInstruction<2, 0> {
|
|
665
|
-
public:
|
|
666
|
-
LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) {
|
|
667
|
-
inputs_[0] = left;
|
|
668
|
-
inputs_[1] = right;
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch,
|
|
672
|
-
"cmp-jsobject-eq-and-branch")
|
|
673
|
-
};
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
class LCmpSymbolEq: public LTemplateInstruction<1, 2, 0> {
|
|
594
|
+
class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
|
|
677
595
|
public:
|
|
678
|
-
|
|
596
|
+
LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
|
|
679
597
|
inputs_[0] = left;
|
|
680
598
|
inputs_[1] = right;
|
|
681
599
|
}
|
|
682
600
|
|
|
683
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
|
601
|
+
DECLARE_CONCRETE_INSTRUCTION(CmpObjectEqAndBranch,
|
|
602
|
+
"cmp-object-eq-and-branch")
|
|
684
603
|
};
|
|
685
604
|
|
|
686
605
|
|
|
687
|
-
class
|
|
606
|
+
class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
|
|
688
607
|
public:
|
|
689
|
-
|
|
608
|
+
explicit LCmpConstantEqAndBranch(LOperand* left) {
|
|
690
609
|
inputs_[0] = left;
|
|
691
|
-
inputs_[1] = right;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
DECLARE_CONCRETE_INSTRUCTION(CmpSymbolEqAndBranch, "cmp-symbol-eq-and-branch")
|
|
695
|
-
};
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
class LIsNull: public LTemplateInstruction<1, 1, 0> {
|
|
699
|
-
public:
|
|
700
|
-
explicit LIsNull(LOperand* value) {
|
|
701
|
-
inputs_[0] = value;
|
|
702
610
|
}
|
|
703
611
|
|
|
704
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
bool is_strict() const { return hydrogen()->is_strict(); }
|
|
612
|
+
DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
|
|
613
|
+
"cmp-constant-eq-and-branch")
|
|
614
|
+
DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
|
|
708
615
|
};
|
|
709
616
|
|
|
710
617
|
|
|
@@ -716,7 +623,7 @@ class LIsNullAndBranch: public LControlInstruction<1, 1> {
|
|
|
716
623
|
}
|
|
717
624
|
|
|
718
625
|
DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch")
|
|
719
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
626
|
+
DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch)
|
|
720
627
|
|
|
721
628
|
bool is_strict() const { return hydrogen()->is_strict(); }
|
|
722
629
|
|
|
@@ -724,23 +631,11 @@ class LIsNullAndBranch: public LControlInstruction<1, 1> {
|
|
|
724
631
|
};
|
|
725
632
|
|
|
726
633
|
|
|
727
|
-
class
|
|
728
|
-
public:
|
|
729
|
-
LIsObject(LOperand* value, LOperand* temp) {
|
|
730
|
-
inputs_[0] = value;
|
|
731
|
-
temps_[0] = temp;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
class LIsObjectAndBranch: public LControlInstruction<1, 2> {
|
|
634
|
+
class LIsObjectAndBranch: public LControlInstruction<1, 1> {
|
|
739
635
|
public:
|
|
740
|
-
LIsObjectAndBranch(LOperand* value, LOperand* temp
|
|
636
|
+
LIsObjectAndBranch(LOperand* value, LOperand* temp) {
|
|
741
637
|
inputs_[0] = value;
|
|
742
638
|
temps_[0] = temp;
|
|
743
|
-
temps_[1] = temp2;
|
|
744
639
|
}
|
|
745
640
|
|
|
746
641
|
DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
|
|
@@ -749,17 +644,6 @@ class LIsObjectAndBranch: public LControlInstruction<1, 2> {
|
|
|
749
644
|
};
|
|
750
645
|
|
|
751
646
|
|
|
752
|
-
class LIsSmi: public LTemplateInstruction<1, 1, 0> {
|
|
753
|
-
public:
|
|
754
|
-
explicit LIsSmi(LOperand* value) {
|
|
755
|
-
inputs_[0] = value;
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
|
|
759
|
-
DECLARE_HYDROGEN_ACCESSOR(IsSmi)
|
|
760
|
-
};
|
|
761
|
-
|
|
762
|
-
|
|
763
647
|
class LIsSmiAndBranch: public LControlInstruction<1, 0> {
|
|
764
648
|
public:
|
|
765
649
|
explicit LIsSmiAndBranch(LOperand* value) {
|
|
@@ -767,25 +651,15 @@ class LIsSmiAndBranch: public LControlInstruction<1, 0> {
|
|
|
767
651
|
}
|
|
768
652
|
|
|
769
653
|
DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
|
|
654
|
+
DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
|
|
770
655
|
|
|
771
656
|
virtual void PrintDataTo(StringStream* stream);
|
|
772
657
|
};
|
|
773
658
|
|
|
774
659
|
|
|
775
|
-
class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
|
|
776
|
-
public:
|
|
777
|
-
explicit LIsUndetectable(LOperand* value) {
|
|
778
|
-
inputs_[0] = value;
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
|
|
782
|
-
DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
|
|
783
|
-
};
|
|
784
|
-
|
|
785
|
-
|
|
786
660
|
class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
|
787
661
|
public:
|
|
788
|
-
|
|
662
|
+
LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
|
|
789
663
|
inputs_[0] = value;
|
|
790
664
|
temps_[0] = temp;
|
|
791
665
|
}
|
|
@@ -797,17 +671,6 @@ class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
|
|
797
671
|
};
|
|
798
672
|
|
|
799
673
|
|
|
800
|
-
class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
|
|
801
|
-
public:
|
|
802
|
-
explicit LHasInstanceType(LOperand* value) {
|
|
803
|
-
inputs_[0] = value;
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
|
|
807
|
-
DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
|
|
808
|
-
};
|
|
809
|
-
|
|
810
|
-
|
|
811
674
|
class LHasInstanceTypeAndBranch: public LControlInstruction<1, 1> {
|
|
812
675
|
public:
|
|
813
676
|
LHasInstanceTypeAndBranch(LOperand* value, LOperand* temp) {
|
|
@@ -817,7 +680,7 @@ class LHasInstanceTypeAndBranch: public LControlInstruction<1, 1> {
|
|
|
817
680
|
|
|
818
681
|
DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
|
|
819
682
|
"has-instance-type-and-branch")
|
|
820
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
683
|
+
DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
|
|
821
684
|
|
|
822
685
|
virtual void PrintDataTo(StringStream* stream);
|
|
823
686
|
};
|
|
@@ -834,17 +697,6 @@ class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
|
|
834
697
|
};
|
|
835
698
|
|
|
836
699
|
|
|
837
|
-
class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
|
838
|
-
public:
|
|
839
|
-
explicit LHasCachedArrayIndex(LOperand* value) {
|
|
840
|
-
inputs_[0] = value;
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
|
|
844
|
-
DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
|
|
845
|
-
};
|
|
846
|
-
|
|
847
|
-
|
|
848
700
|
class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
|
849
701
|
public:
|
|
850
702
|
explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
|
|
@@ -857,13 +709,6 @@ class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
|
|
857
709
|
};
|
|
858
710
|
|
|
859
711
|
|
|
860
|
-
class LIsConstructCall: public LTemplateInstruction<1, 0, 0> {
|
|
861
|
-
public:
|
|
862
|
-
DECLARE_CONCRETE_INSTRUCTION(IsConstructCall, "is-construct-call")
|
|
863
|
-
DECLARE_HYDROGEN_ACCESSOR(IsConstructCall)
|
|
864
|
-
};
|
|
865
|
-
|
|
866
|
-
|
|
867
712
|
class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
|
868
713
|
public:
|
|
869
714
|
explicit LIsConstructCallAndBranch(LOperand* temp) {
|
|
@@ -875,20 +720,6 @@ class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
|
|
875
720
|
};
|
|
876
721
|
|
|
877
722
|
|
|
878
|
-
class LClassOfTest: public LTemplateInstruction<1, 1, 1> {
|
|
879
|
-
public:
|
|
880
|
-
LClassOfTest(LOperand* value, LOperand* temp) {
|
|
881
|
-
inputs_[0] = value;
|
|
882
|
-
temps_[0] = temp;
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
|
|
886
|
-
DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
|
|
887
|
-
|
|
888
|
-
virtual void PrintDataTo(StringStream* stream);
|
|
889
|
-
};
|
|
890
|
-
|
|
891
|
-
|
|
892
723
|
class LClassOfTestAndBranch: public LControlInstruction<1, 2> {
|
|
893
724
|
public:
|
|
894
725
|
LClassOfTestAndBranch(LOperand* value, LOperand* temp, LOperand* temp2) {
|
|
@@ -899,35 +730,22 @@ class LClassOfTestAndBranch: public LControlInstruction<1, 2> {
|
|
|
899
730
|
|
|
900
731
|
DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
|
|
901
732
|
"class-of-test-and-branch")
|
|
902
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
733
|
+
DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
|
|
903
734
|
|
|
904
735
|
virtual void PrintDataTo(StringStream* stream);
|
|
905
736
|
};
|
|
906
737
|
|
|
907
738
|
|
|
908
|
-
class LCmpT: public LTemplateInstruction<1,
|
|
739
|
+
class LCmpT: public LTemplateInstruction<1, 3, 0> {
|
|
909
740
|
public:
|
|
910
|
-
LCmpT(LOperand* left, LOperand* right) {
|
|
911
|
-
inputs_[0] =
|
|
912
|
-
inputs_[1] =
|
|
741
|
+
LCmpT(LOperand* context, LOperand* left, LOperand* right) {
|
|
742
|
+
inputs_[0] = context;
|
|
743
|
+
inputs_[1] = left;
|
|
744
|
+
inputs_[2] = right;
|
|
913
745
|
}
|
|
914
746
|
|
|
915
747
|
DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
|
|
916
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
917
|
-
|
|
918
|
-
Token::Value op() const { return hydrogen()->token(); }
|
|
919
|
-
};
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
class LCmpTAndBranch: public LControlInstruction<2, 0> {
|
|
923
|
-
public:
|
|
924
|
-
LCmpTAndBranch(LOperand* left, LOperand* right) {
|
|
925
|
-
inputs_[0] = left;
|
|
926
|
-
inputs_[1] = right;
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch")
|
|
930
|
-
DECLARE_HYDROGEN_ACCESSOR(Compare)
|
|
748
|
+
DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
|
|
931
749
|
|
|
932
750
|
Token::Value op() const { return hydrogen()->token(); }
|
|
933
751
|
};
|
|
@@ -947,24 +765,11 @@ class LInstanceOf: public LTemplateInstruction<1, 3, 0> {
|
|
|
947
765
|
};
|
|
948
766
|
|
|
949
767
|
|
|
950
|
-
class
|
|
768
|
+
class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 2, 1> {
|
|
951
769
|
public:
|
|
952
|
-
|
|
770
|
+
LInstanceOfKnownGlobal(LOperand* context, LOperand* value, LOperand* temp) {
|
|
953
771
|
inputs_[0] = context;
|
|
954
|
-
inputs_[1] =
|
|
955
|
-
inputs_[2] = right;
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch")
|
|
959
|
-
|
|
960
|
-
LOperand* context() { return inputs_[0]; }
|
|
961
|
-
};
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> {
|
|
965
|
-
public:
|
|
966
|
-
LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) {
|
|
967
|
-
inputs_[0] = value;
|
|
772
|
+
inputs_[1] = value;
|
|
968
773
|
temps_[0] = temp;
|
|
969
774
|
}
|
|
970
775
|
|
|
@@ -1070,14 +875,15 @@ class LConstantT: public LTemplateInstruction<1, 0, 0> {
|
|
|
1070
875
|
};
|
|
1071
876
|
|
|
1072
877
|
|
|
1073
|
-
class LBranch: public LControlInstruction<1,
|
|
878
|
+
class LBranch: public LControlInstruction<1, 1> {
|
|
1074
879
|
public:
|
|
1075
|
-
explicit LBranch(LOperand* value) {
|
|
880
|
+
explicit LBranch(LOperand* value, LOperand* temp) {
|
|
1076
881
|
inputs_[0] = value;
|
|
882
|
+
temps_[0] = temp;
|
|
1077
883
|
}
|
|
1078
884
|
|
|
1079
885
|
DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
|
|
1080
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
886
|
+
DECLARE_HYDROGEN_ACCESSOR(Branch)
|
|
1081
887
|
|
|
1082
888
|
virtual void PrintDataTo(StringStream* stream);
|
|
1083
889
|
};
|
|
@@ -1115,25 +921,26 @@ class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
|
|
|
1115
921
|
};
|
|
1116
922
|
|
|
1117
923
|
|
|
1118
|
-
class
|
|
924
|
+
class LFixedArrayBaseLength: public LTemplateInstruction<1, 1, 0> {
|
|
1119
925
|
public:
|
|
1120
|
-
explicit
|
|
926
|
+
explicit LFixedArrayBaseLength(LOperand* value) {
|
|
1121
927
|
inputs_[0] = value;
|
|
1122
928
|
}
|
|
1123
929
|
|
|
1124
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
|
1125
|
-
|
|
930
|
+
DECLARE_CONCRETE_INSTRUCTION(FixedArrayBaseLength,
|
|
931
|
+
"fixed-array-base-length")
|
|
932
|
+
DECLARE_HYDROGEN_ACCESSOR(FixedArrayBaseLength)
|
|
1126
933
|
};
|
|
1127
934
|
|
|
1128
935
|
|
|
1129
|
-
class
|
|
936
|
+
class LElementsKind: public LTemplateInstruction<1, 1, 0> {
|
|
1130
937
|
public:
|
|
1131
|
-
explicit
|
|
938
|
+
explicit LElementsKind(LOperand* value) {
|
|
1132
939
|
inputs_[0] = value;
|
|
1133
940
|
}
|
|
1134
941
|
|
|
1135
|
-
DECLARE_CONCRETE_INSTRUCTION(
|
|
1136
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
942
|
+
DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
|
|
943
|
+
DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
|
|
1137
944
|
};
|
|
1138
945
|
|
|
1139
946
|
|
|
@@ -1149,12 +956,16 @@ class LValueOf: public LTemplateInstruction<1, 1, 1> {
|
|
|
1149
956
|
};
|
|
1150
957
|
|
|
1151
958
|
|
|
1152
|
-
class LThrow: public LTemplateInstruction<0,
|
|
959
|
+
class LThrow: public LTemplateInstruction<0, 2, 0> {
|
|
1153
960
|
public:
|
|
1154
|
-
|
|
1155
|
-
inputs_[0] =
|
|
961
|
+
LThrow(LOperand* context, LOperand* value) {
|
|
962
|
+
inputs_[0] = context;
|
|
963
|
+
inputs_[1] = value;
|
|
1156
964
|
}
|
|
1157
965
|
|
|
966
|
+
LOperand* context() { return inputs_[0]; }
|
|
967
|
+
LOperand* value() { return inputs_[1]; }
|
|
968
|
+
|
|
1158
969
|
DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
|
|
1159
970
|
};
|
|
1160
971
|
|
|
@@ -1212,12 +1023,16 @@ class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
|
|
|
1212
1023
|
};
|
|
1213
1024
|
|
|
1214
1025
|
|
|
1215
|
-
class LArithmeticT: public LTemplateInstruction<1,
|
|
1026
|
+
class LArithmeticT: public LTemplateInstruction<1, 3, 0> {
|
|
1216
1027
|
public:
|
|
1217
|
-
LArithmeticT(Token::Value op,
|
|
1028
|
+
LArithmeticT(Token::Value op,
|
|
1029
|
+
LOperand* context,
|
|
1030
|
+
LOperand* left,
|
|
1031
|
+
LOperand* right)
|
|
1218
1032
|
: op_(op) {
|
|
1219
|
-
inputs_[0] =
|
|
1220
|
-
inputs_[1] =
|
|
1033
|
+
inputs_[0] = context;
|
|
1034
|
+
inputs_[1] = left;
|
|
1035
|
+
inputs_[2] = right;
|
|
1221
1036
|
}
|
|
1222
1037
|
|
|
1223
1038
|
virtual Opcode opcode() const { return LInstruction::kArithmeticT; }
|
|
@@ -1225,6 +1040,9 @@ class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
|
|
|
1225
1040
|
virtual const char* Mnemonic() const;
|
|
1226
1041
|
|
|
1227
1042
|
Token::Value op() const { return op_; }
|
|
1043
|
+
LOperand* context() { return inputs_[0]; }
|
|
1044
|
+
LOperand* left() { return inputs_[1]; }
|
|
1045
|
+
LOperand* right() { return inputs_[2]; }
|
|
1228
1046
|
|
|
1229
1047
|
private:
|
|
1230
1048
|
Token::Value op_;
|
|
@@ -1254,16 +1072,18 @@ class LLoadNamedField: public LTemplateInstruction<1, 1, 0> {
|
|
|
1254
1072
|
};
|
|
1255
1073
|
|
|
1256
1074
|
|
|
1257
|
-
class LLoadNamedFieldPolymorphic: public LTemplateInstruction<1,
|
|
1075
|
+
class LLoadNamedFieldPolymorphic: public LTemplateInstruction<1, 2, 0> {
|
|
1258
1076
|
public:
|
|
1259
|
-
|
|
1260
|
-
inputs_[0] =
|
|
1077
|
+
LLoadNamedFieldPolymorphic(LOperand* context, LOperand* object) {
|
|
1078
|
+
inputs_[0] = context;
|
|
1079
|
+
inputs_[1] = object;
|
|
1261
1080
|
}
|
|
1262
1081
|
|
|
1263
1082
|
DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field-polymorphic")
|
|
1264
1083
|
DECLARE_HYDROGEN_ACCESSOR(LoadNamedFieldPolymorphic)
|
|
1265
1084
|
|
|
1266
|
-
LOperand*
|
|
1085
|
+
LOperand* context() { return inputs_[0]; }
|
|
1086
|
+
LOperand* object() { return inputs_[1]; }
|
|
1267
1087
|
};
|
|
1268
1088
|
|
|
1269
1089
|
|
|
@@ -1333,6 +1153,23 @@ class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
|
|
|
1333
1153
|
};
|
|
1334
1154
|
|
|
1335
1155
|
|
|
1156
|
+
class LLoadKeyedFastDoubleElement: public LTemplateInstruction<1, 2, 0> {
|
|
1157
|
+
public:
|
|
1158
|
+
LLoadKeyedFastDoubleElement(LOperand* elements,
|
|
1159
|
+
LOperand* key) {
|
|
1160
|
+
inputs_[0] = elements;
|
|
1161
|
+
inputs_[1] = key;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement,
|
|
1165
|
+
"load-keyed-fast-double-element")
|
|
1166
|
+
DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastDoubleElement)
|
|
1167
|
+
|
|
1168
|
+
LOperand* elements() { return inputs_[0]; }
|
|
1169
|
+
LOperand* key() { return inputs_[1]; }
|
|
1170
|
+
};
|
|
1171
|
+
|
|
1172
|
+
|
|
1336
1173
|
class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
|
1337
1174
|
public:
|
|
1338
1175
|
LLoadKeyedSpecializedArrayElement(LOperand* external_pointer,
|
|
@@ -1347,8 +1184,8 @@ class LLoadKeyedSpecializedArrayElement: public LTemplateInstruction<1, 2, 0> {
|
|
|
1347
1184
|
|
|
1348
1185
|
LOperand* external_pointer() { return inputs_[0]; }
|
|
1349
1186
|
LOperand* key() { return inputs_[1]; }
|
|
1350
|
-
|
|
1351
|
-
return hydrogen()->
|
|
1187
|
+
JSObject::ElementsKind elements_kind() const {
|
|
1188
|
+
return hydrogen()->elements_kind();
|
|
1352
1189
|
}
|
|
1353
1190
|
};
|
|
1354
1191
|
|
|
@@ -1406,9 +1243,9 @@ class LStoreGlobalCell: public LTemplateInstruction<0, 1, 0> {
|
|
|
1406
1243
|
|
|
1407
1244
|
class LStoreGlobalGeneric: public LTemplateInstruction<0, 3, 0> {
|
|
1408
1245
|
public:
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1246
|
+
LStoreGlobalGeneric(LOperand* context,
|
|
1247
|
+
LOperand* global_object,
|
|
1248
|
+
LOperand* value) {
|
|
1412
1249
|
inputs_[0] = context;
|
|
1413
1250
|
inputs_[1] = global_object;
|
|
1414
1251
|
inputs_[2] = value;
|
|
@@ -1471,6 +1308,11 @@ class LPushArgument: public LTemplateInstruction<0, 1, 0> {
|
|
|
1471
1308
|
};
|
|
1472
1309
|
|
|
1473
1310
|
|
|
1311
|
+
class LThisFunction: public LTemplateInstruction<1, 0, 0> {
|
|
1312
|
+
DECLARE_CONCRETE_INSTRUCTION(ThisFunction, "this-function")
|
|
1313
|
+
};
|
|
1314
|
+
|
|
1315
|
+
|
|
1474
1316
|
class LContext: public LTemplateInstruction<1, 0, 0> {
|
|
1475
1317
|
public:
|
|
1476
1318
|
DECLARE_CONCRETE_INSTRUCTION(Context, "context")
|
|
@@ -1641,11 +1483,15 @@ class LCallNew: public LTemplateInstruction<1, 2, 0> {
|
|
|
1641
1483
|
};
|
|
1642
1484
|
|
|
1643
1485
|
|
|
1644
|
-
class LCallRuntime: public LTemplateInstruction<1,
|
|
1486
|
+
class LCallRuntime: public LTemplateInstruction<1, 1, 0> {
|
|
1645
1487
|
public:
|
|
1488
|
+
explicit LCallRuntime(LOperand* context) {
|
|
1489
|
+
inputs_[0] = context;
|
|
1490
|
+
}
|
|
1646
1491
|
DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
|
|
1647
1492
|
DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
|
|
1648
1493
|
|
|
1494
|
+
LOperand* context() { return inputs_[0]; }
|
|
1649
1495
|
const Runtime::Function* function() const { return hydrogen()->function(); }
|
|
1650
1496
|
int arity() const { return hydrogen()->argument_count(); }
|
|
1651
1497
|
};
|
|
@@ -1691,7 +1537,7 @@ class LDoubleToI: public LTemplateInstruction<1, 1, 1> {
|
|
|
1691
1537
|
}
|
|
1692
1538
|
|
|
1693
1539
|
DECLARE_CONCRETE_INSTRUCTION(DoubleToI, "double-to-i")
|
|
1694
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
1540
|
+
DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
|
1695
1541
|
|
|
1696
1542
|
bool truncating() { return hydrogen()->CanTruncateToInt32(); }
|
|
1697
1543
|
};
|
|
@@ -1706,7 +1552,7 @@ class LTaggedToI: public LTemplateInstruction<1, 1, 1> {
|
|
|
1706
1552
|
}
|
|
1707
1553
|
|
|
1708
1554
|
DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
|
|
1709
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
1555
|
+
DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
|
1710
1556
|
|
|
1711
1557
|
bool truncating() { return hydrogen()->CanTruncateToInt32(); }
|
|
1712
1558
|
};
|
|
@@ -1729,6 +1575,7 @@ class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
|
|
|
1729
1575
|
}
|
|
1730
1576
|
|
|
1731
1577
|
DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
|
|
1578
|
+
DECLARE_HYDROGEN_ACCESSOR(Change);
|
|
1732
1579
|
};
|
|
1733
1580
|
|
|
1734
1581
|
|
|
@@ -1813,6 +1660,28 @@ class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
|
|
|
1813
1660
|
};
|
|
1814
1661
|
|
|
1815
1662
|
|
|
1663
|
+
class LStoreKeyedFastDoubleElement: public LTemplateInstruction<0, 3, 0> {
|
|
1664
|
+
public:
|
|
1665
|
+
LStoreKeyedFastDoubleElement(LOperand* elements,
|
|
1666
|
+
LOperand* key,
|
|
1667
|
+
LOperand* val) {
|
|
1668
|
+
inputs_[0] = elements;
|
|
1669
|
+
inputs_[1] = key;
|
|
1670
|
+
inputs_[2] = val;
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastDoubleElement,
|
|
1674
|
+
"store-keyed-fast-double-element")
|
|
1675
|
+
DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastDoubleElement)
|
|
1676
|
+
|
|
1677
|
+
virtual void PrintDataTo(StringStream* stream);
|
|
1678
|
+
|
|
1679
|
+
LOperand* elements() { return inputs_[0]; }
|
|
1680
|
+
LOperand* key() { return inputs_[1]; }
|
|
1681
|
+
LOperand* value() { return inputs_[2]; }
|
|
1682
|
+
};
|
|
1683
|
+
|
|
1684
|
+
|
|
1816
1685
|
class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
|
|
1817
1686
|
public:
|
|
1818
1687
|
LStoreKeyedSpecializedArrayElement(LOperand* external_pointer,
|
|
@@ -1830,8 +1699,8 @@ class LStoreKeyedSpecializedArrayElement: public LTemplateInstruction<0, 3, 0> {
|
|
|
1830
1699
|
LOperand* external_pointer() { return inputs_[0]; }
|
|
1831
1700
|
LOperand* key() { return inputs_[1]; }
|
|
1832
1701
|
LOperand* value() { return inputs_[2]; }
|
|
1833
|
-
|
|
1834
|
-
return hydrogen()->
|
|
1702
|
+
JSObject::ElementsKind elements_kind() const {
|
|
1703
|
+
return hydrogen()->elements_kind();
|
|
1835
1704
|
}
|
|
1836
1705
|
};
|
|
1837
1706
|
|
|
@@ -1861,46 +1730,52 @@ class LStoreKeyedGeneric: public LTemplateInstruction<0, 4, 0> {
|
|
|
1861
1730
|
};
|
|
1862
1731
|
|
|
1863
1732
|
|
|
1864
|
-
class LStringAdd: public LTemplateInstruction<1,
|
|
1733
|
+
class LStringAdd: public LTemplateInstruction<1, 3, 0> {
|
|
1865
1734
|
public:
|
|
1866
|
-
LStringAdd(LOperand* left, LOperand* right) {
|
|
1867
|
-
inputs_[0] =
|
|
1868
|
-
inputs_[1] =
|
|
1735
|
+
LStringAdd(LOperand* context, LOperand* left, LOperand* right) {
|
|
1736
|
+
inputs_[0] = context;
|
|
1737
|
+
inputs_[1] = left;
|
|
1738
|
+
inputs_[2] = right;
|
|
1869
1739
|
}
|
|
1870
1740
|
|
|
1871
1741
|
DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
|
|
1872
1742
|
DECLARE_HYDROGEN_ACCESSOR(StringAdd)
|
|
1873
1743
|
|
|
1874
|
-
LOperand*
|
|
1875
|
-
LOperand*
|
|
1744
|
+
LOperand* context() { return inputs_[0]; }
|
|
1745
|
+
LOperand* left() { return inputs_[1]; }
|
|
1746
|
+
LOperand* right() { return inputs_[2]; }
|
|
1876
1747
|
};
|
|
1877
1748
|
|
|
1878
1749
|
|
|
1879
|
-
class LStringCharCodeAt: public LTemplateInstruction<1,
|
|
1750
|
+
class LStringCharCodeAt: public LTemplateInstruction<1, 3, 0> {
|
|
1880
1751
|
public:
|
|
1881
|
-
LStringCharCodeAt(LOperand* string, LOperand* index) {
|
|
1882
|
-
inputs_[0] =
|
|
1883
|
-
inputs_[1] =
|
|
1752
|
+
LStringCharCodeAt(LOperand* context, LOperand* string, LOperand* index) {
|
|
1753
|
+
inputs_[0] = context;
|
|
1754
|
+
inputs_[1] = string;
|
|
1755
|
+
inputs_[2] = index;
|
|
1884
1756
|
}
|
|
1885
1757
|
|
|
1886
1758
|
DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
|
|
1887
1759
|
DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
|
|
1888
1760
|
|
|
1889
|
-
LOperand*
|
|
1890
|
-
LOperand*
|
|
1761
|
+
LOperand* context() { return inputs_[0]; }
|
|
1762
|
+
LOperand* string() { return inputs_[1]; }
|
|
1763
|
+
LOperand* index() { return inputs_[2]; }
|
|
1891
1764
|
};
|
|
1892
1765
|
|
|
1893
1766
|
|
|
1894
|
-
class LStringCharFromCode: public LTemplateInstruction<1,
|
|
1767
|
+
class LStringCharFromCode: public LTemplateInstruction<1, 2, 0> {
|
|
1895
1768
|
public:
|
|
1896
|
-
|
|
1897
|
-
inputs_[0] =
|
|
1769
|
+
LStringCharFromCode(LOperand* context, LOperand* char_code) {
|
|
1770
|
+
inputs_[0] = context;
|
|
1771
|
+
inputs_[1] = char_code;
|
|
1898
1772
|
}
|
|
1899
1773
|
|
|
1900
1774
|
DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
|
|
1901
1775
|
DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
|
|
1902
1776
|
|
|
1903
|
-
LOperand*
|
|
1777
|
+
LOperand* context() { return inputs_[0]; }
|
|
1778
|
+
LOperand* char_code() { return inputs_[1]; }
|
|
1904
1779
|
};
|
|
1905
1780
|
|
|
1906
1781
|
|
|
@@ -2022,8 +1897,14 @@ class LCheckNonSmi: public LTemplateInstruction<0, 1, 0> {
|
|
|
2022
1897
|
};
|
|
2023
1898
|
|
|
2024
1899
|
|
|
2025
|
-
class LArrayLiteral: public LTemplateInstruction<1,
|
|
1900
|
+
class LArrayLiteral: public LTemplateInstruction<1, 1, 0> {
|
|
2026
1901
|
public:
|
|
1902
|
+
explicit LArrayLiteral(LOperand* context) {
|
|
1903
|
+
inputs_[0] = context;
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
LOperand* context() { return inputs_[0]; }
|
|
1907
|
+
|
|
2027
1908
|
DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral, "array-literal")
|
|
2028
1909
|
DECLARE_HYDROGEN_ACCESSOR(ArrayLiteral)
|
|
2029
1910
|
};
|
|
@@ -2035,22 +1916,34 @@ class LObjectLiteral: public LTemplateInstruction<1, 1, 0> {
|
|
|
2035
1916
|
inputs_[0] = context;
|
|
2036
1917
|
}
|
|
2037
1918
|
|
|
1919
|
+
LOperand* context() { return inputs_[0]; }
|
|
1920
|
+
|
|
2038
1921
|
DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object-literal")
|
|
2039
1922
|
DECLARE_HYDROGEN_ACCESSOR(ObjectLiteral)
|
|
2040
|
-
|
|
2041
|
-
LOperand* context() { return inputs_[0]; }
|
|
2042
1923
|
};
|
|
2043
1924
|
|
|
2044
1925
|
|
|
2045
|
-
class LRegExpLiteral: public LTemplateInstruction<1,
|
|
1926
|
+
class LRegExpLiteral: public LTemplateInstruction<1, 1, 0> {
|
|
2046
1927
|
public:
|
|
1928
|
+
explicit LRegExpLiteral(LOperand* context) {
|
|
1929
|
+
inputs_[0] = context;
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
LOperand* context() { return inputs_[0]; }
|
|
1933
|
+
|
|
2047
1934
|
DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal")
|
|
2048
1935
|
DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral)
|
|
2049
1936
|
};
|
|
2050
1937
|
|
|
2051
1938
|
|
|
2052
|
-
class LFunctionLiteral: public LTemplateInstruction<1,
|
|
1939
|
+
class LFunctionLiteral: public LTemplateInstruction<1, 1, 0> {
|
|
2053
1940
|
public:
|
|
1941
|
+
explicit LFunctionLiteral(LOperand* context) {
|
|
1942
|
+
inputs_[0] = context;
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
LOperand* context() { return inputs_[0]; }
|
|
1946
|
+
|
|
2054
1947
|
DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal")
|
|
2055
1948
|
DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral)
|
|
2056
1949
|
|
|
@@ -2069,31 +1962,17 @@ class LToFastProperties: public LTemplateInstruction<1, 1, 0> {
|
|
|
2069
1962
|
};
|
|
2070
1963
|
|
|
2071
1964
|
|
|
2072
|
-
class LTypeof: public LTemplateInstruction<1,
|
|
1965
|
+
class LTypeof: public LTemplateInstruction<1, 2, 0> {
|
|
2073
1966
|
public:
|
|
2074
|
-
|
|
2075
|
-
inputs_[0] =
|
|
1967
|
+
LTypeof(LOperand* context, LOperand* value) {
|
|
1968
|
+
inputs_[0] = context;
|
|
1969
|
+
inputs_[1] = value;
|
|
2076
1970
|
}
|
|
2077
1971
|
|
|
2078
1972
|
DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
|
|
2079
1973
|
};
|
|
2080
1974
|
|
|
2081
1975
|
|
|
2082
|
-
class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
|
|
2083
|
-
public:
|
|
2084
|
-
explicit LTypeofIs(LOperand* value) {
|
|
2085
|
-
inputs_[0] = value;
|
|
2086
|
-
}
|
|
2087
|
-
|
|
2088
|
-
DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
|
|
2089
|
-
DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
|
|
2090
|
-
|
|
2091
|
-
Handle<String> type_literal() { return hydrogen()->type_literal(); }
|
|
2092
|
-
|
|
2093
|
-
virtual void PrintDataTo(StringStream* stream);
|
|
2094
|
-
};
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
1976
|
class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
|
2098
1977
|
public:
|
|
2099
1978
|
explicit LTypeofIsAndBranch(LOperand* value) {
|
|
@@ -2101,7 +1980,7 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
|
|
2101
1980
|
}
|
|
2102
1981
|
|
|
2103
1982
|
DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
|
|
2104
|
-
DECLARE_HYDROGEN_ACCESSOR(
|
|
1983
|
+
DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
|
|
2105
1984
|
|
|
2106
1985
|
Handle<String> type_literal() { return hydrogen()->type_literal(); }
|
|
2107
1986
|
|
|
@@ -2109,17 +1988,19 @@ class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
|
|
2109
1988
|
};
|
|
2110
1989
|
|
|
2111
1990
|
|
|
2112
|
-
class LDeleteProperty: public LTemplateInstruction<1,
|
|
1991
|
+
class LDeleteProperty: public LTemplateInstruction<1, 3, 0> {
|
|
2113
1992
|
public:
|
|
2114
|
-
LDeleteProperty(LOperand* obj, LOperand* key) {
|
|
2115
|
-
inputs_[0] =
|
|
2116
|
-
inputs_[1] =
|
|
1993
|
+
LDeleteProperty(LOperand* context, LOperand* obj, LOperand* key) {
|
|
1994
|
+
inputs_[0] = context;
|
|
1995
|
+
inputs_[1] = obj;
|
|
1996
|
+
inputs_[2] = key;
|
|
2117
1997
|
}
|
|
2118
1998
|
|
|
2119
1999
|
DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
|
|
2120
2000
|
|
|
2121
|
-
LOperand*
|
|
2122
|
-
LOperand*
|
|
2001
|
+
LOperand* context() { return inputs_[0]; }
|
|
2002
|
+
LOperand* object() { return inputs_[1]; }
|
|
2003
|
+
LOperand* key() { return inputs_[2]; }
|
|
2123
2004
|
};
|
|
2124
2005
|
|
|
2125
2006
|
|
|
@@ -2146,21 +2027,35 @@ class LOsrEntry: public LTemplateInstruction<0, 0, 0> {
|
|
|
2146
2027
|
};
|
|
2147
2028
|
|
|
2148
2029
|
|
|
2149
|
-
class LStackCheck: public LTemplateInstruction<0,
|
|
2030
|
+
class LStackCheck: public LTemplateInstruction<0, 1, 0> {
|
|
2150
2031
|
public:
|
|
2032
|
+
explicit LStackCheck(LOperand* context) {
|
|
2033
|
+
inputs_[0] = context;
|
|
2034
|
+
}
|
|
2035
|
+
|
|
2036
|
+
LOperand* context() { return inputs_[0]; }
|
|
2037
|
+
|
|
2151
2038
|
DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
|
|
2039
|
+
DECLARE_HYDROGEN_ACCESSOR(StackCheck)
|
|
2040
|
+
|
|
2041
|
+
Label* done_label() { return &done_label_; }
|
|
2042
|
+
|
|
2043
|
+
private:
|
|
2044
|
+
Label done_label_;
|
|
2152
2045
|
};
|
|
2153
2046
|
|
|
2154
2047
|
|
|
2155
|
-
class LIn: public LTemplateInstruction<1,
|
|
2048
|
+
class LIn: public LTemplateInstruction<1, 3, 0> {
|
|
2156
2049
|
public:
|
|
2157
|
-
LIn(LOperand* key, LOperand* object) {
|
|
2158
|
-
inputs_[0] =
|
|
2159
|
-
inputs_[1] =
|
|
2050
|
+
LIn(LOperand* context, LOperand* key, LOperand* object) {
|
|
2051
|
+
inputs_[0] = context;
|
|
2052
|
+
inputs_[1] = key;
|
|
2053
|
+
inputs_[2] = object;
|
|
2160
2054
|
}
|
|
2161
2055
|
|
|
2162
|
-
LOperand*
|
|
2163
|
-
LOperand*
|
|
2056
|
+
LOperand* context() { return inputs_[0]; }
|
|
2057
|
+
LOperand* key() { return inputs_[1]; }
|
|
2058
|
+
LOperand* object() { return inputs_[2]; }
|
|
2164
2059
|
|
|
2165
2060
|
DECLARE_CONCRETE_INSTRUCTION(In, "in")
|
|
2166
2061
|
};
|
|
@@ -2169,7 +2064,7 @@ class LIn: public LTemplateInstruction<1, 2, 0> {
|
|
|
2169
2064
|
class LChunkBuilder;
|
|
2170
2065
|
class LChunk: public ZoneObject {
|
|
2171
2066
|
public:
|
|
2172
|
-
|
|
2067
|
+
LChunk(CompilationInfo* info, HGraph* graph)
|
|
2173
2068
|
: spill_slot_count_(0),
|
|
2174
2069
|
info_(info),
|
|
2175
2070
|
graph_(graph),
|
|
@@ -2342,14 +2237,18 @@ class LChunkBuilder BASE_EMBEDDED {
|
|
|
2342
2237
|
template<int I, int T>
|
|
2343
2238
|
LInstruction* DefineFixedDouble(LTemplateInstruction<1, I, T>* instr,
|
|
2344
2239
|
XMMRegister reg);
|
|
2240
|
+
// Assigns an environment to an instruction. An instruction which can
|
|
2241
|
+
// deoptimize must have an environment.
|
|
2345
2242
|
LInstruction* AssignEnvironment(LInstruction* instr);
|
|
2243
|
+
// Assigns a pointer map to an instruction. An instruction which can
|
|
2244
|
+
// trigger a GC or a lazy deoptimization must have a pointer map.
|
|
2346
2245
|
LInstruction* AssignPointerMap(LInstruction* instr);
|
|
2347
2246
|
|
|
2348
2247
|
enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY };
|
|
2349
2248
|
|
|
2350
|
-
//
|
|
2351
|
-
//
|
|
2352
|
-
//
|
|
2249
|
+
// Marks a call for the register allocator. Assigns a pointer map to
|
|
2250
|
+
// support GC and lazy deoptimization. Assigns an environment to support
|
|
2251
|
+
// eager deoptimization if CAN_DEOPTIMIZE_EAGERLY.
|
|
2353
2252
|
LInstruction* MarkAsCall(
|
|
2354
2253
|
LInstruction* instr,
|
|
2355
2254
|
HInstruction* hinstr,
|